/* Scroll-reveal base state (matches live site's animate-pre-hidden semantics) */
.animate-pre-hidden {
  opacity: 0 !important;
  visibility: hidden !important;
}

/* Lightbox overlay */
.lf-lightbox {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.9);
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
}
.lf-lightbox.is-open { display: flex; }
.lf-lightbox .lf-lb-img {
  max-width: 90vw;
  max-height: 90vh;
  object-fit: contain;
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.6);
}
.lf-lightbox button {
  position: absolute;
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.3);
  font-size: 24px;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s;
}
.lf-lightbox button:hover { background: rgba(255, 255, 255, 0.25); }
.lf-lightbox .lf-lb-close { top: 20px; right: 20px; }
.lf-lightbox .lf-lb-prev { left: 20px; top: 50%; transform: translateY(-50%); }
.lf-lightbox .lf-lb-next { right: 20px; top: 50%; transform: translateY(-50%); }
body.lf-lb-body-open { overflow: hidden; }

@media (max-width: 640px) {
  .lf-lightbox .lf-lb-prev { left: 8px; }
  .lf-lightbox .lf-lb-next { right: 8px; }
  .lf-lightbox button { width: 40px; height: 40px; font-size: 20px; }
  .lf-lightbox .lf-lb-close { top: 10px; right: 10px; }
}

/* Testimonial avatars: force a square box so border-radius:50% renders a perfect circle
   regardless of the source image's aspect ratio. The image fills the box via object-fit. */
.testimonials .author-avatar-rounded {
  width: 120px !important;
  height: 120px !important;
  overflow: hidden;
}
.testimonials .author-avatar-rounded .kmb-widget-image-item {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  object-position: center;
}

/* Mobile testimonial slider: show one card at full width instead of two cramped ones.
   Slider items have inline style="width:50%"; !important is needed to override that. */
@media (max-width: 767px) {
  .testimonials .kmb-site-slider-item {
    width: 100% !important;
  }
  /* Card padding — comfortable reading width on mobile. */
  .testimonials .testimonial-item-info {
    padding-left: 28px !important;
    padding-right: 28px !important;
  }
  /* Bigger dots + larger tap area via ::before (visible dot stays small, hit zone grows) */
  .testimonials .slider-indicator {
    margin: 0 6px !important;
    cursor: pointer;
    position: relative;
  }
  .testimonials .slider-indicator::before {
    content: '';
    position: absolute;
    inset: -12px;
  }
}

/* Contact form inline error feedback (Web3Forms / network errors) */
.lf-form-feedback {
  margin-top: 16px;
  padding: 12px 16px;
  border-radius: 6px;
  font-size: 14px;
  line-height: 1.5;
  text-align: center;
}
.lf-form-feedback-error {
  background: #fdecec;
  color: #8a1f1f;
  border: 1px solid #f5c2c2;
}

/* Contact form success panel — replaces the form on successful submit */
.lf-form-success {
  display: none;
  text-align: center;
  padding: 56px 24px;
}
.lf-form-submitted .kmb-contact-form { display: none !important; }
.lf-form-submitted .lf-form-success {
  display: block;
  animation: lf-form-success-in 0.5s ease-out both;
}
.lf-form-success-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #377F8E;
  margin-bottom: 22px;
}
.lf-form-success-icon svg {
  width: 72px;
  height: 72px;
  display: block;
}
.lf-form-success-icon circle {
  stroke-dasharray: 184;
  stroke-dashoffset: 184;
  animation: lf-form-success-circle 0.55s ease-out 0.05s forwards;
}
.lf-form-success-icon path {
  stroke-dasharray: 60;
  stroke-dashoffset: 60;
  animation: lf-form-success-check 0.4s ease-out 0.45s forwards;
}
.lf-form-success-title {
  font-size: 26px;
  font-weight: 700;
  line-height: 1.25;
  margin: 0 0 14px;
  color: #1f3138;
}
.lf-form-success-text {
  font-size: 16px;
  line-height: 1.65;
  margin: 0;
  color: #4a5b62;
}
@keyframes lf-form-success-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes lf-form-success-circle {
  to { stroke-dashoffset: 0; }
}
@keyframes lf-form-success-check {
  to { stroke-dashoffset: 0; }
}
@media (max-width: 640px) {
  .lf-form-success { padding: 40px 16px; }
  .lf-form-success-title { font-size: 22px; }
  .lf-form-success-text { font-size: 15px; }
}

/* DSGVO consent checkbox: align checkbox flush with form input field borders. */
.lf-privacy-group {
  margin: 8px 0 !important;
  padding: 0 !important;
  width: 100% !important;
}
.lf-privacy-label {
  display: flex !important;
  align-items: flex-start;
  gap: 10px;
  font-size: 14px;
  line-height: 1.5;
  cursor: pointer;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  text-align: left;
}
.lf-privacy-checkbox {
  margin: 3px 0 0 0 !important;
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  cursor: pointer;
  accent-color: #377F8E;
}
.lf-privacy-label a {
  color: #377F8E;
  text-decoration: underline;
}
.lf-privacy-label a:hover {
  text-decoration: none;
}

