/* ═══════════════════════════════════════════════════════
   animations.css — EXCLUSIVO para animações e transições
   Tudo que mexe, pisca, desliza ou aparece fica aqui.
   ═══════════════════════════════════════════════════════ */

/* ─── KEYFRAMES ───────────────────────────────────────── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes slideRight {
  from { opacity: 0; transform: translateX(-24px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.93); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes underlineGrow {
  from { width: 0; }
  to   { width: 48px; }
}
@keyframes pulse-dot {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%       { transform: scale(1.4); opacity: 0.7; }
}
@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-6px); }
}
@keyframes waBounce {
  0%, 100% { transform: scale(1); }
  50%       { transform: scale(1.12); }
}
@keyframes spin {
  to { transform: rotate(360deg); }
}
@keyframes carouselSlide {
  from { opacity: 0; transform: translateX(20px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* ─── HERO ────────────────────────────────────────────── */
.hero-content     { animation: fadeUp 0.7s ease both; }
.hero-badge-dot   { animation: pulse-dot 2s ease-in-out infinite; }
.page-header-dot  { animation: pulse-dot 2s ease-in-out infinite; }
.page-header-inner { animation: fadeUp 0.6s ease both; }

/* ─── STAT ITEMS ──────────────────────────────────────── */
.stat-item { opacity: 0; animation: fadeUp 0.5s ease both; }
.stat-item:nth-child(1) { animation-delay: 0.10s; }
.stat-item:nth-child(2) { animation-delay: 0.20s; }
.stat-item:nth-child(3) { animation-delay: 0.30s; }
.stat-item:nth-child(4) { animation-delay: 0.40s; }

/* ─── CARDS — stagger via JS (apenas opacity/transform base) */
.why-card, .course-card, .hosp-card {
  opacity: 0;
  transform: translateY(16px);
}
/* Após JS adicionar .animated */
.why-card.animated,
.course-card.animated,
.hosp-card.animated {
  opacity: 1;
  transform: none;
  transition:
    opacity 0.5s ease,
    transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1),
    box-shadow 0.3s ease,
    border-color 0.3s ease;
}

/* ─── WHY-CARD hover top-bar ──────────────────────────── */
.why-card::after {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: var(--red); transform: scaleX(0); transform-origin: left;
  transition: transform 0.35s ease;
}
.why-card:hover::after { transform: scaleX(1); }

/* ─── MVV CARD hover top-bar ─────────────────────────── */
.mvv-card::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: var(--red); transform: scaleX(0); transform-origin: left;
  transition: transform 0.4s ease;
}
.mvv-card:hover::before { transform: scaleX(1); }

/* ─── WA FLOAT bounce ─────────────────────────────────── */
.wa-float { animation: waBounce 3s ease-in-out infinite; }
.wa-float:hover { animation: none; }

/* ─── ABOUT IMG float ─────────────────────────────────── */
.about-img-wrap { animation: float 6s ease-in-out infinite; }

/* ─── CARROSSEL ───────────────────────────────────────── */
.team-carousel { transition: transform 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94); }

/* ─── FAQ acordeão ────────────────────────────────────── */
.faq-answer { max-height: 0; overflow: hidden; transition: max-height 0.35s ease; }
.faq-item.open .faq-answer { max-height: 300px; }
.faq-icon { transition: background 0.2s, border-color 0.2s, color 0.2s, transform 0.3s; }
.faq-item.open .faq-icon { transform: rotate(45deg); }

/* ─── LOADING SPINNER (formulário) ───────────────────── */
.btn-spinner {
  display: none; width: 18px; height: 18px;
  border: 2px solid rgba(255,255,255,0.3);
  border-top-color: #fff; border-radius: 50%;
  animation: spin 0.7s linear infinite;
}
.btn-submit.loading .btn-spinner { display: block; }
.btn-submit.loading .btn-label  { display: none; }

/* ─── NAVBAR TOOLTIP fade ─────────────────────────────── */
.nav-icon-btn[data-tip]::before { transition: opacity 0.15s; }

/* ─── TEAM CARD hover ─────────────────────────────────── */
.team-card:hover .team-avatar-initials {
  transition: background 0.3s, color 0.3s;
}

/* ─── CONTACT CHANNEL hover arrow ────────────────────── */
.contact-channel-arrow { transition: color 0.2s, transform 0.2s; }
.contact-channel:hover .contact-channel-arrow { transform: translateX(3px); }
