/* ==========================================================================
   main.css — Grundgerüst für office-phone.de
   office & phone Büromanagement GmbH
   Mobile First · Custom Properties · Utility Classes
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. CUSTOM PROPERTIES
   -------------------------------------------------------------------------- */
:root {
  /* — Farben — (Quelle: wordpress/wp-content/et-cache/global/et-divi-customizer-global.min.css) */
  --blue:          #035fea;  /* Live: Headlines, Header-BG (Top-Bar), Nav-Link-Text, Links */
  --blue-dark:     #024bb8;  /* Hover-Shade abgeleitet (~10% dunkler) */
  --blue-light:    #e8f0fd;  /* Abgeleitet — für helle Flächen */
  --green:         #bbdb66;  /* Hauptmarke lt. CLAUDE.md (nicht im Live-Customizer direkt genutzt) */
  --green-dark:    #9abf3a;  /* Hover-Shade abgeleitet */
  --green-light:   #f4f9e6;  /* Helle Fläche abgeleitet */
  --green-bright:  #cff06d;  /* Live: Active-Nav-Link + Hover-Accent (aus Customizer) */
  --white:         #ffffff;
  --black:         #000000;
  --text-body:     #707070;  /* Live: body { color: #707070 } — wichtig, NICHT schwarz */
  --red:           #c0392b;  /* Fehler-Akzent (Formular-Status) */
  --red-light:     #fdecea;  /* Helle Fehler-Fläche */

  /* Gray-Palette */
  --gray-50:       #fafafa;
  --gray-100:      #f5f5f5;
  --gray-200:      #eeeeee;
  --gray-300:      #e0e0e0;
  --gray-400:      #bdbdbd;
  --gray-500:      #9e9e9e;
  --gray-600:      #757575;
  --gray-700:      #616161;
  --gray-800:      #424242;
  --gray-900:      #212121;

  /* — Typografie — */
  --font-family:   'Titillium Web', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --fw-regular:    400;
  --fw-semibold:   600;
  --fw-bold:       700;
  --fw-black:      900;

  --fs-xs:         0.75rem;    /* 12px */
  --fs-sm:         0.875rem;   /* 14px */
  --fs-base:       1rem;       /* 16px */
  --fs-md:         1.125rem;   /* 18px */
  --fs-lg:         1.25rem;    /* 20px */
  --fs-xl:         1.5rem;     /* 24px */
  --fs-2xl:        2rem;       /* 32px */
  --fs-3xl:        2.5rem;     /* 40px */
  --fs-4xl:        3rem;       /* 48px */

  --lh-tight:      1.2;
  --lh-base:       1.6;
  --lh-loose:      1.8;

  /* — Spacing (8px-Raster) — */
  --space-1:       0.25rem;    /* 4px */
  --space-2:       0.5rem;     /* 8px */
  --space-3:       0.75rem;    /* 12px */
  --space-4:       1rem;       /* 16px */
  --space-5:       1.5rem;     /* 24px */
  --space-6:       2rem;       /* 32px */
  --space-7:       2.5rem;     /* 40px */
  --space-8:       3rem;       /* 48px */
  --space-9:       4rem;       /* 64px */
  --space-10:      5rem;       /* 80px */
  --space-11:      6rem;       /* 96px */
  --space-12:      8rem;       /* 128px */

  /* — Layout — (Figma Desktop-Frame: 1280px) */
  --max-width:     1280px;
  --container-pad: 0;          /* Full-Bleed: Sektionen gehen bis an die Viewport-Ränder */

  /* — Header-spezifisch — */
  --header-height:     84px;
  --topbar-height:     40px;   /* Dünne Oberleiste — Live hat aktiven Top-Bar (secondary_nav_enabled) */
  --nav-mobile-break:  87.5em; /* 1400px — Live-Breakpoint für Mobile-Nav-Toggle */

  /* — Section-Inhalts-Padding (einheitlich für Header + Topbar + alle Sections) — */
  --section-pad-x:     1rem;   /* Mobile 16px — wird in @media auf 24/40px erhöht */

  /* — Border-Radius (abgerundet!) — */
  --radius-sm:     4px;
  --radius-md:     8px;
  --radius-lg:     12px;
  --radius-xl:     16px;
  --radius-2xl:    24px;
  --radius-full:   9999px;

  /* — Shadows — */
  --shadow-sm:     0 1px 2px rgba(0, 0, 0, 0.06);
  --shadow-md:     0 4px 12px rgba(0, 0, 0, 0.08);
  --shadow-lg:     0 8px 24px rgba(0, 0, 0, 0.12);
  --shadow-xl:     0 16px 48px rgba(0, 0, 0, 0.16);
  --shadow-accent:    0 12px 32px rgba(3, 95, 234, 0.14);  /* blau getönte Elevation für Marken-/Held-Elemente */
  --shadow-accent-lg: 0 16px 40px rgba(3, 95, 234, 0.20);  /* Hover-Lift Held-Elemente */

  /* — Surfaces — */
  --surface-soft:  #F7FAFF;  /* bläuliches Weiß für interaktive/Premium-Sektionen (= .content-section--soft) */

  /* — Transitions — */
  --ease-out:      cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --duration-fast: 150ms;
  --duration-base: 250ms;
  --duration-slow: 400ms;

  /* — Z-Index-Schichten — */
  --z-dropdown:    100;
  --z-sticky:      200;
  --z-overlay:     300;
  --z-modal:       400;
  --z-toast:       500;
}


/* --------------------------------------------------------------------------
   2. RESET / BOX-SIZING
   -------------------------------------------------------------------------- */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-size: 100%;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  font-family: var(--font-family);
  font-size: var(--fs-base);
  font-weight: var(--fw-regular);
  line-height: var(--lh-base);
  color: var(--text-body);            /* Live: body { color: #707070 } */
  background-color: var(--white);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}

a {
  color: var(--blue);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-out);
}

a:hover {
  color: var(--blue-dark);
}

button {
  font-family: inherit;
  cursor: pointer;
}

ul, ol {
  list-style: none;
}

h1, h2, h3, h4, h5, h6 {
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--blue);                 /* Live: alle H1–H6 sind blau #035fea */
  /* text-wrap: balance verteilt Headline-Zeilen ausgewogen — vermeidet
     Single-Word-Orphans und schiefe Umbrüche. hyphens: manual unterdrückt
     automatische Wort-Trennung mit Bindestrich (für deutsche Headlines). */
  text-wrap: balance;
  hyphens: manual;
}

/* Body-Text: pretty für angenehme Lesbarkeit (kein Single-Word-Last-Line) */
p {
  text-wrap: pretty;
}


/* --------------------------------------------------------------------------
   3. TYPOGRAFIE
   -------------------------------------------------------------------------- */
h1 { font-size: var(--fs-2xl); font-weight: var(--fw-black); }
h2 { font-size: var(--fs-xl);  font-weight: var(--fw-bold);  }
h3 { font-size: var(--fs-lg);  font-weight: var(--fw-bold);  }
h4 { font-size: var(--fs-md);  font-weight: var(--fw-semibold); }

p + p { margin-top: var(--space-4); }

.text-sm   { font-size: var(--fs-sm); }
.text-base { font-size: var(--fs-base); }
.text-md   { font-size: var(--fs-md); }
.text-lg   { font-size: var(--fs-lg); }
.text-xl   { font-size: var(--fs-xl); }


/* --------------------------------------------------------------------------
   4. LAYOUT — Container & Grid
   -------------------------------------------------------------------------- */
.container {
  width: 100%;
  max-width: var(--max-width);
  margin-inline: auto;
  padding-inline: var(--container-pad);
}

.grid {
  display: grid;
  gap: var(--space-5);
}

.flex {
  display: flex;
  gap: var(--space-4);
}


/* --------------------------------------------------------------------------
   5. BUTTONS
   -------------------------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-5);
  font-family: var(--font-family);
  font-size: var(--fs-base);
  font-weight: var(--fw-semibold);
  line-height: 1;
  border: 2px solid transparent;
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: all var(--duration-fast) var(--ease-out);
  text-decoration: none;
}

.btn:focus-visible {
  outline: 3px solid var(--blue);
  outline-offset: 2px;
}

/* Primär: Blau */
.btn-primary {
  background-color: var(--blue);
  color: var(--white);
  border-color: var(--blue);
}

.btn-primary:hover {
  background-color: var(--blue-dark);
  border-color: var(--blue-dark);
  color: var(--white);
}


/* Ghost / Outline */
.btn-outline {
  background-color: transparent;
  color: var(--blue);
  border-color: var(--blue);
}

.btn-outline:hover {
  background-color: var(--blue);
  color: var(--white);
}


/* --------------------------------------------------------------------------
   6. SKIP-LINK (Accessibility)
   -------------------------------------------------------------------------- */
.skip-link {
  position: absolute;
  top: -100%;
  left: var(--space-4);
  padding: var(--space-2) var(--space-4);
  background: var(--blue);
  color: var(--white);
  border-radius: var(--radius-md);
  z-index: var(--z-toast);
  font-weight: var(--fw-semibold);
}

.skip-link:focus {
  top: var(--space-2);
}


/* --------------------------------------------------------------------------
   7. HEADER — 1:1 an Live-Seite office-phone.de orientiert

   Struktur (von oben nach unten):
   a) .topbar       → blaue Oberleiste (Kontakt + Sprachumschalter)
                      Quelle: et-divi-customizer-global.min.css
                      → `.et_secondary_nav_enabled #top-header {
                           background-color: #035fea !important }`
   b) .site-header  → weißer Main-Header (Logo + Desktop-Nav + Mobile-Burger)
                      Quelle: `#main-header { background-color: #fff !important }`
   c) .mobile-nav   → Slide-Down-Menü (nur < 1400px sichtbar)

   Wichtige Live-Werte:
   - Nav-Link-Farbe Desktop:    #035fea (blau)
   - Nav-Link-Farbe Mobile:     rgba(0,0,0,0.6)  (aus @media max-980)
   - Nav-Active-Link:           #cff06d (var --green-bright)
   - Nav-Schrift-Groesse:       16px (Top-Menu), 14px (Fixed-Nav)
   - Mobile-Breakpoint:         max-width 1400px → Burger aktiv
   - Logo Desktop:              max-width 300px
   - Logo Mobile (<600px):      max-width 200px
   -------------------------------------------------------------------------- */


/* EINHEITLICHE INHALT-CONTAINER:
   Header, Topbar, Hero, Content-Section, container--padded — alle Inhalte landen
   in einer 1280px-Spalte, mit --section-pad-x außerhalb. Logo/Nav/Headlines
   beginnen damit auf exakt derselben x-Position über die ganze Seite. */
.site-header .header-inner,
.topbar .topbar-inner,
.hero .hero-inner,
.content-section__inner,
.container--padded {
  max-width: calc(var(--max-width) + 2 * var(--section-pad-x));
  margin-inline: auto;
  padding-inline: var(--section-pad-x);
}


/* ---- a) TOP-BAR (weiss, Kontakt + Sprachumschalter) ---- */


/* Sprachumschalter — Text-basiert (DE | EN), bewusst ohne Flaggen */
.lang-switch {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-weight: var(--fw-semibold);
  flex-shrink: 0;
}

.lang-switch a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  min-width: 32px;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  color: var(--gray-500);
}

.lang-switch a.active {
  color: var(--blue);
}

.lang-switch a:hover {
  color: var(--blue-dark);
}

.lang-switch .separator {
  color: var(--gray-300);
  user-select: none;
}


/* ---- b) MAIN-HEADER (weiß, Logo + Nav) ---- */
.site-header {
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
  background-color: var(--white);
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--duration-base) var(--ease-out);
}

.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  min-height: var(--header-height);
}

.site-logo {
  display: block;
  flex-shrink: 0;
  padding-block: var(--space-3);
  position: relative;
}

.site-logo img,
.site-logo__img {
  display: block;
  width: 100%;
  max-width: 220px;              /* Mobile — Live: 200px, leicht erhöht für Lesbarkeit */
  height: auto;
  transition: max-width var(--duration-base) var(--ease-out),
              opacity var(--duration-base) var(--ease-out);
}

/* Beide Logo-Varianten gestapelt — Light wird per body.is-home aktiviert.
   Default: Light unsichtbar, Dark sichtbar. */
.site-logo__img--light {
  position: absolute;
  inset: var(--space-3) 0 var(--space-3) 0;
  opacity: 0;
  pointer-events: none;
}


/* Desktop-Navigation — Live: ab 1401px sichtbar (max 1400 = Mobile-Toggle)
   margin-left: auto schiebt die Nav an den rechten Rand (Logo bleibt links) */


.nav-list {
  display: flex;
  align-items: center;
  gap: var(--space-5);
}

.nav-link {
  display: inline-block;
  font-size: var(--fs-md);     /* 18px — erhöht von 16px auf Wunsch */
  font-weight: var(--fw-regular);  /* dünner — regular 400 statt semibold 600 */
  color: var(--blue);          /* Live: #top-menu a { color: #035fea } */
  padding: var(--space-3) 0;
  position: relative;
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-out);
  white-space: nowrap;
}

.nav-link:hover {
  color: var(--blue-dark);     /* Hellgrün hatte auf weißem BG zu wenig Kontrast */
}

.nav-link.active {
  color: var(--green-bright);
}

.nav-link.active::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: -2px;
  height: 2px;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
}


/* ---- c) BURGER-BUTTON (nur Mobile, < 1400px) ---- */
.header-actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-left: auto;
}

.nav-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  height: 44px;
  padding: 0 var(--space-3);
  background: none;
  border: none;
  cursor: pointer;
  border-radius: var(--radius-md);
  transition: background-color var(--duration-fast) var(--ease-out);
}

/* "MENU"-Label neben dem Burger — dezent aber sichtbar, signalisiert Navi.
   Auf Mobile (< 50em) ausgeblendet, damit nur das Hamburger-Icon Platz hat. */
.nav-toggle::before {
  content: 'Menu';
  font-size: 0.8125rem;          /* 13px */
  font-weight: var(--fw-semibold);
  letter-spacing: 0.18em;        /* großzügig getrackt für Editorial-Feel */
  text-transform: uppercase;
  color: var(--blue);
  line-height: 1;
}

@media (max-width: 50em) {
  .nav-toggle::before { content: none; }
}

.nav-toggle:hover {
  background-color: var(--gray-100);
}

.nav-toggle:focus-visible {
  outline: 3px solid var(--blue);
  outline-offset: 2px;
}

.nav-toggle span {
  display: block;
  width: 24px;
  height: 2px;
  background-color: var(--blue);
  position: relative;
  transition: transform var(--duration-base) var(--ease-out),
              background-color var(--duration-fast) var(--ease-out);
}

.nav-toggle span::before,
.nav-toggle span::after {
  content: '';
  position: absolute;
  left: 0;
  width: 100%;
  height: 2px;
  background-color: var(--blue);
  transition: transform var(--duration-base) var(--ease-out),
              top var(--duration-base) var(--ease-out);
}

.nav-toggle span::before { top: -7px; }
.nav-toggle span::after  { top: 7px; }

/* Aktiv-Zustand: X-Icon */
.nav-toggle[aria-expanded="true"] span {
  background-color: transparent;
}

.nav-toggle[aria-expanded="true"] span::before {
  top: 0;
  transform: rotate(45deg);
}

.nav-toggle[aria-expanded="true"] span::after {
  top: 0;
  transform: rotate(-45deg);
}


/* ---- c2) DROPDOWN-MENUS (Desktop, Premium-Mega-Menu) ---- */


/* ---- c3) NAV-CTA (Pill rechts vom Sprach-Switch) ---- */


/* Auf sehr schmalen Mobiles: CTA + DE/EN ausblenden, nur Burger anzeigen */
@media (max-width: 37.49em) {
  .nav-cta,
  .site-header .header-lang { display: none; }
}


/* ==========================================================================
   SITE-MENU — Premium-Side-Drawer (slidet von rechts ein)
   Auf Desktop ~480px breit, auf Mobile Full-Screen.
   Backdrop schließt beim Klick. JS toggelt .is-open auf .site-menu UND .site-menu-backdrop.
   ========================================================================== */
.site-menu-backdrop {
  position: fixed;
  inset: 0;
  background-color: rgba(15, 25, 45, 0.45);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  opacity: 0;
  visibility: hidden;
  z-index: calc(var(--z-sticky) + 1);
  transition: opacity var(--duration-base) var(--ease-out),
              visibility var(--duration-base) var(--ease-out);
}

.site-menu-backdrop.is-open {
  opacity: 1;
  visibility: visible;
}

