/* ============================================================
   Vollware — camada de animação (scroll cinematográfico)
   Reveal on scroll · parallax · barra de progresso · tilt
   Não altera layout: só adiciona movimento por cima.
   ============================================================ */

/* ---- Barra de progresso de rolagem ---- */
.v-progress {
  position: fixed;
  top: 0; left: 0;
  height: 3px; width: 0;
  z-index: 100;
  background: var(--grad);
  box-shadow: 0 0 14px rgba(109, 94, 252, 0.65);
  transition: width .08s linear;
  pointer-events: none;
}

/* ---- Estado inicial dos elementos que entram na tela ---- */
[data-reveal] {
  opacity: 0;
  transform: translateY(34px);
  transition:
    opacity .85s cubic-bezier(.16, .84, .44, 1),
    transform .85s cubic-bezier(.16, .84, .44, 1);
  will-change: opacity, transform;
}
[data-reveal="left"]  { transform: translateX(-46px); }
[data-reveal="right"] { transform: translateX(46px); }
[data-reveal="scale"] { transform: translateY(28px) scale(.95); }

/* ---- Estado revelado ---- */
[data-reveal].is-in {
  opacity: 1;
  transform: none;
}

/* ---- Parallax: o JS controla o translate, aqui só otimizamos ---- */
.a-hero__glow,
.a-hero__grid,
.a-contato__glow {
  will-change: transform;
}

/* ---- Tilt 3D nos cards ---- */
.a-bento,
.a-case-list {
  perspective: 1200px;
}
.a-card,
.a-case {
  transform-style: preserve-3d;
  transition:
    border-color .25s ease,
    transform .25s cubic-bezier(.16, .84, .44, 1),
    background .25s ease;
}

/* ---- Respeita quem prefere menos movimento ---- */
@media (prefers-reduced-motion: reduce) {
  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    transition: none;
  }
  .v-progress { display: none; }
}
