/*
Theme Name:     KadenceChild
Theme URI:      n/a
Template:       kadence
Author:         Pro Author
Author URI:     n/a
Description:    Child Theme Description
Version:        1.0
License:        GNU General Public License v3.0 (or later)
License URI:    https://www.gnu.org/licenses/gpl-3.0.html
*/



/* 1. Den Bild-Container als Maske definieren */
.kb-post-list-item .post-thumbnail-inner {
  position: relative;
  overflow: hidden; /* WICHTIG: Behält die Außenmaße bei */
  display: block;
  line-height: 0;
  /* Falls Kadence einen Radius auf dem Link oder Div hat, wird er hier übernommen */
  border-radius: inherit; 
}

/* 2. Das Bild für den Zoom vorbereiten */
.kb-post-list-item .post-thumbnail-inner img {
  transition: transform 0.3s ease-in-out;
  display: block;
  width: 100%;
  height: auto;
  border-radius: inherit;
}

/* 3. Der leichte Schleier (Overlay) */
.kb-post-list-item .post-thumbnail-inner::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.12); /* Dein gewünschter Schleier */
  transition: opacity 0.4s ease-in-out;
  z-index: 1;
  pointer-events: none;
  border-radius: inherit;
}




/* --- HOVER LOGIK --- */

/* Wenn das Listen-Element gehovert wird -> Bild zoomen */
.kb-post-list-item:hover .post-thumbnail-inner img,
.kb-post-list-item.is-active .post-thumbnail-inner img  {
  transform: scale(1.08); /* Sanfter Zoom nach innen */
}

/* Wenn das Listen-Element gehovert wird -> Schleier entfernen */
.kb-post-list-item:hover .post-thumbnail-inner::before,
.kb-post-list-item.is-active .post-thumbnail-inner::before {
  opacity: 0;
}

/* Fix für Safari & abgerundete Ecken während der Animation */
.kb-post-list-item .post-thumbnail-inner {
  -webkit-mask-image: -webkit-radial-gradient(white, black);
}




.mobile-navigation:not(.drawer-navigation-parent-toggle-true) ul li.menu-item-has-children .drawer-nav-drop-wrap button {
  border-left: 0px solid var(--global-palette7);
}



/* 1. Standard-Zustand: Transition definieren für das "weiche" Skalieren */
.site-header-inner-wrap .site-branding {
    transition: transform 0.2s ease-out;
    transform-origin: left center; /* Sorgt dafür, dass das Logo nach links ausgerichtet bleibt beim Verkleinern */
}

/* 2. Wenn der Header "stuck" ist: Skalierung auf 80% */
.site-header-inner-wrap.item-is-stuck .site-branding {
    transform: scale(0.7);
}
 /*#######################################################################
#######################################################################*/

/* 1. Den Text-Anker stabil halten */
.kt-btn-inner-text {
    position: relative;
    display: inline-block;
}

/* 2. Das große, weiße 90° SVG-Icon - jetzt mit dünneren Linien */
.kt-btn-inner-text::after {
    content: "";
    position: absolute;
    left: 100%;
    top: 50%;
    
    width: 22px;
    height: 22px;
    
    /* stroke-width auf 3.5 reduziert für einen feineren Look */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E");
    background-size: contain;
    background-repeat: no-repeat;
    
    opacity: 0;
    margin-left: 8px;
    /* Startposition: vertikal zentriert und leicht versetzt */
    transform: translateY(-50%) translateX(-10px);
    transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94), opacity 0.3s ease;
    pointer-events: none;
}


/*brauchen wir nicht mehr, weil wir das icon des buttons nutzen.*/
/* 3. Hover: Das Icon fährt raus */
/*.kb-button:hover .kt-btn-inner-text::after,
.kb-button.is-active .kt-btn-inner-text::after {
    opacity: 1;
    transform: translateY(-50%) translateX(12px);
}*/

/*#######################################################################
#######################################################################*/

.image-magnifier {
    position: relative;
    display: block !important;
    cursor: crosshair;
    /* Jetzt explizit auf visible, damit die Linse überstehen darf */
    overflow: visible !important; 
    z-index: 10 !important;;
}

.image-magnifier img {
    display: block;
    width: 100%;
    height: auto;
    /* Wichtig, damit die Linse sich auf das Bild bezieht */
    pointer-events: all; 
}

.magnifier-lens {
    position: absolute;
    width: 400px;
    height: 400px;
    border: 3px solid #fff;
    border-radius: 50%;
    box-shadow: 0 10px 30px rgba(0,0,0,0.4);
    pointer-events: none;
    display: none;
    z-index: 9999!important;; /* Sehr hoch, damit sie über anderen Elementen schwebt */
    background-repeat: no-repeat;
    background-color: #fff;
}

/* Zeigt die Linse nur, wenn man über dem Container ist */
.image-magnifier:hover .magnifier-lens {
    display: block;
}

 /*#######################################################################
#######################################################################*/


.kb-adv-form-field select option {
    color: #000!important;
}

 /*#######################################################################
#######################################################################*/

.my-chart-box { 
    position: relative;
    min-height: 500px;
    width: 100%;
    max-width: 1290px;
}

@media (max-width: 767px) {
    .my-chart-box {
        min-height: 600px !important; /* Mehr Platz für die Legende unter dem Chart */
        max-width: 100%;
    }
}