.site-menu {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(540px, 100vw);
  background-color: var(--white);
  background-image:
    radial-gradient(120% 50% at 100% 0%, rgba(3, 95, 234, 0.045) 0%, transparent 60%),
    radial-gradient(70% 40% at 0% 100%, rgba(207, 240, 109, 0.10) 0%, transparent 60%);
  box-shadow: -24px 0 80px rgba(15, 25, 45, 0.22);
  z-index: calc(var(--z-sticky) + 2);
  transform: translateX(100%);
  visibility: hidden;
  will-change: transform;
  transition: transform 460ms cubic-bezier(0.32, 0.72, 0, 1),
              visibility 460ms cubic-bezier(0.32, 0.72, 0, 1);
  overflow-y: auto;
  overscroll-behavior: contain;
}

.site-menu.is-open {
  transform: translateX(0);
  visibility: visible;
}

.site-menu__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-7);
  padding: var(--space-5) var(--space-8) var(--space-8);
  min-height: 100%;
}

/* Top-Bar: Close-X rechts */
.site-menu__top {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-4);
}

.site-menu__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  background: none;
  border: 1px solid var(--gray-200);
  border-radius: var(--radius-full);
  color: var(--blue);
  cursor: pointer;
  flex-shrink: 0;
  transition: background-color var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out),
              transform var(--duration-fast) var(--ease-out);
}

.site-menu__close svg {
  width: 18px;
  height: 18px;
}

.site-menu__close:hover {
  background-color: var(--blue);
  border-color: var(--blue);
  color: var(--white);
  transform: rotate(90deg);
}

.site-menu__close:focus-visible {
  outline: 3px solid var(--blue);
  outline-offset: 3px;
}

/* Nav-Container: drei Gruppen */
.site-menu__nav {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}

/* Gruppen-Heading mit Index-Nummer */
.site-menu__group-heading {
  display: inline-flex;
  align-items: baseline;
  gap: var(--space-3);
  margin: 0 0 var(--space-4) 0;
  padding-left: var(--space-3);
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--blue);
}

.site-menu__group-num {
  font-size: var(--fs-xs);
  font-weight: var(--fw-regular);
  color: var(--green-dark);
  letter-spacing: 0.12em;
}

.site-menu-list {
  display: flex;
  flex-direction: column;
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-menu-list li { position: relative; }

.site-menu-list a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-3);
  border-radius: var(--radius-md);
  font-size: clamp(1.375rem, 2.2vw, 1.625rem);
  font-weight: var(--fw-regular);
  color: var(--blue);
  text-decoration: none;
  letter-spacing: -0.015em;
  line-height: 1.2;
  position: relative;
  transition: color var(--duration-fast) var(--ease-out),
              background-color var(--duration-fast) var(--ease-out),
              padding-left var(--duration-base) var(--ease-out);
}

/* Linker Akzent-Strich — erscheint bei Hover/Focus/Active */
.site-menu-list a::before {
  content: '';
  position: absolute;
  left: -2px;
  top: 50%;
  width: 3px;
  height: 0;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
  transform: translateY(-50%);
  transition: height var(--duration-base) var(--ease-out);
}

/* Pfeil rechts — dauerhaft sichtbar, schiebt sich beim Hover */
.site-menu-list a::after {
  content: '';
  width: 28px;
  height: 14px;
  flex-shrink: 0;
  background-color: var(--gray-300);
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'><path d='M0 6h22M16 1l5 5-5 5' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
          mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'><path d='M0 6h22M16 1l5 5-5 5' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  -webkit-mask-size: contain;
          mask-size: contain;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: right center;
          mask-position: right center;
  transform: translateX(0);
  transition: transform var(--duration-base) var(--ease-out),
              background-color var(--duration-fast) var(--ease-out);
}

.site-menu-list a:hover,
.site-menu-list a:focus-visible {
  color: var(--blue-dark);
  background-color: rgba(3, 95, 234, 0.04);
  outline: none;
  padding-left: var(--space-4);
}

.site-menu-list a.active {
  color: var(--blue-dark);
  padding-left: var(--space-4);
}

.site-menu-list a:hover::before,
.site-menu-list a:focus-visible::before,
.site-menu-list a.active::before {
  height: 60%;
}

.site-menu-list a:hover::after,
.site-menu-list a:focus-visible::after,
.site-menu-list a.active::after {
  transform: translateX(6px);
  background-color: var(--green-dark);
}

/* Kontakt-Block — feiner Trennstrich oben + Eyebrow + 2-Spalten Telefone */
.site-menu__contact {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding-top: var(--space-6);
  border-top: 1px solid var(--gray-100);
}

.site-menu__contact-heading {
  margin: 0 0 var(--space-1) 0;
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--blue);
}

.site-menu__contact-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-3) var(--space-5);
}

.site-menu__contact-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-3);
  font-size: var(--fs-md);
  color: var(--blue);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-out),
              transform var(--duration-fast) var(--ease-out);
}

.site-menu__contact-link strong {
  font-weight: var(--fw-semibold);
  display: block;
  font-size: var(--fs-xs);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--gray-500);
  margin-bottom: 2px;
}

.site-menu__contact-link svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  color: var(--green-dark);
}

.site-menu__contact-link:hover,
.site-menu__contact-link:focus-visible {
  color: var(--blue-dark);
  transform: translateX(2px);
  outline: none;
}

/* Footer im Drawer: Sprachswitch + Copyright */
.site-menu__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  flex-wrap: wrap;
  padding-top: var(--space-5);
  border-top: 1px solid var(--gray-100);
}

.site-menu__lang {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
}

.site-menu__lang a {
  color: var(--gray-500);
  padding: var(--space-1) 0;
  transition: color var(--duration-fast) var(--ease-out);
}

.site-menu__lang a.active { color: var(--blue); }
.site-menu__lang a:hover  { color: var(--blue-dark); }
.site-menu__lang .separator { color: var(--gray-300); user-select: none; }

.site-menu__copyright {
  margin: 0;
  font-size: var(--fs-xs);
  color: var(--gray-500);
}

/* Stagger-Fade beim Öffnen */
.site-menu.is-open .site-menu__top,
.site-menu.is-open .site-menu__group,
.site-menu.is-open .site-menu__contact,
.site-menu.is-open .site-menu__footer {
  animation: siteMenuFadeIn 480ms cubic-bezier(0.32, 0.72, 0, 1) backwards;
}

.site-menu.is-open .site-menu__top                                { animation-delay:  80ms; }
.site-menu.is-open .site-menu__nav .site-menu__group:nth-child(1) { animation-delay: 140ms; }
.site-menu.is-open .site-menu__nav .site-menu__group:nth-child(2) { animation-delay: 200ms; }
.site-menu.is-open .site-menu__nav .site-menu__group:nth-child(3) { animation-delay: 260ms; }
.site-menu.is-open .site-menu__contact                            { animation-delay: 320ms; }
.site-menu.is-open .site-menu__footer                             { animation-delay: 380ms; }

@keyframes siteMenuFadeIn {
  from { opacity: 0; transform: translateX(16px); }
  to   { opacity: 1; transform: translateX(0); }
}

@media (prefers-reduced-motion: reduce) {
  .site-menu.is-open .site-menu__top,
  .site-menu.is-open .site-menu__group,
  .site-menu.is-open .site-menu__contact,
  .site-menu.is-open .site-menu__footer { animation: none; }
}

/* Mobile: weniger Padding, full width */
@media (max-width: 47.99em) {
  .site-menu__inner {
    padding: var(--space-4) var(--space-5) var(--space-6);
    gap: var(--space-6);
  }
  .site-menu__top {
    margin: 0 calc(var(--space-5) * -1) 0;
    padding: 0 var(--space-5) var(--space-4);
  }
  .site-menu__nav { gap: var(--space-5); }
}

/* Verhindert Body-Scrolling während Menu offen ist */
body.nav-open { overflow: hidden; }


/* ---- d) MOBILE-NAV (Full-Screen-Overlay, < 1400px) ----
   Öffnet sich unter dem Site-Header und füllt den restlichen Viewport.
   Animation: Fade + Slide via .is-open Klasse (siehe JS).               */
.mobile-nav {
  position: fixed;
  /* top wird beim Öffnen per JS auf die aktuelle Site-Header-Unterkante gesetzt,
     damit kein Spalt entsteht — egal ob Topbar sichtbar oder weggescrollt ist. */
  top: calc(var(--topbar-height) + var(--header-height));
  right: 0;
  bottom: 0;
  left: 0;
  background-color: var(--white);
  z-index: calc(var(--z-sticky) - 1); /* unter Site-Header (sticky) */

  /* Initial-Zustand: versteckt, leicht oben */
  opacity: 0;
  visibility: hidden;
  transform: translateY(-12px);
  pointer-events: none;
  transition: opacity var(--duration-base) var(--ease-out),
              transform var(--duration-base) var(--ease-out),
              visibility 0s linear var(--duration-base);

  overflow: hidden;
  overscroll-behavior: contain;
}

.mobile-nav.is-open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
  transition: opacity var(--duration-base) var(--ease-out),
              transform var(--duration-base) var(--ease-out),
              visibility 0s linear 0s;
}


/* Hauptlinks — Premium: dezenter Pfeil immer sichtbar, grüner Akzent links bei Active */
.mobile-nav-list {
  display: flex;
  flex-direction: column;
}

.mobile-nav-list li {
  position: relative;
}

.mobile-nav-list a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  min-height: 24px;
  padding: var(--space-3) 0 var(--space-3) var(--space-2);
  font-size: clamp(1.375rem, 4.5vw, 1.75rem);   /* 22–28px */
  font-weight: var(--fw-regular);
  color: var(--blue);
  text-decoration: none;
  letter-spacing: -0.015em;
  line-height: 1.15;
  position: relative;
  transition: color var(--duration-fast) var(--ease-out),
              padding-left var(--duration-base) var(--ease-out);
}

/* Linker Akzent-Strich: erscheint dezent bei Active/Hover/Focus */
.mobile-nav-list a::before {
  content: '';
  position: absolute;
  left: -2px;
  top: 50%;
  width: 3px;
  height: 0;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
  transform: translateY(-50%);
  transition: height var(--duration-base) var(--ease-out);
}

/* Pfeil rechts: dezent grau, dauerhaft sichtbar — schiebt sich + färbt sich beim Hover */
.mobile-nav-list a::after {
  content: '';
  width: 24px;
  height: 12px;
  flex-shrink: 0;
  background-color: var(--gray-300);
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'><path d='M0 6h22M16 1l5 5-5 5' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
          mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'><path d='M0 6h22M16 1l5 5-5 5' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  -webkit-mask-size: contain;
          mask-size: contain;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: right center;
          mask-position: right center;
  opacity: 1;
  transform: translateX(0);
  transition: transform var(--duration-base) var(--ease-out),
              background-color var(--duration-fast) var(--ease-out);
}

.mobile-nav-list a:hover,
.mobile-nav-list a:focus-visible,
.mobile-nav-list a.active {
  color: var(--blue-dark);
  outline: none;
  padding-left: var(--space-3);
}

.mobile-nav-list a:hover::before,
.mobile-nav-list a:focus-visible::before,
.mobile-nav-list a.active::before {
  height: 60%;
}

.mobile-nav-list a:hover::after,
.mobile-nav-list a:focus-visible::after,
.mobile-nav-list a.active::after {
  transform: translateX(4px);
  background-color: var(--green-dark);
}

/* Stagger-Animation beim Öffnen: dezent, max 200ms Versatz */
.mobile-nav.is-open .mobile-nav-list li {
  animation: navItemFadeIn var(--duration-base) var(--ease-out) backwards;
}
.mobile-nav.is-open .mobile-nav-list li:nth-child(1) { animation-delay: 40ms; }
.mobile-nav.is-open .mobile-nav-list li:nth-child(2) { animation-delay: 80ms; }
.mobile-nav.is-open .mobile-nav-list li:nth-child(3) { animation-delay: 120ms; }
.mobile-nav.is-open .mobile-nav-list li:nth-child(4) { animation-delay: 160ms; }
.mobile-nav.is-open .mobile-nav-list li:nth-child(5) { animation-delay: 200ms; }
.mobile-nav.is-open .mobile-nav-list li:nth-child(6) { animation-delay: 240ms; }
.mobile-nav.is-open .mobile-nav-list li:nth-child(7) { animation-delay: 280ms; }

@keyframes navItemFadeIn {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .mobile-nav.is-open .mobile-nav-list li { animation: none; }
}


/* Body-Klasse, wenn Menü offen — verhindert Scroll im Hintergrund */
body.nav-open {
  overflow: hidden;
}


/* --------------------------------------------------------------------------
   8. FOOTER — Premium · Office-Phone-Blau · Standorte fokussiert
   -------------------------------------------------------------------------- */
.site-footer {
  background-color: var(--blue);
  color: rgba(255, 255, 255, 0.78);
  padding-block: var(--space-11) var(--space-6);
  font-feature-settings: 'ss01';
}

/* Top-Bereich: Brand links + 2 Standorte rechts */
.footer-top {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  padding-bottom: var(--space-9);
  margin-bottom: var(--space-8);
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

@media (min-width: 50em) {
  .footer-top {
    grid-template-columns: 1fr 1.4fr;
    gap: var(--space-10);
    align-items: start;
  }
}

.footer-brand {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

.footer-logo {
  display: inline-block;
  line-height: 0;
}

.footer-logo img {
  width: clamp(220px, 22vw, 300px);
  height: auto;
  display: block;
}

.footer-tagline {
  font-size: var(--fs-md);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.78);
  margin: 0;
  max-width: 42ch;
}

/* Broschüre-CTA: dezent, aber direkt mit grünem Markenakzent */
.footer-brochure {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-5);
  border-radius: var(--radius-full);
  border: 0;
  background-color: var(--green-bright);
  color: var(--blue);
  text-decoration: none;
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  letter-spacing: 0.02em;
  transition: background-color var(--duration-fast) var(--ease-out);
}

.footer-brochure svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
}

.footer-brochure__arrow {
  width: 18px !important;
  height: 10px !important;
  transition: transform var(--duration-base) var(--ease-out);
}

.footer-brochure:hover,
.footer-brochure:focus-visible {
  background-color: var(--green);
  outline: none;
}

.footer-brochure:hover .footer-brochure__arrow {
  transform: translateX(4px);
}

/* Zwei Standort-Karten — fühlbar, prominent */
.footer-locations {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
}

@media (min-width: 37.5em) {
  .footer-locations { grid-template-columns: 1fr 1fr; }
}

.footer-location {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-5) 0 var(--space-5) var(--space-5);
  border-left: 2px solid var(--green-bright);
}

.footer-location__label {
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--green-bright);
}

.footer-location__city {
  font-size: clamp(1.5rem, 2.4vw, 1.875rem); /* 24–30px */
  font-weight: var(--fw-semibold);
  color: var(--white);
  margin: 0 0 var(--space-2);
  letter-spacing: -0.015em;
  line-height: 1.1;
}

.footer-location__address {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  font-style: normal;
  font-size: var(--fs-base);
  line-height: 1.5;
}

.footer-location__row {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  color: rgba(255, 255, 255, 0.85);
}

.footer-location__row svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: 2px;
  color: rgba(255, 255, 255, 0.55);
  transition: color var(--duration-fast) var(--ease-out);
}

.footer-location__link {
  text-decoration: none;
  font-weight: var(--fw-semibold);
  color: var(--white);
  transition: color var(--duration-fast) var(--ease-out);
}

.footer-location__link:hover {
  color: var(--green-bright);
}

.footer-location__link:hover svg {
  color: var(--green-bright);
}

/* Mid-Bereich: Link-Spalten */
.footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-7);
  padding-bottom: var(--space-8);
}

@media (min-width: 37.5em) {
  .footer-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 80em) {
  .footer-grid { grid-template-columns: repeat(4, 1fr); }
}

.footer-heading {
  color: var(--white);
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  margin-bottom: var(--space-4);
}

.footer-link {
  display: block;
  color: rgba(255, 255, 255, 0.78);
  font-size: var(--fs-base);
  text-decoration: none;
  padding-block: var(--space-1);
  transition: color var(--duration-fast) var(--ease-out);
}

.footer-link:hover {
  color: var(--green-bright);
}

/* Social-Icons */
.footer-socials {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer-social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: var(--radius-full);
  background-color: rgba(255, 255, 255, 0.08);
  color: var(--white);
  transition: background-color var(--duration-fast) var(--ease-out),
              color var(--duration-fast) var(--ease-out),
              transform var(--duration-fast) var(--ease-out);
}

.footer-social svg {
  width: 20px;
  height: 20px;
}

.footer-social:hover,
.footer-social:focus-visible {
  background-color: var(--green-bright);
  color: var(--blue);
  outline: none;
  transform: translateY(-2px);
}

/* Bottom-Bereich: Copyright + ISO-Cert + Legal */
.footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  padding-top: var(--space-5);
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3) var(--space-6);
  font-size: var(--fs-sm);
  color: rgba(255, 255, 255, 0.6);
}

.footer-bottom__left {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3) var(--space-5);
}

.footer-bottom p { margin: 0; }

.footer-bottom__cert {
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--green-bright);
}

