/**
 * Axxento Widgets – Frontend-Styles.
 * Markenneutral gehalten. Geringe Spezifitaet, damit Elementor-Style-Controls
 * (Farbe/Typo) greifen.
 */

/* ---- axxento-team-member ---- */
.axxento-team {
	max-width: 320px;
	margin: 0 auto;
}

.axxento-team__media {
	margin: 0 auto 1.25rem;
}

.axxento-team__media img {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	object-position: center;
}

.axxento-team__name {
	font-family: var(--axx-font, inherit);
	font-weight: 600;
	color: #000000;
	margin: 0 0 0.25rem;
	line-height: 1.2;
}

.axxento-team__name a {
	color: inherit;
	text-decoration: none;
}

.axxento-team__position {
	/* Neutrales Schwarz als Widget-Default. Vorher #E2786F – eine kunden-
	   spezifische Akzentfarbe in einem wiederverwendbaren Widget. Die Referenz-Site
	   des Erstkunden rendert die Position auf der Team-Seite schwarz, gemessen
	   rgb(0,0,0). Akzentfarben gehoeren pro Kunde ins Child-Theme. */
	color: #000000;
	margin: 0 0 0.75rem;
	line-height: 1.3;
}

.axxento-team__desc {
	/* Keine Farbangabe: der Text erbt. Vorher stand hier #6b6b6b – ein
	   kundenspezifischer Grauton in einem wiederverwendbaren Widget. Die
	   Referenz-Site des Erstkunden rendert die Beschreibung auf der Team-Seite
	   schwarz, gemessen rgb(0,0,0). Abweichende Farben gehoeren pro Kunde ins
	   Child-Theme. Einen Farb-Control gibt es fuer dieses Feld nicht, ein
	   Control-Default kann die Regel hier also nicht ueberstimmen. */
	line-height: 1.6;
}

