.muted { color: var(--muted); }
.mt-0 { margin-top: 0; }
.mt-5 { margin-top: var(--space-5); }
.mb-0 { margin-bottom: 0; }
.text-xl { font-size: var(--text-lg); }
.text-center { text-align: center; }
.text-right { text-align: right; }

.h-display { font-size: var(--h1); letter-spacing: -0.04em; line-height: 0.92; }
.h-xxl { font-size: var(--h2); }
.h-xl { font-size: var(--h3); }

.grid-2,
.grid-asym {
  display: grid;
  gap: var(--space-4);
}

@media (min-width: 900px) {
  .grid-2 { grid-template-columns: 1fr 1fr; }
  .grid-asym { grid-template-columns: 0.7fr 1.3fr; }
}

.gap-0 { gap: 0; }
.gap-2 { gap: var(--space-2); }
.gap-4 { gap: var(--space-4); }
.px-section { padding-inline: clamp(1rem, 2vw, 2rem); }
.py-section { padding-block: var(--space-6); }

/* Nur mit aktivem JS ausblenden – ohne JS bleibt der Inhalt sichtbar. */
.js .reveal,
.js .reveal-x,
.js .reveal-left,
.js .reveal-right {
  opacity: 0;
  transition: opacity 0.55s ease, transform 0.55s ease;
  will-change: opacity, transform;
}

.js .reveal { transform: translateY(22px); }
.js .reveal-x { transform: translateX(22px); }
.js .reveal-left { transform: translateX(-24px); }
.js .reveal-right { transform: translateX(24px); }

.js .reveal.is-visible,
.js .reveal-x.is-visible,
.js .reveal-left.is-visible,
.js .reveal-right.is-visible {
  opacity: 1;
  transform: translate(0);
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }

  .js .reveal,
  .js .reveal-x,
  .js .reveal-left,
  .js .reveal-right,
  .js .reveal.is-visible,
  .js .reveal-x.is-visible,
  .js .reveal-left.is-visible,
  .js .reveal-right.is-visible {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .btn,
  .faq-list summary::after,
  .main-nav,
  .menu-overlay,
  .material-tilt { transition: none !important; }

  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}