.footer-legal {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.footer-legal a {
  color: rgba(255, 255, 255, 0.6);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-out);
}

.footer-legal a:hover { color: var(--green-bright); }

.footer-legal .separator { color: rgba(255, 255, 255, 0.3); }


/* Mobil: kompakterer Footer */
@media (max-width: 47.99em) {
  .site-footer {
    padding-block: var(--space-7) var(--space-5);
  }
  .footer-top {
    gap: var(--space-6);
    padding-bottom: var(--space-6);
    margin-bottom: var(--space-6);
  }
  .footer-brand {
    gap: var(--space-4);
  }
  .footer-tagline {
    font-size: var(--fs-base);
  }
  .footer-locations {
    gap: var(--space-4);
  }
  .footer-location {
    padding: var(--space-3) 0 var(--space-3) var(--space-4);
  }
  .footer-grid {
    gap: var(--space-5);
    padding-bottom: var(--space-5);
  }
  .footer-heading {
    margin-bottom: var(--space-2);
  }
  .footer-bottom {
    padding-top: var(--space-4);
  }
}


/* --------------------------------------------------------------------------
   9. SECTION-SPACING
   -------------------------------------------------------------------------- */
.section {
  padding-block: var(--space-9);
}

.section-sm {
  padding-block: var(--space-6);
}

.section-lg {
  padding-block: var(--space-11);
}

.section-heading {
  text-align: center;
  margin-bottom: var(--space-8);
}

/* Einheitliche Section-Headline (verbindlicher Design-System-Standard für H1/H2)
   h1 nutzt denselben Stil als Page-Einstieg ohne separaten Hero (z. B. Blog) */
.section-heading h1,
.section-heading h2 {
  font-size: clamp(2.25rem, 4vw, 3.25rem); /* 36–52px — globaler H2-Standard */
  font-weight: var(--fw-semibold);
  line-height: 1.1;
  letter-spacing: -0.015em;
  color: var(--blue);
  margin: 0 0 var(--space-3);
}

.section-heading p {
  color: var(--text-body);
  font-size: var(--fs-md);
  line-height: 1.6;
  max-width: 640px;
  margin-inline: auto;
  margin-block: 0;
}


/* --------------------------------------------------------------------------
   10. UTILITY CLASSES
   -------------------------------------------------------------------------- */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.text-center { text-align: center; }
.text-left   { text-align: left; }
.text-right  { text-align: right; }

.text-blue   { color: var(--blue); }
.text-green  { color: var(--green); }
.text-gray   { color: var(--gray-600); }
.text-white  { color: var(--white); }

.bg-white    { background-color: var(--white); }
.bg-gray     { background-color: var(--gray-50); }
.bg-blue     { background-color: var(--blue); }
.bg-blue-light { background-color: var(--blue-light); }
.bg-green-light { background-color: var(--green-light); }

.rounded     { border-radius: var(--radius-md); }
.rounded-lg  { border-radius: var(--radius-lg); }
.rounded-xl  { border-radius: var(--radius-xl); }

.shadow-sm   { box-shadow: var(--shadow-sm); }
.shadow-md   { box-shadow: var(--shadow-md); }
.shadow-lg   { box-shadow: var(--shadow-lg); }


/* --------------------------------------------------------------------------
   11. BREAKPOINTS (Mobile First)
   -------------------------------------------------------------------------- */

/* ≥ 480px — Große Smartphones */
@media (min-width: 30em) {
  h1 { font-size: var(--fs-3xl); }
}

/* ≥ 600px — Kleine Tablets */
@media (min-width: 37.5em) {
  :root {
    --section-pad-x: 1.5rem;  /* 24px */
  }

  .site-logo img { max-width: 240px; }
}

/* ≥ 768px — Tablets */
@media (min-width: 48em) {
  h1 { font-size: var(--fs-3xl); }
  h2 { font-size: var(--fs-2xl); }

  .grid-2 { grid-template-columns: repeat(2, 1fr); }

  .header-inner { height: 80px; }
}

/* ≥ 900px — Große Tablets / kleine Laptops */
@media (min-width: 56.25em) {
  .grid-3 { grid-template-columns: repeat(3, 1fr); }
}

/* ≥ 1024px — Desktop */
@media (min-width: 64em) {
  :root {
    --section-pad-x: 2.5rem;   /* 40px */
  }

  /* Logo darf jetzt breiter werden — Live: max-width 300px ab Desktop.
     Aspekt 1472:230 → bei 300px Breite ergibt sich 47px Höhe. */
  .site-logo img { max-width: 300px; max-height: 48px; }

  h1 { font-size: var(--fs-4xl); }

  .grid-4 { grid-template-columns: repeat(4, 1fr); }
}

/* ≥ 1400px — Navigation wechselt von Burger zu Desktop-Nav
   Quelle: Live-Customizer @media (max-width: 1400px) versteckt #et_top_menu
           → Desktop-Nav also erst ab 1401px sichtbar. Ich nehme die 1400-Grenze. */
@media (min-width: 87.5em) {
  /* Nav bündig mit rechtem Box-Rand — Padding rechts entfernen.
     Logo behält links den --section-pad-x-Abstand.
     Gleiches gilt für die Top-Bar → DE/EN-Switch in Linie mit Burger. */
  .site-header .header-inner,
  .topbar .topbar-inner {
    padding-inline-end: 0;
  }
}


.hero-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3) var(--space-5);
}

/* Hero-CTA: Pill-Form, helles Grün, blauer Text, Uppercase */
.btn-hero {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-4) var(--space-6);
  background-color: var(--green-bright);
  color: var(--blue-dark);
  border: 2px solid var(--green-bright);
  border-radius: var(--radius-full);
  font-family: var(--font-family);
  font-size: var(--fs-base);
  font-weight: var(--fw-semibold); /* 600 — dezent dicker als Regular */
  line-height: 1;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out),
              transform var(--duration-fast) var(--ease-out);
}

.btn-hero:hover {
  background-color: var(--green);        /* #bbdb66 — dunkleres Grün beim Hover */
  border-color: var(--green);
  color: var(--blue-dark);
  transform: translateY(-1px);
}

.btn-hero:focus-visible {
  outline: 3px solid var(--blue);
  outline-offset: 2px;
}

/* Auf dunklem Hero-Bild bleibt der Fokusring weiß sichtbar */
.hero .btn-hero:focus-visible {
  outline-color: var(--white);
}

/* Sekundär-Variante: weißer Hintergrund für Secondary-CTAs auf dunklem Hero */
.btn-hero--outline {
  background-color: var(--white);
  color: var(--blue);
  border-color: var(--white);
}

.btn-hero--outline:hover {
  background-color: var(--gray-100);
  border-color: var(--gray-100);
  color: var(--blue);
}

/* Sekundär-Variante (Ghost): blauer Rand auf hellem Grund — für Verweise im Fließtext (z.B. Blog) */
.btn-hero--ghost {
  background-color: transparent;
  color: var(--blue);
  border-color: var(--blue);
  text-transform: none;       /* sekundäre Verweis-Labels: kompakter + lesbarer, brechen nicht auf 360px */
  letter-spacing: normal;
}

.btn-hero--ghost:hover {
  background-color: var(--blue);
  border-color: var(--blue);
  color: var(--white);
}

/* Button-Reihe (1+ Buttons, umbruchfähig) */
.btn-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-block: var(--space-5);
}


.news-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
}

@media (min-width: 37.5em) { .news-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 56.25em) { .news-grid { grid-template-columns: repeat(3, 1fr); } }

/* Premium-Card — feine Border, Soft-Shadow, Image-Zoom, lift on hover */
.news-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background-color: var(--white);
  color: inherit;
  text-decoration: none;
  overflow: hidden;
  border-radius: var(--radius-xl);
  border: 1px solid var(--gray-200);
  box-shadow: 0 1px 2px rgba(3, 95, 234, 0.04),
              0 8px 24px -12px rgba(3, 95, 234, 0.10);
  transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1),
              box-shadow 0.4s cubic-bezier(0.2, 0.8, 0.2, 1),
              border-color 0.3s ease;
}

.news-card:hover {
  transform: translateY(-6px);
  border-color: rgba(3, 95, 234, 0.18);
  box-shadow: 0 2px 4px rgba(3, 95, 234, 0.05),
              0 24px 48px -16px rgba(3, 95, 234, 0.22);
}

.news-card__image {
  position: relative;
  aspect-ratio: 16 / 10;
  background-color: var(--gray-200);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  overflow: hidden;
  transition: transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
  transform-origin: center;
}

/* Subtiler Gradient unten am Bild — premium-feeling und besserer Übergang zum Body */
.news-card__image::after {
  content: '';
  position: absolute;
  inset: auto 0 0 0;
  height: 35%;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.55) 100%);
  pointer-events: none;
}

.news-card:hover .news-card__image {
  transform: scale(1.04);
}

/* Typ-Badge (oben links auf jeder Card)
   Varianten:
   - .news-card__badge--news → Unternehmens-News (green-bright = Markenakzent)
   - .news-card__badge--blog → Fach-/Branchen-Content (blue-light = dezent) */


.news-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  flex: 1;
  padding: var(--space-6) var(--space-6) var(--space-6);
}

.news-card__meta {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-sm);
  color: var(--gray-500);
  line-height: 1;
}

.news-card__meta .separator {
  color: var(--gray-300);
}

.news-card__category {
  position: relative;
  color: var(--blue);
  font-weight: var(--fw-bold);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: var(--fs-xs);
  padding-left: var(--space-3);
}

/* Mini-Marker-Strich vor der Kategorie (passt zum Design-System) */
.news-card__category::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 8px;
  height: 2px;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
}

.news-card__title {
  color: var(--blue);
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  line-height: 1.2;
  letter-spacing: -0.01em;
  margin: var(--space-1) 0 0;
}

.news-card__text {
  color: var(--text-body);
  font-size: var(--fs-base);
  line-height: 1.6;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.news-card__link {
  color: var(--blue);
  font-weight: var(--fw-semibold);
  font-size: var(--fs-sm);
  margin-top: auto;
  padding-top: var(--space-3);
  border-top: 1px solid var(--gray-200);
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  transition: color 0.3s ease;
}

.news-card__link::after {
  content: '';
  width: 32px;
  height: 32px;
  border-radius: var(--radius-full);
  background-color: var(--blue-light);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12' fill='none' stroke='%23035fea' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'><path d='M0 6h22M16 1l5 5-5 5'/></svg>");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 14px auto;
  transition: background-color 0.3s ease,
              transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1);
}

.news-card:hover .news-card__link::after {
  background-color: var(--blue);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12' fill='none' stroke='white' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'><path d='M0 6h22M16 1l5 5-5 5'/></svg>");
  transform: translateX(4px);
}


/* ≥ 1440px — Extra breit
   (kein Override mehr — --max-width bleibt bei 1280px, global gesetzt in :root) */


/* ==========================================================================
   13. HEADER — Hover-Underline (grün) + Auto-Hide on Scroll
   ========================================================================== */
.nav-link {
  position: relative;
}

.nav-link::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: -2px;
  height: 2px;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform var(--duration-fast) var(--ease-out);
}

.nav-link:hover::after,
.nav-link.active::after {
  transform: scaleX(1);
}

.nav-link.active {
  color: var(--blue);                 /* Active bleibt blau, nur grüner Strich */
}

/* Header Scrolled-Shadow (Header bleibt immer sticky-sichtbar) */
.site-header.is-scrolled {
  box-shadow: var(--shadow-md);
}


/* ==========================================================================
   14. STICKY BOTTOM BAR (Edge-to-edge Strip am unteren Rand)
   Erscheint ab 600px Scroll, verschwindet bei Footer-Sichtbarkeit.
   Desktop/Tablet: Message + CTA. Mobile: kompakt, nur Headline + CTA.
   ========================================================================== */
.sticky-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: var(--z-sticky);

  background-color: rgba(3, 95, 234, 0.92);
  background-image: linear-gradient(180deg,
    rgba(255, 255, 255, 0.08) 0%,
    rgba(255, 255, 255, 0) 60%);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border-top: 1px solid rgba(255, 255, 255, 0.18);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.20) inset,
    0 -12px 32px -12px rgba(3, 30, 80, 0.30);
  color: var(--white);

  /* sicherer Bereich für iOS-Geräte mit Home-Indicator */
  padding-bottom: env(safe-area-inset-bottom, 0);
  transform: translateY(100%);
  opacity: 0;
  transition: transform var(--duration-base) var(--ease-out),
              opacity var(--duration-base) var(--ease-out);
  will-change: transform, opacity;
}

.sticky-bar.is-visible {
  transform: translateY(0);
  opacity: 1;
}

.sticky-bar.is-disabled {
  transform: translateY(100%);
  opacity: 0;
}

.sticky-bar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  width: 100%;
  max-width: var(--max-width);
  margin: 0 auto;
  padding: var(--space-3) var(--section-pad-x);
}

.sticky-bar__info {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
  flex: 1 1 auto;
}

.sticky-bar__dot {
  width: 10px;
  height: 10px;
  border-radius: var(--radius-full);
  background-color: var(--green-bright);
  flex-shrink: 0;
  animation: pulse-dot 2s infinite;
  box-shadow: 0 0 0 4px rgba(207, 240, 109, 0.25);
}

@keyframes pulse-dot {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.3); opacity: 0.7; }
}

.sticky-bar__message {
  font-size: var(--fs-base);
  line-height: 1.4;
  margin: 0;
  color: rgba(255, 255, 255, 0.92);
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.sticky-bar__message strong {
  font-weight: var(--fw-semibold);
  font-size: var(--fs-base);
  color: var(--white);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.sticky-bar__subtext {
  font-size: var(--fs-base);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* CTA — eigenständig gestylter Pill-Button (kein btn-hero nötig) */
.sticky-bar__cta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
  padding: var(--space-3) var(--space-5);
  background-color: var(--green-bright);
  color: var(--blue-dark);
  border: 2px solid var(--green-bright);
  border-radius: var(--radius-full);
  font-family: var(--font-family);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  line-height: 1;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out),
              transform var(--duration-fast) var(--ease-out),
              box-shadow var(--duration-fast) var(--ease-out);
}

.sticky-bar__cta:hover {
  background-color: var(--green);
  border-color: var(--green);
  color: var(--blue);
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(187, 219, 102, 0.35);
}

.sticky-bar__cta:focus-visible {
  outline: 3px solid var(--white);
  outline-offset: 3px;
}

/* Mobile (<600px): kompakter Strip — nur Headline + CTA, Subtext aus */
@media (max-width: 37.49em) {
  .sticky-bar__inner {
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
  }
  .sticky-bar__info {
    gap: var(--space-2);
  }
  .sticky-bar__subtext {
    display: none;
  }
  .sticky-bar__cta {
    padding: var(--space-3) var(--space-4);
    font-size: var(--fs-xs);
    letter-spacing: 0.04em;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sticky-bar__dot { animation: none; }
  .sticky-bar { transition: opacity var(--duration-fast) linear; }
  .sticky-bar.is-visible { transform: none; }
  .sticky-bar.is-disabled { transform: none; }
}


/* ==========================================================================
   15. HERO — Einheitlicher Fullscreen-Hero für ALLE Seiten (Start + Unterseiten)
   Bild kommt per inline-style als Custom Property:
   style="--hero-image: url('/img/headers/xyz.webp');"
   Auf Mobile (<800px): Foto oben (separates <img>), blaue Text-Card darunter.
   ========================================================================== */
.hero {
  position: relative;
  overflow: hidden;
  background-color: var(--gray-800);   /* Fallback */
  background-image: var(--hero-image);
  background-position: var(--hero-image-position, center center);
  background-size: cover;
  background-repeat: no-repeat;
  color: var(--white);
  padding-block: var(--space-8) var(--space-4);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

/* Dunkler Vertikal-Gradient — unten deutlich abgedunkelt für saubere Card-Lesbarkeit */
.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 0%,
    rgba(8, 14, 28, 0.30) 45%,
    rgba(8, 14, 28, 0.70) 75%,
    rgba(5, 10, 22, 0.92) 100%
  );
  pointer-events: none;
  z-index: 0;
}

/* Foto für Mobile — Desktop nutzt background-image */
.hero-image-mobile {
  display: none;
}

.hero-inner {
  position: relative;
  z-index: 2;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-7);
}

.hero-content {
  width: 100%;
  margin-top: auto;
  margin-bottom: var(--space-9);
}

.hero-content h1 {
  font-size: clamp(2.5rem, 6.75vw, 5rem);
  line-height: 1.05;
  letter-spacing: -0.025em;
  color: var(--white);
  font-weight: var(--fw-regular);
  margin-bottom: var(--space-5);
  text-wrap: balance;
}

/* Ortsangabe — gleicher Weight, leicht gedämpft */
.hero-h1-place {
  display: block;
  font-weight: var(--fw-regular);
  color: rgba(255, 255, 255, 0.7);
}

