/* ==========================================================================
   SHEREBOY AFFILIATE CONCEPT — Motion and icon helpers
   Motion lives on hover and focus only. Content is never hidden waiting for an
   animation, because that delays what visitors see and hides it entirely if a
   script fails. Load after style.css or admin.css.
   ========================================================================== */

/* ---------- Icon sizing (used by public/js/icons.js output) ---------- */
.icon { display: inline-flex; align-items: center; justify-content: center; width: 1em; height: 1em; line-height: 0; flex-shrink: 0; }
.icon svg { width: 100%; height: 100%; display: block; }

.ai-msg { animation: msg-in .22s ease-out both; }
@keyframes msg-in {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}
