/* =========================================================
   ROOT.CSS – systemrelevantes CSS
   Hier kommt CSS rein, das an JS-gesteuerte Systemlogik gekoppelt ist
   (z. B. Cookie-Banner / Google-Maps-Umschaltung), NICHT das visuelle
   Template-Styling. Für das Template-Aussehen bitte style.css nutzen.
   ========================================================= */

/* --- Cookie-Banner / Google-Maps-Umschaltung (PageFunctions.js: startCookieBanner(), loadGoogleMaps()) --- */

.kontakt .kontaktMap .mapsPlaceholder {
  width: 100%;
  height: 430px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  text-align: center;
  padding: 24px;
  background: #f1f1f1;
}

.kontakt .kontaktMap .noMapsReplacePicture {
  width: 100%;
  height: 430px;
}

.kontakt .kontaktMap .noMapsReplacePicture a,
.kontakt .kontaktMap .noMapsReplacePicture img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 650px) {
  .kontakt .kontaktMap .mapsPlaceholder {
    height: 340px;
  }

  .kontakt .kontaktMap .noMapsReplacePicture {
    height: 340px;
  }
}

/* --- Viewport-Scroll-Reveal-Animation (PageFunctions.js: viewportTrigger()) ---
   JS beobachtet Elemente mit Klasse "element" per IntersectionObserver und
   fügt bei Sichtbarkeit "triggered-in-viewport" hinzu. */

.element {
  opacity: 1;
  transform: translateY(200px);
  transition:
    opacity 0.6s ease-out,
    transform 0.6s ease-out;
}

.elA {
  transform: translateY(200px);
}

.elB {
  transform: translateX(-250px);
}

.triggered-in-viewport {
  opacity: 1;
  transform: translate(0, 0);
}

/* --- WP-Block Ein-/Ausblend-System (PageFunctions.js: showWPblock()/hideWPblocks(), categories.js) --- */

#wpSack {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  padding-top: 100px;
  z-index: 900;
}

.wpHidden,
.wpVisible {
  overflow: hidden;
}

.wpHidden {
  opacity: 0;
  visibility: hidden;
  height: auto;
  overflow: hidden;
  pointer-events: none;
  position: absolute;
}

.wpVisible {
  opacity: 1;
  visibility: visible;
  height: auto;
  overflow: visible;
  pointer-events: auto;
  position: relative;
}

/* --- Interaktions-Sperre während 3D-Viewer-Übergängen (functions.js) --- */

.intocable {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  pointer-events: none;
}

/* --- Akkordeon-Mechanik (PageFunctions.js: accordeonStart()) ---
   JS setzt content.style.maxHeight dynamisch (abhängig von scrollHeight);
   overflow/transition müssen hier definiert sein, damit die Animation läuft. */

.accordion-content {
  max-height: 0;
  overflow: hidden;
  transition:
    max-height 0.3s ease,
    padding 0.3s ease;
}