.hero-sub {
  font-size: var(--fs-md);
  line-height: 1.55;
  font-weight: var(--fw-regular);
  color: rgba(255, 255, 255, 0.88);
  max-width: 58ch;
  margin-bottom: var(--space-7);
}

.hero-sub strong {
  font-weight: var(--fw-semibold);
  color: var(--white);
}

/* Mikro-Trust-Zeile unter den Hero-CTAs — gedämpftes Weiß, lesbar auf Desktop-Bild UND mobiler blauer Card */
.hero-microtrust {
  margin-top: var(--space-4);
  margin-bottom: 0;
  font-size: var(--fs-sm);
  font-weight: var(--fw-regular);
  color: rgba(255, 255, 255, 0.8);
}

/* ---- Mobile (<800px): Foto oben, blaue Card darunter ---- */
@media (max-width: 49.99em) {
  .hero {
    min-height: 100vh;
    background-image: none;
    background-color: var(--white);
    padding: 0;
    overflow: visible;
  }

  .hero::before { display: none; }

  .hero .hero-inner {
    gap: 0;
    padding-inline: 0;
    max-width: none;
  }

  /* Mobile-Bild ist bereits 4:5 gecroppt pro Seite (sekretariat-*-mobile.webp etc.) — kein object-fit-Crop mehr nötig */
  .hero-image-mobile {
    display: block;
    width: 100%;
    height: auto;
    max-height: 70svh;
    object-fit: cover;
    object-position: center;
    border-radius: 0;
  }

  .hero .hero-content {
    margin: 0;
    padding: var(--space-6) var(--section-pad-x);
    background-color: var(--blue);
  }

  .hero .hero-content h1 {
    color: var(--white);
    font-size: 2rem;
    line-height: 1.1;
    letter-spacing: -0.02em;
    font-weight: var(--fw-regular);
    margin-bottom: var(--space-3);
  }

  .hero .hero-content .hero-h1-place {
    color: rgba(255, 255, 255, 0.7);
  }

  .hero .hero-content .hero-sub {
    color: rgba(255, 255, 255, 0.9);
    font-size: var(--fs-base);
    line-height: 1.5;
    max-width: none;
  }

  .hero .hero-actions .btn-hero {
    box-shadow: var(--shadow-md);
  }
}

/* ==========================================================================
   MISSION & VISION — 9 Leitsätze (Über uns)
   Layout: 1 Heading-Spalte links + 3×3 Number-Grid rechts (Live-Look)
   Dezente Premium-Effekte: Hover-Lift + wachsender Akzent-Strich
   ========================================================================== */
.principle-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
}
@media (min-width: 56.25em) {
  .principle-layout {
    grid-template-columns: 1fr 3fr;
    gap: var(--space-9);
  }
}

.principle-layout__heading h2 {
  font-size: clamp(2.25rem, 4vw, 3.25rem);
  font-weight: var(--fw-semibold);
  line-height: 1.1;
  letter-spacing: -0.015em;
  color: var(--blue);
  margin: 0 0 var(--space-7);
}
.principle-layout__heading p {
  font-size: var(--fs-md);
  font-weight: var(--fw-regular);
  line-height: 1.6;
  color: var(--text-body);
  margin: 0;
  max-width: 32ch;
}
.principle-layout__heading p strong {
  display: block;
  font-weight: var(--fw-bold);
  color: var(--blue);
  margin-bottom: var(--space-2);
}

.principle-grid {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-7);
}
@media (min-width: 37.5em) {
  .principle-grid { grid-template-columns: repeat(2, 1fr); gap: var(--space-7) var(--space-6); }
}
@media (min-width: 56.25em) {
  .principle-grid { grid-template-columns: repeat(3, 1fr); gap: var(--space-8) var(--space-6); }
}

/* Item — kein Card-Look, transparent. Premium-Detail: subtile Lift on hover */
.principle-card {
  position: relative;
  padding: 0;
  background: transparent;
  border: none;
  box-shadow: none;
  transition: transform var(--duration-base) var(--ease-out);
}
.principle-card:hover {
  transform: translateY(-2px);
}

/* Große Nummer im office & phone-Stil — Titillium Web Black (900), Brand-Blue */
.principle-card__number {
  display: block;
  font-family: var(--font-family);
  font-size: clamp(3.5rem, 6.5vw, 5.25rem);
  font-weight: var(--fw-black);
  line-height: 0.95;
  color: var(--blue);
  margin-bottom: var(--space-4);
  letter-spacing: -0.025em;
  font-feature-settings: "lnum" 1; /* Lining-Figures, falls Font sie hat */
}

/* Akzent-Strich unter der Nummer — wächst on hover (Premium-Detail) */
.principle-card__number::after {
  content: "";
  display: block;
  width: 32px;
  height: 3px;
  background-color: var(--green-bright);
  margin-top: var(--space-3);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--duration-slow) var(--ease-out),
              width var(--duration-slow) var(--ease-out);
}
.principle-card:hover .principle-card__number::after,
.principle-card:focus-within .principle-card__number::after {
  transform: scaleX(1);
  width: 48px;
}

.principle-card__text {
  font-size: var(--fs-md);
  font-weight: var(--fw-regular);
  line-height: 1.6;
  color: var(--text-body);
  margin: 0;
  max-width: 32ch;
}


/* ==========================================================================
   TEAM-BIO — Über-uns: 2-Spalten-Cards mit Foto + ausführlicher Bio
   Live-Look (hellblauer BG, weiße Cards) + Premium-Hover (Lift + Ken-Burns)
   ========================================================================== */
.team-bio-section {
  background-color: #f3f7fe; /* gleicher hellblauer Ton wie Hero */
}

.team-bio-section .section-heading--left h2 {
  font-size: clamp(2.25rem, 4vw, 3.25rem);
  font-weight: var(--fw-semibold);
  letter-spacing: -0.015em;
}

.team-bio-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
}
@media (min-width: 37.5em) { /* 600px — Tablet: 2 Spalten */
  .team-bio-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (min-width: 56.25em) { /* 900px — Desktop: 3 Spalten, links-bündig (wie Live) */
  .team-bio-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.team-bio-grid + .team-bio-grid {
  margin-top: var(--space-6);
}

/* ----- Card — clean, exakt wie Live-Screenshot ---------------------------- */
.team-bio-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background-color: var(--white);
  border-radius: var(--radius-xl);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: transform var(--duration-base) var(--ease-out),
              box-shadow var(--duration-base) var(--ease-out);
}

.team-bio-card:hover,
.team-bio-card:focus-within {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}

/* ----- Bild: 16:9 (Live nutzt 1280x720), bündig mit Card-Rand (kein weißer Rahmen) */
.team-bio-card__image {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background-color: var(--gray-100);
}
.team-bio-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 700ms var(--ease-out);
}
.team-bio-card:hover .team-bio-card__image img,
.team-bio-card:focus-within .team-bio-card__image img {
  transform: scale(1.04);
}


.team-bio-card--placeholder .team-bio-card__name,
.team-bio-card--placeholder .team-bio-card__role {
  color: var(--gray-400);
}
.team-bio-card--placeholder .team-bio-card__bio {
  color: var(--gray-400);
  font-style: italic;
}

/* ----- Body --------------------------------------------------------------- */
.team-bio-card__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: var(--space-6) var(--space-5) var(--space-5);
}

/* Name: groß, blau, oben */
.team-bio-card__name {
  font-size: clamp(1.625rem, 2.4vw, 2rem);
  font-weight: var(--fw-semibold);
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--blue);
  margin: 0 0 var(--space-2);
}

/* Rolle: kleiner, blau, NICHT uppercase, direkt unter Name */
.team-bio-card__role {
  font-size: var(--fs-md);
  font-weight: var(--fw-regular);
  color: var(--blue);
  margin: 0 0 var(--space-7);
}

/* Bio: grau, Standard-Body */
.team-bio-card__bio {
  font-size: var(--fs-base);
  color: var(--text-body);
  line-height: 1.65;
  margin: 0;
}


/* ==========================================================================
   16. CONTENT-SECTION — Varianten + Wave-Bottom
   ========================================================================== */
.content-section {
  padding-block: var(--space-10);
  position: relative;
}

/* .content-section__inner: max-width + padding-inline werden zentral oben definiert
   (siehe Block "Inhalt-Container" — beim Header-Bereich) */

.content-section--white      { background-color: var(--white); }
.content-section--soft       { background-color: #F7FAFF; }


.content-section--blue {
  background-color: var(--blue);
  color: var(--white);
}
.content-section--blue h2,
.content-section--blue h3,
.content-section--blue h4 { color: var(--white); }
.content-section--blue p  { color: rgba(255,255,255,0.92); }
.content-section--blue a:not(.btn-hero):not(.btn) { color: var(--green-bright); }

.content-section--blue .section-heading p { color: rgba(255,255,255,0.85); }


.content-section--wave-bottom.content-section--soft::after { background-color: var(--white); }
.content-section--wave-bottom.content-section--blue::after { background-color: #F7FAFF; }


/* ==========================================================================
   17. SECTION-HEADING — Linksbündige Variante
   ========================================================================== */
.section-heading--left {
  text-align: left;
  max-width: none;
  margin-inline: 0;
}

.section-heading--left h1,
.section-heading--left h2,
.section-heading--left p {
  margin-inline: 0;
  max-width: none;
}

.section-heading--left h1,
.section-heading--left h2 {
  font-size: clamp(2.25rem, 4vw, 3.25rem);
  font-weight: var(--fw-semibold);
  line-height: 1.1;
  margin-bottom: var(--space-4);
}

.section-heading--left p {
  font-size: var(--fs-md);
  color: var(--text-body);
  line-height: 1.6;
}


/* ==========================================================================
   18. FEATURE-SPLIT — 50/50 Grid (Image + Content oder Content + Accordion)
   ========================================================================== */
.feature-split {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-7);
  align-items: start;
}

@media (min-width: 56.25em) {
  .feature-split {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-9);
  }
}


.feature-split--reverse .feature-split__content { order: 2; }

@media (min-width: 56.25em) {
  
  .feature-split--reverse .feature-split__content { order: 1; }
}


.feature-split__content h2 {
  font-size: clamp(2.25rem, 4vw, 3.25rem); /* globaler H2-Standard */
  font-weight: var(--fw-semibold);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin-bottom: var(--space-4);
}

.feature-split__content p {
  font-size: var(--fs-md);
  color: var(--text-body);
  line-height: 1.7;
  margin-bottom: var(--space-4);
}

.content-section--blue .feature-split__content p { color: rgba(255,255,255,0.92); }


/* ==========================================================================
   18b. SERVICE-SECTION — Premium-Variant (Sekretariat / Telefon / Workspaces)
   Asymmetrisches 55/45-Grid · Section-Number · Marker-Akzent · Image-Shadow
   ========================================================================== */
.service-section {
  padding-block: var(--space-11);   /* 96px — mehr Atmung als Standard-Section */
  transition: background-color 0.6s ease-out;
}

/* Hervorhebung beim Scroll in den Viewport — JS toggelt .is-in-view */
.service-section.is-in-view {
  background-color: var(--blue-light);
}

.service-split {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-7);
  align-items: center;
}

@media (min-width: 80em) {
  .service-split {
    grid-template-columns: 55fr 45fr;
    gap: var(--space-10);                /* 80px Spalten-Gap auf Desktop */
  }
}

/* Bild/Text-Reihenfolge: Mobile/Tablet IMMER Text zuerst, dann Bild.
   --reverse-Order greift erst ab Desktop (sonst landet das Bild über der Headline). */
@media (min-width: 80em) {
  .service-split--reverse .service-split__image    { order: 1; }
  .service-split--reverse .service-split__content  { order: 2; }
  .service-split--reverse {
    grid-template-columns: 45fr 55fr;
  }
}

/* Content-Block: Number + Label + H2 + Text + CTA */
.service-split__content {
  position: relative;
  display: flex;
  flex-direction: column;
}

/* "Neu mit KI"-Badge — als Overlay oben links auf dem Image */
.service-section__badge {
  position: absolute;
  top: var(--space-4);
  left: var(--space-4);
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  background-color: var(--green-bright);
  color: var(--blue);
  border-radius: var(--radius-full);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  line-height: 1.2;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);
}

.service-section__badge svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

/* Section-Label — kleine Caps oberhalb der Headline */
.service-section__label {
  display: inline-block;
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--blue);
  margin-bottom: var(--space-3);
}

/* H2 — Marker-Akzent links (grün-bright vertikaler Strich) */
.service-section__title {
  position: relative;
  font-size: clamp(2.25rem, 4vw, 3.25rem); /* globaler H2-Standard */
  font-weight: var(--fw-semibold);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin-bottom: var(--space-5);
  padding-left: var(--space-5);
  color: var(--blue);
}

.service-section__title::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.15em;
  bottom: 0.15em;
  width: 4px;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
}

.service-split__content > p {
  font-size: var(--fs-md);
  color: var(--text-body);
  line-height: 1.6;
  margin-bottom: var(--space-4);
  max-width: 56ch;                          /* angenehme Zeilenlänge */
}

/* CTA-Block: Pill + sekundärer Text-Link daneben */
.service-section__cta {
  margin-top: var(--space-5);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-5);
}

/* Image — größer, dezenter Shadow, leichter Hover-Zoom.
   In .is-in-view bekommt das Image einen markanteren Schatten (Premium-Hint). */
.service-split__image {
  position: relative;                       /* Container für Badge-Overlay */
  border-radius: var(--radius-xl);
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background-color: var(--gray-200);
  box-shadow: var(--shadow-md);
  transition: transform var(--duration-base) var(--ease-out),
              box-shadow 0.6s ease-out;
}

.service-section.is-in-view .service-split__image {
  box-shadow: var(--shadow-xl);
}

.service-split__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform var(--duration-slow) var(--ease-out);
}

.service-split__image:hover {
  box-shadow: var(--shadow-xl);
}

.service-split__image:hover img {
  transform: scale(1.03);
}


/* ==========================================================================
   19. ACCORDION — native details/summary
   Single-Open via name-Attribut (HTML-Standard, kein JS nötig)
   ========================================================================== */
.accordion {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.accordion details {
  background-color: var(--white);
  border: 1px solid var(--gray-200);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: border-color var(--duration-fast) var(--ease-out);
}

.accordion details[open] {
  border-color: var(--blue);
}

.accordion summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  font-size: var(--fs-lg);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  cursor: pointer;
  list-style: none;
  user-select: none;
  transition: background-color var(--duration-fast) var(--ease-out);
}

.accordion summary::-webkit-details-marker,
.accordion summary::marker { display: none; }

.accordion summary:hover {
  background-color: #F7FAFF;
}

.accordion summary::after {
  content: '';
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23035fea' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  transition: transform var(--duration-base) var(--ease-out);
}

.accordion details[open] summary::after {
  transform: rotate(180deg);
}

.accordion__body {
  padding: 0 var(--space-5) var(--space-5);
  font-size: var(--fs-md);
  line-height: 1.6;
  color: var(--text-body);
}

.accordion__body p + p { margin-top: var(--space-3); }

.accordion__body ul {
  list-style: disc;
  padding-left: var(--space-5);
  margin-block: var(--space-3);
}

.accordion__body li { margin-bottom: var(--space-2); }


/* ==========================================================================
   20. BENEFIT-TILE-GRID — Minimal Marker-Style (kein Card-Container)
   Items haben einen 2px Strich links (gray-200) — beim Hover wird er
   green-bright. Greift den Marker-Akzent der Service-Section-Titles auf
   und schafft ein konsistentes "rotes Garn" durch die Seite.
   ========================================================================== */
.benefit-tile-grid {
  display: grid;
  grid-template-columns: 1fr;
  row-gap: var(--space-7);
  column-gap: var(--space-7);
}

@media (min-width: 37.5em) { .benefit-tile-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 56.25em) {
  .benefit-tile-grid--3col {
    grid-template-columns: repeat(3, 1fr);
    column-gap: var(--space-9);                /* breiter Whitespace zwischen Spalten */
    row-gap: var(--space-9);
  }
  
}

.benefit-tile {
  padding: var(--space-2) 0 var(--space-2) var(--space-5);
  background: transparent;
  border: 0;
  border-left: 2px solid var(--gray-300);
  border-radius: 0;
  box-shadow: none;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  transition: border-left-color var(--duration-base) var(--ease-out),
              transform var(--duration-base) var(--ease-out);
}

.benefit-tile:hover {
  border-left-color: var(--green-bright);
  transform: translateX(2px);
}

/* Icon: dezent, klein, dünner Stroke — im Sinne von Editorial/B2B-Premium */
.benefit-tile__icon {
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--blue);
  margin-bottom: var(--space-2);
  background: none;
  border-radius: 0;
  transition: color var(--duration-base) var(--ease-out);
}

