/* Подготовка элементов к scroll-reveal */
[data-js="reveal"] { opacity: 0; transform: translateY(8px); }
[data-js="reveal"].is-revealed {
  opacity: 1; transform: none;
  transition: opacity 600ms var(--ease-out, ease), transform 600ms var(--ease-out);
}

[data-reveal-stagger] > * { opacity: 0; transform: translateY(8px); }
[data-reveal-stagger].is-revealed > * {
  opacity: 1; transform: none;
  transition: opacity 600ms var(--ease-out), transform 600ms var(--ease-out);
}

/* Floating cards (Hero) */
@keyframes float-card {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}

/* Pulse fallback */
@keyframes pulse-cta {
  0%, 100% { box-shadow: var(--shadow-cta); }
  50%      { box-shadow: 0 0 0 6px rgba(255,84,54,0.15), var(--shadow-cta); }
}

/* Shimmer (loading) */
@keyframes shimmer {
  0%   { background-position: -200px 0; }
  100% { background-position: calc(200px + 100%) 0; }
}
.shimmer {
  background: linear-gradient(90deg, #F0F0F0 0px, #F8F8F8 40px, #F0F0F0 80px);
  background-size: 200px 100%;
  animation: shimmer 1.4s linear infinite;
}

/* Map pulse */
@keyframes map-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(255,84,54,0.45); }
  100% { box-shadow: 0 0 0 14px rgba(255,84,54,0); }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  [data-js="reveal"], [data-reveal-stagger] > * { opacity: 1 !important; transform: none !important; }
}