/* Long-form legal page typography (Datenschutz, Impressum, AGB) */
.kmb-datenschutz-content .kmb-widget-description {
  text-align: left;
}
.kmb-datenschutz-content .kmb-widget-description h2 {
  font-family: 'Ubuntu', sans-serif;
  font-size: 26px;
  font-weight: 700;
  color: #377F8E;
  margin: 32px 0 12px;
  line-height: 1.3;
}
.kmb-datenschutz-content .kmb-widget-description h3 {
  font-family: 'Ubuntu', sans-serif;
  font-size: 19px;
  font-weight: 600;
  color: #434445;
  margin: 22px 0 10px;
  line-height: 1.35;
}
.kmb-datenschutz-content .kmb-widget-description p {
  margin: 0 0 12px;
  line-height: 1.65;
}
.kmb-datenschutz-content .kmb-widget-description ul {
  list-style: disc outside;
  padding-left: 22px;
  margin: 0 0 16px;
}
.kmb-datenschutz-content .kmb-widget-description ul li {
  margin: 4px 0;
  line-height: 1.6;
}
.kmb-datenschutz-content .kmb-widget-description a {
  color: #377F8E;
  text-decoration: underline;
  text-underline-offset: 2px;
  word-break: break-word;
  transition: color 0.15s ease;
}
.kmb-datenschutz-content .kmb-widget-description a:hover {
  color: #1f5b67;
  text-decoration: underline;
}

/* Opening-hours block (kontakt.html). The Hocoos export shipped with day names
   at ~20px and times at ~14px which read as two unrelated lines. Make them a
   matched pair, align both columns on a single baseline row, and tighten the
   colon spacing so "09 : 00" reads as "09:00". */
.kmb-widget-opening-hours {
  width: 100%;
  max-width: 480px;
  margin: 0 auto;
}
.kmb-widget-opening-hours .kmb-widget-opening-hours-item {
  display: flex !important;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 8px;
  margin: 0 !important;
  border-bottom: 1px solid rgba(55, 127, 142, 0.18);
}
.kmb-widget-opening-hours .kmb-widget-opening-hours-item:last-child {
  border-bottom: none;
}
.kmb-widget-opening-hours .kmb-day-label {
  flex: 0 0 auto !important;
  width: auto !important;
}
.kmb-widget-opening-hours .kmb-day-label-name {
  font-size: 19px !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
  text-transform: none !important;
}
.kmb-widget-opening-hours .kmb-opening-hours {
  width: auto !important;
  min-width: 0 !important;
  text-align: right;
  flex: 0 0 auto;
}
.kmb-widget-opening-hours .kmb-opening-hours-value {
  font-size: 18px !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
  font-variant-numeric: tabular-nums;
}
.kmb-widget-opening-hours .kmb-opening-hours-time-separetor {
  font-size: 0;
}
.kmb-widget-opening-hours .kmb-opening-hours-time-separetor::before {
  content: ":";
  font-size: 18px;
}
.kmb-widget-opening-hours .kmb-opening-hours-day-off-value {
  font-style: italic;
  opacity: 0.85;
}
@media (max-width: 640px) {
  .kmb-widget-opening-hours {
    max-width: 320px;
  }
  .kmb-widget-opening-hours .kmb-day-label-name {
    font-size: 16px !important;
  }
  .kmb-widget-opening-hours .kmb-opening-hours-value {
    font-size: 15px !important;
  }
  .kmb-widget-opening-hours .kmb-opening-hours-time-separetor::before {
    font-size: 15px;
  }
}

/* Contact-page map widget — keep the map at its natural max-width but render
   the strip outside it (visible on viewports >1900px) as white instead of the
   default light-blue secondary background. */
.contacts-t11.kmb-site-widget-has-secondary-bg {
  background: #fff !important;
}

/* Footer link hover — underline, keep colour */
.kmb-site-footer .kmb-menu-item-link,
.kmb-site-footer .kmb-footer-contact-item-label-group,
.kmb-site-footer .kmb-footer-contact-item-label-group .kmb-footer-contact-item-label {
  text-decoration: none;
}
.kmb-site-footer .kmb-menu-item-link:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.kmb-site-footer .kmb-footer-contact-item-label-group:hover .kmb-footer-contact-item-label,
.kmb-site-footer .kmb-footer-contact-item-label-group:hover .__cf_email__ {
  text-decoration: underline !important;
  text-underline-offset: 3px;
}

