/* ===== UDL shared animations ===== */

/* Scroll reveal */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity .6s ease, transform .6s ease; }
.reveal.visible { opacity: 1; transform: none; }

/* Process step-blocks slide in from alternating sides */
.step-block.reveal { transform: translateX(-28px); }
.step-block.reverse.reveal { transform: translateX(28px); }
.step-block.reveal.visible { transform: none; }

/* Card hover lift */
.why-card, .svc-card, .who-card, .benefit, .plan, .review-card, .qc-photo, .qc-ph, .product-card, .order, .stat-card, .case-card {
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.why-card:hover, .svc-card:hover, .who-card:hover, .benefit:hover, .plan:hover, .review-card:hover, .product-card:hover, .case-card:hover {
  transform: translateY(-4px); border-color: rgba(192,57,43,0.45); box-shadow: 0 10px 26px rgba(0,0,0,0.35);
}
.qc-photo:hover, .qc-ph:hover, .order:hover, .stat-card:hover {
  transform: translateY(-3px); border-color: rgba(192,57,43,0.45);
}

/* Respect reduced-motion preference */
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
}