.custom-chart {
    display: block !important;
    filter: drop-shadow(0px 10px 12px rgba(0,0,0,0.1));
}

 /*#######################################################################
#######################################################################*/



.fold-out-section {
    position: relative;
    /* Wir schalten den Standard-Hover für die Sektion quasi "blind" 
       und steuern ihn über ein Kind-Element oder Pseudo-Element */
    pointer-events: none; 
}

/* Der unsichtbare Sensor */
.fold-out-section::before {
    content: "";
    position: absolute;
    /* Zentrierung des Sensors */
    top: 50%;
    left: 50%;
    transform: translate(-80%, -80%);
    
    /* HIER DIE GRÖSSE DER HOVERZONE ANPASSEN */
    width: 200px; 
    height: 200px;
    
    /* Macht den Sensor wieder interaktiv */
    pointer-events: auto; 
    z-index: 10;
    
    /* Zum Testen kannst du background: rgba(255,0,0,0.2) nutzen */
    background: transparent; 
}

/* Die Spalte muss wieder auf Pointer-Events reagieren, damit Links darin klappen */
.fold-out-section .kt-inside-inner-col {
    pointer-events: auto;
    min-height: 300px;
    /* ... dein restlicher Code ... */
    transform: translate(calc(-100% + 150px), calc(100% - 150px));
    background-color: inherit;
    transition: transform 0.3s ease, background-color 0.3s ease;
    position: relative;
    z-index: 1;
}


/* --- DER TEXT --- */

.fold-out-text {

    opacity: 0; /* Standardmäßig unsichtbar */

    /* Letzte Definition gewinnt: 0.6s für weiches Einblenden */

    transition: opacity 0.6s ease;

}


/* --- NEUE HOVER-LOGIK --- */
/* Wir triggern den Effekt, wenn der SENSOR (::before) gehovered wird */
/* Da CSS kein "Hovering on before triggers sibling" direkt kann, 
   nutzen wir den Hover auf der Section, aber nur dort, wo der Sensor ist */

.fold-out-section:is(:hover, .hovered) .kt-inside-inner-col {
    transform: translate(0, 0);
    background-color: color-mix(in srgb, var(--global-palette1, #f59c00) 95%, transparent) !important;
}

.fold-out-section:is(:hover, .hovered) .fold-out-text {
    opacity: 1;
}

 /*#######################################################################
#######################################################################*/


.section-circle .kt-inside-inner-col {
    /* Größe deckeln */
    width: 100%;
    max-width: 450px;
  
    /* Magie: Erzwingt quadratisches Verhältnis (Breite = Höhe) */
    aspect-ratio: 1 / 1 !important;
  
    /* Zentrierung im Container */
    margin-left: auto;
    margin-right: auto;
  
    /* Falls es ein Kreis sein soll */
    border-radius: 50%;
  
    /* Flexbox, um den Inhalt im Quadrat/Kreis mittig zu halten */
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
  
    /* Verhindert, dass Padding das Quadrat verzieht */
    box-sizing: border-box;
    overflow: hidden;
  }
  
  /* Fallback für ältere Browser (Safari < 15) */
  @supports not (aspect-ratio: 1 / 1) {
    .section-circle .kt-inside-inner-col {
      height: 450px; /* Feste Höhe als Backup */
    }
  }


 /*#######################################################################
#######################################################################*/


/* NEU & WICHTIG: Erzwingt, dass die äußere Kadence-Spalte (die das Grid enthält) 
   keine Maximalbreite hat und 100% der verfügbaren Breite nutzt. */
.wp-block-kadence-column .kt-inside-inner-col {
    max-width: none !important;
    width: 100% !important;
}

/* 1. Stellt sicher, dass die Query Card selbst volle Breite übernimmt */
.wp-block-kadence-query-card {
    max-width: none !important;
    width: 100% !important;
}

/* 2. Stellt sicher, dass der Grid-Wrapper volle Breite annimmt */
.kb-query-grid-wrap {
    max-width: none !important; /* Entfernt jede Standard-Maximalbreite */
    width: 100% !important;
}

/* ========================================================== */
/* B. VERTICALE AUSRICHTUNG (Button Fix)                      */
/* ========================================================== */

/* 3. Listenelement (.kb-query-item): Flex-Container & 100% Höhe/Breite */
.kb-query-item {
    display: flex;
    flex-direction: column;
    height: 100%; 
    min-height: 100%;
    width: 100% !important; /* Erzwingt, dass <li> die volle Grid-Zellenbreite nutzt */
}

/* 4. Textspalte (.wp-block-kadence-column): Flex-Grow & 100% Breite */
.kb-query-item .wp-block-kadence-column {
    display: flex; 
    flex-direction: column; 
    flex-grow: 1; 
    width: 100%; 
}

/* 5. Innerer Container (.kt-inside-inner-col): Muss COLUMN bleiben */
/* (Wird hier nur zur Vollständigkeit aufgeführt, da er oben schon korrigiert wurde) */
.kb-query-item .wp-block-kadence-column .kt-inside-inner-col {
    display: flex;
    flex-direction: column; 
    height: 100%; 
    width: 100%; 
}

/* 6. Erzwinge die volle Breite für ALLE Kindelemente */
.kb-query-item .kt-inside-inner-col > * {
    width: 100%; 
    max-width: 100%;
}

/* 7. Button-Ausrichtung unten */
.kb-query-item .kb-buttons-wrap {
    margin-top: auto; 
    align-self: flex-start;
}









.wp-block-video {
     box-sizing: border-box;
    /* Setzt den Eckradius auf 15 Pixel */
    border-radius: 15px; 
    overflow: hidden;
}

.kb-svg-icon-wrap {
    z-index: 10;
}


/* ========================================================== */
/* BASIS-CONTAINER (SECTION) - Löst den Effekt aus             */
/* ========================================================== */
.arrow-hover-section {
  position: relative;
  overflow: visible; 
  cursor: pointer;
}

/* ========================================================== */
/* BILD-CONTAINER (KT-INSIDE-INNER-COL)                       */
/* ========================================================== */
.arrow-hover-section .kt-inside-inner-col {
    position: relative; 
}


/* ========================================================== */
/* WP-BLOCK-KADENCE-IMAGE (TARGET-ELEMENT) - STARTZUSTAND     */
/* * Beinhaltet alle Transformationen und Transitions          */
/* ========================================================== */
.arrow-hover-section .wp-block-kadence-image {
    position: relative;
    display: block; 
    width: 100%; /* Sicherstellen, dass Breite vorhanden ist */
    height: auto;
    /* Startform: Rechteck (6 Punkte für smoothe Transition) */
    clip-path: polygon(100% 0, 100% 50%, 100% 100%, 0% 100%, 0 50%, 0% 0%);
    transform: translateX(0);
    
    /* Transitions für alle synchronisierten Animationen */
    transition:
        clip-path 0.3s cubic-bezier(0.25, 1, 0.5, 1),
        transform 0.3s cubic-bezier(0.25, 1, 0.5, 1);

    will-change: clip-path, transform;
    backface-visibility: hidden;
    z-index: 1; 
}


/* ---------------------------------------------------------- */
/* OVERLAY-DEFINITION (::after auf .wp-block-kadence-image)   */
/* ---------------------------------------------------------- */
.arrow-hover-section .wp-block-kadence-image::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    
    /* SYNCHRONISATION START: Gleiche Form und Position wie das Target-Element */
    clip-path: polygon(100% 0, 100% 50%, 100% 100%, 0% 100%, 0 50%, 0% 0%);
    transform: translateX(0);
    
    /* Farbe: Startet halbtransparent (rgba(0, 0, 0, 0.2)) */
    background-color: rgba(0, 0, 0, 0.0); 
    
    /* Transitions für alle synchronisierten Animationen */
    transition: 
        background-color 0.3s cubic-bezier(0.25, 1, 0.5, 1),
        clip-path 0.3s cubic-bezier(0.25, 1, 0.5, 1),
        transform 0.3s cubic-bezier(0.25, 1, 0.5, 1),
        border-radius 0.3s cubic-bezier(0.25, 1, 0.5, 1); /* Transition für Radius hinzufügen */

    pointer-events: none;
    z-index: 2; 
}


/* ========================================================== */
/* BILD-ELEMENT (IMG) - NUR FÜR DIE ANZEIGE                   */
/* ========================================================== */
.arrow-hover-section .wp-block-kadence-image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}