/* Header nav hover — underline instead of lighter colour (so hover strengthens, not weakens) */
.kmb-site-header .kmb-main-menu .kmb-menu-item-link {
  transition: text-decoration 0.15s ease;
}
.kmb-site-header .kmb-main-menu .kmb-menu-item-link:hover,
.kmb-site-header .kmb-main-menu .kmb-menu-item-more:hover {
  text-decoration: underline !important;
  text-underline-offset: 4px;
  color: var(--headerColor) !important;
}

/* Neutralise Hocoos's active-page styling: only some pages carry
   `kmb-menu-item-link-active` (Referenzen, Kontakt, Blog, legal pages), while
   the homepage doesn't, so the indicator is inconsistent. Render the active
   link exactly like a regular nav link — no bold, no special colour. */
.kmb-site-header .kmb-main-menu .kmb-menu-item-link-active,
.kmb-site-header .kmb-main-menu .kmb-menu-item-link.kmb-menu-item-link-active {
  color: var(--headerColor) !important;
  font-weight: inherit !important;
  text-decoration: none;
}

/* Mobile navigation — bigger tap targets, comfortable spacing,
   click-to-toggle "Mehr" submenu */
@media (max-width: 1023px) {
  /* Full-width off-canvas: anchor to the left edge (matching the hamburger position),
     span the entire viewport width. Default Hocoos was max-width:300px right-aligned,
     which on tablet sizes left a confusing narrow column floating on the right. */
  .kmb-horizontal-menu-navbar-collapse {
    left: 0 !important;
    right: auto !important;
    max-width: 100vw !important;
    width: 100vw !important;
    padding: 24px 24px 32px;
    transform: translate(-110%);
  }
  body.kmb-visible-menu .kmb-horizontal-menu-navbar-collapse {
    transform: none !important;
  }
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu {
    display: flex !important;
    flex-direction: column;
    gap: 4px;
    width: 100%;
  }
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu > li {
    width: 100%;
  }
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu > li > .kmb-menu-item-link,
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu > li > .kmb-menu-item-more {
    display: flex;
    align-items: center;
    width: 100%;
    padding: 14px 4px !important;
    font-size: 18px;
    min-height: 48px;
    border-bottom: 1px solid #E5EDF1;
  }
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu > li:last-child > .kmb-menu-item-link,
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu > li:last-child > .kmb-menu-item-more {
    border-bottom: none;
  }
  /* "Mehr" trigger: aligned with arrow on right */
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-menu-item-has-children > .kmb-menu-item-more {
    justify-content: space-between;
    cursor: pointer;
  }
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-menu-item-has-children > .kmb-menu-item-sub-menu-arrow,
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-menu-item-has-children .kmb-site-icon-angle-down {
    display: none !important;
  }
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-menu-item-more::after {
    content: '›';
    font-size: 22px;
    line-height: 1;
    margin-left: 8px;
    transition: transform 0.2s ease;
    display: inline-block;
  }
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-menu-item-has-children.kmb-mobile-submenu-open > .kmb-menu-item-more::after {
    transform: rotate(90deg);
  }
  /* Submenu — hidden by default on mobile, shown when parent has open class.
     Need to override Hocoos's desktop dropdown CSS (opacity / transform / visibility / position). */
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-menu-item-has-children > .kmb-sub-menu {
    display: none !important;
    position: static !important;
    transform: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    list-style: none;
    margin: 0;
    padding: 0 0 4px 16px;
    background: transparent !important;
    width: 100%;
    min-width: 0 !important;
    max-width: 100%;
    box-shadow: none !important;
    border: none !important;
  }
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-menu-item-has-children.kmb-mobile-submenu-open > .kmb-sub-menu {
    display: block !important;
  }
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-sub-menu > li {
    display: block !important;
    width: 100%;
  }
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-sub-menu > li > .kmb-menu-item-link {
    display: flex;
    align-items: center;
    padding: 12px 4px;
    font-size: 16px;
    min-height: 44px;
  }
  /* No hover underline on mobile (touch has no real hover state — sticky :hover is confusing). */
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-menu-item-link:hover,
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-menu-item-more:hover,
  .kmb-horizontal-navbar-collapse-menu .kmb-main-menu .kmb-menu-item-more:hover::after {
    text-decoration: none !important;
  }
}

/* Mobile menu open state: lock body scroll so the page underneath doesn't shift,
   and freeze the sticky-header transitions that would otherwise fight the menu layout. */
body.kmb-visible-menu {
  overflow: hidden !important;
  overscroll-behavior: contain;
  touch-action: none;
}
body.kmb-visible-menu .kmb-site-header,
body.kmb-visible-menu .kmb-site-header * {
  transition: none !important;
  animation: none !important;
}
body.kmb-visible-menu .kmb-horizontal-menu-navbar-collapse {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y;
}