.benefit-tile__icon svg {
  width: 100%;
  height: 100%;
  stroke: currentColor;
  stroke-width: 1.5;          /* dünner als vorher (war 1.8) */
  fill: none;
}

.benefit-tile:hover .benefit-tile__icon {
  color: var(--blue-dark);
}

.benefit-tile__title {
  color: var(--blue);
  font-size: var(--fs-lg);                 /* 20px — kompakter, lesbar */
  font-weight: var(--fw-semibold);
  line-height: 1.3;
  letter-spacing: -0.01em;
  margin: 0;
}

.benefit-tile__text {
  color: var(--text-body);
  font-size: var(--fs-base);
  line-height: 1.6;
  margin: 0;
}


/* Section-CTA — zentrierter Button-Container unter Card-Grid */
.section-cta {
  margin-top: var(--space-9);
  text-align: center;
}

/* Stat-Rotator — KPI-Karussell, eine Zahl sichtbar, rotiert automatisch.
   Aufbau: Eyebrow + Stage (Item-Wechsel) + Pagination-Dots (Fortschritt). */
.stat-rotator {
  --stat-rotator-interval: 5s;
  position: relative;
  margin-top: var(--space-7);
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

.stat-rotator__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-3);
  font-size: var(--fs-sm);
  font-weight: var(--fw-bold);
  color: var(--blue);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.stat-rotator__eyebrow::before {
  content: '';
  width: 32px;
  height: 3px;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
}

/* Stage: Container für die rotierenden Items, hält die Höhe */
.stat-rotator__stage {
  position: relative;
  min-height: clamp(14rem, 24vw, 18rem);
}

.stat-rotator__item {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  opacity: 0;
  transform: translateY(12px) scale(0.985);
  transition: opacity 0.5s var(--ease-out), transform 0.6s var(--ease-out);
  pointer-events: none;
}

.stat-rotator__item.is-active {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}

.stat-rotator__prefix {
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  line-height: 1;
  letter-spacing: -0.01em;
  margin-bottom: calc(var(--space-2) * -1);
  opacity: 0.7;
}

.stat-rotator__num {
  font-family: var(--font-family);
  font-feature-settings: 'lnum' 1, 'tnum' 1;
  font-size: clamp(4.5rem, 11vw, 8rem);
  font-weight: var(--fw-black);
  color: var(--blue);
  line-height: 0.95;
  letter-spacing: -0.04em;
  display: inline-flex;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: var(--space-3);
}

/* Größen-Modifier: kürzere Zahlen prominenter, längere zurückhaltender */
.stat-rotator__num--sm {
  font-size: clamp(3.5rem, 8.5vw, 6rem);
}

.stat-rotator__num--md {
  font-size: clamp(4.5rem, 11vw, 8rem);
}

.stat-rotator__num--xl {
  font-size: clamp(6rem, 16vw, 11.5rem);
  letter-spacing: -0.05em;
}

.stat-rotator__unit {
  font-size: clamp(1.5rem, 3.2vw, 2.5rem);
  font-weight: var(--fw-bold);
  color: var(--blue);
  letter-spacing: -0.02em;
  padding-top: 0.15em;
}

.stat-rotator__unit--xl {
  font-size: clamp(3rem, 8vw, 6rem);
  padding-top: 0.05em;
}

.stat-rotator__label {
  font-size: clamp(1.125rem, 1.6vw, 1.375rem);
  font-weight: var(--fw-semibold);
  color: var(--gray-700);
  line-height: 1.35;
  letter-spacing: -0.005em;
  max-width: 32ch;
}

/* Pagination-Dots: Pillen, aktive Pille zeigt Rotations-Fortschritt als grüne Füllung */
.stat-rotator__dots {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-2);
}

.stat-rotator__dot {
  position: relative;
  width: 28px;
  height: 5px;
  padding: 0;
  border: none;
  background-color: var(--gray-200);
  border-radius: var(--radius-full);
  cursor: pointer;
  overflow: hidden;
  transition: width 0.4s var(--ease-out), background-color 0.3s var(--ease-out);
}

.stat-rotator__dot:hover,
.stat-rotator__dot:focus-visible {
  background-color: var(--gray-300);
  outline: none;
}

.stat-rotator__dot.is-active {
  width: 88px;
  background-color: var(--gray-200);
}

.stat-rotator__dot-fill {
  display: block;
  position: absolute;
  inset: 0;
  width: 0;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
}

.stat-rotator__dot.is-active .stat-rotator__dot-fill {
  animation: stat-rotator-progress var(--stat-rotator-interval) linear forwards;
}

@keyframes stat-rotator-progress {
  from { width: 0; }
  to   { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .stat-rotator__item {
    transition: opacity 0.2s linear;
    transform: none;
  }
  .stat-rotator__item.is-active { transform: none; }
  .stat-rotator__dot.is-active .stat-rotator__dot-fill {
    animation: none;
    width: 100%;
  }
}


/* Model-Cards — hellblauer Kasten mit Titel + Text, 1/2/3 Spalten responsive */
.model-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-5);
}

@media (min-width: 37.5em) {
  .model-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 56.25em) {
  .model-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-6);
  }
}

.model-card {
  background-color: var(--blue-light);
  border-radius: var(--radius-xl);
  padding: var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  transition: transform var(--duration-base) var(--ease-out),
              box-shadow var(--duration-base) var(--ease-out);
}

.model-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

.model-card__title {
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--blue);
  margin: 0;
}

.model-card__text {
  font-size: var(--fs-md);
  line-height: 1.55;
  color: var(--blue);
  margin: 0;
}


/* Text-Link — sekundärer Inline-Link mit Pfeil (kein Button-Look) */
.text-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--blue);
  font-weight: var(--fw-semibold);
  text-decoration: none;
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
  transition: color var(--duration-fast) var(--ease-out),
              gap var(--duration-fast) var(--ease-out);
}

.text-link:hover {
  color: var(--blue-dark);
  gap: var(--space-3);
}

.text-link svg {
  width: 18px;
  height: 9px;
  flex-shrink: 0;
}

/* Section-Prose — Subhead + Absatz unterhalb eines Card-Grids */
.section-prose {
  margin-top: var(--space-9);
  max-width: 64ch;
}

.section-prose__title {
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--blue);
  margin: 0 0 var(--space-3);
}

.section-prose p {
  font-size: var(--fs-md);
  line-height: 1.6;
  color: var(--text-body);
  margin: 0 0 var(--space-3);
}

.section-prose p:last-child { margin-bottom: 0; }

/* Prose-Cards-Split — 50/50: Textspalte links + Card-Grid rechts.
   Mobile/Tablet: untereinander (Text oben, Cards unten). */
.prose-cards-split {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  align-items: start;
}

@media (min-width: 56.25em) {
  .prose-cards-split {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-10);
    align-items: center;
  }
}

.prose-cards-split__prose {
  display: flex;
  flex-direction: column;
}

.prose-cards-split__prose .service-section__title {
  margin-bottom: var(--space-4);
}

.prose-cards-split__prose .section-prose__title {
  margin-bottom: var(--space-3);
}

.prose-cards-split__prose p {
  font-size: var(--fs-md);
  line-height: 1.6;
  color: var(--text-body);
  margin: 0 0 var(--space-3);
  max-width: 56ch;
}

.prose-cards-split__prose p:last-child { margin-bottom: 0; }

.prose-cards-split__note {
  font-size: var(--fs-sm) !important;
  color: var(--gray-500) !important;
  margin-top: var(--space-3) !important;
}

/* Cards-Spalte: Card-Grid auf 2x2 fixieren — auch wenn Container schmal */
.prose-cards-split .benefit-tile-grid {
  grid-template-columns: 1fr 1fr;
  row-gap: var(--space-6);
  column-gap: var(--space-6);
}

@media (max-width: 29.99em) {
  .prose-cards-split .benefit-tile-grid {
    grid-template-columns: 1fr;
  }
}

/* CTA-Block innerhalb der Prose-Spalte (z.B. Button unter dem Lead-Text) */
.prose-cards-split__cta {
  margin-top: var(--space-7);
}

/* --reverse: Prose-Spalte rechts, Inhalt (Cards/Akkordeon) links — nur Desktop.
   Mobile bleibt: Prose oben, Inhalt unten (natürliche HTML-Reihenfolge). */
@media (min-width: 56.25em) {
  .prose-cards-split--reverse .prose-cards-split__prose { order: 2; }
  .prose-cards-split--reverse > :not(.prose-cards-split__prose) { order: 1; }
}

/* Inversionen auf dunkelblauem Hintergrund — Lesbarkeit sicherstellen */
.content-section--blue .prose-cards-split__prose p {
  color: rgba(255, 255, 255, 0.92);
}

.content-section--blue .prose-cards-split__note {
  color: rgba(255, 255, 255, 0.65) !important;
}

.content-section--blue .benefit-tile {
  border-left-color: rgba(255, 255, 255, 0.25);
}

.content-section--blue .benefit-tile:hover {
  border-left-color: var(--green-bright);
}

.content-section--blue .benefit-tile__text {
  color: rgba(255, 255, 255, 0.85);
}

/* Trenner zwischen zwei aufeinanderfolgenden blauen Sektionen */
.content-section--blue + .content-section--blue {
  border-top: 1px solid rgba(255, 255, 255, 0.18);
}


/* ==========================================================================
   KI-FEATURE — Highlight-Sektion (Vollblau) mit NEU-Badge, Standard-H2,
   50/50 Bild + Liste. Bild bekommt grünen Glow für Stop-Effekt.
   ========================================================================== */
.ki-feature {
  position: relative;
  overflow: hidden;
  padding-block: clamp(var(--space-10), 8vw, var(--space-12));
}

/* Subtiler radialer Gradient im Hintergrund — gibt Tiefe statt Flat-Blau */
.ki-feature::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 15% 30%, rgba(187, 219, 102, 0.10), transparent 45%),
    radial-gradient(circle at 85% 75%, rgba(255, 255, 255, 0.08), transparent 50%);
  pointer-events: none;
}

.ki-feature > .content-section__inner { position: relative; }

.ki-feature__eyebrow {
  margin-bottom: var(--space-4);
}

.ki-feature__badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 6px 14px;
  background-color: var(--green-bright);
  color: var(--blue);
  font-size: var(--fs-sm);
  font-weight: var(--fw-bold);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  border-radius: var(--radius-full);
  box-shadow: 0 0 0 4px rgba(187, 219, 102, 0.18);
}

.ki-feature__title {
  max-width: 28ch;
  margin-bottom: var(--space-8);
}

/* Marker-Strich am H2 bleibt grün — Auto-Inversion auf blau passt nicht */
.ki-feature .service-section__title { color: var(--white); }
.ki-feature .service-section__title::before { background-color: var(--green-bright); }

.ki-feature__split {
  align-items: center;
  gap: clamp(var(--space-8), 6vw, var(--space-11));
}

/* Bild: Glow-Ring drumherum, abgerundet, leichter Lift */
.ki-feature__image {
  position: relative;
  margin: 0;
  border-radius: var(--radius-xl);
  overflow: hidden;
  aspect-ratio: 16 / 10;
  background-color: rgba(0, 0, 0, 0.25);
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.12),
    0 20px 60px -20px rgba(0, 0, 0, 0.5),
    0 0 80px -20px rgba(187, 219, 102, 0.45);
}

.ki-feature__image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Sub-Headline "Wie funktioniert´s?" */
.ki-feature .section-prose__title {
  color: var(--white);
  margin-bottom: var(--space-4);
}

.ki-feature__list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.ki-feature__list li {
  position: relative;
  padding-left: var(--space-6);
  font-size: var(--fs-md);
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.92);
}

.ki-feature__list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 10px;
  height: 10px;
  border-radius: var(--radius-full);
  background-color: var(--green-bright);
  box-shadow: 0 0 0 3px rgba(187, 219, 102, 0.25);
}

/* Fließtext der Prose-Spalte heller (Inversion vom prose-cards-split greift schon) */
.ki-feature .prose-cards-split__prose p {
  color: rgba(255, 255, 255, 0.88);
}


/* ==========================================================================
   TEST-STEPS — 3 nummerierte Schritte (für Test-Formular-Sektion)
   Format: kreisrunder Nummer-Badge + fetter Titel + Body, dezent verbunden
   ========================================================================== */
.test-steps {
  list-style: none;
  padding: 0;
  margin: var(--space-6) 0 var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.test-steps li {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
}

/* Verbindungslinie zwischen den Numbers (außer beim letzten Step) */
.test-steps li:not(:last-child)::before {
  content: '';
  position: absolute;
  top: 36px;
  bottom: calc(var(--space-4) * -1);
  left: 17px;
  width: 2px;
  background-color: var(--gray-200);
  border-radius: var(--radius-full);
}

.test-steps__num {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background-color: var(--blue);
  color: var(--white);
  border-radius: var(--radius-full);
  font-size: var(--fs-md);
  font-weight: var(--fw-bold);
  line-height: 1;
}

.test-steps__body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-top: 6px;
}

.test-steps__body strong {
  font-size: var(--fs-md);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  line-height: 1.3;
}

.test-steps__body span {
  font-size: var(--fs-md);
  color: var(--text-body);
  line-height: 1.5;
}

/* Info-Note unterhalb der Schritte — subtile Box mit Icon */
.test-note {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-5);
  background-color: var(--blue-light);
  border-left: 3px solid var(--blue);
  border-radius: var(--radius-md);
  margin-top: var(--space-2);
}

.test-note svg {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  color: var(--blue);
  margin-top: 2px;
}

.test-note p {
  margin: 0;
  font-size: var(--fs-sm) !important;
  line-height: 1.55;
  color: var(--gray-700) !important;
  max-width: none !important;
}

/* Top-Alignment für Splits, in denen das Inhalts-Element höher ist als Prose */
@media (min-width: 56.25em) {
  .prose-cards-split--top { align-items: start; }
}

/* Test-Formular: Card-Look mit weißem Hintergrund auf der soft-Sektion */
.test-form {
  background-color: var(--white);
  padding: clamp(var(--space-6), 4vw, var(--space-8));
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-md);
}

.test-form__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding-bottom: var(--space-5);
  margin-bottom: var(--space-2);
  border-bottom: 1px solid var(--gray-200);
}

.test-form__eyebrow {
  font-size: var(--fs-sm);
  font-weight: var(--fw-bold);
  color: var(--blue);
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.test-form__trust {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-4);
}

.test-form__trust li {
  position: relative;
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  color: var(--gray-600);
  letter-spacing: 0.02em;
  padding-left: 16px;
}

.test-form__trust li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 8px;
  height: 8px;
  border-radius: var(--radius-full);
  background-color: var(--green-bright);
}

/* Submit auf Mobile: volle Breite — wirkt entschlossener */
@media (max-width: 37.49em) {
  .test-form .form-submit {
    align-self: stretch;
    justify-content: center;
  }
}


/* ==========================================================================
   TRAINING-SECTION — Telefonschulungen: Prose + Inhalts-Card mit Check-Liste
   ========================================================================== */
.training-section__lead {
  font-size: var(--fs-lg) !important;
  font-weight: var(--fw-semibold) !important;
  color: var(--blue) !important;
  line-height: 1.45 !important;
  margin-bottom: var(--space-4) !important;
}

/* Inhalts-Card auf hellblauem Brand-Tint */
.training-card {
  padding: clamp(var(--space-6), 4vw, var(--space-8));
  background-color: var(--blue-light);
  border-radius: var(--radius-xl);
}

.training-card__title {
  margin: 0 0 var(--space-6);
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  letter-spacing: -0.005em;
}

.training-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.training-list li {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
}

.training-list svg {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  color: var(--green-dark);
  margin-top: 1px;
}

.training-list li span {
  font-size: var(--fs-md);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  line-height: 1.45;
}


/* ==========================================================================
   LEISTUNGS-CARDS — 3 Bild-Cards (Sekretariat, Telefonservice, Workspaces)
   Bild oben (16:9), Titel + Text + Pfeil unten, optional Badge auf Bild
   ========================================================================== */
.leistungs-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
}
@media (min-width: 37.5em) {
  .leistungs-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 56.25em) {
  .leistungs-grid { grid-template-columns: repeat(3, 1fr); }
  /* 2-Spalten-Variante (für "Auch interessant" auf Detail-Seiten — nur 2 Cards) */
  .leistungs-grid--2col { grid-template-columns: repeat(2, 1fr); }
}

.leistung-card {
  position: relative;
  display: block;
  aspect-ratio: 4 / 5;            /* Default: 3-Spalten-Grid (Über-uns) — hochformatig */
  border-radius: var(--radius-xl);
  overflow: hidden;
  background-color: var(--gray-100);
  box-shadow: var(--shadow-md);
  text-decoration: none;
  color: var(--white);
  transition: transform var(--duration-base) var(--ease-out),
              box-shadow var(--duration-base) var(--ease-out);
}