/* ========================================================== */
/* TEXT-ELEMENTE (STARTZUSTAND)                               */
/* ========================================================== */
.arrow-hover-section .arrow-text-1,
.arrow-hover-section .arrow-text-2,
.arrow-hover-section .arrow-text-3 {
    transform: translateX(0); 
    transition: 
        opacity 0.3s cubic-bezier(0.25, 1, 0.5, 1), 
        transform 0.3s cubic-bezier(0.25, 1, 0.5, 1);
    position: relative; 
    z-index: 3; 
}

.arrow-hover-section .arrow-text-2 {
    opacity: 1; 
}

.arrow-hover-section .arrow-text-3 {
    opacity: 0; 
}





/* ========================================================== */
/* HOVER/HOVERED-ZUSTAND (Ausgelöst durch :hover oder .hovered)*/
/* ========================================================== */

/* 1. KADENCE-IMAGE EFFEKT: Pfeil-Zuschnitt und 20% Verschiebung */
/* Hover- und .hovered-Zustand */
.arrow-hover-section:is(:hover, .hovered) .wp-block-kadence-image {
  clip-path: polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%);
  border-radius: 0;
  /* Kein translateX hier, mobile/tablet = kein Verschieben */
}

/* Ab Tablet-Breite (z.B. 768px und größer) translateX anwenden */
@media (min-width: 768px) {
  .arrow-hover-section:is(:hover, .hovered) .wp-block-kadence-image {
    transform: translateX(5%);
  }
}

/* 2. OVERLAY EINBLENDEN UND SYNCHRONISIEREN */
.arrow-hover-section:is(:hover, .hovered) .wp-block-kadence-image::after {
    border-radius: 0px!important;
    /* Hintergrundfarbe auf fast volle Transparenz setzen (Ausblenden) */
    background-color: rgba(0, 0, 0, 0.0); 
    
    /* SYNCHRONISATION ENDE: Pfeil-Zuschnitt und 20% Verschiebung */
    clip-path: polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%);

}


@media (min-width: 768px) {
  .arrow-hover-section:is(:hover, .hovered) .wp-block-kadence-image::after {
        transform: translateX(0%);
  }
}

