/* Scroll reveal. Hidden state only applies when JS is running. */
.js [data-reveal] {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity var(--dur-slow) var(--ease), transform var(--dur-slow) var(--ease);
  transition-delay: calc(var(--reveal-i, 0) * 70ms);
}
.js [data-reveal].is-visible { opacity: 1; transform: none; }

/* Hover lift */
.card, .btn, .plan-card, .post-card, .review-card {
  transition: transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease),
    background-color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}
.card:hover, .plan-card:hover, .post-card:hover, .review-card:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
.btn:hover { transform: translateY(-2px); }

/* Hero product grid demo */
.product-grid .tile { transition: transform var(--dur-slow) var(--ease), box-shadow var(--dur) var(--ease); }
.product-grid .tile.is-lifted {
  transform: translateY(-10px) rotate(-3deg) scale(1.03);
  box-shadow: var(--shadow-lift);
  z-index: 2;
}
.product-grid .tile.is-lifted .tile-handle { opacity: 1; }
.product-grid.is-idle { animation: grid-breathe 6s var(--ease) infinite; }
@keyframes grid-breathe {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
}

/* Price change */
.price-amount { display: inline-block; transition: opacity var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease); }
.price-amount.is-changing { opacity: 0; transform: translateY(-6px); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js [data-reveal], [data-reveal] { opacity: 1; transform: none; transition: none; }
  .product-grid, .product-grid.is-idle { animation: none; }
  .product-grid .tile, .product-grid .tile.is-lifted { transition: none; transform: none; }
  .card, .btn, .plan-card, .post-card, .review-card, .price-amount { transition: none; }
  .card:hover, .btn:hover, .plan-card:hover, .post-card:hover, .review-card:hover { transform: none; }
}