/* 2-Spalten-Variante: querformatige Cards (auf Detail-Seiten "Auch interessant") */
.leistungs-grid--2col .leistung-card {
  aspect-ratio: 16 / 9;
}

/* 1-Spalten-Variante: voller Breiten-Banner ohne Bild (z.B. Hub-Rücklink).
   Flache, horizontale Fläche mit blauer Füllung statt hochformatiger Bild-Card. */
.leistungs-grid--1col { grid-template-columns: 1fr; }
.leistungs-grid--1col .leistung-card {
  aspect-ratio: auto;
  background-color: var(--blue-dark);   /* dunkleres Blau: Weiss-Kontrast ~7.8:1 (WCAG AA) */
}
.leistungs-grid--1col .leistung-card::after { content: none; }
.leistungs-grid--1col .leistung-card__body {
  position: static;
  padding: var(--space-7) var(--space-6);
}

.leistung-card:hover,
.leistung-card:focus-visible {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}

/* Bild als Hintergrund — füllt komplette Card */
.leistung-card__image {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.leistung-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 800ms var(--ease-out);
}

.leistung-card:hover .leistung-card__image img,
.leistung-card:focus-visible .leistung-card__image img {
  transform: scale(1.06);
}

/* Innerer Schatten/Gradient für Lesbarkeit (von unten nach oben) */
.leistung-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg,
      rgba(7, 22, 56, 0) 0%,
      rgba(7, 22, 56, 0) 35%,
      rgba(7, 22, 56, 0.55) 65%,
      rgba(7, 22, 56, 0.92) 100%);
  pointer-events: none;
  z-index: 1;
  transition: background var(--duration-base) var(--ease-out);
}

.leistung-card:hover::after,
.leistung-card:focus-visible::after {
  background:
    linear-gradient(180deg,
      rgba(7, 22, 56, 0) 0%,
      rgba(7, 22, 56, 0.1) 35%,
      rgba(7, 22, 56, 0.65) 65%,
      rgba(7, 22, 56, 0.95) 100%);
}

.leistung-card__badge {
  position: absolute;
  top: var(--space-4);
  left: var(--space-4);
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  background-color: var(--green-bright);
  color: var(--blue);
  border-radius: var(--radius-full);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  line-height: 1.2;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
}

.leistung-card__badge svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

/* Inhalt — Overlay am unteren Bereich */
.leistung-card__body {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
  padding: var(--space-6) var(--space-5) var(--space-5);
  display: flex;
  flex-direction: column;
}

.leistung-card__title {
  font-size: clamp(1.5rem, 2.2vw, 1.75rem);
  font-weight: var(--fw-semibold);
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--white);
  margin: 0 0 var(--space-3);
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.leistung-card__text {
  font-size: var(--fs-base);
  color: rgba(255, 255, 255, 0.92);
  line-height: 1.55;
  margin: 0 0 var(--space-5);
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
}

.leistung-card__cta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-base);
  font-weight: var(--fw-semibold);
  color: var(--white);
  transition: gap var(--duration-base) var(--ease-out),
              color var(--duration-base) var(--ease-out);
}

.leistung-card__cta svg {
  width: 22px;
  height: 12px;
  flex-shrink: 0;
}

.leistung-card:hover .leistung-card__cta,
.leistung-card:focus-visible .leistung-card__cta {
  gap: var(--space-3);
  color: var(--green-bright);
}


/* ==========================================================================
   23. STAT-NUMBERS — Große animierte Zahlen
   ========================================================================== */


.stat-item {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  text-align: left;
}

.stat-item__number {
  font-size: clamp(4rem, 12vw, 9rem);
  font-weight: var(--fw-black);
  line-height: 0.9;
  color: var(--blue);
  letter-spacing: -0.04em;
  font-variant-numeric: tabular-nums;
}


.content-section--blue .stat-item__number { color: var(--green-bright); }


.content-section--blue .stat-item__label { color: var(--white); }


.content-section--blue .stat-item__text { color: rgba(255,255,255,0.85); }


/* ==========================================================================
   24. TAG-PILL + BREADCRUMB
   ========================================================================== */
.tag {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-3);
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  border-radius: var(--radius-full);
  background-color: var(--blue-light);
  color: var(--blue);
  width: fit-content;
}

.tag--green-bright {
  background-color: var(--green-bright);
  color: var(--blue);
}


.breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-sm);
  color: var(--gray-500);
  margin-bottom: var(--space-5);
}

.breadcrumb a {
  color: var(--gray-600);
  text-decoration: none;
}

.breadcrumb a:hover {
  color: var(--blue);
}

.breadcrumb__sep {
  color: var(--gray-400);
}

.breadcrumb__current {
  color: var(--blue);
  font-weight: var(--fw-semibold);
}


/* ==========================================================================
   25. ARTICLE — Editorial Template (Blog-Detail)
   ========================================================================== */
.article-hero {
  padding-block: var(--space-9) var(--space-7);
  background-color: #F7FAFF;
}

/* Inner: gleiche Breite wie Header/Footer/content-section__inner */
.article-hero__inner {
  max-width: calc(var(--max-width) + 2 * var(--section-pad-x));
  margin-inline: auto;
  padding-inline: var(--section-pad-x);
}

/* Lesbare Textspalte innerhalb des breiten Inner — fluchten links mit Header */
.article-hero__inner > .breadcrumb,
.article-hero__inner > .article-hero__tag,
.article-hero__inner > .article-hero__title,
.article-hero__inner > .article-hero__excerpt,
.article-hero__inner > .article-meta-bar {
  max-width: 880px;
  margin-inline: 0;
}

.article-hero__tag {
  margin-bottom: var(--space-4);
}

/* Hero-Headline: Website-Stil mit grünem Marker-Strich,
   Größe + Dicke identisch zu section-heading (36–52px, semibold) */
.article-hero__title {
  position: relative;
  font-size: clamp(2.25rem, 4vw, 3.25rem);
  font-weight: var(--fw-semibold);
  line-height: 1.1;
  letter-spacing: -0.015em;
  color: var(--blue);
  margin-bottom: var(--space-4);
  padding-left: var(--space-5);
}

.article-hero__title::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.15em;
  bottom: 0.15em;
  width: 4px;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
}

.article-hero__excerpt {
  font-size: var(--fs-lg);
  color: var(--text-body);
  line-height: 1.6;
  margin-bottom: var(--space-6);
}

.article-meta-bar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  align-items: center;
  font-size: var(--fs-sm);
  color: var(--gray-600);
  padding-top: var(--space-4);
  border-top: 1px solid var(--gray-200);
}

.article-meta-bar__item {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}

.article-meta-bar__item svg {
  width: 16px;
  height: 16px;
  stroke: currentColor;
  stroke-width: 2;
  fill: none;
}

.article-hero__image {
  margin-top: var(--space-7);
  max-width: 1100px;
  margin-inline: 0;
  border-radius: var(--radius-xl);
  overflow: hidden;
  aspect-ratio: 16 / 9;
}

.article-hero__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.article-body {
  padding-block: var(--space-8);
  background-color: var(--white);
}

/* Container: gleiche Breite wie Header/Footer (fluchten links/rechts).
   Lesbare Textspalte (760px) wird über die Children mit max-width gesetzt. */
.article-body .container {
  max-width: calc(var(--max-width) + 2 * var(--section-pad-x));
  margin-inline: auto;
  padding-inline: var(--section-pad-x);
}

.article-body .container > * {
  max-width: 900px;
  margin-inline-start: 0;
}

/* Bilder, Pullquote und Inline-CTA dürfen breiter als die Textspalte */
.article-body .container > .article-image,
.article-body .container > figure,
.article-body .container > .article-cta,
.article-body .container > .article-pullquote {
  max-width: 1000px;
}

.article-body h2 {
  position: relative;
  font-size: clamp(1.625rem, 2.4vw, 2rem);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  line-height: 1.2;
  letter-spacing: -0.01em;
  margin-block: var(--space-7) var(--space-4);
  padding-left: var(--space-5);
}

.article-body h2::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.15em;
  bottom: 0.15em;
  width: 4px;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
}

.article-body h3 {
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  margin-block: var(--space-5) var(--space-3);
}

.article-body p {
  font-size: var(--fs-md);
  color: var(--text-body);
  line-height: 1.75;
  margin-bottom: var(--space-4);
}

.article-body ul,
.article-body ol {
  font-size: var(--fs-md);
  color: var(--text-body);
  line-height: 1.7;
  margin-block: var(--space-4);
  padding-left: var(--space-6);
}

.article-body ul { list-style: disc; }
.article-body ol { list-style: decimal; }

.article-body li { margin-bottom: var(--space-2); }

.article-body a:not(.article-cta__link):not(.btn-hero) {
  color: var(--blue);
  text-decoration: underline;
  text-decoration-color: var(--green-bright);
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  transition: text-decoration-color var(--duration-fast) var(--ease-out);
}

.article-body a:not(.article-cta__link):not(.btn-hero):hover {
  text-decoration-color: var(--blue);
}

.article-toc {
  background-color: #F7FAFF;
  border-left: 4px solid var(--green-bright);
  padding: var(--space-5) var(--space-6);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  margin-block: var(--space-6);
}

.article-toc__title {
  font-size: var(--fs-base);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: var(--space-3);
}

.article-toc ol {
  list-style: decimal;
  padding-left: var(--space-5);
  margin: 0;
  counter-reset: toc;
}

.article-toc li {
  font-size: var(--fs-md);
  margin-bottom: var(--space-2);
  color: var(--text-body);
}

.article-toc a {
  color: var(--blue);
  text-decoration: none;
}

.article-toc a:hover {
  text-decoration: underline;
}


.article-cta {
  margin-block: var(--space-7);
  padding: var(--space-7);
  background-color: var(--blue-light);
  border-radius: var(--radius-xl);
  text-align: left;
}

.article-cta__title {
  color: var(--blue);
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  margin-bottom: var(--space-3);
}

.article-cta__text {
  color: var(--text-body);
  font-size: var(--fs-md);
  line-height: 1.6;
  margin-bottom: var(--space-5);
}


/* ==========================================================================
   26. FAQ-ACCORDION — Premium-Variante des Accordions (Single-Open via name)
   Überschreibt die Default-Accordion-Styles innerhalb von .faq-list:
   - Soft-Shadow statt harter Border
   - Plus → X-Indikator im Kreis (animiert)
   - Grüner Marker-Strich links bei geöffnetem Item (Marker-Konsistenz)
   - Großzügigerer Padding, klare Typo-Hierarchie
   ========================================================================== */
.faq-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  max-width: 920px;
  margin-inline: 0;       /* linksbündig — fluchtet mit der service-section__title H2 */
}

/* Item-Container ----------------------------------------------------------- */
.faq-list details {
  background-color: var(--white);
  border: none;
  border-left: 3px solid transparent;
  border-radius: var(--radius-xl);
  box-shadow:
    0 1px 2px rgba(15, 35, 80, 0.04),
    0 2px 8px rgba(15, 35, 80, 0.05);
  transition:
    border-color var(--duration-base) var(--ease-out),
    box-shadow var(--duration-base) var(--ease-out),
    transform var(--duration-base) var(--ease-out);
  overflow: hidden;
}

.faq-list details:hover {
  transform: translateY(-1px);
  box-shadow:
    0 2px 4px rgba(15, 35, 80, 0.05),
    0 8px 24px rgba(3, 95, 234, 0.08);
}

.faq-list details[open] {
  border-left-color: var(--green-bright);
  box-shadow:
    0 4px 8px rgba(15, 35, 80, 0.04),
    0 12px 32px rgba(3, 95, 234, 0.10);
}

/* Summary ------------------------------------------------------------------ */
.faq-list summary {
  padding: var(--space-5) var(--space-6);
  font-size: var(--fs-lg);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  letter-spacing: -0.005em;
  line-height: 1.35;
  gap: var(--space-5);
}

.faq-list summary:hover {
  background-color: transparent;
}

/* Premium-Indikator: Plus im Kreis → X bei open ---------------------------- */
.faq-list summary::after {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background-color: var(--blue-light);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23035fea' stroke-width='2.5' stroke-linecap='round'><line x1='12' y1='5' x2='12' y2='19'/><line x1='5' y1='12' x2='19' y2='12'/></svg>");
  background-size: 16px 16px;
  background-position: center;
  background-repeat: no-repeat;
  transition:
    transform var(--duration-base) var(--ease-out),
    background-color var(--duration-base) var(--ease-out);
}

.faq-list details[open] summary::after {
  transform: rotate(45deg);
  background-color: var(--green-bright);
}

/* Body --------------------------------------------------------------------- */
.faq-list .accordion__body {
  padding: 0 var(--space-6) var(--space-6);
  font-size: var(--fs-md);
  line-height: 1.65;
  color: var(--text-body);
  max-width: 68ch;
}

@media (min-width: 37.5em) {
  .faq-list summary { padding: var(--space-6) var(--space-7); }
  .faq-list .accordion__body { padding: 0 var(--space-7) var(--space-7); }
}


/* ==========================================================================
   27. FORM — Kontakt
   ========================================================================== */
.form {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.form-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

@media (min-width: 37.5em) {
  .form-row--2col { grid-template-columns: 1fr 1fr; }
}

.form-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.form-field label {
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  color: var(--blue);
}

.form-field input,
.form-field textarea,
.form-field select {
  padding: var(--space-3) var(--space-4);
  font-family: var(--font-family);
  font-size: var(--fs-md);
  color: var(--text-body);
  background-color: var(--white);
  border: 1px solid var(--gray-300);
  border-radius: var(--radius-md);
  transition: border-color var(--duration-fast) var(--ease-out),
              box-shadow var(--duration-fast) var(--ease-out);
}

.form-field input:focus,
.form-field textarea:focus,
.form-field select:focus {
  outline: none;
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(3,95,234,0.15);
}

.form-field textarea {
  min-height: 140px;
  resize: vertical;
}

.form-checkbox {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  font-size: var(--fs-sm);
  color: var(--text-body);
  line-height: 1.5;
  cursor: pointer;
}

.form-checkbox input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--blue);
  flex-shrink: 0;
  cursor: pointer;
}

.form-checkbox a {
  color: var(--blue);
  text-decoration: underline;
}

.form-submit {
  align-self: flex-start;
  margin-top: var(--space-3);
}

.form-msg {
  padding: var(--space-4);
  border-radius: var(--radius-md);
  font-size: var(--fs-md);
  margin-top: var(--space-3);
}

.form-msg--success {
  background-color: var(--green-light);
  color: #4d6b00;
  border: 1px solid var(--green);
}

.form-msg--error {
  background-color: #fff0f0;
  color: #b80020;
  border: 1px solid #f5c6cb;
}


/* ==========================================================================
   28. BLOG-OVERVIEW — Featured Article + Card-Grid
   ========================================================================== */


.featured-article__meta .news-card__category {
  margin-right: var(--space-1);
}


/* ==========================================================================
   30. PAGE-WRAPPER für Legal-Pages (Impressum / Datenschutz)
   ========================================================================== */
/* --- Schlanker, bildloser Brand-Kopf (dezenter Hintergrund, H1 mit Marker-Strich) --- */
.legal-hero {
  background-color: #F7FAFF;                    /* identisch zu .content-section--soft */
  padding-block: var(--space-7);
}

.legal-hero__inner {
  max-width: calc(var(--max-width) + 2 * var(--section-pad-x));
  margin-inline: auto;
  padding-inline: var(--section-pad-x);         /* bündig mit Header & Footer */
}

.legal-hero__title {
  position: relative;
  font-size: clamp(2.25rem, 4vw, 3.25rem);      /* globaler H1/H2-Standard */
  font-weight: var(--fw-semibold);
  line-height: 1.1;
  letter-spacing: -0.015em;
  color: var(--blue);
  margin: 0;
  padding-left: var(--space-5);
}

.legal-hero__title::before {                    /* grüner Marker-Strich wie Section-Headlines */
  content: '';
  position: absolute;
  left: 0;
  top: 0.15em;
  bottom: 0.15em;
  width: 4px;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
}

.legal-hero__sub {
  margin: var(--space-3) 0 0;
  padding-left: var(--space-5);                 /* bündig unter dem Titel-Text */
  color: var(--text-body);
  font-size: var(--fs-md);
  line-height: 1.6;
}

/* --- Content-Body: responsiver Außenrand (bündig) + 880px Lesespalte --- */
.legal-page__body {
  padding-block: var(--space-8);
  padding-inline: var(--section-pad-x);
}

.legal-page__inner {
  max-width: 880px;
  margin-inline: auto;
}

.legal-page__inner h2 {
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  margin-block: var(--space-7) var(--space-3);
}

.legal-page__inner h3 {
  font-size: var(--fs-lg);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  margin-block: var(--space-5) var(--space-2);
}

.legal-page__inner p,
.legal-page__inner li {
  font-size: var(--fs-md);
  color: var(--text-body);
  line-height: 1.7;
  margin-bottom: var(--space-3);
}

