/* Contact CTA */

.contact-cta {
  text-align: center;
  background: var(--color-primary);
  color: var(--color-text-inverse);
  max-width: none;
  padding: var(--gap-section) var(--padding-page);
}

.contact-cta h2 {
  color: var(--color-text-inverse);
  margin-block-end: var(--gap-inline);
}

/* Eyebrow auf dem primary-Band: primary-on-primary wäre unsichtbar → invers. */
.contact-cta > header span {
  color: var(--color-text-inverse);
}

.contact-cta p {
  /* 0.85 Opacity reichte beim primary-BG nicht für 4.5:1. Voll weißer
     Text ist gegen die meisten primary-Farben sicher AAA. */
  color: var(--color-text-inverse);
  max-width: 40rem;
  margin-inline: auto;
  margin-block-end: var(--gap-block);
}

.contact-cta button {
  background: var(--color-bg);
  color: var(--color-primary);
  border-color: var(--color-bg);
}

.contact-cta button:hover {
  background: transparent;
  color: var(--color-text-inverse);
  border-color: var(--color-bg);
}

/* Sticky CTA Bar
   Fixed bar at bottom of viewport. Shows while scrolling,
   hides when the actual contact-cta section is in view.
   Created dynamically by global/sticky-cta.js. */

#sticky-cta {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  display: flex;
  justify-content: center;
  padding: var(--space-3) var(--padding-page);
  background: var(--color-bg);
  border-top: 0.0625rem solid var(--color-border);
  box-shadow: var(--shadow);
  animation: slide-up 300ms ease;
}

#sticky-cta[hidden] {
  display: none;
}

#sticky-cta button {
  width: 100%;
  max-width: 30rem;
  justify-content: center;
}

@keyframes slide-up {
  from { transform: translateY(100%); }
  to   { transform: translateY(0); }
}
