/* Squadra Brasil — motion */

.js .reveal {
  opacity: 0;
  transform: translateY(22px);
  transition:
    opacity 700ms ease,
    transform 700ms cubic-bezier(0.2, 0.75, 0.25, 1);
}

.js .reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Animações --------------------------------------------------------------- */

@keyframes shape-rotation {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes hero-copy-in {
  from {
    opacity: 0;
    transform: translateY(26px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes hero-float-x {
  0%, 100% { transform: translate3d(-7px, 0, 0); }
  50% { transform: translate3d(10px, -2px, 0); }
}

@keyframes hero-float-x-reverse {
  0%, 100% { transform: translate3d(8px, -1px, 0); }
  50% { transform: translate3d(-9px, 1px, 0); }
}

@keyframes hero-dot-pulse {
  0%, 100% { opacity: .5; transform: scale(.82); }
  50% { opacity: 1; transform: scale(1); }
}

@keyframes decor-chevron-loading {
  0%, 52%, 100% {
    opacity: .2;
    transform: translate3d(-1px, 0, 0) scale(.94);
  }
  12%, 28% {
    opacity: 1;
    transform: translate3d(2px, 0, 0) scale(1);
  }
}

@keyframes decor-ring-loading {
  0%, 68%, 100% {
    opacity: .28;
    transform: scale(.96);
  }
  24%, 42% {
    opacity: 1;
    transform: scale(1.018);
  }
}

.decor-loader--chevrons i {
  animation: decor-chevron-loading 1.55s ease-in-out infinite both;
}

.decor-loader--chevrons i:nth-child(2) { animation-delay: 110ms; }
.decor-loader--chevrons i:nth-child(3) { animation-delay: 220ms; }
.decor-loader--chevrons i:nth-child(4) { animation-delay: 330ms; }
.decor-loader--chevrons i:nth-child(5) { animation-delay: 440ms; }
.decor-loader--chevrons i:nth-child(6) { animation-delay: 550ms; }
.decor-loader--chevrons i:nth-child(7) { animation-delay: 660ms; }

.decor-loader--rings > i {
  animation: decor-ring-loading 2.2s ease-in-out infinite both;
}

.decor-loader--rings > i:nth-child(2) { animation-delay: 170ms; }
.decor-loader--rings > i:nth-child(3) { animation-delay: 340ms; }
.decor-loader--rings > i:nth-child(4) { animation-delay: 510ms; }

.decor-loader__dot-row:nth-child(1) { --row-delay: 0ms; }
.decor-loader__dot-row:nth-child(2) { --row-delay: 320ms; }
.decor-loader__dot-row:nth-child(3) { --row-delay: 640ms; }
.decor-loader__dot-row:nth-child(4) { --row-delay: 960ms; }

.decor-loader__dot-row i:nth-child(1) { --dot-delay: 0ms; }
.decor-loader__dot-row i:nth-child(2) { --dot-delay: 80ms; }
.decor-loader__dot-row i:nth-child(3) { --dot-delay: 160ms; }
.decor-loader__dot-row i:nth-child(4) { --dot-delay: 240ms; }

.decor-loader__dot-row i {
  animation: loading-dot 1.65s ease-in-out infinite both;
  animation-delay: calc(var(--row-delay) + var(--dot-delay));
}

.motion-drift { animation: decor-drift 6.5s ease-in-out infinite alternate; }
.motion-rings { animation: rings-breathe 8s ease-in-out infinite; transform-origin: center; }

@keyframes loading-dot {
  0%, 70%, 100% { opacity: .35; transform: translateY(0) scale(.78); }
  35% { opacity: 1; transform: translateY(-3px) scale(1); }
}

@keyframes dot-column-fall {
  0%, 100% { transform: translate3d(0, -5px, 0); }
  50% { transform: translate3d(0, 7px, 0); }
}

@keyframes dot-column-chase {
  0%, 65%, 100% { opacity: .38; transform: scale(.82); }
  30% { opacity: 1; transform: scale(1); }
}

@keyframes decor-drift {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50% { transform: translate3d(10px, -4px, 0); }
}

@keyframes rings-breathe {
  0%, 100% { transform: rotate(-2deg) scale(.98); }
  50% { transform: rotate(2deg) scale(1.025); }
}

@keyframes google-target-spin {
  to { transform: rotate(360deg); }
}

@keyframes google-mark-float {
  0%, 100% { transform: translate3d(0, 0, 0) rotate(-2deg); }
  50% { transform: translate3d(-3px, -8px, 0) rotate(3deg); }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: .01ms !important;
    transition-delay: 0ms !important;
  }

  html {
    scroll-behavior: auto;
  }

  .js .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .service-card:hover .service-card__media img,
  .cta a:hover,
  .footer__social-links a:hover,
  .footer__social-links a:focus-visible {
    transform: none;
  }

}
