:root {
  --rv-bg: #fdf4ff;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: 'Nunito', sans-serif;
  background:
    radial-gradient(circle at 15% 10%, rgba(236,72,153,0.10), transparent 45%),
    radial-gradient(circle at 85% 20%, rgba(99,102,241,0.12), transparent 45%),
    radial-gradient(circle at 50% 90%, rgba(16,185,129,0.08), transparent 50%),
    #fdf7ff;
  color: #1e293b;
  min-height: 100vh;
}

/* Fade-up entrance for sections */
@keyframes rvFadeUp {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
.rv-fade { animation: rvFadeUp 0.6s ease both; }

/* Staggered card reveal */
@keyframes rvCardIn {
  from { opacity: 0; transform: translateY(24px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.rv-card { animation: rvCardIn 0.55s cubic-bezier(0.22, 1, 0.36, 1) both; }

/* Stat card pop */
@keyframes rvStatPop {
  0%   { opacity: 0; transform: translateY(16px) scale(0.9); }
  60%  { transform: translateY(-3px) scale(1.02); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}
.rv-stat { animation: rvStatPop 0.65s cubic-bezier(0.34, 1.56, 0.64, 1) both; }

/* Header subtle shimmer */
.rv-header { position: relative; overflow: hidden; }
.rv-header::after {
  content: '';
  position: absolute;
  top: 0; left: -60%;
  width: 40%; height: 100%;
  background: linear-gradient(120deg, transparent, rgba(255,255,255,0.25), transparent);
  transform: skewX(-20deg);
  animation: rvShine 5s ease-in-out infinite;
}
@keyframes rvShine {
  0%, 60% { left: -60%; }
  85%, 100% { left: 130%; }
}

/* Modal animations */
@keyframes rvBackdropIn { from { opacity: 0; } to { opacity: 1; } }
.rv-modal-backdrop { animation: rvBackdropIn 0.25s ease both; }

@keyframes rvModalIn {
  from { opacity: 0; transform: translateY(40px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.rv-modal { animation: rvModalIn 0.35s cubic-bezier(0.22, 1, 0.36, 1) both; }

/* Toast */
.rv-toast {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 60;
  background: #1e293b;
  color: #fff;
  padding: 14px 22px;
  border-radius: 9999px;
  font-family: 'Nunito', sans-serif;
  font-weight: 800;
  box-shadow: 0 12px 40px rgba(0,0,0,0.25);
  animation: rvToastIn 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) both;
  max-width: 90vw;
  text-align: center;
}
@keyframes rvToastIn {
  from { opacity: 0; transform: translate(-50%, 30px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

/* Nicer scrollbars for screenshot row */
.rv-modal ::-webkit-scrollbar { height: 6px; }
.rv-modal ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; }

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.01ms !important; }
}