/* UniBuilder scroll animations — opt-in via [data-animation="..."] */

[data-animation] {
  opacity: 0;
  transition-property: opacity, transform;
  transition-duration: 700ms;
  transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
  transition-delay: 0ms;
  will-change: opacity, transform;
}
[data-animation="fade"]      { /* base */ }
[data-animation="fadeUp"]    { transform: translate3d(0, 32px, 0); }
[data-animation="fadeDown"]  { transform: translate3d(0, -32px, 0); }
[data-animation="fadeLeft"]  { transform: translate3d(32px, 0, 0); }
[data-animation="fadeRight"] { transform: translate3d(-32px, 0, 0); }
[data-animation="zoomIn"]    { transform: scale(0.92); }
[data-animation="zoomOut"]   { transform: scale(1.08); }
[data-animation="slideUp"]   { transform: translate3d(0, 60px, 0); }
[data-animation="flipUp"]    { transform: perspective(800px) rotateX(20deg); transform-origin: bottom; }

[data-animation].is-animated {
  opacity: 1;
  transform: none;
}

/* Hover effects — applied by JS adding .has-hover-X */
/* [Волна B2] длительность/easing — через токены --transition-* (фолбэк на прежние .25s ease) */
.has-hover-lift     { transition: transform var(--transition-duration, .25s) var(--transition-easing, ease), box-shadow var(--transition-duration, .25s) var(--transition-easing, ease); }
.has-hover-lift:hover { transform: translateY(-4px); box-shadow: 0 12px 24px rgba(0,0,0,0.08); }
.has-hover-zoom     { transition: transform var(--transition-duration, .25s) var(--transition-easing, ease); }
.has-hover-zoom:hover { transform: scale(1.03); }
.has-hover-glow     { transition: box-shadow var(--transition-duration, .25s) var(--transition-easing, ease); }
.has-hover-glow:hover { box-shadow: 0 0 24px rgba(124,58,237,0.35); }

/* Respect user preference */
@media (prefers-reduced-motion: reduce) {
  [data-animation] { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* [z1v D2] reduced-motion: карусели не листаются сами, переходы мгновенны */
@media (prefers-reduced-motion: reduce) {
  .swiper-wrapper { transition-duration: 0.01ms !important; }
}
