/* ════════════════════════════════════════════════════
   Alemanha Cast — Sistema de Animações
   ════════════════════════════════════════════════════ */

/* ── Keyframes ───────────────────────────────────── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(22px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.92); }
  to   { opacity: 1; transform: scale(1); }
}

@keyframes slideLeft {
  from { opacity: 0; transform: translateX(-24px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes pulseYellow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(241,186,43,.5); }
  50%       { box-shadow: 0 0 0 8px rgba(241,186,43,0); }
}

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

@keyframes floatY {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-8px); }
}

@keyframes spinSlow {
  to { transform: rotate(360deg); }
}

@keyframes countUp {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Sistema de Reveal (Intersection Observer) ───── */
/*
  Uso: adicione .reveal a qualquer elemento.
  O JS em assets/js/main.js adiciona .is-visible quando o
  elemento entra na viewport, disparando a transição.

  Variantes de direção: .reveal--left, .reveal--scale
  Variantes de delay  : .reveal--d1 … .reveal--d5
*/

@media (prefers-reduced-motion: no-preference) {

  .reveal {
    opacity    : 0;
    transform  : translateY(28px);
    transition :
      opacity   0.7s cubic-bezier(0.16, 1, 0.3, 1),
      transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform;
  }

  .reveal--left  { transform: translateX(-28px); }
  .reveal--scale { transform: scale(0.93); }
  .reveal--fade  { transform: none; }

  .reveal.is-visible {
    opacity   : 1;
    transform : none;
  }

  .reveal--d1 { transition-delay: 0.08s; }
  .reveal--d2 { transition-delay: 0.16s; }
  .reveal--d3 { transition-delay: 0.24s; }
  .reveal--d4 { transition-delay: 0.32s; }
  .reveal--d5 { transition-delay: 0.40s; }

}

/* ── Botões: micro-interações ────────────────────── */
@media (prefers-reduced-motion: no-preference) {

  .btn-brand,
  .btn-outline-brand {
    transition :
      background-color 0.18s ease,
      color            0.18s ease,
      transform        0.14s ease,
      box-shadow       0.18s ease;
  }

  .btn-brand:hover,
  .btn-brand:focus-visible {
    transform  : translateY(-2px);
    box-shadow : 0 8px 20px rgba(219,33,37,.25);
  }

  .btn-brand:active {
    transform  : translateY(0);
    box-shadow : none;
  }

  .btn-outline-brand:hover,
  .btn-outline-brand:focus-visible {
    transform  : translateY(-2px);
    box-shadow : 0 8px 20px rgba(7,7,7,.14);
  }

  .btn-outline-brand:active {
    transform  : translateY(0);
    box-shadow : none;
  }

}

/* ── Hero: blob decorativo animado ──────────────── */
@media (prefers-reduced-motion: no-preference) {

  .hero-blob {
    animation : floatY 6s ease-in-out infinite;
  }

  .hero-blob--delayed {
    animation-delay : -3s;
  }

}

/* ── Stat counter: entrada ───────────────────────── */
@media (prefers-reduced-motion: no-preference) {

  .stat-number.counted {
    animation : countUp 0.5s cubic-bezier(0.16,1,0.3,1) both;
  }

}

/* ── Pulse no badge de podcast ───────────────────── */
@media (prefers-reduced-motion: no-preference) {

  .pulse-badge {
    animation : pulseYellow 2.4s ease-in-out infinite;
  }

}

/* ── Shimmer em texto de destaque ────────────────── */
.text-shimmer {
  background : linear-gradient(
    90deg,
    var(--acast-dark)   0%,
    var(--acast-red)    40%,
    var(--acast-yellow) 60%,
    var(--acast-dark)   100%
  );
  background-size       : 200% auto;
  -webkit-background-clip : text;
  background-clip          : text;
  -webkit-text-fill-color  : transparent;
}

@media (prefers-reduced-motion: no-preference) {
  .text-shimmer {
    animation : shimmer 4s linear infinite;
  }
}