.legal-page__inner ul,
.legal-page__inner ol {
  padding-left: var(--space-6);
  margin-block: var(--space-3);
}

.legal-page__inner ul { list-style: disc; }
.legal-page__inner ol { list-style: decimal; }

.legal-page__inner a {
  color: var(--blue);
  text-decoration: underline;
}

.legal-page__inner strong { color: var(--blue); font-weight: var(--fw-semibold); }

/* Desktop: mehr vertikale Atmung (content-section-Rhythmus) */
@media (min-width: 80em) {
  .legal-hero { padding-block: var(--space-9); }
  .legal-page__body { padding-block: var(--space-10); }
}


/* ==========================================================================
   31. KARRIERE — Stellen-Layout (2 Spalten: Jobs links, Anforderungen rechts)
   ========================================================================== */
.career-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
}

@media (min-width: 56.25em) {
  .career-layout {
    grid-template-columns: 1.15fr 1fr;
    gap: var(--space-9);
    align-items: start;
  }
}

/* Linke Spalte — Job-Cards (clean white-cards mit dezenter Border + Lift) */
.career-jobs {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

.job-card {
  position: relative;
  padding: var(--space-7);
  background-color: var(--white);
  border: 1px solid var(--blue-light);
  border-radius: var(--radius-xl);
  box-shadow: 0 1px 2px rgba(3, 95, 234, 0.04);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  transition: border-color var(--duration-base) var(--ease-out),
              transform var(--duration-base) var(--ease-out),
              box-shadow var(--duration-base) var(--ease-out);
}

.job-card:hover {
  border-color: var(--blue);
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(3, 95, 234, 0.08);
}

.job-card__title {
  color: var(--blue);
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  font-weight: var(--fw-semibold);
  line-height: 1.25;
  letter-spacing: -0.01em;
  margin: 0;
}

.job-card__list-label {
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--blue);
  margin: var(--space-1) 0 calc(var(--space-2) * -1);
}

.job-card__list {
  list-style: none;
  margin: var(--space-2) 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  font-size: var(--fs-base);
  color: var(--text-body);
  line-height: 1.5;
}

.job-card__list li {
  position: relative;
  padding-left: var(--space-5);
}

.job-card__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 8px;
  height: 2px;
  background-color: var(--green-bright);
  border-radius: 2px;
}

/* Rechte Spalte — Anforderungen als zusammenhängende Premium-Box */
.career-requirements {
  padding: var(--space-7);
  background-color: var(--blue-light);
  border-radius: var(--radius-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-7);
}

@media (min-width: 56.25em) {
  .career-requirements { position: sticky; top: var(--space-7); }
}

.career-requirements__group + .career-requirements__group {
  padding-top: var(--space-7);
  border-top: 1px solid rgba(3, 95, 234, 0.15);
}

.career-requirements__group h3 {
  display: flex;
  align-items: baseline;
  gap: var(--space-3);
  color: var(--blue);
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  font-weight: var(--fw-semibold);
  line-height: 1.2;
  letter-spacing: -0.01em;
  margin: 0 0 var(--space-4);
}

.career-requirements__group h3::before {
  content: "";
  flex: 0 0 auto;
  width: 24px;
  height: 3px;
  background-color: var(--green-bright);
  border-radius: 2px;
  align-self: center;
}

.career-requirements__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  font-size: var(--fs-base);
  color: var(--text-body);
  line-height: 1.5;
}

.career-requirements__list li {
  position: relative;
  padding-left: var(--space-5);
}

.career-requirements__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 8px;
  height: 2px;
  background-color: var(--blue);
  border-radius: 2px;
}

/* --------------------------------------------------------------------------
   Karriere — Was wir bieten (Perks-Grid mit Icons)
   -------------------------------------------------------------------------- */
.perks-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

@media (min-width: 37.5em) {
  .perks-grid { grid-template-columns: repeat(2, 1fr); gap: var(--space-4) var(--space-5); }
}

@media (min-width: 56.25em) {
  .perks-grid { grid-template-columns: repeat(3, 1fr); gap: var(--space-5); }
}

@media (min-width: 75em) {
  .perks-grid { grid-template-columns: repeat(4, 1fr); }
}

.perk-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  padding: var(--space-5);
  background-color: var(--white);
  border: 1px solid var(--blue-light);
  border-radius: var(--radius-lg);
  transition: border-color var(--duration-base) var(--ease-out),
              transform var(--duration-base) var(--ease-out),
              box-shadow var(--duration-base) var(--ease-out);
}

.perk-item:hover {
  border-color: var(--blue);
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(3, 95, 234, 0.06);
}

.perk-item__icon {
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background-color: var(--blue-light);
  border-radius: var(--radius-md);
  color: var(--blue);
  transition: background-color var(--duration-base) var(--ease-out),
              color var(--duration-base) var(--ease-out);
}

.perk-item:hover .perk-item__icon {
  background-color: var(--blue);
  color: var(--white);
}

.perk-item__icon svg {
  width: 20px;
  height: 20px;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
  fill: none;
}

.perk-item__text {
  margin: 0;
  font-size: var(--fs-base);
  color: var(--text-body);
  line-height: 1.45;
  align-self: center;
}

/* --------------------------------------------------------------------------
   Karriere — Closing CTA (einspaltig, linksbündig)
   -------------------------------------------------------------------------- */
.career-cta {
  display: flex;
  flex-direction: column;
}

.career-cta__content {
  max-width: 60ch;
}

/* H2 in unserem Standard-Stil — Margin im CTA-Layout enger */
.career-cta__content .section-heading {
  margin-bottom: var(--space-5);
}

.career-cta__text {
  color: rgba(255, 255, 255, 0.92);
  font-size: var(--fs-md);
  line-height: 1.65;
  margin: 0 0 var(--space-7);
}

.career-cta__btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-6);
}

.career-cta__btn svg {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
}


/* ==========================================================================
   32. CTA-SECTION — Großer Closing-CTA
   ========================================================================== */


.cta-section .hero-actions {
  justify-content: center;
}


/* ==========================================================================
   33. UTILITY — Container für volle Breite mit Padding
   ========================================================================== */
/* .container--padded: max-width + padding-inline werden zentral oben definiert
   (siehe Block "Inhalt-Container" — beim Header-Bereich) */


/* ==========================================================================
   34. ARTICLE — Rich Editorial Template (Akademie-Style adaptiert)
   Zusatz-Komponenten: layout, summary, stats, infobox, takeaway,
   soft-cta, faq, sources, sidebar, related-section
   ========================================================================== */


/* Desktop: Body nimmt verbleibenden Platz (1fr), Sidebar (320px) flucht rechts mit Header-/Footer-Rand */


.article-layout .article-body {
  padding-block: 0;
}
.article-layout .article-body .container {
  max-width: none;
  margin: 0;
  padding-inline: 0;
}

/* Inline-TOC im Body: nur Mobile/Tablet sichtbar — auf Desktop übernimmt die Sticky-Sidebar */
@media (min-width: 64em) {
  .article-layout .article-body .article-toc {
    display: none;
  }
}


/* CTA-Button im soft-cta */
.article-soft-cta .article-cta__btn,
.article-soft-cta .btn-hero {
  background-color: var(--green-bright);
  color: var(--blue);
  border-color: var(--green-bright);
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}

.article-soft-cta .article-cta__btn:hover,
.article-soft-cta .btn-hero:hover {
  background-color: var(--green);
  border-color: var(--green);
  color: var(--blue);
}

.article-soft-cta .article-cta__btn svg,
.article-soft-cta .btn-hero svg {
  width: 18px;
  height: 18px;
}

/* --- FAQ — Accordion mit JS-Toggle --- */
.article-faq {
  margin-block: var(--space-7) var(--space-6);
}


.article-faq__item {
  border-bottom: 1px solid var(--gray-200);
  transition: border-color var(--duration-fast) var(--ease-out);
}

.article-faq__item:first-child {
  border-top: 1px solid var(--gray-200);
}

.article-faq__item.is-open {
  border-bottom-color: var(--blue);
}

.article-faq__question {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  width: 100%;
  padding: var(--space-4) 0;
  font-family: var(--font-family);
  font-size: var(--fs-md);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  background: none;
  border: none;
  text-align: left;
  cursor: pointer;
  transition: color var(--duration-fast) var(--ease-out);
}

.article-faq__question:hover {
  color: var(--blue-dark);
}

.article-faq__question:focus-visible {
  outline: 3px solid var(--blue);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}


.article-faq__item.is-open .article-faq__icon {
  transform: rotate(180deg);
  background-color: var(--blue);
  color: var(--white);
}


.article-faq__item.is-open .article-faq__answer {
  max-height: 1000px;
  padding-bottom: var(--space-5);
}


/* Sidebar-TOC */
.sidebar-toc ol {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
  counter-reset: sidebar-toc;
}

.sidebar-toc li {
  counter-increment: sidebar-toc;
}

.sidebar-toc a {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  font-size: var(--fs-sm);
  font-weight: var(--fw-regular);
  color: var(--gray-600);
  border-radius: var(--radius-md);
  text-decoration: none;
  transition: all var(--duration-fast) var(--ease-out);
  border-left: 2px solid transparent;
}

.sidebar-toc a::before {
  content: counter(sidebar-toc, decimal-leading-zero);
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  color: var(--gray-400);
  transition: color var(--duration-fast) var(--ease-out);
}

.sidebar-toc a:hover {
  background-color: var(--blue-light);
  color: var(--blue);
}

.sidebar-toc a.is-active {
  background-color: var(--blue-light);
  color: var(--blue);
  font-weight: var(--fw-semibold);
  border-left-color: var(--green-bright);
}

.sidebar-toc a.is-active::before {
  color: var(--blue);
}


/* --- RELATED-SECTION (3 verwandte Artikel am Ende) --- */
.related-section {
  background-color: var(--gray-50);
  padding-block: var(--space-9);
}

.related-section__inner {
  max-width: calc(var(--max-width) + 2 * var(--section-pad-x));
  margin-inline: auto;
  padding-inline: var(--section-pad-x);
}

.related-section__title {
  position: relative;
  font-size: clamp(2.25rem, 4vw, 3.25rem);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin-bottom: var(--space-6);
  padding-left: var(--space-5);
}

.related-section__title::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.15em;
  bottom: 0.15em;
  width: 4px;
  background-color: var(--green-bright);
  border-radius: var(--radius-full);
}

.related-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-5);
}

@media (min-width: 37.5em) { .related-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 56.25em) { .related-grid { grid-template-columns: repeat(3, 1fr); } }

.related-card {
  display: flex;
  flex-direction: column;
  background-color: var(--white);
  border-radius: var(--radius-lg);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  box-shadow: var(--shadow-sm);
  transition: transform var(--duration-base) var(--ease-out),
              box-shadow var(--duration-base) var(--ease-out);
}

.related-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
  color: inherit;
}

.related-card__image {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background-color: var(--gray-200);
}

.related-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--duration-slow) var(--ease-out);
}

.related-card:hover .related-card__image img {
  transform: scale(1.04);
}

.related-card__content {
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  flex: 1;
}

.related-card__category {
  display: inline-block;
  width: fit-content;
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--blue);
  background-color: var(--blue-light);
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-full);
}

.related-card__title {
  font-size: var(--fs-lg);
  font-weight: var(--fw-semibold);
  color: var(--blue);
  line-height: 1.3;
  margin: 0;
}

.related-card__teaser {
  font-size: var(--fs-sm);
  line-height: 1.5;
  color: var(--text-body);
  margin: 0;
  flex: 1;
}

.related-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  font-size: var(--fs-xs);
  color: var(--gray-500);
  margin-top: var(--space-2);
}

.related-card__meta-item {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}

.related-card__meta-item svg {
  width: 12px;
  height: 12px;
  stroke: currentColor;
  fill: none;
}


/* ==========================================================================
   34b. PREMIUM GLAS-HEADER (nur Startseite — body.is-home)
   Topbar wurde entfernt — Sprach-Switch jetzt im Header (.header-lang).
   Site-Header schwebt direkt mit Glas-Effekt (Blur + leicht milchig weiß)
   über dem Hero-Bild. Logo + Nav bleiben farbig.
   Aktiv ab 768px — Mobile (<768) bleibt unverändert.
   ========================================================================== */
@media (min-width: 48em) {

  body.is-home .site-header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    background-color: var(--white);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border-bottom: 1px solid var(--gray-100);
    box-shadow: var(--shadow-sm);
  }

  body.is-home .site-header.is-scrolled {
    box-shadow: var(--shadow-md);
  }

  /* Logo immer farbig (Dark) */
  body.is-home .site-logo__img--light { opacity: 0; }

  /* Hero rückt nach oben — Header überlagert. Padding-Top kompensiert die
     Header-Höhe, damit der Bildausschnitt visuell ausgewogen bleibt. */
  body.is-home .hero {
    padding-top: calc(var(--header-height) + var(--space-4));
  }
}

/* Sprach-Switch im Header — kompakt, dezent, rechts neben der Nav.
   Auf Mobile (<1400px) wandert er per margin-left: auto nach rechts vor den Burger. */
.header-lang {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  flex-shrink: 0;
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  margin-left: auto;            /* Mobile: rechts vor Burger */
  margin-right: var(--space-2);
}

.header-lang a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  min-height: 32px;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  color: var(--gray-600);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-out);
}

.header-lang a.active {
  color: var(--blue);
}

.header-lang a:hover {
  color: var(--blue-dark);
}

.header-lang .separator {
  color: var(--gray-300);
  user-select: none;
}

/* Mobile (<768px): Sprach-Switch ausblenden — Burger nimmt den rechten Rand */
@media (max-width: 47.99em) {
  .header-lang { display: none; }
}

/* Desktop (>=1400): .main-nav nimmt margin-left: auto → Sprach-Switch sitzt
   direkt rechts daneben mit kleinem Gap. */
@media (min-width: 87.5em) {
  .header-lang {
    margin-left: var(--space-5);
    margin-right: 0;
  }
}

/* ==========================================================================
   35. HERO-MARQUEE — dünner durchlaufender Schriftzug (z.B. unter Page-Hero)
   ========================================================================== */
.hero-marquee {
  background: var(--green-bright);
  color: var(--blue);
  padding-block: var(--space-3);
  overflow: hidden;
  font-weight: var(--fw-semibold);
  font-size: var(--fs-md);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.hero-marquee__track {
  display: flex;
  width: max-content;
  animation: hero-marquee-scroll 40s linear infinite;
}

.hero-marquee__group {
  display: flex;
  align-items: center;
  gap: var(--space-7);
  padding-inline-end: var(--space-7);
  flex-shrink: 0;
}

.hero-marquee__sep {
  flex-shrink: 0;
  font-weight: var(--fw-bold);
  letter-spacing: 0.08em;
}

@keyframes hero-marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
  .hero-marquee__track { animation: none; }
}


/* ==========================================================================
   BÜRORAUM-SLIDER — Cross-Fade Auto-Slider für „Feste Büroräume"-Sektion
   Liegt im service-split__image-Container · Bilder absolut gestackt · 1.2s fade
   Spezifität bewusst hoch (service-split__image img überschreibt sonst Opacity)
   ========================================================================== */
.service-split__image.bueroraum-slider {
  position: relative;
  aspect-ratio: 16 / 9;                 /* überschreibt service-split__image 4/3 */
}

.service-split__image.bueroraum-slider .bueroraum-slider__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 1.2s ease-in-out;
  transform: none;                       /* Hover-Scale aus service-split__image neutralisieren */
}

.service-split__image.bueroraum-slider .bueroraum-slider__img.is-active {
  opacity: 1;
}

.service-split__image.bueroraum-slider:hover .bueroraum-slider__img {
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .service-split__image.bueroraum-slider .bueroraum-slider__img { transition: none; }
}

/* Slider-Dots — dezent unten zentriert, sichtbares Slider-Signal */
.bueroraum-slider__dots {
  position: absolute;
  left: 50%;
  bottom: var(--space-4);
  transform: translateX(-50%);
  display: flex;
  gap: var(--space-2);
  z-index: 2;
  padding: 6px 10px;
  background-color: rgba(0, 0, 0, 0.25);
  backdrop-filter: blur(6px);
  border-radius: var(--radius-full);
}

.bueroraum-slider__dot {
  width: 8px;
  height: 8px;
  padding: 0;
  border: 0;
  border-radius: var(--radius-full);
  background-color: rgba(255, 255, 255, 0.55);
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-out),
              transform var(--duration-fast) var(--ease-out);
}

.bueroraum-slider__dot:hover {
  background-color: rgba(255, 255, 255, 0.85);
}

.bueroraum-slider__dot.is-active {
  background-color: var(--green-bright);
  transform: scale(1.2);
}

.bueroraum-slider__dot:focus-visible {
  outline: 2px solid var(--white);
  outline-offset: 2px;
}


