.reveal {
  opacity: 0;
  transform: translateY(12px);
  filter: blur(4px);
  transition:
    opacity 0.7s ease,
    transform 0.7s ease,
    filter 0.7s ease;
  will-change: opacity, transform, filter;
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

[data-reveal="fade-in"] {
  transform: translateY(0);
}

[data-reveal="scale-in"] {
  transform: scale(0.97);
}

[data-reveal="scale-in"].is-visible {
  transform: scale(1);
}

[data-reveal-delay] {
  transition-delay: calc(var(--reveal-delay, 0ms));
}

@media (hover: hover) and (pointer: fine) {
  .card:hover,
  .hero-card:hover,
  .summary-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-soft);
  }

  .btn:hover {
    transform: translateY(-1px);
  }

  a:hover {
    text-decoration: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal.is-visible {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    filter: none !important;
  }

  .card,
  .btn,
  .hero-card,
  .summary-card {
    transition: none !important;
  }

  .photo-track {
    animation: none !important;
  }

  .fade-step {
    transition: none !important;
  }
}
