/* Transform/opacity only — cheap on GPU. No heavy infinite loops. */

.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.55s ease, transform 0.55s ease;
}
.reveal.is-visible {
  opacity: 1;
  transform: none;
}
.reveal-delay-1 { transition-delay: 0.08s; }
.reveal-delay-2 { transition-delay: 0.16s; }
.reveal-delay-3 { transition-delay: 0.24s; }

.hero-contour {
  animation: contour-drift 40s linear infinite;
}
@keyframes contour-drift {
  to { transform: translate3d(-40px, -24px, 0); }
}

.contour-dash,
svg .contour-line {
  stroke-dasharray: 6 10;
  animation: contour-dash 40s linear infinite;
}
@keyframes contour-dash {
  to { stroke-dashoffset: -320; }
}

.map-point {
  transform-origin: center;
  animation: map-pulse 2.8s ease-out 2;
}
.map-point-ring {
  transform-origin: center;
  opacity: 0.7;
  animation: map-ring 2.8s ease-out 2;
}
@keyframes map-pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  40% { transform: scale(1.12); opacity: 0.85; }
}
@keyframes map-ring {
  0% { transform: scale(0.6); opacity: 0.55; }
  100% { transform: scale(1.8); opacity: 0; }
}

.counter, .stat-value { font-variant-numeric: tabular-nums; }
.counter.is-ticking { color: var(--cyan); }

.card:hover,
a.card:hover,
.blog-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.32), 0 0 0 1px rgba(var(--cyan-rgb), 0.2);
}
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }
.chip:hover { transform: translateY(-1px); }
.wa-float:hover, .whatsapp-float:hover { transform: scale(1.06); }

.frame:hover {
  box-shadow:
    0 0 0 1px rgba(var(--green-rgb), 0.28),
    0 18px 50px rgba(var(--cyan-rgb), 0.16);
}

@media (hover: none) {
  .card:hover,
  a.card:hover,
  .blog-card:hover,
  .btn:hover,
  .chip:hover { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .hero-contour,
  .contour-dash,
  svg .contour-line,
  .map-point,
  .map-point-ring {
    animation: none !important;
  }
  .card:hover,
  a.card:hover,
  .blog-card:hover,
  .btn:hover,
  .chip:hover,
  .wa-float:hover,
  .nav,
  .dropdown,
  .nav-toggle span,
  .hamburger span {
    transition: none;
    transform: none;
  }
}
