.reveal-on-scroll {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.55s cubic-bezier(.22,.68,0,1.2), transform 0.55s cubic-bezier(.22,.68,0,1.2);
}

.reveal-on-scroll.revealed {
  opacity: 1;
  transform: none;
}

.reveal-on-scroll.delay-1 { transition-delay: 0.1s; }
.reveal-on-scroll.delay-2 { transition-delay: 0.2s; }
.reveal-on-scroll.delay-3 { transition-delay: 0.3s; }
.reveal-on-scroll.delay-4 { transition-delay: 0.4s; }

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: none; }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes heroGlow {
  0%   { opacity: 0.45; }
  50%  { opacity: 0.75; }
  100% { opacity: 0.45; }
}

@keyframes pulse-ring {
  0%   { transform: scale(1); opacity: 0.6; }
  100% { transform: scale(1.6); opacity: 0; }
}

@keyframes slide-in-left {
  from { opacity: 0; transform: translateX(-32px); }
  to   { opacity: 1; transform: none; }
}

.anim-fade-in-up { animation: fadeInUp 0.6s ease both; }
.anim-fade-in    { animation: fadeIn 0.5s ease both; }
.anim-slide-left { animation: slide-in-left 0.55s ease both; }

.btn {
  transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease, opacity 0.18s ease;
}
.btn:hover  { transform: translateY(-2px); }
.btn:active { transform: translateY(0); }

.bonus-card {
  transition: transform 0.22s ease, box-shadow 0.22s ease;
}
.bonus-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 16px 40px rgba(211, 41, 130, 0.18);
}

.review-card {
  transition: box-shadow 0.22s ease;
}
.review-card:hover {
  box-shadow: 0 8px 30px rgba(211, 41, 130, 0.1);
}

.faq-answer {
  transition: none;
}

.faq-item .faq-icon {
  transition: transform 0.25s ease;
}
.faq-item.faq-open .faq-icon {
  transform: rotate(180deg);
}

.back-to-top {
  transition: opacity 0.25s ease, transform 0.25s ease;
  opacity: 0;
}
.back-to-top:not([hidden]) {
  opacity: 1;
}
.back-to-top:hover {
  transform: translateY(-3px);
}

.rating-details-panel {
  animation: fadeInUp 0.2s ease both;
}

.reply-form-wrap:not([hidden]) {
  animation: fadeInUp 0.22s ease both;
}

.screenshot-item {
  transition: transform 0.2s ease;
}
.screenshot-item:hover {
  transform: scale(1.02);
}

.nav-link {
  transition: color 0.15s ease;
}

.social-link {
  transition: color 0.18s ease, transform 0.18s ease;
}
.social-link:hover {
  transform: scale(1.12);
}

.vote-btn {
  transition: color 0.15s ease, background 0.15s ease;
}

.vote-btn.vote-active { color: #D32982; }

.source-link {
  transition: color 0.15s ease;
}

@media (prefers-reduced-motion: reduce) {
  .reveal-on-scroll,
  .btn,
  .bonus-card,
  .review-card,
  .faq-item .faq-icon,
  .screenshot-item,
  .social-link,
  .back-to-top {
    transition: none !important;
    animation: none !important;
    transform: none !important;
  }
  .reveal-on-scroll { opacity: 1; }
}
