/*
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
*/

.aurora-cubert .kt-inside-inner-col {
  position: relative;
  overflow: hidden;
}

#aurora-canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 10;
}
/*#######################################################################
#######################################################################*/
.inverting-icon-card .kt-inside-inner-col {
  position: relative;
  overflow: hidden;
  z-index: 1;
  transition: color 0.5s ease;
}

/* Der Ripple-Kreis */
.inverting-icon-card .kt-inside-inner-col::before {
  content: "";
  position: absolute;
  left: var(--mouse-x, 50%);
  top: var(--mouse-y, 50%);
  width: 2px;
  height: 2px;
  border-radius: 50%;
  background-color: var(--ripple-color, transparent);
  transform: translate(-50%, -50%) scale(0);
  transition: transform 1.2s ease;
  z-index: -1;
  pointer-events: none;
}

/* Standard für Desktop */
.inverting-icon-card:hover .kt-inside-inner-col::before,
.inverting-icon-card.is-active .kt-inside-inner-col::before {
    transform: translate(-50%, -50%) scale(700);
}

/* Speziell für Mobile */
@media (max-width: 767px) {
    .inverting-icon-card:hover .kt-inside-inner-col::before,
    .inverting-icon-card.is-active .kt-inside-inner-col::before {
        /* Höhere Skalierung, damit auch lange Karten komplett gefüllt werden */
        transform: translate(-50%, -50%) scale(502);
    }
}

/* --- ICON SCHUTZ & SKALIERUNG --- */
.inverting-icon-card .kb-svg-icon-wrap {
  position: relative;
  z-index: 2; 
  /* Standard-Transition für das Zurückgehen (ohne Delay) */
  transition: transform 0.4s ease;
}

/* Icon Skalierung bei Hover der Karte */
.inverting-icon-card:hover .kb-svg-icon-wrap,
.inverting-icon-card.is-active .kb-svg-icon-wrap {
  transform: scale(1.3);
}


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

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

/* Basis-Setup für die Row */
.shifting-blocks {
    display: flex;
    align-items: center; /* Zentriert die Bewegung optisch */
}

/* Wir nutzen CSS Animationen, die an den Scroll-Fortschritt gebunden sind */
@media (min-width: 1025px) {
    
    /* Animation definieren */
    @keyframes shiftUp {
        from { transform: translateY(30px); }
        to { transform: translateY(-30px); }
    }
    
    @keyframes shiftDown {
        from { transform: translateY(-30px); }
        to { transform: translateY(30px); }
    }

    /* Die Spalten innerhalb der Row ansprechen */
    .shifting-blocks > .kt-row-column-wrap > .wp-block-kadence-column {
        /* Standard: Sanfter Übergang */
        /*transition: transform 0.1s linear;
        /* Scroll-Animationen (Unterstützt Chrome, Edge, Opera) */
        animation-timeline: view();
        animation-range: entry 0% exit 100%;
        animation-fill-mode: both;
    }

    /* --- VARIANTE .left --- */
    /* 1. Spalte nach oben, 2. Spalte nach unten */
    .shifting-blocks.left > .kt-row-column-wrap > .wp-block-kadence-column:nth-child(1) {
        animation-name: shiftUp;
    }
    .shifting-blocks.left > .kt-row-column-wrap > .wp-block-kadence-column:nth-child(2) {
        animation-name: shiftDown;
    }

    /* --- VARIANTE .right --- */
    /* 1. Spalte nach unten, 2. Spalte nach oben */
    .shifting-blocks.right > .kt-row-column-wrap > .wp-block-kadence-column:nth-child(1) {
        animation-name: shiftDown;
    }
    .shifting-blocks.right > .kt-row-column-wrap > .wp-block-kadence-column:nth-child(2) {
        animation-name: shiftUp;
    }
}
/*#######################################################################
#######################################################################*/
/* --- 1. BASIS-VORAUSSETZUNGEN (Global für die Struktur) --- */

:root {
    --sticky-offset-desktop: 150px;
}

.layout-with-sticky-text,
.layout-with-sticky-text .kt-row-column-wrap,
.wp-block-kadence-rowlayout {
    overflow: visible !important;
}

/* Die äußere Schiene */
.layout-with-sticky-text > .kt-inside-inner-col {
    overflow: visible !important;
    position: relative !important;
    display: block !important;
    height: 100% !important;
}

/* Der Zwischen-Container wird immer aufgelöst */
.sticky-text-section {
    display: contents !important;
}

