/* ==========================================================================
   Animations — Scroll-Reveal, Micro-Interactions
   Regel: Reveal startet bei opacity:1, animiert wird ausschließlich transform
   (kein opacity:0-Startzustand — sonst bleiben Sections in Full-Page-
   Screenshots/Crawlern leer).
   ========================================================================== */

.reveal {
  transform: translateY(28px);
  transition: transform 650ms var(--ease-out);
  will-change: transform;
}

.reveal.is-visible { transform: translateY(0); }

.reveal-stagger > * {
  transform: translateY(28px);
  transition: transform 650ms var(--ease-out);
}
.reveal-stagger.is-visible > * { transform: translateY(0); }
.reveal-stagger.is-visible > *:nth-child(1) { transition-delay: 0ms; }
.reveal-stagger.is-visible > *:nth-child(2) { transition-delay: 60ms; }
.reveal-stagger.is-visible > *:nth-child(3) { transition-delay: 120ms; }
.reveal-stagger.is-visible > *:nth-child(4) { transition-delay: 180ms; }
.reveal-stagger.is-visible > *:nth-child(5) { transition-delay: 240ms; }
.reveal-stagger.is-visible > *:nth-child(6) { transition-delay: 300ms; }

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal-stagger > * {
    transition: none !important;
    transform: none !important;
  }
}

/* ---- Hero fade-in on load ---- */
.hero-slide__copy > * {
  animation: hero-rise 720ms var(--ease-out) both;
}
.hero-slide__copy .eyebrow { animation-delay: 60ms; }
.hero-slide__copy h1, .hero-slide__copy h2 { animation-delay: 140ms; }
.hero-slide__copy p { animation-delay: 220ms; }
.hero-slide__actions { animation-delay: 300ms; }

@keyframes hero-rise {
  from { transform: translateY(18px); }
  to { transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .hero-slide__copy > * { animation: none !important; }
}

/* ---- Press feedback ---- */
a.btn, button, .service-card, .footer-contact-line, .primary-nav a {
  -webkit-tap-highlight-color: transparent;
}

/* ---- Link underline sweep (footer, entry content) ---- */
.entry-content a:not(.btn) {
  background-image: linear-gradient(var(--accent), var(--accent));
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0% 2px;
  transition: background-size var(--dur-base) var(--ease-out);
  color: var(--accent-dark);
  font-weight: 600;
}
.entry-content a:not(.btn):hover { background-size: 100% 2px; }

/* ---- Counter number tick ---- */
.stat__num { font-variant-numeric: tabular-nums; }