/* 3. TEXT 1-EFFEKT: 30% Verschiebung nach rechts */
.arrow-hover-section:is(:hover, .hovered) .arrow-text-1 {
    transform: translateX(30%); 
}

/* 4. TEXT 2-EFFEKT: Sichtbar machen und 35% Verschiebung nach rechts */
.arrow-hover-section:is(:hover, .hovered) .arrow-text-2 {
    opacity: 1; 
    transform: translateX(0%); 
}

.arrow-hover-section:is(:hover, .hovered) .arrow-text-3 {
    opacity: 1;
    transform: translateY(-30px); 
}

 /*#######################################################################
#######################################################################*/

/* Container */
.scroll-zoom-bg {
    overflow: hidden !important;
    position: relative;
    /* Verhindert horizontales Scrollen durch Skalierung */
    touch-action: pan-y; 
}

.scroll-zoom-bg > .kt-inside-inner-col {
    position: relative;
    background-color: transparent !important;
    background-blend-mode: normal;
}

/* Das zoomende Hintergrundbild */
.scroll-zoom-bg > .kt-inside-inner-col::before {
    content: "";
    position: absolute;
    /* Kleiner Puffer gegen Blitzer an den Rändern */
    top: -5px;
    left: -5px;
    right: -5px;
    bottom: -5px;
    
    background-image: inherit; 
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    
    /* Die dynamische Variable vom JS */
    transform: scale(var(--zoom-scale, 1.1));
    
    /* Performance-Booster */
    will-change: transform;
    z-index: 0;
}

/* Inhalte stabil halten */
.scroll-zoom-bg > .kt-inside-inner-col > * {
    position: relative;
    z-index: 1;
}
 /*#######################################################################
#######################################################################*/

.site-branding {
    position: relative;
    display: inline-block;
    overflow: hidden;
    will-change: transform;
    transition: transform 0.3s ease;
  }
  
  .site-branding img {
    transition: opacity 0.8s ease;
    will-change: opacity;
    display: block;
    width: 100%;
    height: auto;
  }

  .limit-section{
    max-width: 2500px !important;
  }

/* Scaling immer */
  .site-branding:hover {
    transform: scale(1.1);
  }



.current-menu-item {
    transform: scale(1.2); /* Vergrößert das Element */
    font-weight: 700; /* Schrift dicker */
    will-change: transform;
    transition: transform 0.3s ease, font-weight 0.3s ease;
}

.menu-item {
    will-change: transform;
    transition: transform 0.3s ease;
}

.menu-item:hover {
    transform: scale(1.15); /* Vergrößert das Element beim Hover */
}

.current-menu-item:hover {
    transform: scale(1.2); /* Damit es sich nicht verkleinert */
}


/* Ab Tablet-Größe (bis max. 1024px) kein Scaling oder Hover */
@media (max-width: 1024px) {
    .menu-item,
    .menu-item:hover,
    .current-menu-item,
    .current-menu-item:hover {
        transform: none;
        transition: none;
    }

    .current-menu-item {
        font-size: 19px;
        font-weight: 700;
    }
}

 /*#######################################################################
#######################################################################*/
.hyphination{
    hyphens: auto;
}

 /*#######################################################################
#######################################################################*/
/* Background Muster */

.pattern-bg > .kt-inside-inner-col {
    position: relative;
    overflow: hidden;
    z-index: 5;
    /* Um zuu verhindern, dass  beim Hovern des svgs durch txt hindurchgeschienen wird, z-index erhöhen. evtl eigenen abschnitt mit hohem z-index */
  }
  
  .pattern-bg > .kt-inside-inner-col::before {
    content: '';
    position: absolute;
    inset: 0;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: 50% 50%;
    pointer-events: none;
    z-index: 0;
    /* Masken-Eigenschaft */
    mask-image: var(--pattern-mask, radial-gradient(circle, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0) 0px));
    -webkit-mask-image: var(--pattern-mask, radial-gradient(circle, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0) 0px));
    transition: mask-image 0.5s linear;
    will-change: mask-image;
  }

/* pattern Varianten 1 bis 20 */
.pattern-bg.pattern-1  > .kt-inside-inner-col::before { background-image: url('https://zimmerei-rudolf.com/wp-content/uploads/2025/05/wood-pattern-1.svg'); }
.pattern-bg.pattern-2  > .kt-inside-inner-col::before { background-image: url('https://zimmerei-rudolf.com/wp-content/uploads/2025/05/wood-pattern-2.svg'); }




.logo-bg > .kt-inside-inner-col {
    position: relative;
    overflow: hidden;
  }
  
  .logo-bg > .kt-inside-inner-col::before {
    content: '';
    position: absolute;
    inset: 0;

    background-image: url('https://zimmerei-rudolf.com/wp-content/uploads/2025/05/icon-schwarz.svg');
    background-size: contain;
    background-position: 50% 50%;
    background-attachment: scroll;
    background-repeat: no-repeat;
    pointer-events: none;

      /* Masken-Eigenschaft */
    mask-image: var(--pattern-mask, radial-gradient(circle, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0) 0px));
    -webkit-mask-image: var(--pattern-mask, radial-gradient(circle, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0) 0px));
  
    transition: mask-image 0.5s linear;
    will-change: mask-image;
  }

 /*#######################################################################
#######################################################################*/

.icon-card {
    position: relative; /* Falls nötig, um inneres Target zu positionieren */
}

