/* Additions on top of the original compiled stylesheet (site.css) —
   keep this file small; anything design-changing needs customer sign-off. */

/* Inter, self-hosted (GDPR: no request to Google Fonts — LG München,
   Az. 3 O 17493/20). Latin subset covers German umlauts. */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/fonts/inter-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/fonts/inter-latin-500-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/assets/fonts/inter-latin-600-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/assets/fonts/inter-latin-700-normal.woff2') format('woff2');
}

/* --- Vertical-rhythm pass (2026-08-16, Devins Wunsch: weniger Weißraum) ---
   The generated design is extremely airy: `section-padding` alone is 7rem
   top+bottom, heroes stack another 8-9rem on top. These overrides tighten
   the whole scale; they win over site.css by load order. The classes below
   are used exclusively for section/main padding (verified via grep). */
.section-padding { padding-top: 3rem; padding-bottom: 3rem; }
.py-20 { padding-top: 3.5rem; padding-bottom: 3.5rem; }
.py-16 { padding-top: 3rem; padding-bottom: 3rem; }
.py-12 { padding-top: 2.5rem; padding-bottom: 2.5rem; }
.pb-16 { padding-bottom: 3rem; }
.pt-32 { padding-top: 7rem; } /* fixed header ≈ 100px on mobile */

@media (min-width: 768px) {
  .section-padding { padding-top: 4.5rem; padding-bottom: 4.5rem; }
  .md\:py-28 { padding-top: 5rem; padding-bottom: 5rem; }
  .md\:py-24 { padding-top: 4.5rem; padding-bottom: 4.5rem; }
  .md\:py-20 { padding-top: 3.75rem; padding-bottom: 3.75rem; }
  .md\:pb-24 { padding-bottom: 4.5rem; }
  /* Re-declared so they keep winning over the tightened base classes at
     md+ (custom.css loads last, so base overrides would otherwise beat
     site.css's md rules). Values ≈ header clearance + breathing room. */
  .md\:pt-36 { padding-top: 8.5rem; }
  .md\:pt-40 { padding-top: 9rem; }
}

@media (min-width: 1024px) {
  .lg\:py-28 { padding-top: 5.5rem; padding-bottom: 5.5rem; }
}

/* Smooth anchor scrolling (guided-form deep links) with clearance for the
   fixed header. */
html {
  scroll-behavior: smooth;
}
[id] {
  scroll-margin-top: 7.5rem;
}

/* Scroll-reveal (restores the original SPA behaviour). The hiding class is
   only ever added by site.js, so no-JS users and crawlers see everything. */
.js-reveal {
  opacity: 0;
}
.js-reveal.is-visible {
  animation: fade-up 0.6s ease-out forwards;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  .js-reveal {
    opacity: 1;
  }
  .js-reveal.is-visible {
    animation: none;
  }
}