/* --- 2. NUR DESKTOP (ab 1025px) --- */
@media (min-width: 1025px) {
    
    .sticky-text-section > .kt-inside-inner-col {
        position: -webkit-sticky !important;
        position: sticky !important;
        
        /* Der Klebe-Punkt */
        top: var(--sticky-offset-desktop) !important; 
        
        /* Der Start-Versatz nach unten */
        margin-top: var(--sticky-offset-desktop) !important; 
        
        height: fit-content !important;
        width: 100% !important;
        z-index: 100;
        will-change: transform;
    }

    /* Sorgt für den gleichen Abstand am Ende der Sektion */
    .layout-with-sticky-text > .kt-inside-inner-col {
        padding-bottom: var(--sticky-offset-desktop) !important;
    }
}

/* --- 3. TABLET & MOBIL RESET (unter 1025px) --- */
@media (max-width: 1024px) {
    .sticky-text-section > .kt-inside-inner-col {
        position: relative !important;
        top: 0 !important;
        margin-top: 20px !important; /* Normaler Abstand statt 150px */
    }
    
    .layout-with-sticky-text > .kt-inside-inner-col {
        padding-bottom: 0 !important;
    }
}
/*#######################################################################
#######################################################################*/
.smart-text-box {
    display: block !important; /* Der Container bleibt Block für das Alignment */
    background: transparent !important;
}

.inner-highlight {
    /* Erzwingt, dass der Hintergrund wirklich nur die Buchstaben nimmt */
    white-space: normal; 
}
/*#######################################################################
#######################################################################*/

.pattern-bg-wave {
  position: relative;
  overflow: hidden;
}

#wave-interaction-canvas {
  position: absolute;
  top: 0;
  left: 0;
  /* Wichtig: Nutze 100% aber mit display block */
  width: 100% !important;
  height: 100% !important;
  display: block;
  z-index: 0;
  pointer-events: none;
  /* Verhindert, dass das Canvas die Box-Größe neu berechnet */
  box-sizing: border-box;
}
/*#######################################################################
#######################################################################*/

.pattern-bg-distortion {
  position: relative;
  overflow: hidden;
  background: none !important;
}

#distortion-canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
}

.pattern-bg-distortion .kt-inside-inner-col {
  position: relative;
  z-index: 5;
  /* Die Transparenz wird jetzt vom JS gesetzt! */
}

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

.typing-text {
  display: inline-block;
  white-space: pre-wrap;
  position: relative;
  min-height: 1.2em; /* Verhindert Layout-Springen */
}

.typing-text::after {
  content: "|";
  margin-left: 2px;
  color: currentColor;
  animation: blink-cursor 0.8s step-end infinite;
}

@keyframes blink-cursor {
  from, to { opacity: 1; }
  50% { opacity: 0; }
}
/*#######################################################################
#######################################################################*/


.scolling-text-color span {
  display: inline-block;
  white-space: pre;
  /* Sanfter Übergang, wenn der Status von 'normal' zu 'filter' springt */
  transition: filter 0.2s ease;
}

.scolling-text-color-visible span {
  display: inline-block;
  white-space: pre;
  /* Startzustand: Unsichtbar */
  opacity: 0; 
  transition: opacity 0.5s ease-out, transform 0.5s ease-out;
  /* Optional: Ein kleiner Versatz nach unten für einen "Einschwebe-Effekt" */
  will-change: opacity, transform;
}

.scolling-text-color-blur span {
  display: inline-block;
  white-space: pre;
  
  /* Einfaches Schlagwort für weiches Auslaufen */
  transition: 
      opacity 0.4s ease-out, 
      filter 0.4s ease-out, 
      transform 0.4s ease-out;
      
  will-change: opacity, filter, transform;
  
  /* Startzustand */
  opacity: 0;
  filter: blur(8px);
  transform: translateY(10px);
}

/*#######################################################################
#######################################################################*/
.complementary-section {
    position: relative;
  }
   
  .complementary-cursor-circle {
    width: 100px;
    height: 100px;
    background-color: white;
    border-radius: 50%;
    position: absolute;
    top: 50%;
    left: 50%;
    pointer-events: none; /* WICHTIG: Erlaubt das Klicken durch den Kreis hindurch */
    mix-blend-mode: difference;
    z-index: 9999;
    opacity: 0;
    
    /* Hält die Maus IMMER mittig, egal wie groß der Kreis ist */
    transform: translate(-50%, -50%);
    transform-origin: left top; /* Stellt sicher, dass scale von der Mitte aus geht */
    /* Smooth skalieren, aber instant bewegen */
    transition: opacity 0.3s ease, scale 0.3s ease-out;
    will-change: left, top, scale;
}
@media (max-width: 1023px) {
    .complementary-cursor-circle {
        opacity: 1; /* Auf Mobile immer sichtbar beim Wandern */
    }
}

 /*#######################################################################
#######################################################################*/
/* Die Spalte, die die Farbe ändert */
.color-transition-col {
    transition: background-color 1s ease;
    background-color: var(--global-palette1); /* Startfarbe */
}