.icon-zoom {
    transition: transform 0.3s ease; /* Sanfte Übergangsanimation */
    display: inline-block; /* Kann angepasst werden je nach Layout */
    will-change: transform;
    overflow: hidden; /* Verhindert, dass das Bild über den Container hinaus wächst */
}

.icon-card:hover .icon-zoom,
.icon-card.hovered .icon-zoom {
    transform: scale(1.15) 
}
/*#######################################################################
#######################################################################*/
.zoom-container {
    transition: transform 0.3s ease; /* Sanfte Übergangsanimation */
    will-change: transform;
    overflow: hidden; /* Verhindert, dass das Bild über den Container hinaus wächst */
}

.zoom-container:hover
{
    transform: scale(1.075); /* Vergrößert den Container um 2% */
}


.zoom-container-block {
    display: block;
    transition: transform 0.3s ease; /* Sanfte Übergangsanimation */
    will-change: transform;
}

.zoom-container-block:hover
{
    transform: scale(1.075); /* Vergrößert den Container um 2% */
}

 /*#######################################################################
#######################################################################*/

.zoom-background {
    position: relative;
    overflow: hidden;
   /*  border-radius: 15px; Rundungen hier setzen */
}

.zoom-background > .kt-inside-inner-col {
    position: relative;
    z-index: 1;
    overflow: hidden;    /* verhindert dass Kinder außerhalb sichtbar sind */
}

/* Hintergrundbild */
.zoom-background > .kt-inside-inner-col::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background-size: cover;
    background-position: center;
    background-image: inherit;
    transition: transform 0.3s ease;
    z-index: -2;
    /* KEIN border-radius hier */
}

/* Overlay */
.zoom-background > .kt-inside-inner-col::after {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0, 0, 0, 0.0);
    transition: background 0.5s ease;
    z-index: -1;
}

/* Hover-Effekt */
.zoom-background:hover > .kt-inside-inner-col::before,
.zoom-background.hovered > .kt-inside-inner-col::before {
    transform: scale(1.05);
    will-change: transform;
}

.zoom-background:hover > .kt-inside-inner-col::after,
.zoom-background.hovered > .kt-inside-inner-col::after {
    background: rgba(0, 0, 0, 0.0);
}


.zoom-background-text {
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none; /* Verhindert Interaktion wenn unsichtbar */
  z-index: 10;
}

.zoom-background:hover .zoom-background-text,
.zoom-background.hovered .zoom-background-text {
  opacity: 1;
  pointer-events: auto; /* Aktiviert Interaktion */
}


 /*#######################################################################
#######################################################################*/

/* Text, der sichtbar wird */
.text-visible {
  position: absolute;
   padding-top: 20px;
  padding-left: 5px;
   padding-right: 5px;
  opacity: 0;
  transition: opacity 0.2s ease;
  pointer-events: none;
}

@media (max-width: 1025px) {
    .text-visible {
        /* Setzt die Position auf relative, damit das Element im normalen Flow liegt */
        /* Absolute Positionierung wird entfernt */
        position: relative; 
        opacity: 1; 
    
        /* Transition auf sehr schnell setzen oder ganz entfernen, da es immer aktiv ist */
        transition: none; 
        pointer-events: auto;
    }
    
 
}


 .text-visible.is-active {
  opacity: 1;
  transition: opacity 1s ease;
  pointer-events: auto;
}

.background-glow-up .kt-inside-inner-col::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    
    /* Standard: Dunkles Overlay (40% Schwarz) */
    background-color: rgba(0, 0, 0, 0.2); 
    
    transition: background-color 0.4s ease;
    z-index: 2; 
}

.background-glow-up.is-active .kt-inside-inner-col::after {
    /* Overlay wird transparent und das Bild wird heller */
    background-color: rgba(0, 0, 0, 0); 
}



/* Alle direkten Kinder (Texte, Buttons etc.) nach vorne holen */
.background-darken-down .kt-inside-inner-col > * {
    position: relative;
    z-index: 3; /* Höher als das Overlay */
}

/* Basis-Zustand: Abdunklung nach unten */
.background-darken-down .kt-inside-inner-col::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    
    /* Verlauf: Oben transparent, ab 30% beginnt die Verdunklung, unten 60% Schwarz */    
    transition: background-color 0.4s ease;
    z-index: 2; 
    pointer-events: none;
}

/* Hover-Zustand: Die Verdunklung verschwindet sanft */
.background-darken-down.is-active .kt-inside-inner-col::after{
    background: linear-gradient(to bottom, 
    rgba(0, 0, 0, 0) 0%, 
    rgba(0, 0, 0, 0.6) 100%); 

}

/* Wenn das übergeordnete Element gehoved wird, wird der Text sichtbar */
.card-visible-header {
  position: absolute;
  bottom: -15px; /* fixer Abstand vom Kartenboden, passe nach Wunsch an */
  opacity: 1;
  transform: translateY(0);
  transition: transform 0.5s ease;
  hyphens: auto;
  min-height: 40px !important; 
  /* Damit der Text bei Bedarf getrennt wird */
}

.card-visible {
  opacity: 0;
  transform: translateY(50px);
  transition: opacity 0.2s ease, transform 0.5s ease;
  hyphens: auto;
  min-height: 60px !important; 
  /* Textumbruch mit Silbentrennung */
  position: relative; /* falls noch nicht gesetzt */
}

