/* =========================
   GEOTARGET — ANIMATIONS.CSS
   Todas as animações ficam concentradas aqui.
   Ao final do arquivo: bloco prefers-reduced-motion.
========================= */

/* =========================
   KEYFRAMES
========================= */
@keyframes gt-fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes gt-mask-up {
  from { transform: translateY(110%); }
  to   { transform: translateY(0); }
}

@keyframes gt-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(251, 148, 3, .5); }
  50%      { box-shadow: 0 0 0 7px rgba(251, 148, 3, 0); }
}

@keyframes gt-scroll-line {
  0%   { transform: translateY(-100%); }
  60%  { transform: translateY(100%); }
  100% { transform: translateY(100%); }
}

@keyframes gt-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-9px); }
}

@keyframes gt-glow-drift {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: .7; }
  50%      { transform: translate(-26px, 24px) scale(1.06); opacity: .95; }
}

@keyframes gt-shine {
  0%   { background-position: 200% center; }
  100% { background-position: -200% center; }
}

/* =========================
   REVEAL (Intersection Observer)
========================= */
[data-reveal] {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .8s var(--ease-out), transform .8s var(--ease-out);
  transition-delay: var(--reveal-delay, 0ms);
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* =========================
   TEXT REVEAL (títulos divididos por JS)
========================= */
.line-mask {
  display: block;
  overflow: hidden;
}
.line-mask__inner {
  display: block;
  transform: translateY(110%);
}
.is-revealed .line-mask__inner {
  animation: gt-mask-up .95s var(--ease-out) forwards;
  animation-delay: var(--line-delay, 0ms);
}

/* Brilho percorrendo o título do hero */
.hero-title .gradient-text {
  background-size: 200% auto;
  animation: gt-shine 7s linear infinite;
}

/* =========================
   HERO
========================= */
.eyebrow__dot { animation: gt-pulse 2.6s var(--ease-soft) infinite; }

.hero__glow { animation: gt-glow-drift 14s var(--ease-soft) infinite; }

.float-card { animation: gt-float 6s var(--ease-soft) infinite; }
.float-card--b { animation-duration: 7.4s; animation-delay: -2s; }
.float-card--c { animation-duration: 8.2s; animation-delay: -4s; }

.scroll-hint__line::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--color-ink);
  animation: gt-scroll-line 2.4s var(--ease-soft) infinite;
}

/* =========================
   LOADER
========================= */
.loader__logo svg circle:nth-child(2) {
  transform-origin: center;
  animation: gt-loader-spin 2.4s linear infinite;
}
@keyframes gt-loader-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* =========================
   BOTÃO MAGNÉTICO / BRILHO
========================= */
.btn-magnetic::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(120px circle at var(--btn-x, 50%) var(--btn-y, 50%),
              rgba(255, 255, 255, .45), transparent 60%);
  opacity: 0;
  transition: opacity .35s var(--ease-soft);
  pointer-events: none;
}
.btn-magnetic:hover::before { opacity: 1; }

/* =========================
   ACESSIBILIDADE — MOVIMENTO REDUZIDO
   O conteúdo permanece 100% visível e legível.
========================= */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }

  *,
  *::before,
  *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }

  [data-reveal] { opacity: 1 !important; transform: none !important; }
  .line-mask__inner { transform: none !important; }
  .float-card { animation: none !important; }
  .hero__glow { animation: none !important; }
  .hero__video { visibility: hidden; }
  body::before { display: none !important; }
}

/* =========================
   FAIXA DE AUTORIDADE
========================= */
@keyframes gt-marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.marquee__track { animation: gt-marquee 34s linear infinite; }
.marquee:hover .marquee__track { animation-play-state: paused; }

/* =========================
   ECOSSISTEMA — órbita suave
========================= */
@keyframes gt-orbit-breathe {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.02); }
}
.eco__stage { animation: gt-orbit-breathe 9s var(--ease-soft) infinite; }

.eco__core-mark svg circle:nth-child(2) {
  transform-origin: center;
  animation: gt-loader-spin 9s linear infinite;
}

/* =========================
   ANIMAÇÕES ADICIONAIS — reduced motion
   (complementa o bloco do topo do arquivo)
========================= */
@media (prefers-reduced-motion: reduce) {
  .marquee__track { animation: none !important; transform: none !important; }
  .eco__stage { animation: none !important; }
  .search-sim__results { opacity: 1 !important; transform: none !important; }
  .testi__track { transition: none !important; }
  .steps__rail-fill { transition: none !important; }
  #quizArc { transition: none !important; }
}