/* Zustände für die verschiedenen Drittel */
.state-first { background-color: var(--global-palette1) !important; }
.state-second { background-color: var(--global-palette2) !important; }
.state-third { background-color: var(--global-palette3) !important; }

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


/* 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%;
  border-radius: 40px;
  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);
}

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




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


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

/* 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(1);
}
 /*#######################################################################
#######################################################################*/


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

.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(-20px); 
}

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




/* 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: 2200px !important;

    margin-left: auto;
    margin-right: auto;
  }

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







 /*#######################################################################
#######################################################################*/
.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://stage2.lisa-augustin.de/wp-content/uploads/2026/02/vecteezy_geometric-seamless-pattern_4693155.svg'); }
.pattern-bg.pattern-2  > .kt-inside-inner-col::before { background-image: url('https://stage2.lisa-augustin.de/wp-content/uploads/2026/02/vecteezy_geometric-seamless-pattern_4693155.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-outer {
    transition: transform 0.3s ease; /* Sanfte Übergangsanimation */
    will-change: transform;
}

.icon-card-outer:hover,
.icon-card-outer.is-active
{
    transform: scale(1.075); /* Vergrößert den Container um 2% */
}


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


.icon-card-inner:hover .icon-zoom,
.icon-card.is-active .icon-zoom {
    transform: scale(1.15) 
}

.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 */
}

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

.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% */
}

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

/* --- Basis-Styles (unverändert, nur .is-active angepasst) --- */
.zoom-background {
    position: relative;
    overflow: hidden;
}

.zoom-background > .kt-inside-inner-col {
    position: relative;
    z-index: 1;
    overflow: hidden;
}

/* Hintergrundbild */
.zoom-background > .kt-inside-inner-col::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background-size: inherit;
    background-position: inherit;
    background-image: inherit;
    transition: transform 0.4s ease, filter 0.4s ease;
    filter: blur(0px) grayscale(0%);; /* Initialwert für saubere Interpolation */
    z-index: -2;
}

/* Overlay Standard (bleibt hell) */
.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;
}

/* --- NEU: Dunkle Variante (.zoom-background-dark) --- */


/* Dunkler werdendes Overlay */
.zoom-background-dark:hover > .kt-inside-inner-col::after,
.zoom-background-dark.is-active > .kt-inside-inner-col::after {
    background: rgba(0, 0, 0, 0.4); /* Hier stellst du die Dunkelheit ein */
	border-radius: 40px;
}

/* --- Hover & Aktiv-Logik (Standard) --- */
.zoom-background:hover > .kt-inside-inner-col::before,
.zoom-background.is-active > .kt-inside-inner-col::before {
    transform: scale(1.15);
    will-change: transform;
}

/* Text-Sichtbarkeit */
.zoom-background-text {
    opacity: 0;
    transition: opacity 0.4s ease;
    pointer-events: none;
    z-index: 10;
}

.zoom-background:hover .zoom-background-text,
.zoom-background.is-active .zoom-background-text {
    opacity: 1;
    pointer-events: auto;
}

/* Starker Blur-Effekt und leichter Zoom */
.zoom-background-blurred:hover > .kt-inside-inner-col::before,
.zoom-background-blurred.is-active > .kt-inside-inner-col::before {

    filter: blur(5px); /* Hier die Stärke des Blur-Effekts anpassen */
}

/* Startzustand: Bild ist Schwarz-Weiß */
.zoom-background-black-white > .kt-inside-inner-col::before {
    filter: grayscale(100%);
}

/* Hover/Aktiv: Bild wird farbig */
.zoom-background-black-white:hover > .kt-inside-inner-col::before,
.zoom-background-black-white.is-active > .kt-inside-inner-col::before {
    filter: grayscale(0%);
}

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




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