/* Hover auf Eltern-Element (z.B. .zoom-background) */
.card-visible-header.is-active,
.card-visible-header.is-active {
  transform: translateY(-70px); /* Fährt 100px nach oben */
}

.card-visible.is-active,
.card-visible.is-active {
  opacity: 1;
  transform: translateY(-20px); /* Fahrt ebenfalls nach oben, hier 50px als Beispiel */
}





 /*#######################################################################
#######################################################################*/

.animated-underline {
    position: relative;
    display: inline-block;
    padding-bottom: 12px;
  }
  
  .animated-underline::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 200px;
    height: 6px;
    background-color: var(--global-palette5, #000);
    transition: width 0.4s ease;
    will-change: width;
    display: block; /* wichtig für Fallbacks */
  }
  
/* animated underline bei Hover oder JS-Hover */
.animated-underline:hover::after,
.animated-underline.hovered::after,
.card-focused:hover .animated-underline::after {
  width: 275px;
}


/*#######################################################################
#######################################################################*/

/*glow lines for borders   glow line is drawn and can disappear */
   
.bar {
    position: absolute;
    height: var(--bar-thickness, 4px);
    background: linear-gradient(
        90deg,
        var(--bar-color-1, #d0f0dd), /* Fallback default */
        var(--bar-color-2, #d0f0dd)  /* Fallback default */
    );
    border-radius: 0px;
    animation-timing-function: cubic-bezier(0.3, 0.4, 0.3, 1);
    animation-duration: var(--bar-speed, 2s);
    animation-fill-mode: forwards;
    animation-iteration-count: var(--iteration-count, 1);
    opacity: 0; /* Initially hide the element */
    animation-play-state: paused; /* Initially pause the animation */
    will-change: transform, opacity;
    transform-origin: left; /* Set the origin for scaling */
    width: 100%;
    transform: scaleX(0); /* Start scaled down */
}

.top {
    top: 0;
    left: 0;
}

.bottom {
    bottom: 0;
    left: 0;
}

@keyframes top-animation {
    0%   { transform: scaleX(0); opacity: 1; }
    50%  { transform: scaleX(1); opacity: 1; }
    100% { transform: scaleX(0); opacity: 1; }
}

@keyframes bottom-animation {
    0%   { transform: scaleX(0); opacity: 1; }
    50%  { transform: scaleX(1); opacity: 1; }
    100% { transform: scaleX(0); opacity: 1; }
}

@keyframes expand {
    0%   { transform: scaleX(0); opacity: 1; }
    100% { transform: scaleX(1); opacity: 1; }
}



/*#######################################################################
#######################################################################*/
 
.bigger-z {
    position: relative;  /* Damit der z-index wirkt */
    z-index: 10;         /* Höherer z-index als das Hintergrund-SVG */
  }

/*#######################################################################
#######################################################################*/
.zoom-in-img {
  position: relative;
  display: inline-block;   /* 🔑 erlaubt Alignment von außen */
  width: 100% !important; /*fix lisa*/
  height: auto !important; /*fix lisa*/
  overflow: hidden;
  line-height: 0;
  will-change: transform;

  --r-tl: 0px;
  --r-tr: 0px;
  --r-br: 0px;
  --r-bl: 0px;
}

.zoom-in-img::before {
  content: '';
  position: absolute;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.10);
  transition: opacity 0.4s ease-in-out;
  z-index: 1;
  opacity: 0;
  pointer-events: none;

  border-top-left-radius: var(--r-tl);
  border-top-right-radius: var(--r-tr);
  border-bottom-right-radius: var(--r-br);
  border-bottom-left-radius: var(--r-bl);
}



.zoom-in-img.js-ready::before {
  opacity: 1;
}

.zoom-in-img img {
  display: block;
  width: 100% ;
  height: auto ;
  transition: transform 0.4s ease-in-out;

}

.zoom-in-img.js-ready:hover img,
.zoom-in-img.js-ready.is-active img  {
  transform: scale(1.1);
}

.zoom-in-img.js-ready:hover::before,
.zoom-in-img.js-ready.is-active::before {
  opacity: 0;
}



   /*#######################################################################
#######################################################################*/
  /* verändert ein square image, zu 2:1 in Mobil-Mode */
/* Verändert quadratische und landscape-Bilder zu 2:1 im Mobilmodus */
@media screen and (max-width: 1024px) {
    .wp-block-kadence-image.mobile-wide .kb-image-ratio-square,
    .wp-block-kadence-image.mobile-wide .kb-is-ratio-image,
    .wp-block-kadence-image.mobile-wide .kb-image-ratio-land43,
    .wp-block-kadence-image.mobile-wide .kb-image-ratio-land32 {
      padding-bottom: 50%; /* 2:1 Verhältnis */
    }
  }

@media screen and (min-width: 768px) and (max-width: 1024px) {
    /* * Die Klasse .tablet-high greift nur in diesem Breitenbereich.
     * Das Verhältnis 1:2 (200% padding-bottom) wird angewendet.
     */
    .wp-block-kadence-image.tablet-high .kb-image-ratio-square,
    .wp-block-kadence-image.tablet-high .kb-is-ratio-image,
    .wp-block-kadence-image.tablet-high .kb-image-ratio-land43,
    .wp-block-kadence-image.tablet-high .kb-image-ratio-land32,
    .wp-block-kadence-image.tablet-high .kb-image-ratio-port43,
    .wp-block-kadence-image.tablet-high .kb-image-ratio-port32 {
        /* Setzt das hohe Verhältnis auf 1:2 (200%) */
        padding-bottom: 200%; 
    }
}

  @media screen and (max-width: 1024px) {
    /* * Erzwingt das vertikale (hohe) Seitenverhältnis nur für Bilder mit der Klasse .mobile-high
     * Wir zielen auf alle Ratio-Klassen ab, um die Einstellung zu überschreiben.
     */
    .wp-block-kadence-image.mobile-high .kb-image-ratio-square,
    .wp-block-kadence-image.mobile-high .kb-is-ratio-image,
    .wp-block-kadence-image.mobile-high .kb-image-ratio-land43,
    .wp-block-kadence-image.mobile-high .kb-image-ratio-land32,
    .wp-block-kadence-image.mobile-high .kb-image-ratio-port43,
    .wp-block-kadence-image.mobile-high .kb-image-ratio-port32 {
        /* * Setzt das Verhältnis auf 1:2 (Breite:Höhe)
         * Berechnung: (Höhe / Breite) * 100 = (2 / 1) * 100 = 200%
         */
        padding-bottom: 200%; 
    }
}
  /*#######################################################################
#######################################################################*/
/* Link Styles*/

  .link-zoom {
    position: relative;
    align-items: center;
    text-decoration: none; /* Kein Unterstrich */
    will-change: transform;
    transition: transform 0.3s ease; /* Sanfte Zoom-Animation */
}

/* Entfernt die Unterstreichung auch für das <a>-Element im Inneren */
.link-zoom a {
    text-decoration: none;
}

/* Hover-Effekt mit Zoom und Verschiebung nach rechts */
.link-zoom:hover {
    transform: scale(1.03) translateX(7px); /* Vergrößerung um 3% und 5px nach rechts */
}


.link-no-underline a {
    text-decoration: none;
}


/* Basisstil für den Link */
.link-with-arrow {
    position: relative;
    display: inline-flex;
    align-items: center;
    text-decoration: none;
    color: black;
}

/* Pfeil als SVG-Hintergrund */
.link-with-arrow::after {
    content: "";
    display: inline-block;
    width: 40px; /* Standardbreite */
    height: 40px; /* Standardhöhe */
	/* stroke und fillfarbe angeben bspw weiß: %23FFFFFF */
   background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="69" height="26" viewBox="0 0 69 26" fill="none"><path d="M55 14H5C4 14 3 13 3 12.5C3 12 4 11 5 11H55L48 4C47 3 47 2 48 1C49 0 50 0 51 1L61 11C61.5 11.5 62 12 62 12.5C62 13 61.5 13.5 61 14L51 24C50 25 49 25 48 24C47 23 47 22 48 21L55 14Z" fill="%23000000" stroke="%23000000" stroke-width="3"/></svg>');
    background-repeat: no-repeat;
    background-size: contain;
    margin-left: 10px; /* Weiter nach rechts */
    margin-top: 25px; /* Weiter nach unten */
 
    transition: transform 0.3s ease-out, width 0.3s ease-out;
}

/* Hover-Effekt */
.link-with-arrow:hover::after {
    transform: translateX(20px);
}


/* Basisstil für den weißen Link */
.link-with-arrow.white {
    color: #fff; /* Weiß für den Text */
}


/* Weißer Pfeil als SVG-Hintergrund */
.link-with-arrow.white::after {
    background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="69" height="26" viewBox="0 0 69 26" fill="none"><path d="M55 14H5C4 14 3 13 3 12.5C3 12 4 11 5 11H55L48 4C47 3 47 2 48 1C49 0 50 0 51 1L61 11C61.5 11.5 62 12 62 12.5C62 13 61.5 13.5 61 14L51 24C50 25 49 25 48 24C47 23 47 22 48 21L55 14Z" fill="%23FFFFFF" stroke="%23FFFFFF" stroke-width="3"/></svg>');
}



/* Der Trigger-Container */
.hover-underline {
    cursor: pointer;
    text-decoration: none !important;
}

/* Ziel: .kb-adv-text-inner ODER der Advanced Heading Block (wenn kein Icon drin ist) */
.hover-underline .kb-adv-text-inner,
.hover-underline .wp-block-kadence-advancedheading:not(:has(.kb-svg-icon-wrap)) {
    position: relative;
    display: inline-block; /* Sorgt dafür, dass die Linie nur so lang wie der Text ist */
    color: inherit;
    text-decoration: none !important;
}

/* Die Linie für die validen Ziele */
.hover-underline .kb-adv-text-inner::after,
.hover-underline .wp-block-kadence-advancedheading:not(:has(.kb-svg-icon-wrap))::after {
    content: '';
    position: absolute;
    width: 100%;
    height: 2px;
    bottom: -1px;
    left: 0;
    background-color: currentColor; /* Erbt die Textfarbe */
    
    /* Animation-Setup */
    transform: scaleX(0);
    transform-origin: bottom left;
    transition: transform 0.3s ease-out;
}

/* Trigger bei Hover über den Container */
.hover-underline:hover .kb-adv-text-inner::after,
.hover-underline:hover .wp-block-kadence-advancedheading:not(:has(.kb-svg-icon-wrap))::after {
    transform: scaleX(1);
}


/* Versteckt das Element auf Mobilgeräten und Tablets */
@media (max-width: 768px) {
    .mobil_invisible{
        display: none !important;
    }
}

 /*#######################################################################
 Row Layout Expand
#######################################################################*/

@media (min-width: 1024px) {

  /* --- 1. Container-Regeln --- */
  .kb-hover-flex-expand > .kt-row-column-wrap {
    display: flex !important;
    flex-wrap: wrap; 
    gap: var(--global-kb-gap-none, 0rem);
  }

  /* --- 2. Standard-Spalten-Regeln (NUR DIREKTE KINDER) --- */
  .kb-hover-flex-expand > .kt-row-column-wrap > .wp-block-kadence-column {
    flex: 1 1 0; /* Die normale, kleine Größe */
    transition: flex-grow 0.4s ease, transform 0.4s ease;
    will-change: flex-grow, transform;
    margin-left: -0.5px;
    margin-right: -0.5px;
    z-index: 0; 
  }

  /* --- 3. Aktiver/Vergrößerter Zustand (NUR DIREKTE KINDER) --- */
  /* Behält den Zustand (is-active) und sorgt für sofortige Reaktion beim Hover */
  .kb-hover-flex-expand > .kt-row-column-wrap > .wp-block-kadence-column.is-active,
  .kb-hover-flex-expand > .kt-row-column-wrap > .wp-block-kadence-column:hover {
    flex-grow: 3.5 !important; /* Erzwingt die Vergrößerung */
    z-index: 1 !important; /* Bringt die aktive Spalte nach vorne */
    margin-left: -0.5px;
    margin-right: -0.5px;
  }
}

 /*#######################################################################
#######################################################################*/



  /*#######################################################################################
    Gallery
  /*#######################################################################################*/
  .kadence-blocks-gallery-item {
    overflow: hidden;
    position: relative;
    border-radius: 15px; 
  }
  
  .kadence-blocks-gallery-item img {
    will-change: transform, filter, opacity;
    transition: transform 0.3s ease-in-out, filter 0.3s ease-in-out, opacity 0.3s ease-in-out;
    opacity: 1;
    filter: blur(0px);
    z-index: 1;
    border-radius: 0; 
  }
  
  /* --- OVERLAY (Schleier) --- */
  .kadence-blocks-gallery-item::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.15); /* Der Schleier für Desktop */
    transition: opacity 0.3s ease-in-out;
    pointer-events: none;
    z-index: 2;
    border-radius: inherit;
    opacity: 1; /* Standardmäßig SICHTBAR */
  }
  
  /* --- MOBIL-FIX: Schleier entfernen --- */
  @media (max-width: 1024px) {
    .kadence-blocks-gallery-item::before {
      display: none; /* Deaktiviert das Overlay auf Mobilgeräten komplett */
      opacity: 0;
    }
  }
  
  /* --- HOVER EFFEKTE (Desktop) --- */
  .kadence-blocks-gallery-item:hover img {
    transform: scale(1.05);
  }
  
  .kadence-blocks-gallery-item:hover::before {
    opacity: 0; /* Schleier verschwindet beim Hovern */
  }

  /*#######################################################################################*/