/* Widget: Axxento Behandlung Preise – Default-Abstaende (out-of-the-box). */
.axxento-beh-preise { display:flex; gap:24px; flex-wrap:nowrap; align-items:stretch; height:100%; }
.axxento-beh-preise__option { flex:1 1 0; min-width:0; display:flex; flex-direction:column; }
.axxento-beh-preise__label { font-weight:700; color:#000; margin-bottom:8px; }
.axxento-beh-preise__duration { display:flex; align-items:center; gap:8px; margin-bottom:6px; color:var(--axx-muted, #767676); }
.axxento-beh-preise__duration svg { width:1em; height:1em; fill:currentColor; }
.axxento-beh-preise__price { color:#000; font-weight:700; font-size:1.5rem; margin-bottom:16px; }
.axxento-beh-preise__button {
	display:inline-flex; align-items:center; justify-content:center;
	min-width:240px; max-width:100%; height:48px; padding:0 16px; box-sizing:border-box;
	background:#000; color:#fff; text-decoration:none;
	font-size:14px; line-height:1.5; text-transform:uppercase; text-align:center;
	letter-spacing:.05em; white-space:nowrap; cursor:pointer;
}
.axxento-beh-preise__button:hover { background:var(--axx-accent, #767676); }
/* Archiv-Karten: schmaler, damit auch zwei Optionen nebeneinander passen */
.beh-loop .axxento-beh-preise__button { min-width:0; padding:0 28px; }

/* Preis-Widget an den unteren Rand der Content-Spalte */
.beh-card-content .elementor-widget-wrap { display:flex; flex-direction:column; height:100%; }
.beh-card-content .elementor-widget-axxento-behandlung-preise { margin-top:auto; }

/* Im Loop-Kontext: Optionen rechtsbuendig, natuerliche Breite statt gestreckt. */
.beh-loop .axxento-beh-preise { justify-content:flex-end; }
.beh-loop .axxento-beh-preise__option { flex:0 0 auto; }

/* ------------------------------------------------------------------ *
 * Widget: Axxento Behandlung Card – 1:1 aus behandlung-karte-vorschau.html
 * ------------------------------------------------------------------ */
.beh-card{display:flex; box-sizing:content-box !important; align-items:stretch; height:302px; background:#fff; border:1px solid #f0f0f0; border-radius:2px; overflow:hidden; box-shadow:0 6px 24px rgba(0,0,0,.08); position:relative; transition:box-shadow .25s ease, transform .25s ease;}
.beh-card:hover{box-shadow:0 12px 30px rgba(0,0,0,.14); transform:translateY(-2px);}
.beh-card__media{flex:0 0 302px; align-self:stretch; position:relative; overflow:hidden;}
.beh-card .beh-card__media img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block;}
.beh-card__badge{position:absolute; top:12px; left:12px; padding:5px 12px; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; font-weight:400; line-height:1.2; white-space:nowrap; background:var(--axx-accent, #767676); color:#fff;}
.beh-card__body{flex:1 1 auto; padding:24px 30px; position:relative; display:grid; grid-template-columns:1fr auto; grid-template-rows:min-content min-content min-content 1fr; column-gap:40px; row-gap:8px;}
.beh-card__body.has-two{grid-template-columns:1fr auto auto;}
.beh-card__eyebrow{grid-column:1; grid-row:1; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#000; font-weight:300;}
.beh-price__label{grid-row:1; align-self:center; text-align:right; font-size:.72rem; letter-spacing:.05em; font-weight:300; color:var(--axx-muted, #767676);}
.beh-card__title{grid-column:1; grid-row:2; font-size:1.4rem; font-weight:600; line-height:1.2; color:#000; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
/* Der Kartentitel ist seit dem Wegfall des Stretched-Links selbst das Klickziel.
   Themes stylen Links eigenstaendig – Astra faerbt sie #046bd2 und kann einen
   Unterstrich setzen. Beides wird hier zurueckgenommen, damit der verlinkte
   Titel Pixel fuer Pixel so aussieht wie der unverlinkte zuvor (gemessen am
   Live-Render: rgb(0,0,0), text-decoration none). Gleiches Muster wie bei
   .axxento-team__name a weiter oben in dieser Datei. */
.beh-card__title a{color:inherit; text-decoration:none;}
.beh-price__value{grid-row:2; align-self:start; text-align:right; font-size:1.4rem; font-weight:700; color:#000; line-height:1.2;}
.beh-card__teaser{grid-column:1; grid-row:3; align-self:start; font-size:.95rem; line-height:1.55; color:#000; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
.beh-price__duration{grid-row:3; align-self:start; display:flex; align-items:center; justify-content:flex-end; gap:6px; font-size:.85rem; color:var(--axx-muted, #767676);}
.beh-price__duration svg{width:15px; height:15px; fill:currentColor;}
/* "Mehr Infos": Unterstrich kommt aus border-bottom, nicht aus text-decoration
   -> text-underline-offset waere wirkungslos und ist entfernt.
   line-height:1 laesst die Box den Text eng umschliessen, damit der Strich
   dicht sitzt; padding-bottom:3px setzt den Abstand Text/Strich.
   Kein position-Versatz mehr: das fruehere top:6px hat die Box optisch 6px
   nach unten geschoben (gemessen Δ +6px zur Button-Unterkante). Mit enger Box
   und align-self:end fallen Unterkante Link und Button von selbst zusammen.
   Kein position/z-index mehr: beides trug hier ausschliesslich dazu bei, "Mehr
   Infos" und die Termin-Buttons ueber dem ganzflaechigen .beh-card__link zu
   halten. Mit dem Wegfall des Stretched-Links (Entscheidung 6.4) gibt es nichts
   mehr zu ueberlagern – die Angaben waeren toter Code. position:relative an
   .beh-card bleibt davon unberuehrt, es traegt weiterhin das Badge. */
.beh-card__more{grid-column:1; grid-row:4; align-self:end; justify-self:start; margin-top:6px; font-size:.85rem; font-weight:300; line-height:1; color:#000; text-decoration:none; border-bottom:1px solid currentColor; padding-bottom:3px;}
.beh-btn{grid-row:4; align-self:end; margin-top:6px; display:inline-flex; align-items:center; justify-content:center; padding:8px 22px; box-sizing:border-box; border-radius:0; background:#000; color:#fff; text-decoration:none; font-size:14px; line-height:1.5; text-transform:uppercase; letter-spacing:.06em; white-space:nowrap; cursor:pointer; transition:background .2s;}
.beh-btn:hover{background:var(--axx-muted, #767676);}
.beh-c1{grid-column:2;}
.beh-c2{grid-column:3;}
/* Container statt Viewport: die Karte reagiert auf IHRE eigene Breite.
   Grund: im Archiv steht eine Sidebar daneben, vollbreit ohne Sidebar ist die
   Karte deutlich breiter. Ein Viewport-Breakpoint muesste sich fuer einen der
   beiden Faelle entscheiden; das Widget landet bei anderen Kunden aber in
   beliebigen Layouts. Der Container sitzt am Widget-Wrapper (Name am
   gerenderten DOM abgelesen), nicht am Archiv-Template – so wirkt er
   kontextunabhaengig. Der Wrapper ist exakt so breit wie die Karte.
   Nebeneffekt, ausdruecklich erwuenscht: inline-size-Containment nimmt der
   Karte den intrinsischen Mindestbreiten-Beitrag, sie sprengt ihre Spalte
   also nicht mehr. */
.elementor-widget-axxento-behandlung-card{container-type:inline-size;}

/* Schwelle 640px KARTENBREITE (nicht Fensterbreite): darunter bleiben neben dem
   302px breiten Bild noch 338px fuer Titel, Teaser, Preis und Button – gemessen
   die Grenze, ab der der zweizeilige Titel zu brechen beginnt. Inhalt des
   Blocks unveraendert aus dem bisherigen @media(max-width:720px). */
@container (max-width:640px){.beh-card{flex-wrap:wrap; height:auto;} .beh-card__media{flex:1 1 100%; height:200px;} .beh-card__body{grid-template-columns:1fr 1fr; grid-template-rows:none; grid-auto-rows:min-content; column-gap:20px; row-gap:6px;} .beh-card__eyebrow{grid-column:1 / -1; grid-row:1;} .beh-card__title{grid-column:1 / -1; grid-row:2;} .beh-card__teaser{grid-column:1 / -1; grid-row:3;} .beh-card__more{grid-column:1 / -1; grid-row:4; margin:2px 0 12px;} .beh-price__label{grid-column:2; grid-row:5; align-self:end; text-align:left; margin:0;} .beh-price__value{text-align:left;} .beh-price__value.beh-c1{grid-column:1; grid-row:6;} .beh-price__value.beh-c2{grid-column:2; grid-row:6;} .beh-price__duration{justify-content:flex-start;} .beh-price__duration.beh-c1{grid-column:1; grid-row:7;} .beh-price__duration.beh-c2{grid-column:2; grid-row:7;} .beh-btn{margin-top:10px; justify-self:start;} .beh-btn.beh-c1{grid-column:1; grid-row:8;} .beh-btn.beh-c2{grid-column:2; grid-row:8;} .beh-card__body:not(.has-two) .beh-price__value.beh-c1{grid-column:2; text-align:right;} .beh-card__body:not(.has-two) .beh-price__duration.beh-c1{grid-column:2; justify-content:flex-end;} .beh-card__body:not(.has-two) .beh-btn.beh-c1{grid-column:2; justify-self:end;}}

/* ---- axxento-products-slides: neutrale Grundfarbe ----
   Die Preis-Angabe liegt in einem <a>. Ohne eigene Farbe faellt sie auf die
   Link-Farbe des Themes zurueck (bei Astra #046bd2 Blau) statt auf die
   Textfarbe der Kachel. Zuvor verhinderte das ein Control-Default (#1d1d1b) –
   also eine kundenspezifische Farbe im Baukasten. inherit ist der neutrale
   Ersatz: die Angaben folgen dem umgebenden Text, eine Marken-/Kundenfarbe
   kann weiterhin im Editor oder im Child-Theme gesetzt werden. */
.elementor-widget-axxento-products-slides a,
.elementor-widget-axxento-slides a { color: var(--axx-ink, inherit); }

/* ==========================================================================
   Image-Boxen: gleiche Hoehe nebeneinander (Buttons auf einer Linie)
   ==========================================================================
   Gilt fuer axxento-image-box UND axxento-small-image-box. Beide Widgets
   liefern dasselbe Markup (.elementor-image-box-wrapper > .elementor-image-box-img
   + .elementor-image-box-content > .elementor-image-box-button-wrapper), nur mit
   unterschiedlicher Kachel-Klasse – am Quelltext verglichen, nicht angenommen.

   Problem: Stehen mehrere Boxen nebeneinander, sitzen die Buttons auf
   unterschiedlicher Hoehe, sobald die Texte unterschiedlich lang sind
   (gemessen: 2 Zeilen vs. 3 Zeilen + Fussnote -> 21px Versatz).

   Voraussetzung ist bereits erfuellt und wurde am DOM geprueft: beide Widgets
   setzen per Control '{{WRAPPER}}, {{WRAPPER}} .elementor-widget-container' =>
   'height:100%'. Spalte, .elementor-widget-wrap und .elementor-widget-container
   stehen damit schon auf gleicher Hoehe (gemessen 901px). Nur die Kachel selbst
   fuellte ihren Container nicht (880px) – genau das loest height:100%.

   Technik wie bei der Behandlungskarte: flexible Boden-Zeile statt
   Pixel-Ausgleich. Der Inhaltsbereich waechst, der Button haengt per
   margin-top:auto am unteren Rand. Der Mindestabstand ueber dem Button liegt
   als padding-top am Button-Wrapper (siehe die jeweilige Widget-PHP) – als
   margin wuerde ihn margin-top:auto ersetzen.

   UNTERSCHIEDLICHER SCOPE, am DOM ermittelt:
   - axxento-image-box hat ein position-Control (prefix_class elementor-position-%s)
     und kann Bild links/rechts stehen. Dort ist der Wrapper eine Flex-ROW
     (Elementors eigene Regel, hoehere Spezifitaet), eine Spalten-Logik waere
     falsch. Deshalb Scope auf .elementor-position-top.
   - axxento-small-image-box hat KEIN position-Control und traegt folglich nie
     eine elementor-position-*-Klasse (gemessen: "(keine)"). Derselbe Scope lief
     dort ins Leere – die Kachel blieb display:block, Luecke bis 162px. Da das
     Widget gar nicht links/rechts gestellt werden kann, entfaellt der Scope.
     (Die .elementor-position-left/-right-Regeln in seiner Inline-CSS sind aus
     demselben Grund toter Code.)

   Mobil (<768px) stapeln die Spalten, es gibt keinen Ueberschuss zu verteilen –
   die Regeln laufen dann wirkungslos mit. */

.elementor-widget-axxento-image-box.elementor-position-top .axxento-image-box,
.elementor-widget-axxento-small-image-box .axxento-small-image-box{
    height: 100%;
    display: flex;
    flex-direction: column;
}

/* Bild behaelt seine Hoehe, nur der Inhalt verteilt den Ueberschuss. */
.elementor-widget-axxento-image-box.elementor-position-top .elementor-image-box-img,
.elementor-widget-axxento-small-image-box .elementor-image-box-img{
    flex: 0 0 auto;
}

.elementor-widget-axxento-image-box.elementor-position-top .elementor-image-box-content,
.elementor-widget-axxento-small-image-box .elementor-image-box-content{
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
}

/* Boden-Zeile: schiebt den Button an die Unterkante der Kachel. */
.elementor-widget-axxento-image-box.elementor-position-top .elementor-image-box-button-wrapper,
.elementor-widget-axxento-small-image-box .elementor-image-box-button-wrapper{
    margin-top: auto;
}

/* ==========================================================================
   axxento-products-slides: Produktbild-Kachel und Badge
   ==========================================================================
   Werte am Original gemessen (Hersteller-Shop des Erstkunden, Produktliste,
   1440px), nicht aus der Design-Vorschau uebernommen:

     Bild        object-fit:contain, max-width:60%, max-height:250px
     Schatten    drop-shadow(rgba(100,100,100,.2) 30px 15px 1px)
     Container   326,5 x 291,9 px (Verhaeltnis 1,119), padding 32px 0
     Kachel-BG   transparent – das Original hat KEINE eigene Kachelflaeche,
                 der weisse Seitenhintergrund scheint durch
     Badge       #FFFFFF Flaeche, Text rgb(235,130,121), 13px/400,
                 padding 4px, radius 0, absolut 24px/24px zur Kartenkante
     Abstand     0px zwischen den Kacheln

   Farben laufen ueber Tokens mit neutralem Fallback; die Marken-Werte belegt
   das Child-Theme (Kundenwerte wurden mit v1.4.0 aus dem Plugin geraeumt).

   Schattenfarbe bleibt literal: rgba(100,100,100,.2) ist ein neutrales Grau,
   kein Kundenwert.
   -------------------------------------------------------------------------- */

.elementor-widget-axxento-products-slides .axx-produktbild{
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    /* Festes Seitenverhaeltnis, damit alle Kacheln einer Reihe gleich hoch sind.
       Ohne das richtet sich die Hoehe nach dem jeweiligen Bild – gemessen
       314 / 129,8 / 220,8 px nebeneinander. Wert aus dem Original: 326,5x291,9.
       Im Hersteller-Shop faellt das nicht auf, weil dort alle Produktbilder
       quadratisch sind; bei gemischten Formaten schon. */
    aspect-ratio: 326.5 / 291.9;
    background: var(--axx-produkt-kachel-bg, transparent);
    overflow: hidden;
}

/* FREIGESTELLT: Innenabstand, damit das Produkt nie eine Kachelkante beruehrt,
   plus Schatten entlang der Silhouette.
   max-width UND max-height sind beide noetig: Die Produkte sind hochkant
   (Tube), breit (Tiegel) und quadratisch (Schachtel). Nur die Breite zu
   begrenzen laesst hohe Produkte oben und unten anstossen. */
.elementor-widget-axxento-products-slides .axx-produktbild--freigestellt{
    padding: 32px 0;
}

.elementor-widget-axxento-products-slides .axx-produktbild--freigestellt img{
    max-width: 60%;
    /* 250px ist der am Original gemessene Deckel. Zusaetzlich 100%, damit ein
       hochkantes Bild die Kachel nie sprengt – im Original bindet der 250er nie,
       weil dort alle Bilder quadratisch und damit breitenbegrenzt sind. */
    max-height: min(250px, 100%);
    width: auto;
    height: auto;
    object-fit: contain;
    /* drop-shadow folgt dem Alphakanal und wirft den Schatten entlang der
       Produktsilhouette. box-shadow wuerde ein Rechteck um das Bild werfen. */
    filter: drop-shadow(rgba(100, 100, 100, .2) 30px 15px 1px);
}

/* FORMATFUELLEND: Rueckfall fuer Bilder mit deckendem Hintergrund (z.B. JPG).
   Kein Innenabstand, kein Schatten – sonst zeichnete drop-shadow ein Rechteck
   und der Kachel-Hintergrund bliebe als Rand sichtbar. */
.elementor-widget-axxento-products-slides .axx-produktbild--formatfuellend{
    padding: 0;
    background: none;
}

.elementor-widget-axxento-products-slides .axx-produktbild--formatfuellend img{
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    object-fit: cover;
    filter: none;
}

/* Badge: hatte bisher nur position:absolute und keine Klasse – also keine
   Flaeche. Position 24/24 wie im Original gemessen. */
.elementor-widget-axxento-products-slides .axx-produktbild__badge{
    position: absolute;
    top: 24px;
    left: 24px;
    z-index: 2;
    padding: 4px;
    border-radius: 0;
    background: var(--axx-badge-bg, #fff);
    color: var(--axx-badge-text, #767676);
    font-size: 13px;
    font-weight: 400;
    line-height: 1.2;
}

/* Leeres Badge nimmt sonst als leere Flaeche Platz ein. */
.elementor-widget-axxento-products-slides .axx-produktbild__badge:empty{
    display: none;
}

/* Hinweis erscheint nur im Elementor-Editor (PHP-seitig gesteuert, siehe
   render()). Im Frontend wird er gar nicht erst ausgegeben. */
.elementor-widget-axxento-products-slides .axx-produktbild__hinweis{
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 3;
    padding: 4px 8px;
    background: rgba(0, 0, 0, .72);
    color: #fff;
    font-size: 11px;
    line-height: 1.35;
    text-align: center;
}

/* --------------------------------------------------------------------------
 * Linkzustaende der Plugin-Buttons absichern (WCAG 1.4.3, Baseline M11)
 *
 * Astras `a:visited` und `a:focus` haben Spezifitaet (0,1,1) und ueberschreiben
 * die Buttonfarbe dieses Plugins (0,1,0). Nach Rueckkehr aus einem neuen Tab
 * zeigte der TERMIN-Button dadurch blauen Text auf Schwarz (#046BD2, 4,04:1
 * statt 21:1) – ausgerechnet im gerade bedienten Zustand am schlechtesten
 * lesbar. Ein Baukasten-Widget, das bei fremden Themes landet, muss seine
 * eigenen Farben in JEDEM Linkzustand halten. Muster im Haus:
 * `.axxento-team__name a{color:inherit}` weiter oben.
 *
 * Spezifitaet hier: Klasse + Pseudoklasse (0,2,x) schlaegt Astras (0,1,1)
 * sicher. `:focus-visible` steht in einer eigenen Regel, damit aeltere Browser
 * die uebrige Liste nicht mitverwerfen.
 * -------------------------------------------------------------------------- */
.beh-btn:link, .beh-btn:visited, .beh-btn:hover, .beh-btn:focus, .beh-btn:active { color:#fff; }
.beh-btn:focus-visible { color:#fff; }

.beh-card__more:link, .beh-card__more:visited, .beh-card__more:hover, .beh-card__more:focus, .beh-card__more:active { color:#000; }
.beh-card__more:focus-visible { color:#000; }

.beh-card__title a:link, .beh-card__title a:visited, .beh-card__title a:hover, .beh-card__title a:focus, .beh-card__title a:active { color:inherit; }
.beh-card__title a:focus-visible { color:inherit; }

.axxento-beh-preise__button:link, .axxento-beh-preise__button:visited, .axxento-beh-preise__button:hover, .axxento-beh-preise__button:focus, .axxento-beh-preise__button:active { color:#fff; }
.axxento-beh-preise__button:focus-visible { color:#fff; }

/* --------------------------------------------------------------------------
 * Titel-Tag neutralisieren (WCAG 1.3.1, Baseline B5)
 *
 * Der Titel der beiden Overlay-Boxen ist von <div> auf h3 gewechselt (der
 * Default des neuen title_size-Controls). Semantisch richtig – aber Astra, das
 * Elementor-Kit und die Browser-Defaults stylen Ueberschriften. Damit sich die
 * Darstellung um kein Pixel aendert, holt die folgende Regel genau die
 * Eigenschaften zurueck, die der <div> geerbt hatte.
 *
 * `inherit` statt fester Werte: Der <div> hatte keine eigenen Angaben, er hat
 * geerbt. `inherit` bildet genau das ab und bleibt auch dann richtig, wenn das
 * Widget bei einem anderen Kunden in einer anderen Typografie steht.
 * -------------------------------------------------------------------------- */

/* Gemessen am 22.07.2026 per getComputedStyle an der
   Startseite (1440 px, Widget-Markup in die echte Seitenkaskade injiziert –
   die beiden Widgets sind auf der lokalen Referenz-Site nirgends eingesetzt,
   es gibt also kein Live-Element). div -> h3 verschob:
     font-size    16px         -> 24px      (post-30.css: .elementor-kit-30 h3)
     font-weight  300          -> 700       (post-30.css: .elementor-kit-30 h3)
     line-height  25.6px       -> 31.2px    (Astra inline: h3 { line-height:1.3em })
     color        rgb(0,0,0)   -> rgb(30,41,59)  (Astra inline, --ast-global-color-2)
     margin-bottom 0px         -> 20px      (Astra inline: h1..h6 { margin:20px })
     Elementhoehe 25.59px      -> 31.20px
   Zwei Klassen (0,2,0) sind noetig, weil .elementor-kit-30 h3 (0,1,1) nach
   dieser Datei geladen wird; eine einzelne Klasse (0,1,0) verliert – am
   Live-Render geprueft, font-size blieb bei 24px. Die Style-Controls des
   Widgets ({{WRAPPER}} .elementor-…-title, (0,3,0), Spacing zusaetzlich
   !important) stehen weiterhin darueber. Nach der Regel: alle zwoelf
   gemessenen Eigenschaften und die Elementhoehe wieder identisch zum div. */
.axxento-overly-box .elementor-overly-box-title,
.axxento-small-overly-box .elementor-small-overly-box-title {
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	letter-spacing: inherit;
	color: inherit;
	margin: 0;
}

/* Ablauf-Titel der Behandlungsbeschreibung, div -> h2 (Befund B20). Gemessen
   am 22.07.2026 an /behandlungen/acid-peel-treatment/ (1440 px) am echten
   Element, vor und nach dem Tag-Wechsel. Die Klassenregel des Child-Themes
   (.single-behandlungen .detail-desc__ablauf-title, (0,2,0)) haelt font-size
   .72rem/11.52px, letter-spacing .12em, text-transform uppercase, font-weight
   300, color und margin 28px 0 14px auch am h2 – font-family und margin
   ausdruecklich gegengeprueft, unveraendert. Einzige Eigenschaft, die
   durchschlaegt:
     line-height   25.6px  -> 14.976px  (Astra inline: h2 { line-height:1.3em })
     Elementhoehe  25.59px -> 14.97px
   Nach der Regel: alle 20 gemessenen Eigenschaften identisch, Bounding-Box
   x/y/w/h unveraendert (465 / 1081.47 / 806 / 25.59). */
.detail-desc .detail-desc__ablauf-title {
	line-height: inherit;
}

/* --------------------------------------------------------------------------
 * Slider-Pfeile: <button> neutralisieren (WCAG 4.1.2, Baseline B7)
 *
 * Prev/Next waren <div> und damit ohne JavaScript unbedienbar; sie sind jetzt
 * <button type="button">. Ein Button bringt aber nicht nur Browser-Defaults
 * mit, sondern auch Astras globale Button-Optik – die faellt deutlich
 * kraeftiger aus als der bisherige nackte <div>.
 *
 * Gemessen am 22.07.2026, Startseite, 1440 px: beide Markup-Varianten in die
 * echte Instanz-Kaskade des Produkt-Sliders injiziert (die Pfeile sind auf
 * dieser Site nicht gerendert, navigation steht auf dem Default 'dots' – es
 * gibt also kein Live-Element). div -> button verschob 16 Eigenschaften:
 *   font-weight     300        -> 500
 *   line-height     25.6px     -> 16px
 *   text-align      start      -> center
 *   color           rgb(0,0,0) -> rgb(255,255,255)
 *   background      transparent-> rgb(4,107,210)     (Astras Button-Blau)
 *   padding         0          -> 15px 30px
 *   border          none       -> 1px solid rgb(4,107,210)
 *   border-radius   0          -> 4px
 *   appearance      none       -> button
 *   Elementgroesse  0x0        -> 60x30
 *
 * Nach dieser Regel bleibt genau EINE Abweichung: fokussierbar false -> true.
 * Das ist der Gewinn, nicht ein Nebeneffekt.
 *
 * Spezifitaet bewusst nur eine Klasse (0,1,0): Autor-Regeln schlagen die
 * UA-Defaults unabhaengig von der Spezifitaet, und Astras Button-Regeln liegen
 * darunter. Die Style-Controls des Widgets ({{WRAPPER}} .elementor-swiper-button
 * fuer Farbe, Hintergrund, Rahmen, Radius, Padding, Typografie) und die
 * instanzgebundenen Inline-Regeln der Widgets liegen bei (0,2,0) und hoeher –
 * sie greifen unveraendert weiter.
 *
 * cursor:pointer ist die einzige gewollte Abweichung zum frueheren <div>
 * (dort auto). Ein Bedienelement soll als solches erkennbar sein.
 * -------------------------------------------------------------------------- */
.elementor-swiper-button {
	-webkit-appearance: none;
	appearance: none;
	border: 0;
	border-radius: 0;
	background: transparent;
	padding: 0;
	font: inherit;
	color: inherit;
	text-align: inherit;
	cursor: pointer;
}

/* ---- axxento-behandlung-kategorien -------------------------------------
 * Die Kategorieliste ersetzt ein nav-menu-Widget. Elementors Menue-Optik
 * haengt aber an der Widget-Klasse (`.elementor-widget-nav-menu
 * .elementor-nav-menu--main .elementor-item {color: …}` aus dem Kit) und an
 * elementinstanz-gebundenen Regeln, die Elementor nur fuer das nav-menu-Widget
 * erzeugt. Beides greift hier nicht mehr — die Links fielen deshalb auf Astras
 * Link-Blau rgb(4,107,210) zurueck.
 *
 * Diese Regeln stellen die Optik selbst her, gemessen am gerenderten
 * nav-menu-Widget derselben Stelle (1440 px, Sidebar /behandlungen/):
 *   Linkfarbe      rgb(51,55,61)      Elementors neutrales Menue-Grau
 *   Schriftgewicht 400
 *   Innenabstand   10px 20px
 *   Trenner        1px solid #ECEEEF, nicht hinter dem letzten Eintrag
 *   Flaeche        weiss
 *   hover/aktiv    #000
 * Werte bewusst hart und markenneutral: sie sind Elementors eigene Defaults,
 * kein Kundenwert. Wer sie kundenspezifisch will, ueberschreibt sie im Kit-CSS.
 *
 * Spezifitaet zwei Klassen (0,2,0): schlaegt Astras Link-Regel, liegt aber
 * unter Elementors instanzgebundenen Regeln (.elementor-58 .elementor-element…
 * = 0,3,0 aufwaerts), falls doch einmal welche erzeugt werden.
 * ------------------------------------------------------------------------ */
.axxento-kat-liste {
	background-color: #ffffff;
}

.axxento-kat-liste .elementor-nav-menu {
	margin: 0;
	padding: 0;
	list-style: none;
}

.axxento-kat-liste .axxento-kat-liste__item:not(:last-child) {
	border-bottom: 1px solid #eceeef;
}

.axxento-kat-liste .elementor-item {
	display: flex;
	align-items: center;
	padding: 10px 20px;
	line-height: 20px;
	font-weight: 400;
	color: #33373d;
	fill: #33373d;
	text-decoration: none;
	transition: color 0.2s;
}

.axxento-kat-liste .elementor-item:hover,
.axxento-kat-liste .elementor-item:focus,
.axxento-kat-liste .elementor-item-active {
	color: #000000;
	fill: #000000;
	background-color: #ffffff;
}

.axxento-kat-liste__anzahl {
	margin-inline-start: 0.35em;
	opacity: 0.6;
}

/* Variante "schlicht": nackte Liste fuer Stellen mit eigenem Umfeld — im Footer
 * steht sie auf schwarzem Grund, wo weisse Flaeche und Trennlinien falsch
 * waeren. Die Farbe erbt sie von der Einbaustelle (Inline-Wert am <nav>), damit
 * kein Kundenwert im Plugin landet. Abstaende und Zeilenhoehe entsprechen der
 * Icon-Liste, die hier vorher stand. */
.axxento-kat-liste--schlicht {
	background-color: transparent;
}

.axxento-kat-liste--schlicht .axxento-kat-liste__item:not(:last-child) {
	border-bottom: 0;
}

.axxento-kat-liste--schlicht .axxento-kat-liste__item + .axxento-kat-liste__item {
	margin-block-start: 7px;
}

.axxento-kat-liste--schlicht .elementor-item {
	display: block;
	padding: 0;
	line-height: 1.6em;
	font-weight: inherit;
	color: inherit;
	fill: currentcolor;
	background-color: transparent;
}

.axxento-kat-liste--schlicht .elementor-item:hover,
.axxento-kat-liste--schlicht .elementor-item:focus,
.axxento-kat-liste--schlicht .elementor-item-active {
	color: inherit;
	background-color: transparent;
	text-decoration: underline;
}
