/* ============================================================
   SCROLL-TRIGGERED FADE-IN
   ============================================================ */
.fi {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.55s cubic-bezier(0.4, 0, 0.2, 1),
              transform 0.55s cubic-bezier(0.4, 0, 0.2, 1);
}
.fi.vis {
  opacity: 1;
  transform: none;
}

/* Staggered child delays */
.fi:nth-child(2) { transition-delay: 0.08s; }
.fi:nth-child(3) { transition-delay: 0.16s; }
.fi:nth-child(4) { transition-delay: 0.24s; }
.fi:nth-child(5) { transition-delay: 0.32s; }
.fi:nth-child(6) { transition-delay: 0.40s; }

/* ============================================================
   CHAT BUTTON PULSE
   ============================================================ */
@keyframes chat-pulse {
  0%, 100% { box-shadow: 0 4px 24px rgba(170,207,0,.50); }
  50%       { box-shadow: 0 4px 24px rgba(170,207,0,.50), 0 0 0 8px rgba(170,207,0,.12); }
}
.chat-btn { animation: chat-pulse 2.8s ease-in-out infinite; }
.chat-btn:hover { animation: none; }

/* ============================================================
   REDUCED MOTION SUPPORT  (WCAG 2.3.3)
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  .fi {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .chat-btn { animation: none; }
  * {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }
}
