/* ============================================================
   RecoverChain AI — Animations & Motion
   ============================================================ */

/* ---------- Reveal on scroll ---------- */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity .6s cubic-bezier(.2,.7,.2,1), transform .6s cubic-bezier(.2,.7,.2,1); will-change: opacity, transform; }
.reveal.revealed { opacity: 1; transform: none; }
.reveal-left { opacity: 0; transform: translateX(-24px); transition: opacity .6s, transform .6s; }
.reveal-right { opacity: 0; transform: translateX(24px); transition: opacity .6s, transform .6s; }
.reveal-left.revealed, .reveal-right.revealed { opacity: 1; transform: none; }
/* stagger helper */
[data-stagger] > * { opacity: 0; transform: translateY(20px); transition: opacity .5s, transform .5s; }
[data-stagger].revealed > * { opacity: 1; transform: none; }

/* ---------- Card hover lift ---------- */
.rc-lift { transition: transform .22s ease, box-shadow .22s ease; }
.rc-lift:hover { transform: translateY(-5px); box-shadow: 0 26px 50px -22px rgba(91,140,255,.55); }

/* ---------- Icon pulse / float ---------- */
@keyframes rc-float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-8px)} }
.rc-float { animation: rc-float 4s ease-in-out infinite; }
@keyframes rc-pulse { 0%,100%{opacity:1} 50%{opacity:.45} }
.rc-pulse { animation: rc-pulse 1.6s ease-in-out infinite; }
@keyframes rc-bounce { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-6px)} }
.rc-bounce { animation: rc-bounce .9s ease-in-out infinite; }

/* ---------- Spinner / dots ---------- */
.rc-dots { display:inline-flex; gap:5px; }
.rc-dots span { width:8px; height:8px; border-radius:50%; background:var(--rc-primary); animation: rc-dot 1.2s infinite; }
.rc-dots span:nth-child(2){ animation-delay:.15s } .rc-dots span:nth-child(3){ animation-delay:.3s }
@keyframes rc-dot { 0%,80%,100%{transform:scale(.6);opacity:.4} 40%{transform:scale(1);opacity:1} }

/* ---------- Shimmer skeleton ---------- */
.rc-skeleton { position:relative; overflow:hidden; background:var(--rc-surface-2); border-radius:10px; }
.rc-skeleton::after { content:''; position:absolute; inset:0; transform:translateX(-100%); background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent); animation: rc-shimmer 1.4s infinite; }
@keyframes rc-shimmer { 100%{ transform:translateX(100%);} }

/* ---------- Gradient shine button ---------- */
.rc-shine { position:relative; overflow:hidden; }
.rc-shine::after { content:''; position:absolute; top:0; left:-80%; width:40%; height:100%; transform:skewX(-20deg);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent); transition:left .5s ease; }
.rc-shine:hover::after { left:130%; }

/* ---------- AI Search scanning ---------- */
.ai-search-wrap { position:relative; }
.ai-scan-line { position:absolute; left:0; right:0; height:2px; border-radius:2px;
  background:linear-gradient(90deg,transparent,var(--rc-primary),transparent);
  box-shadow:0 0 12px var(--rc-primary); animation: rc-scan 2.2s ease-in-out infinite; }
@keyframes rc-scan { 0%{ top:0; } 50%{ top:calc(100% - 2px);} 100%{ top:0; } }
.ai-search-pulse { position:absolute; inset:0; border-radius:14px; pointer-events:none;
  box-shadow:0 0 0 0 rgba(91,140,255,.4); animation: rc-ring 1.6s ease-out infinite; }
@keyframes rc-ring { 0%{ box-shadow:0 0 0 0 rgba(91,140,255,.45);} 100%{ box-shadow:0 0 0 14px rgba(91,140,255,0);} }
@keyframes rc-caret { 0%,100%{ opacity:1 } 50%{ opacity:0 } }
.rc-caret::after { content:'▍'; color:var(--rc-primary); animation: rc-caret 1s step-end infinite; margin-left:2px; }

/* ---------- Page transition ---------- */
.rc-page { animation: rc-fade .35s ease; }
@keyframes rc-fade { from{opacity:0; transform:translateY(8px)} to{opacity:1; transform:none} }

/* ---------- Modal pop ---------- */
.modal.fade .modal-dialog { transition: transform .25s cubic-bezier(.2,.8,.3,1), opacity .2s; transform: scale(.92) translateY(10px); }
.modal.show .modal-dialog { transform: scale(1) translateY(0); }

/* ---------- Toast slide ---------- */
@keyframes rc-toast-in { from{opacity:0; transform:translateX(40px)} to{opacity:1; transform:none} }

/* ---------- Counter ---------- */
.rc-count { display:inline-block; }

/* ---------- Table row hover transition ---------- */
.rc-table tbody tr { transition: background .2s ease; }
.rc-table tbody tr td { transition: background .2s ease; }

/* ---------- Avatar pop ---------- */
.rc-avatar { transition: transform .25s ease, box-shadow .25s ease; }
.rc-avatar:hover { transform: scale(1.08); }

/* ---------- Gradient border card ---------- */
.rc-glow-border { position:relative; background:linear-gradient(var(--rc-surface),var(--rc-surface)) padding-box,
  linear-gradient(135deg,#5b8cff,#7a5bff,#2ecc8f) border-box; border:1px solid transparent; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-left, .reveal-right, [data-stagger]>*, .rc-float, .rc-bounce, .rc-pulse,
  .ai-scan-line, .rc-shine::after, .rc-skeleton::after { animation:none !important; transition:none !important; }
  .reveal, .reveal-left, .reveal-right, [data-stagger]>* { opacity:1; transform:none; }
}