/* Lead-Absatz unter dem Split — wider, blau, etwas größer als Body */
.bueroraum-lead {
  margin-top: var(--space-9);
  max-width: 60rem;
  color: var(--blue);
  font-size: var(--fs-md);             /* 18px */
  line-height: 1.6;
}


/* ==========================================================================
   COMPARE-TABLE — Vergleichs-Tabelle für Workspace-Sektion „Flexible Räume"
   Desktop: echte Tabelle (Kriterium-Spalte + 3 Produkt-Spalten)
   Mobil:   stack je Kriterium, Produktname als Mini-Label vor jedem Wert
   ========================================================================== */
.compare-table-wrap {
  background-color: var(--white);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-md);
  overflow: hidden;
}

.compare-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--fs-base);
}

.compare-table thead th {
  background-color: var(--blue-light);
  padding: var(--space-5);
  text-align: left;
  font-weight: var(--fw-semibold);
  color: var(--blue);
  font-size: var(--fs-md);              /* 18px */
  border-bottom: 1px solid var(--gray-200);
}

.compare-table thead th:first-child {
  background-color: var(--white);
}

.compare-table tbody th {
  padding: var(--space-5);
  text-align: left;
  font-weight: var(--fw-semibold);
  color: var(--blue);
  font-size: var(--fs-sm);              /* 14px, uppercase */
  letter-spacing: 0.06em;
  text-transform: uppercase;
  vertical-align: top;
  width: 22%;
}

.compare-table tbody td {
  padding: var(--space-5);
  color: var(--text-body);
  line-height: 1.5;
  vertical-align: top;
  border-left: 1px solid var(--gray-100);
}

.compare-table tbody tr + tr {
  border-top: 1px solid var(--gray-100);
}

/* dezenter Zebra-Stripe für bessere Lesbarkeit */
.compare-table tbody tr:nth-child(even) {
  background-color: #FAFCFF;
}

/* CTA-Reihe — etwas mehr Atmung, Button linksbündig */
.compare-table__row--cta td {
  padding: var(--space-6) var(--space-5);
}

/* Responsive: stack pro Kriterium auf Mobil/Tablet */
@media (max-width: 47.99em) {
  .compare-table thead { display: none; }

  .compare-table,
  .compare-table tbody,
  .compare-table tr,
  .compare-table tbody th,
  .compare-table tbody td {
    display: block;
    width: 100%;
  }

  .compare-table tbody tr {
    border-top: 1px solid var(--gray-200);
  }
  .compare-table tbody tr:first-child {
    border-top: 0;
  }
  .compare-table tbody tr:nth-child(even) {
    background-color: transparent;
  }

  .compare-table tbody th {
    width: 100%;
    background-color: var(--blue-light);
    padding: var(--space-3) var(--space-5);
  }

  .compare-table tbody td {
    border-left: 0;
    padding: var(--space-4) var(--space-5);
  }

  .compare-table tbody td + td {
    border-top: 1px solid var(--gray-100);
  }

  /* Produkt-Label vor jedem Wert (kommt aus data-label) */
  .compare-table tbody td::before {
    content: attr(data-label);
    display: block;
    font-weight: var(--fw-semibold);
    color: var(--blue);
    font-size: var(--fs-sm);
    letter-spacing: 0.04em;
    margin-bottom: var(--space-1);
  }

  /* CTA-Zelle braucht kein Label */
  .compare-table__row--cta td::before {
    content: '';
    display: none;
  }
}


/* ==========================================================================
   35. KONTAKT — Split (Form + Standorte) im o&p-Stil (Marker-Strich-Pattern)
   ========================================================================== */
.kontakt-intro {
  margin-bottom: var(--space-8);
  max-width: 720px;
}

.kontakt-intro p {
  font-size: var(--fs-md);
  line-height: 1.6;
  color: var(--text-body);
  margin: 0;
  padding-left: var(--space-5); /* fluchtet mit Headline (nach Marker-Strich) */
}

/* Auf blauer Sektion: Lead + Headline-Schriftfarben anpassen ------------- */
.content-section--blue .kontakt-intro p { color: rgba(255, 255, 255, 0.9); }
.content-section--blue .service-section__title { color: var(--white); }


/* Auf blauer Sektion: Standort-Cards an Dark-Schema anpassen (wie Footer) */
.content-section--blue .contact-card__city { color: var(--white); }
.content-section--blue .contact-card__row { color: rgba(255, 255, 255, 0.85); }
.content-section--blue .contact-card__row svg { color: rgba(255, 255, 255, 0.55); }
.content-section--blue .contact-card__row a { color: var(--white); }
.content-section--blue .contact-card__row a:hover { color: var(--green-bright); }

/* Form-Card steht auf blauem BG — Links innerhalb der Card bleiben blau (Kontrast) */
.content-section--blue .kontakt-split__form a:not(.btn-hero):not(.btn) {
  color: var(--blue);
}


/* ==========================================================================
   35b. MOBILE-FEINSCHLIFF (≤ 600px)
   Padding-Korrekturen für engere Viewports: Card-Innenabstände und
   Section-Block-Padding zusammenziehen, damit Text nicht klebt und der
   Scroll-Weg auf Mobile nicht aufgeblasen wirkt.
   ========================================================================== */
@media (max-width: 37.49em) {
  /* Standard-Sections atmen weniger — 80px → 56px vertikal */
  .content-section {
    padding-block: var(--space-8);
  }

  /* Principle-Layout: Heading-Block näher am Grid */
  .principle-layout {
    gap: var(--space-6);
  }

  /* Principle-Number: dominiert sonst die Card auf 360–480px */
  .principle-card__number {
    font-size: clamp(2.75rem, 12vw, 3.5rem);
    margin-bottom: var(--space-3);
  }

  /* Team-Bio-Card: 40px → 24px Seiten-Padding (Bio-Text bekommt Luft) */
  .team-bio-card__body {
    padding: var(--space-5) var(--space-4) var(--space-4);
  }
  .team-bio-card__role {
    margin-bottom: var(--space-5);
  }

  /* Benefit-Tile: linker Indent 40px → 20px, Text klebt nicht mehr am Rand */
  .benefit-tile {
    padding-left: var(--space-3);
  }

  /* Leistungs-Card: Portrait 4/5 → 4/3, kürzerer Scroll-Stack auf Mobile */
  .leistung-card {
    aspect-ratio: 4 / 3;
  }
}

/* Sehr enge Viewports (≤ 380px): Cards noch eine Stufe schlanker */
@media (max-width: 23.74em) {
  .team-bio-card__body {
    padding: var(--space-4) var(--space-3) var(--space-3);
  }
  .benefit-tile {
    padding-left: var(--space-2);
  }
}


/* ==========================================================================
   36. FORM-STATUS (Danke-/Fehlermeldung nach Absenden)
   ========================================================================== */
.form-status {
  margin-bottom: var(--space-5);
  padding: var(--space-4) var(--space-5);
  border-radius: var(--radius-lg);
  font-weight: var(--fw-semibold);
  line-height: var(--lh-base);
}

.form-status--success {
  background-color: var(--green-light);
  border: 1px solid var(--green-dark);
  color: var(--gray-900);
}

.form-status--error {
  background-color: var(--red-light);
  border: 1px solid var(--red);
  color: var(--gray-900);
}


/* ==========================================================================
   37. PRINT
   ========================================================================== */
@media print {
  .site-header, .topbar, .site-footer, .sticky-bar,
  .article-sidebar, .article-soft-cta, .related-section { display: none; }
  body { color: #000; }
  a { color: #000; text-decoration: underline; }

}


/* ==========================================================================
   38. CONSENT (Cookie-Banner + Einstellungen-Dialog · GA4 Opt-in)
   z-index liegt über Site-Header (z-sticky) und Sticky-Bar, damit das Banner
   und der Dialog immer bedienbar sind. Texte/Logik: js/main.js.
   ========================================================================== */

/* Nichts im Print, nichts wenn JS das Banner versteckt lässt */
@media print {
  .consent-banner, .consent-dialog, .consent-overlay { display: none !important; }
}

/* ---- Ebene 1: Banner (unten fixiert) ---- */
.consent-banner {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: var(--z-toast, 500);
  background-color: var(--white, #fff);
  border-top: 3px solid var(--blue, #035fea);
  box-shadow: var(--shadow-xl, 0 16px 48px rgba(0, 0, 0, 0.16));
  padding: var(--space-5, 1.5rem) var(--space-4, 1rem);
}

/* hidden-Attribut respektieren (Initial-/Geschlossen-Zustand) */
.consent-banner[hidden],
.consent-dialog[hidden],
.consent-overlay[hidden] { display: none; }

/* Einfahr-Animation */
.consent-banner:not([hidden]) {
  animation: consent-slide-up var(--duration-slow, 400ms) var(--ease-out, ease) both;
}

@keyframes consent-slide-up {
  from { transform: translateY(100%); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}

.consent-banner__inner {
  max-width: var(--max-width, 1280px);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-4, 1rem);
}

.consent-banner__title {
  margin: 0 0 var(--space-1, 0.25rem);
  font-size: var(--fs-md, 1.125rem);
  font-weight: var(--fw-bold, 700);
  color: var(--blue, #035fea);
  line-height: var(--lh-tight, 1.2);
}

.consent-banner__text {
  margin: 0;
  font-size: var(--fs-sm, 0.875rem);
  line-height: var(--lh-base, 1.6);
  color: var(--text-body, #707070);
}

.consent-banner__legal {
  margin: var(--space-2, 0.5rem) 0 0;
  font-size: var(--fs-sm, 0.875rem);
}

.consent-link {
  color: var(--blue, #035fea);
  text-decoration: underline;
  font-weight: var(--fw-semibold, 600);
}

.consent-link:hover { color: var(--blue-dark, #024bb8); }

.consent-banner__actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-3, 0.75rem);
}

/* ---- Buttons (gleichwertig, kein Dark-Pattern) ---- */
.consent-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: var(--space-3, 0.75rem) var(--space-5, 1.5rem);
  border-radius: var(--radius-full, 9999px);
  border: 2px solid transparent;
  font-family: var(--font-family, sans-serif);
  font-size: var(--fs-base, 1rem);
  font-weight: var(--fw-semibold, 600);
  line-height: 1.2;
  cursor: pointer;
  transition: background-color var(--duration-fast, 150ms) var(--ease-out, ease),
              border-color var(--duration-fast, 150ms) var(--ease-out, ease),
              color var(--duration-fast, 150ms) var(--ease-out, ease),
              transform var(--duration-fast, 150ms) var(--ease-out, ease);
}

.consent-btn:focus-visible {
  outline: 3px solid var(--blue, #035fea);
  outline-offset: 2px;
}

/* "Alle akzeptieren" und "Nur notwendige" gleich groß/gewichtig */
.consent-btn--primary {
  background-color: var(--blue, #035fea);
  border-color: var(--blue, #035fea);
  color: var(--white, #fff);
}

.consent-btn--primary:hover {
  background-color: var(--blue-dark, #024bb8);
  border-color: var(--blue-dark, #024bb8);
  transform: translateY(-1px);
}

.consent-btn--secondary {
  background-color: var(--white, #fff);
  border-color: var(--blue, #035fea);
  color: var(--blue, #035fea);
}

.consent-btn--secondary:hover {
  background-color: var(--blue-light, #e8f0fd);
  transform: translateY(-1px);
}

/* "Einstellungen" dezent (textlich, kein Voll-Button) */
.consent-btn--ghost {
  background-color: transparent;
  border-color: transparent;
  color: var(--gray-700, #616161);
  text-decoration: underline;
  font-weight: var(--fw-regular, 400);
}

.consent-btn--ghost:hover { color: var(--blue, #035fea); }

/* ---- Ebene 2: Overlay + Dialog (zentriert) ---- */
.consent-overlay {
  position: fixed;
  inset: 0;
  z-index: calc(var(--z-toast, 500) + 1);
  background-color: rgba(0, 0, 0, 0.5);
  animation: consent-fade-in var(--duration-base, 250ms) var(--ease-out, ease) both;
}

@keyframes consent-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.consent-dialog {
  position: fixed;
  inset: 0;
  z-index: calc(var(--z-toast, 500) + 2);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-4, 1rem);
}

.consent-dialog__panel {
  width: 100%;
  max-width: 560px;
  max-height: calc(100vh - 2 * var(--space-5, 1.5rem));
  overflow-y: auto;
  background-color: var(--white, #fff);
  border-radius: var(--radius-xl, 16px);
  box-shadow: var(--shadow-xl, 0 16px 48px rgba(0, 0, 0, 0.16));
  padding: var(--space-6, 2rem) var(--space-5, 1.5rem);
  animation: consent-pop-in var(--duration-base, 250ms) var(--ease-out, ease) both;
}

@keyframes consent-pop-in {
  from { transform: translateY(12px) scale(0.98); opacity: 0; }
  to   { transform: translateY(0)    scale(1);    opacity: 1; }
}

.consent-dialog__title {
  margin: 0 0 var(--space-2, 0.5rem);
  font-size: var(--fs-xl, 1.5rem);
  font-weight: var(--fw-bold, 700);
  color: var(--blue, #035fea);
  line-height: var(--lh-tight, 1.2);
}

.consent-dialog__desc {
  margin: 0 0 var(--space-5, 1.5rem);
  font-size: var(--fs-sm, 0.875rem);
  line-height: var(--lh-base, 1.6);
  color: var(--text-body, #707070);
}

/* ---- Kategorien ---- */
.consent-cats {
  list-style: none;
  margin: 0 0 var(--space-5, 1.5rem);
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3, 0.75rem);
}

.consent-cat {
  padding: var(--space-4, 1rem);
  background-color: var(--gray-50, #fafafa);
  border: 1px solid var(--gray-200, #eee);
  border-radius: var(--radius-lg, 12px);
}

.consent-cat__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3, 0.75rem);
}

.consent-cat__name {
  font-size: var(--fs-base, 1rem);
  font-weight: var(--fw-semibold, 600);
  color: var(--gray-900, #212121);
}

.consent-cat__desc {
  margin: var(--space-2, 0.5rem) 0 0;
  font-size: var(--fs-sm, 0.875rem);
  line-height: var(--lh-base, 1.6);
  color: var(--text-body, #707070);
}

/* ---- Toggle-Switch ---- */
.consent-switch {
  position: relative;
  flex: 0 0 auto;
  display: inline-block;
  width: 44px;
  height: 26px;
  cursor: pointer;
}

.consent-switch input {
  position: absolute;
  opacity: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  cursor: pointer;
}

.consent-switch__track {
  position: absolute;
  inset: 0;
  background-color: var(--gray-400, #bdbdbd);
  border-radius: var(--radius-full, 9999px);
  transition: background-color var(--duration-fast, 150ms) var(--ease-out, ease);
}

.consent-switch__track::before {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 20px;
  height: 20px;
  background-color: var(--white, #fff);
  border-radius: var(--radius-full, 9999px);
  box-shadow: var(--shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.06));
  transition: transform var(--duration-fast, 150ms) var(--ease-out, ease);
}

.consent-switch input:checked + .consent-switch__track {
  background-color: var(--blue, #035fea);
}

.consent-switch input:checked + .consent-switch__track::before {
  transform: translateX(18px);
}

.consent-switch input:focus-visible + .consent-switch__track {
  outline: 3px solid var(--blue, #035fea);
  outline-offset: 2px;
}

/* "Notwendig": immer aktiv, aber sichtbar gesperrt */
.consent-switch--locked { cursor: not-allowed; }
.consent-switch--locked input { cursor: not-allowed; }

.consent-switch--locked input:checked + .consent-switch__track {
  background-color: var(--green-dark, #9abf3a);
  opacity: 0.85;
}

/* ---- Dialog-Buttons ---- */
.consent-dialog__actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-3, 0.75rem);
}

/* ---- Breakpoint Tablet (37.5em / 600px): Buttons nebeneinander ---- */
@media (min-width: 37.5em) {
  .consent-banner__inner {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-6, 2rem);
  }

  .consent-banner__copy { flex: 1 1 auto; }

  .consent-banner__actions {
    flex: 0 0 auto;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: flex-end;
  }

  .consent-btn { width: auto; }

  .consent-dialog__actions {
    flex-direction: row;
    justify-content: flex-end;
  }
}

/* ---- Breakpoint Desktop (80em / 1280px): mehr Luft ---- */
@media (min-width: 80em) {
  .consent-banner { padding: var(--space-5, 1.5rem) var(--space-7, 2.5rem); }
}

/* ---- Reduced Motion: keine Einfahr-/Pop-Animationen ---- */
@media (prefers-reduced-motion: reduce) {
  .consent-banner:not([hidden]),
  .consent-overlay,
  .consent-dialog__panel {
    animation: none;
  }
  .consent-btn:hover,
  .consent-btn--primary:hover,
  .consent-btn--secondary:hover { transform: none; }
}
