/* ==========================================================================
   TecEnergy - animations.css
   Keyframes, animacoes de scroll e preferencia de movimento reduzido
   --------------------------------------------------------------------------
   Todas as animacoes usam apenas transform e opacity (GPU-friendly).
   A ultima secao desliga o movimento para prefers-reduced-motion: reduce.
   ========================================================================== */

/* ==========================================================================
   01. KEYFRAMES
   ========================================================================== */
@keyframes vp-fade-up {
  from { opacity: 0; transform: translate3d(0, 24px, 0); }
  to   { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes vp-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes vp-fade-left {
  from { opacity: 0; transform: translate3d(-28px, 0, 0); }
  to   { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes vp-fade-right {
  from { opacity: 0; transform: translate3d(28px, 0, 0); }
  to   { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes vp-zoom-in {
  from { opacity: 0; transform: scale(.94); }
  to   { opacity: 1; transform: scale(1); }
}

/* Fluxo de energia nas linhas SVG do hero */

/* Indicador de rolagem do hero */
@keyframes vp-bounce {
  0%, 100% { transform: translateY(0); opacity: .55; }
  50%      { transform: translateY(6px); opacity: 1; }
}

/* Spinner do botao de envio do formulario */
@keyframes vp-girar {
  to { transform: rotate(360deg); }
}

/* ==========================================================================
   02. O SITE NAO ENTRA EM CENA
   ==========================================================================

   Aqui vivia a revelacao ao rolar: [data-anim] nascia em opacity 0 e ganhava
   .is-visivel ao entrar na viewport, com 620ms de transicao. Eram 319
   atributos no HTML, todos com a mesma entrada.

   Saiu por tres razoes, em ordem de peso:

   1. O conteudo nascia INVISIVEL e dependia de JavaScript e de
      IntersectionObserver para existir. Script que falha virava pagina
      branca. Nenhum efeito de entrada paga esse risco.
   2. O piso de craft pede um momento autoral e nomeia o oposto: "nao uma
      entrada identica em cada secao", "a partir de um estado ja visivel".
      319 entradas identicas sao o exemplo do que ele descreve.
   3. O contrato desta direcao diz, com estas palavras, que o resto do site
      nao entra em cena porque ja esta em cena. Um instrumento esta ligado
      quando voce chega.

   O que ficou de movimento no site: o termograma aquecendo (900ms, o momento
   autoral), os contadores — que animam numero que de fato muda — e os dois
   indicadores de trabalho em curso.
   ========================================================================== */

/* ==========================================================================
   03. O HERO NAO ENTRA EM CENA
   ==========================================================================

   Aqui havia cinco elementos do hero em fade-up escalonado, de 80 a 500ms, a
   partir de opacidade zero. Saiu inteiro, por dois motivos.

   O primeiro e de piso: cinco efeitos no mesmo gesto sao efeitos espalhados,
   e o estado inicial era invisivel — o oposto do que se pede, que e partir de
   um estado ja visivel.

   O segundo e do mundo: um instrumento de medicao esta ligado quando voce
   chega. Ele nao se materializa. O unico momento autoral de movimento do site
   e o termograma aquecendo quando o visitante informa a conta, e ele so
   funciona como momento porque nada mais disputa com ele.
   ========================================================================== */


/* ==========================================================================
   04. O QUE SAIU DAQUI
   ==========================================================================

   As linhas de fluxo de energia (.vp-fluxo__linha e irmas) e a varredura
   luminosa. As duas pelo mesmo motivo, e nenhum dos dois e gosto:

   - nao ha markup para elas em pagina nenhuma do site; eram CSS orfao de um
     SVG que o hero antigo tinha e o novo nao tem.
   - juntas somavam cinco animacoes infinitas, de 2,4s a 10s. Movimento
     continuo sem conteudo mudando por baixo e o oposto do que este site se
     propoe: o unico gesto autoral e o termograma aquecendo quando o visitante
     pede a medicao, e ele so funciona como gesto porque nada mais se mexe.

   A classe .vp-varredura tambem saiu do HTML das 12 paginas onde ainda
   estava embarcada apontando para uma regra que nao fazia nada.
   ========================================================================== */

/* ==========================================================================
   05. MICROINTERACOES
   ========================================================================== */
/* O brilho branco que varria a acao primaria no hover saiu: era gradiente
   fora do dado, e brilho falso de material num mundo cujo acabamento e
   usinado. O hover do botao primario esquenta a cor, em style.css. */

/* Estado de envio do formulario */
.vp-btn.is-enviando { pointer-events: none; opacity: .75; }
.vp-btn.is-enviando .vp-btn__icone {
  border: 2px solid rgba(255, 255, 255, .4);
  border-top-color: #fff;
  border-radius: 50%;
  animation: vp-girar 700ms linear infinite;
}
.vp-btn.is-enviando .vp-btn__icone > * { display: none; }

/* Contador em contagem */
.vp-contador__valor.is-contando { opacity: .92; }

/* Transicao de troca de painel das abas e da galeria */
.vp-abas__painel { animation: vp-fade-in 420ms ease both; }
.vp-galeria__item { animation: vp-zoom-in 420ms cubic-bezier(.22, 1, .36, 1) both; }

/* Entrada do banner de cookies */
.vp-cookies.is-visivel { animation: vp-fade-in 500ms ease both; }

/* ==========================================================================
   06. PREFERENCIA DE MOVIMENTO REDUZIDO (WCAG 2.3.3)
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  /* O indicador de envio e o unico sinal de que o formulario esta trabalhando.
     Zerar a duracao dele junto com a decoracao deixava o visitante sem
     resposta nenhuma — reduzir movimento nao e remover informacao. Ele fica,
     mais lento e sem giro, pulsando a opacidade. */
  .vp-btn.is-enviando .vp-btn__icone {
    animation: vp-pulso-suave 1.4s ease-in-out infinite !important;
  }
  @keyframes vp-pulso-suave {
    0%, 100% { opacity: 1; }
    50%      { opacity: .45; }
  }

  html { scroll-behavior: auto; }

  *,
  *::before,
  *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }

  /* Garante que o conteudo animado permaneca visivel */
  [data-anim].is-visivel {
    opacity: 1 !important;
    transform: none !important;
  }

  .vp-hero__titulo,
  .vp-hero__texto,
  .vp-hero-interno__conteudo > * {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }

  /* Desliga movimentos continuos */

  /* Mantem o accordion e o drawer funcionais, apenas sem animacao */
  .vp-faq__painel,
  .vp-drawer__sub { transition: none !important; }
}
