/* ============ Keyframes & reveal ============ */

@keyframes bgd-blink {
  0%, 49%   { opacity: 1; }
  50%, 100% { opacity: 0; }
}

@keyframes bgd-pulse {
  0%, 100% { transform: translate(-50%, -50%) scale(1);   opacity: 0.5; }
  50%      { transform: translate(-50%, -50%) scale(1.7); opacity: 1; }
}

@keyframes bgd-dash {
  to { stroke-dashoffset: -24; }
}

@keyframes bgd-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-9px); }
}

/* Ping uses translate(-50%,-50%) baseline via the pulse keyframe */
.ping { transform: translate(-50%, -50%); }

/* ── Reveal-on-scroll ─────────────────────────── */
[data-reveal] {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s var(--ease), transform 0.7s var(--ease);
  transition-delay: var(--reveal-delay, 0ms);
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Staggered service / case cards */
.services__grid [data-reveal]:nth-child(2) { --reveal-delay: 70ms; }
.services__grid [data-reveal]:nth-child(3) { --reveal-delay: 140ms; }
.services__grid [data-reveal]:nth-child(4) { --reveal-delay: 210ms; }
.services__grid [data-reveal]:nth-child(5) { --reveal-delay: 280ms; }
.services__grid [data-reveal]:nth-child(6) { --reveal-delay: 350ms; }

.hero__col [data-reveal]:nth-child(2) { --reveal-delay: 120ms; }
.hero__col [data-reveal]:nth-child(3) { --reveal-delay: 240ms; }
.hero__col [data-reveal]:nth-child(4) { --reveal-delay: 360ms; }
.hero__col [data-reveal]:nth-child(5) { --reveal-delay: 480ms; }

/* Language switch fade */
.lang-fading [data-i18n] {
  opacity: 0;
  transform: translateY(4px);
  transition: opacity 180ms var(--ease), transform 180ms var(--ease);
}

/* ── Reduced motion ───────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  [data-reveal] { opacity: 1; transform: none; }
}
