[data-reveal] {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .7s ease, transform .7s ease;
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}
[data-reveal="left"]   { transform: translateX(-30px); }
[data-reveal="left"].is-visible  { transform: translateX(0); }
[data-reveal="right"]  { transform: translateX(30px); }
[data-reveal="right"].is-visible { transform: translateX(0); }

@keyframes floatSlow {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}
.hero-globe-float { animation: floatSlow 6s ease-in-out infinite; }

@keyframes dotPulse {
  0%,100% { r: 4.5; opacity: 1; }
  50% { r: 6; opacity: .6; }
}
.globe-dot circle { animation: dotPulse 2.6s ease-in-out infinite; }
.globe-dot circle:nth-child(2) { animation-delay: .3s; }
.globe-dot circle:nth-child(3) { animation-delay: .6s; }
.globe-dot circle:nth-child(4) { animation-delay: .9s; }
.globe-dot circle:nth-child(5) { animation-delay: 1.2s; }
.globe-dot circle:nth-child(6) { animation-delay: 1.5s; }
.globe-dot circle:nth-child(7) { animation-delay: 1.8s; }

@media (prefers-reduced-motion: reduce) {
  [data-reveal], .hero-globe-float, .globe-dot circle { animation: none !important; transition: none !important; opacity: 1 !important; transform: none !important; }
}