/*#######################################################################################*/

.only-text-width{
       display: inline-block;
    width: auto !important;
    max-width: fit-content;
}


/*################# breakout session##################################*/
/* Gilt nur für Desktop (ab 1025px) */
@media (min-width: 1025px) {

    .custom-breakout-left > .kt-row-column-wrap {
        display: flex !important;
        justify-content: center;
        overflow: visible !important;
    }

    /* Linke Spalte (Bild-Spalte) */
    .custom-breakout-left > .kt-row-column-wrap > .wp-block-kadence-column:first-child {
        /* Breite: 50% vom Bildschirm oder max 1000px */
        width: min(50vw, 1000px) !important;
        flex: 0 0 min(50vw, 1000px) !important;
        
        /* Positionierung an der Mittellinie */
        margin-left: calc(50% - min(50vw, 1000px)) !important;
        margin-right: 0 !important;
        z-index: 1;
    }

    /* Rechte Spalte (Text) */
    .custom-breakout-left > .kt-row-column-wrap > .wp-block-kadence-column:nth-child(2) {
        flex: 0 0 50% !important;
        width: 50% !important;
        max-width: 645px !important; 
        z-index: 2;
    }

}



/*#####################################################*/
/*button move right*/
/* Klasse für den Button-Block */
.btn-move-right {
    transition: transform 0.3s ease-in-out !important;
    display: inline-block; /* Wichtig, damit transform greift */
}

/* Der Effekt beim Hover */
.btn-move-right:hover {
    transform: translateX(8px); /* Bewegt den Button 8px nach rechts */
}

/* Optional: Falls sich die Linien im Hintergrund (kb-lines-outer) mitbewegen sollen */
.kb-buttons-wrap:hover .kb-lines-outer {
    transform: translateX(4px);
    transition: transform 0.3s ease-in-out;
}


/*################################################*/

/* Klasse für die Kadence Spalte */
.sticky-button-column > .kt-inside-inner-col {
    display: flex !important;
    flex-direction: column !important;
    height: 100% !important;
    justify-content: flex-start;
}

/* Der Button-Wrapper (kb-buttons-wrap) wird nach unten gedrückt */
.sticky-button-column > .kt-inside-inner-col > .kb-buttons-wrap {
    margin-top: auto !important;
}