/*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: block; /* Wichtig für margin: auto Zentrierung */
    overflow: hidden;
    line-height: 0;
    will-change: transform;
    
    /* Start-Zustand: Wir lassen es erst mal auf auto */
    width: auto;
    max-width: 100%;
  }
  
  .zoom-in-img img {
    display: block;
    width: 100%; /* Das Bild füllt den (vom JS verkleinerten) Container aus */
    height: auto;
    transition: transform 0.4s ease-in-out;
  }
  
  .zoom-in-img::before {
    content: '';
    position: absolute;
    /* inset: 0 bezieht sich nun auf den exakt angepassten Container */
    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;
  
    /* Erbe die Radien vom Container */
    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;
  }
  
/* 1. Bild zoomen */
.zoom-in-img.js-ready:hover img,
.zoom-in-img.js-ready.is-active img {
  transform: scale(1.1);
}

/* 2. Schleier ausblenden (wird transparent) */
.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) {
/* --- BASIS REGELN --- */
.kb-hover-flex-expand > .kt-row-column-wrap {
    display: flex !important;
    flex-wrap: wrap; 
    gap: 0;
  }
  
  .kb-hover-flex-expand > .kt-row-column-wrap > .wp-block-kadence-column {
    flex: 1 1 0;
    transition: flex-grow 0.3s ease, transform 0.3s ease;
    will-change: flex-grow;
    z-index: 0;
  }
  
  /* --- DYNAMISCHE GRÖSSEN-VARIANTEN --- */
  
  /* Variante 1: .size-s (Dezente Vergrößerung) */
  .kb-hover-flex-expand.size-s > .kt-row-column-wrap > .wp-block-kadence-column:hover,
  .kb-hover-flex-expand.size-s > .kt-row-column-wrap > .wp-block-kadence-column.is-active {
    flex-grow: 1.5 !important;
    z-index: 2;
  }
  
  /* Variante 2: .size-m (Mittlere Vergrößerung - dein aktueller Standard) */
  .kb-hover-flex-expand.size-m > .kt-row-column-wrap > .wp-block-kadence-column:hover,
  .kb-hover-flex-expand.size-m > .kt-row-column-wrap > .wp-block-kadence-column.is-active {
    flex-grow: 2 !important;
    z-index: 2;
  }
  
  /* Variante 3: .size-xl (Starke Vergrößerung für Fokus-Content) */
  .kb-hover-flex-expand.size-xl > .kt-row-column-wrap > .wp-block-kadence-column:hover,
  .kb-hover-flex-expand.size-xl > .kt-row-column-wrap > .wp-block-kadence-column.is-active {
    flex-grow: 3.5 !important;
    z-index: 2;
  }
}


.text-visibility-icon-box {
    /* 1. LAYOUT-RESERVIERUNG (Im Ruhezustand 0) */
    position: relative;
    display: block;
    height: 0;
    margin-bottom: 0;
    overflow: hidden;
    opacity: 0;
    visibility: hidden;
    
    /* Transition für alle Layout-Werte */
    transition: 
        height 0.4s ease,
        margin 0.4s ease,
        opacity 0.4s ease,
        visibility 0.6s ease !important;
}

.text-visibility-icon-box.is-active {
    opacity: 1 !important;
    visibility: visible !important;
    
    /* 2. LAYOUT-ENTFALTUNG */
    /* Hier musst du die ungefähre Höhe deines Icons/Box angeben */
    height: 100px; 
    margin-bottom: 15px; /* Abstand zum Text darunter */
    
    /* Der Delay für den geschmeidigen Start */
    transition-delay: 0.01s !important;
}

/* 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 */
  }
 /*#######################################################################
#######################################################################*/



  /*#######################################################################################
    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); /* 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;
    }

}





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

/* 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;
}


/*parallax ecken*/
/* 1. Den äußeren Jarallax-Container abrunden */
.jarallax-container {
    border-radius: 40px; /* Hier deinen Radius einstellen */
    overflow: hidden !important;
    mask-image: radial-gradient(white, black); /* Fix für Safari */
    -webkit-mask-image: -webkit-radial-gradient(white, black);
}

/* 2. Falls die Rundung immer noch ignoriert wird, 
      muss die übergeordnete Row die Kontrolle behalten */
.kt-section-has-parallax {
    overflow: hidden !important;
    border-radius: 40px !important;
    isolation: isolate; /* Erzeugt einen neuen Stacking-Context */
}

@media (max-width: 1024px) {
     .wp-block-kadence-navigation.navigation-mobile-orientation-vertical .kb-nav-dropdown-toggle-btn {
    font-size: 30px;
 }
}