  /* ---------- Hero: scanner fotográfico ---------- */
  @keyframes softpulse{ 0%,100%{ opacity:1; box-shadow:0 0 0 0 rgba(14,107,88,.6) } 50%{ opacity:.45; box-shadow:0 0 0 6px rgba(14,107,88,0) } }
  .animate-softpulse{ animation:softpulse 1.8s ease-in-out infinite; }

  @keyframes photo-feed{ 0%{ transform:translateX(-160px) rotate(-2deg); opacity:0 } 10%{ opacity:1 } 42%{ transform:translateX(0) rotate(0deg); opacity:1 } 58%{ transform:translateX(0) rotate(0deg); opacity:1 } 100%{ transform:translateX(160px) rotate(2deg); opacity:0 } }
  .animate-photofeed{ animation:photo-feed 4.2s ease-in-out infinite; }

  @keyframes scan-glow{ 0%,100%{ opacity:.35 } 50%{ opacity:1 } }
  .animate-scanglow{ animation:scan-glow 1s ease-in-out infinite; }

  @keyframes photo-desaturate{ 0%,44%{ filter:sepia(0) saturate(1) brightness(1) } 55%,100%{ filter:sepia(.7) saturate(.4) brightness(.85) } }
  .animate-desat{ animation:photo-desaturate 4.2s ease-in-out infinite; }
  @keyframes photo-saturate{ 0%,44%{ filter:sepia(.7) saturate(.4) brightness(.85) } 55%,100%{ filter:sepia(0) saturate(1.05) brightness(1.02) } }
  .animate-sat{ animation:photo-saturate 4.2s ease-in-out infinite; }

  .fade-step{ opacity:0; transform:translateY(6px); transition:opacity .45s ease, transform .45s ease; }
  .fade-step.show{ opacity:1; transform:translateY(0); }

  /* ---------- Jornada do documento: trilho de progresso, toca 1x ao entrar na tela ---------- */
  .jornada-fill{ transition: width 1.8s cubic-bezier(.22,.9,.3,1); }
  .jornada-trilho.is-filled .jornada-fill{ width:100%; }

  @keyframes jornada-badge-pop{
    0%{ transform:scale(1); box-shadow:0 0 0 0 rgba(14,107,88,0); }
    40%{ transform:scale(1.18); box-shadow:0 0 0 6px rgba(14,107,88,.25); }
    100%{ transform:scale(1); box-shadow:0 0 0 0 rgba(14,107,88,0); }
  }
  .jornada-badge.is-active{ animation: jornada-badge-pop .6s ease-out; }
