/* Rolucheck — dezente, ruhige Bewegungen. Keine Spielereien. */

.reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.7s cubic-bezier(0.22,0.61,0.36,1), transform 0.7s cubic-bezier(0.22,0.61,0.36,1);
  will-change: opacity, transform;
}
.reveal.in { opacity: 1; transform: translateY(0); }

.reveal-left, .reveal-right, .reveal-scale, .reveal-fade {
  opacity: 0;
  transition: opacity 0.7s cubic-bezier(0.22,0.61,0.36,1), transform 0.7s cubic-bezier(0.22,0.61,0.36,1);
}
.reveal-left { transform: translateX(-16px); }
.reveal-right { transform: translateX(16px); }
.reveal-scale { transform: scale(0.985); }
.reveal-left.in, .reveal-right.in { opacity: 1; transform: translateX(0); }
.reveal-scale.in { opacity: 1; transform: scale(1); }
.reveal-fade.in { opacity: 1; }

/* Kinder-Stagger nur in Listen-Containern, sehr knapp */
.stagger > * { transition-delay: 0s; }
.stagger.in > *:nth-child(1) { transition-delay: 0.04s; }
.stagger.in > *:nth-child(2) { transition-delay: 0.10s; }
.stagger.in > *:nth-child(3) { transition-delay: 0.16s; }
.stagger.in > *:nth-child(4) { transition-delay: 0.22s; }
.stagger.in > *:nth-child(5) { transition-delay: 0.28s; }
.stagger.in > *:nth-child(6) { transition-delay: 0.34s; }

/* Hero — sanftes Einblenden, kein Wort-Tanz */
.hero h1, .hero-eyebrow, .hero-lead, .hero-cta-row, .hero-card, .trust-row, .hero .proof-row {
  opacity: 0;
  transform: translateY(14px);
  animation: heroFade 0.8s cubic-bezier(0.22,0.61,0.36,1) forwards;
}
.hero-eyebrow { animation-delay: 0.05s; }
.hero h1 { animation-delay: 0.15s; }
.hero-lead { animation-delay: 0.30s; }
.hero-cta-row { animation-delay: 0.42s; }
.hero .proof-row { animation-delay: 0.52s; }
.hero-card { animation-delay: 0.40s; }
.trust-row { animation-delay: 0.65s; }
@keyframes heroFade { to { opacity: 1; transform: translateY(0); } }

/* Karten — ganz dezenter Hover */
.why-card, .test-card, .scenario, .process-step, .legal-block, .faq-item, .team-card {
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.25s ease;
}
.why-card:hover, .test-card:hover, .scenario:hover, .process-step:hover, .team-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 32px -16px rgba(17,35,28,0.14);
}
.team-card:hover { border-color: rgba(45,168,108,0.28); }
.process-step:hover { border-color: var(--green); }
.legal-block:hover { border-color: rgba(45,168,108,0.28); }

/* Norm-Chip Hover */
.norm-chip { transition: background 0.25s, color 0.25s; }
.norm-chip:hover { background: var(--green); color: var(--white); }

/* Counter */
.count-up { font-variant-numeric: tabular-nums; }

/* Process gestrichelter Verbinder */
.process-grid::before {
  content: "";
  position: absolute;
  left: 5%; right: 5%; top: 56px; height: 2px;
  background: repeating-linear-gradient(90deg, rgba(45,168,108,0.22) 0, rgba(45,168,108,0.22) 6px, transparent 6px, transparent 14px);
  z-index: 0;
}
@media (max-width: 1080px) { .process-grid::before { display: none; } }

/* Scroll-Progress-Balken — sehr dezent, nur grün */
.scroll-progress {
  position: fixed; top: 0; left: 0; height: 2px;
  background: var(--green-bright);
  width: 0; z-index: 200; transition: width 0.1s linear;
}

/* Status-Dot pulsiert weich */
.status-dot {
  width: 9px; height: 9px; border-radius: 50%;
  background: var(--green-bright);
  box-shadow: 0 0 0 0 rgba(63,197,126,0.55);
  animation: statusPulse 2.6s cubic-bezier(0.4,0,0.2,1) infinite;
  display: inline-block;
}
@keyframes statusPulse {
  0%   { box-shadow: 0 0 0 0 rgba(63,197,126,0.55); }
  70%  { box-shadow: 0 0 0 10px rgba(63,197,126,0); }
  100% { box-shadow: 0 0 0 0 rgba(63,197,126,0); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001s !important; transition-duration: 0.001s !important; }
  .reveal, .reveal-left, .reveal-right, .reveal-scale, .reveal-fade { opacity: 1; transform: none; }
  .hero h1, .hero-eyebrow, .hero-lead, .hero-cta-row, .hero-card, .trust-row, .hero .proof-row { opacity: 1; transform: none; }
}
