/* ============================================================
   webBee CMS — frontend.css
   Modern, production-ready public CSS
   ============================================================ */

/* ── Inter (selbst gehostet, plattform-unabhängige Typografie) ─
   woff2 in assets/fonts/inter/. SIL Open Font License — frei.
   Wird font-display:swap geladen: zuerst System-Fallback,
   dann nahtloser Switch sobald Inter verfügbar ist. */
@font-face {
  font-family: 'Inter';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('../fonts/inter/Inter-Regular.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url('../fonts/inter/Inter-Medium.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal; font-weight: 600; font-display: swap;
  src: url('../fonts/inter/Inter-SemiBold.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url('../fonts/inter/Inter-Bold.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal; font-weight: 800; font-display: swap;
  src: url('../fonts/inter/Inter-ExtraBold.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal; font-weight: 900; font-display: swap;
  src: url('../fonts/inter/Inter-Black.woff2') format('woff2');
}

/* ── CSS Variables ─────────────────────────────────────────── */
:root {
  --wb-primary:      #1a1f2e;
  --wb-primary-dark: #12172a;
  --wb-secondary:    #334155;
  --wb-accent:       #F5C400;
  --wb-text:         #1a1a2e;
  --wb-text-light:   #64748b;
  --wb-text-muted:   #64748b;
  --wb-heading:      #0f172a;
  --wb-bg:           #ffffff;
  --wb-bg-soft:      #f8fafc;
  --wb-surface:      #ffffff;
  --wb-surface-2:    #f8fafc;
  --wb-border:       #e2e8f0;
  --wb-radius:       12px;
  --wb-radius-sm:    8px;
  --wb-radius-lg:    20px;
  --wb-shadow:       0 4px 24px rgba(0,0,0,.08);
  --wb-shadow-md:    0 8px 40px rgba(0,0,0,.12);
  --wb-shadow-lg:    0 16px 60px rgba(0,0,0,.16);
  --wb-font-heading: 'Inter', system-ui, -apple-system, sans-serif;
  --wb-font-body:    'Inter', system-ui, -apple-system, sans-serif;
  --wb-transition:   0.3s cubic-bezier(0.4, 0, 0.2, 1);
  --wb-block-py:     80px;
  --wb-block-py-sm:  48px;
}

/* ── Reset & Base ──────────────────────────────────────────── */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  /* iOS-Safari & Android-Chrome vergrößern Fließtext in Landscape automatisch —
     das ignoriert unsere font-size-Regeln. Auf 100 % festnageln = deterministische
     Schriftgrößen unabhängig von Bildschirm-Orientierung. */
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  font-family: var(--wb-font-body);
  color: var(--wb-text);
  background: var(--wb-bg);
  line-height: 1.6;
  font-size: 1rem;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img { max-width: 100%; height: auto; display: block; }
a   { color: var(--wb-accent-text, var(--wb-accent)); text-decoration: none; transition: color var(--wb-transition); }
a:hover { opacity: 0.85; }
button, input, select, textarea { font-family: inherit; font-size: inherit; }
ul, ol { list-style: none; }

/* ── Containers ────────────────────────────────────────────── */
/* .wb-container: die allgemeinen Übersichts- und Detailseiten (Kurse,
   Veranstaltungen, News in templates/_partials/) — war nirgends definiert,
   der Inhalt klebte dort ohne Innenabstand am Rand. */
.container,
.wb-container {
  width: 100%;
  max-width: 1200px;
  margin-inline: auto;
  padding-inline: 24px;
}
.container--narrow {
  max-width: 760px;
}
.container--wide {
  max-width: 1440px;
}
.container-fluid {
  width: 100%;
  padding-inline: 24px;
}
.px-0 { padding-inline: 0; }

/* ── Text utilities ────────────────────────────────────────── */
.text-left   { text-align: left; }
.text-center { text-align: center; }
.text-right  { text-align: right; }

/* ── Block Base ────────────────────────────────────────────── */
.wb-block {
  padding-block: var(--wb-block-py);
  position: relative;
  overflow: hidden;
}

@media (max-width: 768px) {
  .wb-block {
    padding-block: var(--wb-block-py-sm);
  }
}

/* ── Universelle Block-Abstände (per-Block einstellbar) ─────── */
/* Legacy — beibehalten, damit alte gerenderte Seiten nicht springen */
.wb-block.wb-spacing-tight { padding-block: 30px; }
.wb-block.wb-spacing-none  { padding-bottom: 0 !important; }

/* Neue getrennte Steuerung — oben (pt) und unten (pb) unabhängig */
.wb-block.wb-pt-none    { padding-top: 0      !important; }
.wb-block.wb-pt-tight   { padding-top: 24px   !important; }
.wb-block.wb-pt-small   { padding-top: 48px   !important; }
.wb-block.wb-pt-wide    { padding-top: 120px  !important; }
.wb-block.wb-pt-xlarge  { padding-top: 160px  !important; }

.wb-block.wb-pb-none    { padding-bottom: 0    !important; }
.wb-block.wb-pb-tight   { padding-bottom: 24px !important; }
.wb-block.wb-pb-small   { padding-bottom: 48px !important; }
.wb-block.wb-pb-wide    { padding-bottom: 120px !important; }
.wb-block.wb-pb-xlarge  { padding-bottom: 160px !important; }

@media (max-width: 768px) {
    .wb-block.wb-pt-tight   { padding-top: 16px   !important; }
    .wb-block.wb-pt-small   { padding-top: 32px   !important; }
    .wb-block.wb-pt-wide    { padding-top: 72px   !important; }
    .wb-block.wb-pt-xlarge  { padding-top: 96px   !important; }
    .wb-block.wb-pb-tight   { padding-bottom: 16px !important; }
    .wb-block.wb-pb-small   { padding-bottom: 32px !important; }
    .wb-block.wb-pb-wide    { padding-bottom: 72px !important; }
    .wb-block.wb-pb-xlarge  { padding-bottom: 96px !important; }
}

/* ── Rahmen-Gruppe: gemeinsamer Wrapper mit einem einzigen Schatten ── */
.wb-frame-group {
  background: var(--wb-surface, #fff);
  border-radius: 20px;
  overflow: hidden;                          /* Innenkanten sauber clippen */
  box-shadow: 0 5px 25px 0 rgba(214, 215, 216, .6);
  margin: 30px auto;
  max-width: min(1200px, calc(100% - 32px));
}

/* Blöcke innerhalb der Gruppe: keine eigenen Schatten/Ränder mehr,
   damit sie visuell in der Karte aufgehen. */
.wb-frame-group > .wb-block {
  background: transparent;
  box-shadow: none;
  margin-block: 0;
  border-radius: 0;
  max-width: none;
}

/* Padding pro Position innerhalb der Gruppe — nur der erste und letzte
   Block behalten volles Aussenpadding, die mittleren rücken enger zusammen. */
.wb-frame-group > .wb-block.wb-frame--start  { padding-bottom: 24px; }
.wb-frame-group > .wb-block.wb-frame--middle { padding-block: 24px; }
.wb-frame-group > .wb-block.wb-frame--end    { padding-top: 24px; }
.wb-frame-group > .wb-block.wb-frame--single { /* Standard-Padding bleibt */ }

@media (max-width: 768px) {
  .wb-frame-group {
    margin-inline: 12px;
    border-radius: 12px;
  }
  .wb-frame-group > .wb-block.wb-frame--start  { padding-bottom: 16px; }
  .wb-frame-group > .wb-block.wb-frame--middle { padding-block: 16px; }
  .wb-frame-group > .wb-block.wb-frame--end    { padding-top: 16px; }
}

/* ── Barrierefreiheit ─────────────────────────────────────────
   Titel, die webBee für eine lückenlose Gliederung eine Ebene höher gesetzt hat
   (BlockRenderer::ebenenAngleichen), behalten die Grösse ihrer alten Ebene —
   :where() ohne Gewicht, damit die Klasse des Titels immer gewinnt.
   Swiper-Punkte sind anklickbar: Mitte zu Mitte mindestens 24 px (WCAG 2.2). */
:where([data-wb-ebene="3"]) { font-size: 1.17em; }
:where([data-wb-ebene="4"]) { font-size: 1em; }
:where([data-wb-ebene="5"]) { font-size: .83em; }
:where([data-wb-ebene="6"]) { font-size: .67em; }
.wb-block { --swiper-pagination-bullet-horizontal-gap: 9px; }

/* ── Section Header ────────────────────────────────────────── */
.wb-section-header {
  text-align: center;
  margin-bottom: 48px;
}
.wb-section-header h2 {
  font-family: var(--wb-font-heading);
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  font-weight: 700;
  color: var(--wb-primary-text, var(--wb-primary));
  line-height: 1.2;
  margin-bottom: 16px;
}
.wb-section-header p {
  font-size: 1.1rem;
  color: var(--wb-text-light);
  max-width: 600px;
  margin-inline: auto;
}
.wb-section-header::after {
  content: '';
  display: block;
  width: 48px;
  height: 4px;
  background: var(--wb-accent);
  border-radius: 2px;
  margin: 16px auto 0;
}

/* Ausrichtungs-Modifier — betreffen Titel, Untertitel UND die dekorative Linie */
.wb-section-header--align-left {
  text-align: left;
}
.wb-section-header--align-left p {
  margin-inline: 0;
}
.wb-section-header--align-left::after {
  margin-left: 0;
  margin-right: auto;
}
.wb-section-header--align-right {
  text-align: right;
}
.wb-section-header--align-right p {
  margin-inline: 0 0;
  margin-left: auto;
}
.wb-section-header--align-right::after {
  margin-left: auto;
  margin-right: 0;
}
/* center ist der Default — kein zusätzliches CSS nötig */

/* ── Hero ──────────────────────────────────────────────────── */
.wb-hero {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding: 0;
  overflow: hidden;
}
.wb-hero--full { min-height: 100vh; }
.wb-hero--80   { min-height: 80vh; }
.wb-hero--60   { min-height: 60vh; }
.wb-hero--50   { min-height: 50vh; }
.wb-hero--40   { min-height: 40vh; }
.wb-hero--20   { min-height: 20vh; }
.wb-hero--auto { min-height: 480px; padding-block: 120px; }

/* Hero-Logo (frei wählbares Bild aus dem Medienpool) */
.wb-hero__logo {
  display: block;
  height: auto;
  width: auto;
  margin: 0 auto 28px;
  filter: drop-shadow(0 10px 28px rgba(0,0,0,.35));
  /* max-width kommt inline via style="max-width:…px" aus dem Block-Editor
     und gewinnt gegen jede Klassen-Regel. Kein Fallback nötig. */
}
/* Ausrichtungs-Klassen — vom Block-Editor gesetzt.
   Custom-CSS kann diese Regeln ohne !important überschreiben
   (gleiche Spezifität, spätere Position gewinnt). */
.wb-hero__logo--left   { margin: 0 auto 28px 0; }
.wb-hero__logo--center { margin: 0 auto 28px; }
.wb-hero__logo--right  { margin: 0 0 28px auto; }
/* Legacy — für alten Content der noch text-left/right auf dem Wrapper hatte */
.wb-hero__content.text-left  .wb-hero__logo:not(.wb-hero__logo--center):not(.wb-hero__logo--right) { margin-left: 0; margin-right: auto; }
.wb-hero__content.text-right .wb-hero__logo:not(.wb-hero__logo--center):not(.wb-hero__logo--left)  { margin-right: 0; margin-left: auto; }

.wb-hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}
.wb-hero__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
}
.wb-hero .container {
  position: relative;
  z-index: 2;
}
.wb-hero__content {
  color: #fff;
  padding-block: 80px;
}
.wb-hero__heading {
  font-family: var(--wb-font-heading);
  font-size: clamp(2.5rem, 6vw, 5rem);
  font-weight: 800;
  line-height: 1.1;
  margin-bottom: 24px;
  text-shadow: 0 2px 20px rgba(0,0,0,.3);
}
.wb-hero__subtext {
  font-size: clamp(1.1rem, 2vw, 1.4rem);
  margin-bottom: 40px;
  max-width: 680px;
  margin-inline: auto;
}
.wb-hero__buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: center;
}
.wb-hero__content.text-left .wb-hero__subtext,
.wb-hero__content.text-left .wb-hero__buttons {
  margin-inline: 0;
  justify-content: flex-start;
}

/* ── Buttons ───────────────────────────────────────────────── */
.wb-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 32px;
  border-radius: var(--wb-radius);
  font-weight: 600;
  font-size: 1rem;
  cursor: pointer;
  border: 2px solid transparent;
  transition: transform var(--wb-transition), box-shadow var(--wb-transition), background var(--wb-transition), color var(--wb-transition);
  white-space: nowrap;
  text-decoration: none;
}
.wb-btn:hover { transform: translateY(-2px); box-shadow: var(--wb-shadow-md); opacity: 1; }
.wb-btn:active { transform: translateY(0); }

.wb-btn--primary {
  background: var(--wb-primary);
  color: var(--wb-on-primary, #fff);
  border-color: var(--wb-primary);
}
.wb-btn--primary:hover { background: var(--wb-accent); border-color: var(--wb-accent); color: var(--wb-on-accent, var(--wb-primary)); }

.wb-btn--accent {
  background: var(--wb-accent);
  color: var(--wb-on-accent, var(--wb-primary));
  border-color: var(--wb-accent);
}
.wb-btn--accent:hover { filter: brightness(1.1); }

.wb-btn--secondary {
  background: transparent;
  color: #fff;
  border-color: rgba(255,255,255,0.6);
}
.wb-btn--secondary:hover { background: rgba(255,255,255,0.15); border-color: #fff; }

.wb-btn--outline {
  background: transparent;
  color: var(--wb-primary-text, var(--wb-primary));
  border-color: var(--wb-primary);
}
.wb-btn--outline:hover { background: var(--wb-primary); color: var(--wb-on-primary, #fff); }

.wb-btn--sm { padding: 10px 20px; font-size: 0.875rem; }
.wb-btn--lg { padding: 18px 40px; font-size: 1.125rem; }

/* ── Badge ─────────────────────────────────────────────────── */
.wb-badge {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 100px;
  font-size: 0.75rem;
  font-weight: 600;
  background: var(--wb-bg-soft);
  color: var(--wb-text-light);
  border: 1px solid var(--wb-border);
}

/* ── Prose (rich text) ─────────────────────────────────────── */
.prose {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--wb-text);
}
.prose h1, .prose h2, .prose h3,
.prose h4, .prose h5, .prose h6 {
  font-family: var(--wb-font-heading);
  color: var(--wb-primary-text, var(--wb-primary));
  line-height: 1.2;
  margin-top: 1.75em;
  margin-bottom: 0.6em;
}
.prose h1 { font-size: 2.25rem; font-weight: 800; }
.prose h2 { font-size: 1.875rem; font-weight: 700; }
.prose h3 { font-size: 1.5rem;   font-weight: 700; }
.prose h4 { font-size: 1.25rem;  font-weight: 600; }
.prose h5 { font-size: 1.125rem; font-weight: 600; }
.prose h6 { font-size: 1rem;     font-weight: 600; }
.prose p  { margin-bottom: 1.25em; }
.prose a  { color: var(--wb-link, var(--wb-accent)); text-decoration: underline; text-underline-offset: 3px; transition: color .15s; }
.prose a:hover { color: var(--wb-link-hover, var(--wb-primary, currentColor)); opacity: 1; }
.prose strong { font-weight: 700; color: var(--wb-primary-text, var(--wb-primary)); }
.prose em { font-style: italic; }
.prose ul, .prose ol { margin-bottom: 1.25em; padding-left: 1.5em; }
.prose ul { list-style: disc; }
.prose ol { list-style: decimal; }
.prose li { margin-bottom: 0.5em; }
.prose blockquote {
  border-left: 4px solid var(--wb-accent);
  padding: 16px 24px;
  margin: 24px 0;
  background: var(--wb-bg-soft);
  border-radius: 0 var(--wb-radius-sm) var(--wb-radius-sm) 0;
  font-style: italic;
  color: var(--wb-text-light);
}
.prose blockquote p { margin: 0; }
.prose code {
  background: var(--wb-bg-soft);
  padding: 2px 8px;
  border-radius: 4px;
  font-family: 'Fira Code', 'Consolas', monospace;
  font-size: 0.9em;
  color: var(--wb-primary-text, var(--wb-primary));
}
.prose pre {
  background: var(--wb-primary);
  color: #e2e8f0;
  padding: 20px 24px;
  border-radius: var(--wb-radius);
  overflow-x: auto;
  margin-bottom: 1.25em;
}
.prose pre code { background: none; padding: 0; color: inherit; }
.prose hr {
  border: none;
  border-top: 1px solid var(--wb-border);
  margin: 2em 0;
}
.prose img {
  border-radius: var(--wb-radius);
  box-shadow: var(--wb-shadow);
  margin-block: 1.5em;
}
/* Image alignment via data-align attribute — applies to ANY rich-text block
   (.prose is used by text, text_image, html, card text, etc.) */
.prose img[data-align="left"],
.wb-text-image img[data-align="left"] {
  float: left;
  display: inline;
  max-width: 45%;
  width: auto;
  margin: 0.25em 1.4em 0.6em 0;
  clear: none;
}
.prose img[data-align="right"],
.wb-text-image img[data-align="right"] {
  float: right;
  display: inline;
  max-width: 45%;
  width: auto;
  margin: 0.25em 0 0.6em 1.4em;
  clear: none;
}
.prose img[data-align="center"],
.wb-text-image img[data-align="center"] {
  float: none;
  display: block;
  width: auto;
  max-width: 70%;
  margin: 1.2em auto;
  clear: both;
}
.prose img[data-align="full"],
.wb-text-image img[data-align="full"] {
  float: none;
  display: block;
  width: 100%;
  max-width: 100%;
  margin: 1.4em 0;
  clear: both;
}
/* Clearfix so trailing floats don't escape the prose container */
.prose::after { content: ''; display: table; clear: both; }
.prose table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 1.5em;
}
.prose th, .prose td {
  padding: 12px 16px;
  border: 1px solid var(--wb-border);
  text-align: left;
}
.prose th {
  background: var(--wb-bg-soft);
  font-weight: 600;
}
.prose > *:first-child { margin-top: 0; }
.prose > *:last-child  { margin-bottom: 0; }

/* ── Text-Image ────────────────────────────────────────────── */
.wb-text-image__inner {
  display: flex;
  align-items: center;
  gap: 64px;
}
.wb-text-image__text { flex: 1; }
.wb-text-image__img  { flex: 0 0 45%; max-width: 45%; }
.wb-text-image__img img {
  border-radius: var(--wb-radius-lg);
  box-shadow: var(--wb-shadow-md);
  width: 100%;
  object-fit: cover;
}

.wb-text-image--img-left .wb-text-image__img  { order: -1; }
.wb-text-image--img-right .wb-text-image__img { order: 1; }

@media (max-width: 768px) {
  .wb-text-image__inner { flex-direction: column; gap: 32px; }
  /* !important nötig, weil der Renderer die Desktop-Breite als INLINE-Style setzt
     (z.B. flex:0 0 33%;max-width:33%) — sonst würde die Mobile-Query nicht greifen
     und das Bild bliebe auch auf dem Handy schmal. */
  .wb-text-image__img   { flex: 0 0 auto !important; max-width: 100% !important; order: -1 !important; }
}

/* ── Image block ───────────────────────────────────────────── */
.wb-image__figure { display: flex; flex-direction: column; }
.wb-image--center .wb-image__figure { align-items: center; }
.wb-image--left   .wb-image__figure { align-items: flex-start; }
.wb-image--right  .wb-image__figure { align-items: flex-end; }
.wb-image__figure img { border-radius: var(--wb-radius); }
.wb-image__caption {
  margin-top: 10px;
  font-size: 0.875rem;
  color: var(--wb-text-light);
  text-align: center;
}

/* ── Gallery ───────────────────────────────────────────────── */
.wb-gallery--grid {
  display: grid;
  grid-template-columns: repeat(var(--wb-gallery-cols, 3), 1fr);
  gap: 16px;
}
.wb-gallery--masonry {
  columns: var(--wb-gallery-cols, 3);
  column-gap: 16px;
}
.wb-gallery__item { overflow: hidden; border-radius: var(--wb-radius); }
.wb-gallery__item img {
  width: 100%;
  height: 260px;
  object-fit: cover;
  transition: transform 0.5s ease;
  display: block;
}
.wb-gallery__item:hover img { transform: scale(1.05); }
.wb-gallery--masonry .wb-gallery__item {
  break-inside: avoid;
  margin-bottom: 16px;
}
.wb-gallery--masonry .wb-gallery__item img { height: auto; }

/* Sanftes Ein-/Ausblenden beim Filter-Wechsel */
.wb-gallery__item {
  transition: opacity .32s ease, transform .32s ease;
}
.wb-gallery__item.is-filtered-out {
  opacity: 0;
  transform: scale(.9);
  pointer-events: none;
}

/* Gallery-Header (optionaler Titel + Untertitel) */
.wb-gallery__header {
  margin-bottom: 24px;
  text-align: center;
}
.wb-gallery__header h2 {
  margin: 0 0 8px;
  font-family: var(--wb-font-heading, inherit);
}
.wb-gallery__header p {
  margin: 0;
  color: var(--wb-text-muted, #64748b);
}

/* Filter-Buttons oberhalb der Galerie (Original chic&charming Stil) */
.wb-gallery__filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  margin-bottom: 24px;
  padding: 0;
  list-style: none;
}
.wb-gallery__filter {
  background: transparent;
  border: 1px solid var(--wb-border, #E4D8CD);
  color: var(--wb-text, inherit);
  padding: 8px 18px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: background-color .15s ease, color .15s ease, border-color .15s ease;
  font-family: inherit;
}
.wb-gallery__filter:hover {
  background-color: rgba(0,0,0,.04);
}
.wb-gallery__filter.is-active {
  background-color: var(--wb-primary, #EC4899);
  color: var(--wb-on-primary, #fff);
  border-color: var(--wb-primary, #EC4899);
}

@media (max-width: 1024px) {
  .wb-gallery--grid { grid-template-columns: repeat(2, 1fr); }
  .wb-gallery--masonry { columns: 2; }
}
@media (max-width: 600px) {
  .wb-gallery--grid { grid-template-columns: 1fr; }
  .wb-gallery--masonry { columns: 1; }
}

/* ── Video ─────────────────────────────────────────────────── */
.wb-video__wrapper {
  position: relative;
  border-radius: var(--wb-radius-lg);
  overflow: hidden;
  box-shadow: var(--wb-shadow-md);
}
.wb-video__privacy {
  position: relative;
  width: 100%;
  padding-bottom: 56.25%; /* 16:9 */
  background: #0f172a;
  background-size: cover;
  background-position: center;
  cursor: pointer;
}
.wb-video__privacy::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.4);
}
.wb-video__play-btn {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -60%);
  z-index: 2;
  width: 80px;
  height: 80px;
  background: rgba(255,255,255,0.95);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--wb-primary-text, var(--wb-primary));
  transition: transform var(--wb-transition), box-shadow var(--wb-transition);
  box-shadow: 0 8px 32px rgba(0,0,0,0.3);
}
.wb-video__privacy:hover .wb-video__play-btn {
  transform: translate(-50%, -60%) scale(1.1);
  box-shadow: 0 12px 40px rgba(0,0,0,0.4);
}
.wb-video__notice {
  position: absolute;
  bottom: 20px;
  left: 0;
  right: 0;
  text-align: center;
  color: rgba(255,255,255,0.8);
  font-size: 0.8rem;
  z-index: 2;
}
.wb-video__privacy iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
}

/* ── Grid (icon cards) ─────────────────────────────────────── */
.wb-grid__items {
  display: grid;
  grid-template-columns: repeat(var(--wb-grid-cols, 3), 1fr);
  gap: 32px;
}
.wb-grid__item {
  text-align: center;
  padding: 40px 32px;
  background: var(--wb-bg);
  border: 1px solid var(--wb-border);
  border-radius: var(--wb-radius-lg);
  transition: transform var(--wb-transition), box-shadow var(--wb-transition);
}
.wb-grid__item:hover {
  transform: translateY(-4px);
  box-shadow: var(--wb-shadow-md);
}
.wb-grid__icon {
  font-size: 2.5rem;
  margin-bottom: 20px;
  display: block;
  line-height: 1;
}
.wb-grid__icon img {
  width: 48px;
  height: 48px;
  object-fit: contain;
  display: block;
}
.wb-grid__icon--letter {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--wb-primary);
  color: var(--wb-on-primary, #fff);
  font-size: 1.5rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-inline: auto;
  margin-bottom: 20px;
}
.wb-grid__title {
  font-size: 1.1875rem;
  font-weight: 700;
  color: var(--wb-primary-text, var(--wb-primary));
  margin-bottom: 10px;
}
.wb-grid__text { color: var(--wb-text-light); font-size: 1rem; line-height: 1.6; }

@media (max-width: 1024px) {
  .wb-grid__items { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .wb-grid__items { grid-template-columns: 1fr; }
}

/* ── Cards ─────────────────────────────────────────────────── */
.wb-cards__grid {
  display: grid;
  grid-template-columns: repeat(var(--wb-cards-cols, 3), 1fr);
  gap: 28px;
}
.wb-card {
  background: var(--wb-bg);
  border-radius: var(--wb-radius-lg);
  overflow: hidden;
  border: 1px solid var(--wb-border);
  box-shadow: var(--wb-shadow);
  transition: transform var(--wb-transition), box-shadow var(--wb-transition);
  display: flex;
  flex-direction: column;
  color: var(--wb-text);
}
.wb-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--wb-shadow-md);
}
/* Foto-Karten (Standard — z.B. Produkt-Bilder, Hero-Crops) */
.wb-card__img { overflow: hidden; aspect-ratio: 16/9; }
.wb-card__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}
.wb-card:hover .wb-card__img img { transform: scale(1.05); }

/* Icon-Karten — wenn der Card-Renderer eine Mini-Icon-Box braucht, hängt er
   die Modifier-Klasse wb-card__img--icon an. Robust ohne :has(). */
.wb-card__img--icon {
  aspect-ratio: 1 / 1 !important;
  width: 88px !important;
  height: 88px !important;
  margin: 20px auto 4px !important;
  align-self: center;       /* horizontal in flex-column zentrieren */
  border-radius: 12px;
  background: rgba(255, 255, 255, .04);
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: visible;
  flex-shrink: 0;
  padding: 0 !important;
}
.wb-card__img--icon img {
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  transition: none;
}
.wb-card:hover .wb-card__img--icon img { transform: none; }
.wb-card__body {
  padding: 28px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.wb-card__title {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--wb-primary-text, var(--wb-primary));
  line-height: 1.3;
}
.wb-card__text {
  color: var(--wb-text-light);
  font-size: 1rem;
  line-height: 1.6;
  flex: 1;
}
.wb-card__footer { margin-top: auto; padding-top: 8px; }

/* Card-Text-Ausrichtung — per Block-Setting steuerbar (Standard: linksbündig).
   !important damit es Custom-Page-CSS (z.B. sysol-Marketing-Override) schlägt. */
.wb-cards--align-left   .wb-card,
.wb-cards--align-left   .wb-card__title,
.wb-cards--align-left   .wb-card__text   { text-align: left   !important; }
.wb-cards--align-center .wb-card,
.wb-cards--align-center .wb-card__title,
.wb-cards--align-center .wb-card__text   { text-align: center !important; }
.wb-cards--align-right  .wb-card,
.wb-cards--align-right  .wb-card__title,
.wb-cards--align-right  .wb-card__text   { text-align: right  !important; }
/* Footer-Button-Ausrichtung folgt mit */
.wb-cards--align-left   .wb-card__footer { justify-content: flex-start; }
.wb-cards--align-center .wb-card__footer { justify-content: center; }
.wb-cards--align-right  .wb-card__footer { justify-content: flex-end; }

@media (max-width: 1024px) {
  .wb-cards__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .wb-cards__grid { grid-template-columns: 1fr; }
}

/* ── CTA ───────────────────────────────────────────────────── */
.wb-cta {
  padding-block: 100px;
}
.wb-cta__inner { padding: 0 40px; }
.wb-cta__heading {
  font-size: clamp(1.875rem, 4vw, 3rem);
  font-weight: 800;
  line-height: 1.1;
  margin-bottom: 16px;
}
.wb-cta__text {
  font-size: 1.1875rem;
  opacity: 0.95;
  margin-bottom: 40px;
  max-width: 600px;
  margin-inline: auto;
  color: inherit;
}
.wb-cta .wb-cta__inner.text-left .wb-cta__text { margin-inline: 0; }
.wb-cta__buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: center;
}
.wb-cta .text-left .wb-cta__buttons { justify-content: flex-start; }
/* Knöpfe im Button-Bereich: umgekehrt zur Fläche — Knopf in der Schriftfarbe, Beschriftung in der
   Flächenfarbe. Beides zusammen ist lesbar (renderCta rechnet die Schrift gegen die Fläche). */
.wb-cta .wb-btn--primary { background: var(--wb-cta-text, #fff) !important; color: var(--wb-cta-bg, var(--wb-primary)) !important; border-color: var(--wb-cta-text, #fff) !important; }
.wb-cta .wb-btn--secondary, .wb-cta .wb-btn--outline { background: transparent !important; color: var(--wb-cta-text, #fff) !important; border-color: var(--wb-cta-text, #fff) !important; }
.wb-cta .wb-btn--primary:hover { opacity: .9; }
.wb-cta .wb-btn--secondary:hover, .wb-cta .wb-btn--outline:hover { background: var(--wb-cta-text, #fff) !important; color: var(--wb-cta-bg, var(--wb-primary)) !important; }

/* ── Accordion ─────────────────────────────────────────────── */
.wb-accordion__list { display: flex; flex-direction: column; gap: 8px; }
.wb-accordion__item {
  border: 1px solid var(--wb-border);
  border-radius: var(--wb-radius);
  overflow: hidden;
  background: var(--wb-bg);
}
.wb-accordion__toggle {
  width: 100%;
  padding: 20px 24px;
  background: none;
  border: none;
  text-align: left;
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--wb-primary-text, var(--wb-primary));
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  transition: background var(--wb-transition);
}
.wb-accordion__toggle:hover { background: var(--wb-bg-soft); }
.wb-accordion__icon {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 2px solid var(--wb-border);
  position: relative;
  transition: transform var(--wb-transition), border-color var(--wb-transition);
}
.wb-accordion__icon::before,
.wb-accordion__icon::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 10px;
  height: 2px;
  background: var(--wb-primary);
  transform: translate(-50%, -50%);
  transition: transform var(--wb-transition), opacity var(--wb-transition);
}
.wb-accordion__icon::after {
  transform: translate(-50%, -50%) rotate(90deg);
}
.wb-accordion__toggle[aria-expanded="true"] .wb-accordion__icon {
  border-color: var(--wb-accent);
  background: var(--wb-accent);
}
.wb-accordion__toggle[aria-expanded="true"] .wb-accordion__icon::before,
.wb-accordion__toggle[aria-expanded="true"] .wb-accordion__icon::after {
  background: var(--wb-primary);
}
.wb-accordion__toggle[aria-expanded="true"] .wb-accordion__icon::after {
  transform: translate(-50%, -50%) rotate(0);
  opacity: 0;
}
.wb-accordion__body {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.wb-accordion__body.show { max-height: 1000px; }
.wb-accordion__content {
  padding: 0 24px 24px;
  color: var(--wb-text-light);
}

/* ── Table ─────────────────────────────────────────────────── */
.table-responsive { overflow-x: auto; border-radius: var(--wb-radius); }
.wb-table__el {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9375rem;
}
.wb-table__el th,
.wb-table__el td {
  padding: 14px 18px;
  border: 1px solid var(--wb-border);
  text-align: left;
  vertical-align: top;
}
.wb-table__el thead th {
  background: var(--wb-primary);
  color: var(--wb-on-primary, #fff);
  font-weight: 600;
  border-color: rgba(255,255,255,0.1);
}
.wb-table--striped tbody tr:nth-child(even) { background: var(--wb-bg-soft); }
.wb-table__el tbody tr:hover { background: rgba(99,102,241,0.04); }

/* ── Form ──────────────────────────────────────────────────── */
.wb-form__wrap { background: var(--wb-bg-soft); border-radius: var(--wb-radius-lg); padding: 48px; }
.wb-form__group { margin-bottom: 24px; }
.wb-form__row {
  display: flex; flex-wrap: wrap; gap: 16px;
  margin-bottom: 24px;
}
.wb-form__row .wb-form__group { margin-bottom: 0; flex: 1 1 0; min-width: 0; }
.wb-form__group--half       { flex: 1 1 calc(50% - 8px) !important; }
.wb-form__group--third      { flex: 1 1 calc(33.333% - 11px) !important; }
.wb-form__group--two-thirds { flex: 2 1 calc(66.666% - 5px) !important; }
.wb-form__label {
  display: block;
  margin-bottom: 8px;
  font-weight: 600;
  font-size: 0.9375rem;
  color: var(--wb-primary-text, var(--wb-primary));
}
/* Formular-Setting „Feld-Beschriftungen ausblenden" — nur die Top-Labels über
   den Feldern verstecken. Inline-Labels von Checkboxen/Radios (.wb-form__check-label,
   .wb-form__radio-item) bleiben sichtbar, damit die Options-Auswahl lesbar bleibt. */
.wb-form__wrap--no-labels .wb-form__label {
  display: none;
}
.wb-form__required { color: #ef4444; }
.wb-form__control {
  width: 100%;
  padding: 14px 18px;
  border: 2px solid var(--wb-border);
  border-radius: var(--wb-radius);
  background: var(--wb-bg);
  color: var(--wb-text);
  font-size: 1rem;
  transition: border-color var(--wb-transition), box-shadow var(--wb-transition);
  outline: none;
  appearance: none;
}
.wb-form__control:focus {
  border-color: var(--wb-primary);
  box-shadow: 0 0 0 4px rgba(99,102,241,0.08);
}
.wb-form__control::placeholder { color: #94a3b8; }
textarea.wb-form__control { resize: vertical; min-height: 140px; }
/* Checkbox single */
.wb-form__group--check { margin-bottom: 20px; }
.wb-form__check-label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-size: 0.9375rem;
  line-height: 1.5;
}
.wb-form__check-label input[type="checkbox"] {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  margin-top: 3px;
  cursor: pointer;
  accent-color: var(--wb-primary);
}
/* Legacy .wb-form__check (backward compat) */
.wb-form__check {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
}
.wb-form__check input { width: 18px; height: 18px; cursor: pointer; accent-color: var(--wb-primary); }

/* Radio / Checkbox group */
.wb-form__radio-group {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.wb-form__radio-item {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font-size: 0.9375rem;
}
.wb-form__radio-item input {
  width: 18px;
  height: 18px;
  cursor: pointer;
  accent-color: var(--wb-primary);
  flex-shrink: 0;
}

/* Range slider */
.wb-form__range {
  width: 100%;
  accent-color: var(--wb-primary);
  cursor: pointer;
}
.wb-form__range-output {
  display: block;
  margin-top: 6px;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--wb-primary-text, var(--wb-primary));
}

/* File input */
.wb-form__file {
  display: block;
  width: 100%;
  padding: 10px 14px;
  border: 2px dashed var(--wb-border);
  border-radius: var(--wb-radius);
  background: var(--wb-bg);
  color: var(--wb-text);
  font-size: 0.9375rem;
  cursor: pointer;
  transition: border-color var(--wb-transition);
}
.wb-form__file:hover { border-color: var(--wb-primary); }

.wb-form__submit { margin-top: 8px; }
.wb-form__success {
  padding: 20px 24px;
  background: #d1fae5;
  color: #065f46;
  border-radius: var(--wb-radius);
  font-weight: 600;
  border: 1px solid #a7f3d0;
}
.wb-form__error {
  padding: 16px 24px;
  background: #fee2e2;
  color: #991b1b;
  border-radius: var(--wb-radius);
  border: 1px solid #fca5a5;
  margin-top: 12px;
}

@media (max-width: 600px) {
  .wb-form__wrap { padding: 28px 20px; }
  .wb-form__radio-group { gap: 8px; }
}

/* Startbanner ohne Bild: Titel und Text in der gerechneten Schrift der Fläche (renderHero) */
section.wb-block.wb-hero.wb-hero--ohne-bild .wb-hero__heading,
section.wb-block.wb-hero.wb-hero--ohne-bild .wb-hero__subtext,
section.wb-block.wb-hero.wb-hero--ohne-bild .wb-hero__pretitle { color: inherit !important; }

/* ── Countdown ─────────────────────────────────────────────── */
.wb-countdown__heading {
  text-align: center;
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 700;
  color: var(--wb-primary-text, var(--wb-primary));
  margin-bottom: 8px;
}
.wb-countdown__sub {
  text-align: center;
  color: var(--wb-text-light);
  margin-bottom: 40px;
}
.wb-countdown__timer {
  display: flex;
  justify-content: center;
  gap: 24px;
  flex-wrap: wrap;
}
.wb-countdown__unit {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 100px;
  padding: 24px 20px;
  background: var(--wb-primary);
  border-radius: var(--wb-radius-lg);
  color: var(--wb-on-primary, #fff);
}
.wb-countdown__num {
  font-size: 3rem;
  font-weight: 800;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--wb-accent-on-primary, var(--wb-on-primary, #fff));
}
.wb-countdown__label {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-top: 6px;
}

/* ── Map ───────────────────────────────────────────────────── */
.wb-map__privacy {
  position: relative;
  border-radius: var(--wb-radius-lg);
  overflow: hidden;
  background: var(--wb-bg-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px dashed var(--wb-border);
}
.wb-map__overlay {
  text-align: center;
  padding: 40px;
  color: var(--wb-text-light);
}
.wb-map__overlay p { margin-bottom: 20px; font-size: 0.9375rem; }
.wb-map iframe {
  border-radius: var(--wb-radius-lg);
  display: block;
  width: 100%;
}

/* ── Parallax ──────────────────────────────────────────────── */
.wb-parallax {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding: 40px 0;
  background-attachment: scroll;
}
/* Neuer transform-basierter Parallax: das Bild sitzt in einem separaten
   .wb-parallax__bg-Layer der die Sektion oben und unten um 30 vh überragt.
   Dieser Overshoot ist der Bewegungs-Puffer, den das JS mit translateY nutzt. */
.wb-parallax--on {
  background-image: none !important; /* Bild kommt jetzt via Bild-Layer */
}
/* Als echtes <img> — Browser legt es auf einen eigenen Compositor-Layer,
   transform:translate ist rein GPU (kein Repaint bei jedem Frame). */
img.wb-parallax__bg {
  position: absolute;
  left: 50%;
  top: -40vh;
  width: 100%;
  height: calc(100% + 80vh);
  object-fit: cover;
  object-position: center;
  transform: translate3d(-50%, 0, 0);         /* horizontal zentrieren + GPU-Layer */
  will-change: transform;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  z-index: 0;
  pointer-events: none;
  user-select: none;
  max-width: none;                             /* falls globales img{max-width:100%} */
}
.wb-parallax__overlay {
  z-index: 1;
}
.wb-parallax .container,
.wb-parallax > .container,
.wb-parallax__content {
  position: relative;
  z-index: 2;
}
.wb-parallax__overlay {
  position: absolute;
  inset: 0;
  background: #000;
  pointer-events: none;
}
.wb-parallax__content {
  position: relative;
  z-index: 1;
  max-width: 800px;
  width: 100%;
  padding: 0 20px;
}
.wb-parallax__content h2 {
  font-weight: 800;
  line-height: 1.15;
}
.wb-parallax__content p {
  line-height: 1.55;
}

/* ── Divider ───────────────────────────────────────────────── */
.wb-divider { overflow: hidden; }
.wb-divider--line {
  border: none;
  border-top: 1px solid var(--wb-border);
  padding: 0;
  margin-block: 0;
}
.wb-divider--wave svg { display: block; width: 100%; height: 60px; }
.wb-divider--diagonal {
  height: 80px;
  clip-path: polygon(0 0, 100% 0, 100% 100%);
  padding: 0;
}

/* ── Columns ───────────────────────────────────────────────── */
.wb-columns__inner {
  display: grid;
  grid-template-columns: repeat(var(--wb-col-count, 2), 1fr);
  gap: 48px;
}
@media (max-width: 768px) {
  .wb-columns__inner { grid-template-columns: 1fr; gap: 32px; }
}

/* ── Team ──────────────────────────────────────────────────── */
.wb-team__grid {
  display: grid;
  grid-template-columns: repeat(var(--wb-team-cols, 4), 1fr);
  gap: 32px;
}
.wb-team__card {
  background: var(--wb-bg);
  border-radius: var(--wb-radius-lg);
  overflow: hidden;
  border: 1px solid var(--wb-border);
  text-align: center;
  transition: transform var(--wb-transition), box-shadow var(--wb-transition);
  box-shadow: var(--wb-shadow);
}
.wb-team__card:hover { transform: translateY(-4px); box-shadow: var(--wb-shadow-md); }
.wb-team__photo { aspect-ratio: 1; overflow: hidden; }
.wb-team__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.wb-team__card:hover .wb-team__photo img { transform: scale(1.05); }
.wb-team__photo--placeholder {
  background: linear-gradient(135deg, var(--wb-primary), var(--wb-accent));
  color: #fff;
  font-size: 3rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}
.wb-team__info { padding: 24px 20px; }
.wb-team__name {
  font-size: 1.0625rem;
  font-weight: 700;
  color: var(--wb-primary-text, var(--wb-primary));
  margin-bottom: 4px;
}
.wb-team__role { font-size: 0.875rem; color: var(--wb-text-light); margin-bottom: 12px; }
.wb-team__socials { display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; }
.wb-team__social {
  font-size: 0.75rem;
  padding: 4px 10px;
  background: var(--wb-bg-soft);
  border-radius: 100px;
  color: var(--wb-text-light);
  border: 1px solid var(--wb-border);
  text-transform: capitalize;
}
.wb-team__social:hover { background: var(--wb-primary); color: var(--wb-on-primary, #fff); border-color: var(--wb-primary); }

@media (max-width: 1024px) { .wb-team__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px)  { .wb-team__grid { grid-template-columns: repeat(1, 1fr); } }

/* ── Testimonial ───────────────────────────────────────────── */
.wb-testimonial .swiper { padding-bottom: 48px !important; }
/* Wenn Pfeile aktiv sind: Padding links/rechts, damit sie NEBEN dem Text sitzen,
   nicht darüber. Ausserhalb der Slide-Karte statt darüber. */
.wb-testimonial--with-arrows .swiper {
  padding-left: 60px !important;
  padding-right: 60px !important;
  position: relative;
}
@media (max-width: 640px) {
  .wb-testimonial--with-arrows .swiper {
    padding-left: 44px !important;
    padding-right: 44px !important;
  }
}
/* Pfeile in dem Padding-Bereich zentriert positionieren */
.wb-testimonial .swiper-button-prev,
.wb-testimonial .swiper-button-next {
  color: var(--wb-primary-text, var(--wb-primary, #EC4899));
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--wb-bg, #fff);
  box-shadow: 0 2px 10px rgba(0,0,0,.12);
  transition: background .15s ease, box-shadow .15s ease;
}
.wb-testimonial .swiper-button-prev { left: 4px; }
.wb-testimonial .swiper-button-next { right: 4px; }
.wb-testimonial .swiper-button-prev:hover,
.wb-testimonial .swiper-button-next:hover {
  box-shadow: 0 4px 16px rgba(0,0,0,.18);
}
.wb-testimonial .swiper-button-prev::after,
.wb-testimonial .swiper-button-next::after {
  font-size: 16px;
  font-weight: 700;
}

.wb-testimonial__slide {
  background: var(--wb-bg);
  border-radius: var(--wb-radius-lg);
  padding: 40px 48px;
  border: 1px solid var(--wb-border);
  box-shadow: var(--wb-shadow);
  height: auto;
}
/* Ohne Karten-Rahmen: transparente Fläche, kein Rand, kein Schatten */
.wb-testimonial--no-frame .wb-testimonial__slide {
  background: transparent;
  border: none;
  box-shadow: none;
  padding: 20px 0;
}
.wb-testimonial__icon {
  color: var(--wb-accent-text, var(--wb-accent));
  margin-bottom: 20px;
  opacity: 0.6;
}
.wb-testimonial__quote p {
  font-size: 1.1rem;
  line-height: 1.7;
  color: var(--wb-text);
  font-style: italic;
  margin-bottom: 24px;
}
.wb-testimonial__author {
  display: flex;
  align-items: center;
  gap: 14px;
}
.wb-testimonial__avatar {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--wb-border);
}
.wb-testimonial__avatar--placeholder {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--wb-primary), var(--wb-accent));
  color: #fff;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  flex-shrink: 0;
}
.wb-testimonial__author strong { display: block; font-weight: 700; color: var(--wb-primary-text, var(--wb-primary)); }
.wb-testimonial__author span   { font-size: 0.875rem; color: var(--wb-text-light); }

/* ── News archive ──────────────────────────────────────────── */
.wb-card--news { display: block; text-decoration: none; }
.wb-card--news:hover { opacity: 1; }

/* Topnews — genau eine News kann so markiert sein. Sie steht zuoberst im
   Aktuelles-Bereich und wird über Rahmen und Kennzeichen hervorgehoben,
   nicht über eine andere Farbe: so bleibt sie in jedem Template stimmig. */
.wb-card--top {
  border-color: var(--wb-primary);
  box-shadow: 0 0 0 1px var(--wb-primary);
}
.wb-badge--top {
  background: var(--wb-primary);
  color: var(--wb-on-primary, #fff);
  border-color: var(--wb-primary);
}
/* Kennzeichen nebeneinander statt untereinander: .wb-card__body ist eine
   Flex-Spalte, darin würde jedes Kennzeichen eine eigene Zeile belegen und
   sich über die ganze Breite ziehen. */
.wb-card__flags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

/* Hinweis auf einen leeren Inhaltsbereich — nur für angemeldete Betreiber */
.wb-leer-hinweis { overflow: visible; }

/* ── Events list ───────────────────────────────────────────── */
.wb-events-list { display: flex; flex-direction: column; gap: 2px; }
.wb-event-item {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 20px 28px;
  background: var(--wb-bg);
  border-radius: var(--wb-radius);
  border: 1px solid var(--wb-border);
  color: var(--wb-text);
  transition: transform var(--wb-transition), box-shadow var(--wb-transition), border-color var(--wb-transition);
}
.wb-event-item:hover {
  transform: translateX(4px);
  box-shadow: var(--wb-shadow);
  border-color: var(--wb-primary);
  opacity: 1;
}
.wb-event-item__date {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 70px;
  padding: 12px 16px;
  background: var(--wb-primary);
  color: var(--wb-on-primary, #fff);
  border-radius: var(--wb-radius-sm);
}
.wb-event-item__day  { font-size: 1.25rem; font-weight: 700; line-height: 1; }
.wb-event-item__time { font-size: 0.75rem; opacity: 0.7; margin-top: 2px; }
.wb-event-item__info { flex: 1; }
.wb-event-item__title {
  font-size: 1.0625rem;
  font-weight: 700;
  color: var(--wb-primary-text, var(--wb-primary));
  margin-bottom: 4px;
}
.wb-event-item__loc { font-size: 0.875rem; color: var(--wb-text-light); }
.wb-event-item__arrow {
  font-size: 1.25rem;
  color: var(--wb-text-light);
  transition: transform var(--wb-transition);
}
.wb-event-item:hover .wb-event-item__arrow { transform: translateX(4px); color: var(--wb-primary-text, var(--wb-primary)); }

/* ── News & Veranstaltungen (WB_Beitraege) ────────────────────
   Ein Satz Bausteine für die Blöcke «Aktuelles» und «Veranstaltungen»,
   die Übersichten und «Weitere Beiträge». Nur Variablen der Vorlage
   (--wb-*) — so passt es in jede der 22 Vorlagen, hell wie dunkel. */
.wb-bt { --wb-bt-gap: 28px; --wb-bt-tint: var(--wb-bg-soft); }
@supports (background: color-mix(in srgb, red 10%, white)) {
  .wb-bt { --wb-bt-tint: color-mix(in srgb, var(--wb-primary) 9%, var(--wb-bg)); }
}
.wb-bt__eintrag { position: relative; display: flex; flex-direction: column; min-width: 0; color: var(--wb-text); }
.wb-bt__bild { position: relative; overflow: hidden; aspect-ratio: var(--wb-bt-format, 16/9); background: var(--wb-bt-tint); flex-shrink: 0; }
.wb-bt__bild img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.wb-bt__eintrag:hover .wb-bt__bild img { transform: scale(1.04); }
.wb-bt__platzhalter { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--wb-primary-text, var(--wb-primary)); background: var(--wb-bt-tint); }
.wb-bt__platzhalter svg { opacity: .5; }
.wb-bt__platzhalter--datum { flex-direction: column; gap: 2px; line-height: 1; font-family: var(--wb-font-heading); }
.wb-bt__gross-wt { font-family: var(--wb-font-body, inherit); font-size: .78rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.wb-bt__gross-tag { font-size: clamp(2.4rem, 5vw, 3.6rem); font-weight: 800; font-variant-numeric: tabular-nums; }
.wb-bt__gross-monat { font-size: .9rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.wb-bt__text { display: flex; flex-direction: column; gap: 10px; flex: 1; min-width: 0; }
.wb-bt__titel { margin: 0; font-family: var(--wb-font-heading); font-size: 1.15rem; font-weight: 700; line-height: 1.3; color: var(--wb-heading); text-wrap: balance; overflow-wrap: anywhere; }
.wb-bt__titel a { color: inherit; text-decoration: none; }
/* Ganze Karte klickbar — über den einen Link im Titel */
.wb-bt__titel a::after { content: ''; position: absolute; inset: 0; z-index: 1; }
.wb-bt__eintrag:hover .wb-bt__titel a { color: var(--wb-primary-text, var(--wb-primary)); }
.wb-bt__titel a:focus-visible { outline: none; }
.wb-bt__eintrag:focus-within { outline: 2px solid var(--wb-primary); outline-offset: 4px; }
.wb-bt__marken { display: flex; flex-wrap: wrap; gap: 6px; }
/* Über dem Titel: Datum (klein, ruhig) und daneben die Kennzeichen */
.wb-bt__oben { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.wb-bt__datum { font-size: .85rem; line-height: 1.4; color: var(--wb-text-light); font-variant-numeric: tabular-nums; }
.wb-bt__marke { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 100px; border: 1px solid var(--wb-border); background: var(--wb-bg-soft); color: var(--wb-text-light); font-size: .72rem; font-weight: 600; letter-spacing: .03em; line-height: 1.4; }
.wb-bt__marke--top { background: var(--wb-primary); border-color: var(--wb-primary); color: var(--wb-on-primary, var(--wb-btn-text, #fff)); }
.wb-bt__meta { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: 0; color: var(--wb-text-light); font-size: .875rem; line-height: 1.45; font-variant-numeric: tabular-nums; }
.wb-bt__meta > span { display: inline-flex; align-items: baseline; gap: 6px; }
.wb-bt__meta svg { opacity: .7; position: relative; top: 2px; }
.wb-bt__teaser { margin: 0; color: var(--wb-text-light); font-size: .975rem; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.wb-bt__mehr { display: inline-flex; align-items: center; gap: 6px; margin-top: auto; padding-top: 4px; color: var(--wb-primary-text, var(--wb-primary)); font-weight: 600; font-size: .9rem; }
.wb-bt__eintrag:hover .wb-bt__mehr svg { transform: translateX(3px); }
.wb-bt__mehr svg { transition: transform var(--wb-transition); }

/* Kalenderblatt — auf dem Bild oder als eigener Block */
.wb-bt__kalender { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; min-width: 58px; padding: 8px 10px; border-radius: var(--wb-radius-sm); background: var(--wb-primary); color: var(--wb-on-primary, var(--wb-btn-text, #fff)); line-height: 1; text-align: center; }
.wb-bt__tag { font-family: var(--wb-font-heading); font-size: 1.5rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.wb-bt__monat { margin-top: 4px; font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.wb-bt__bild .wb-bt__kalender { position: absolute; top: 12px; left: 12px; box-shadow: 0 4px 14px rgba(0,0,0,.18); }
.wb-bt__datum-block { flex-shrink: 0; }

/* Stil «Karte»: Fläche, Rahmen, Schatten */
.wb-bt--stil-karte .wb-bt__eintrag { background: var(--wb-bg); border: 1px solid var(--wb-border); border-radius: var(--wb-radius-lg); overflow: hidden; box-shadow: var(--wb-shadow); transition: transform var(--wb-transition), box-shadow var(--wb-transition); }
.wb-bt--stil-karte .wb-bt__eintrag:hover { transform: translateY(-3px); box-shadow: var(--wb-shadow-md); }
.wb-bt--stil-karte .wb-bt__text { padding: 22px 24px 24px; }
.wb-bt--stil-karte .wb-bt__eintrag--top { border-color: var(--wb-primary); box-shadow: 0 0 0 1px var(--wb-primary), var(--wb-shadow); }
/* Stil «Flach»: ohne Rahmen, Bild gerundet */
.wb-bt--stil-flach .wb-bt__bild { border-radius: var(--wb-radius); }
.wb-bt--stil-flach .wb-bt__text { padding-top: 16px; }
/* Stil «Text auf dem Bild» */
.wb-bt--stil-ueberlagert .wb-bt__eintrag { border-radius: var(--wb-radius-lg); overflow: hidden; background: #111; isolation: isolate; }
.wb-bt--stil-ueberlagert .wb-bt__bild { position: absolute; inset: 0; aspect-ratio: auto; z-index: -1; }
.wb-bt--stil-ueberlagert .wb-bt__bild::after { content: ''; position: absolute; inset: 0; background: rgba(0,0,0,.08); }
.wb-bt--stil-ueberlagert .wb-bt__eintrag { aspect-ratio: var(--wb-bt-format, 16/9); justify-content: flex-end; min-height: 240px; }
/* Der Verlauf liegt hinter dem Text und wächst mit ihm — so bleibt er auch auf hellen Fotos lesbar */
.wb-bt--stil-ueberlagert .wb-bt__text { flex: 0 0 auto; padding: 64px 24px 22px; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.35);
  background: linear-gradient(to top, rgba(0,0,0,.86) 0%, rgba(0,0,0,.72) 55%, rgba(0,0,0,0) 100%); }
.wb-bt--stil-ueberlagert .wb-bt__titel,
.wb-bt--stil-ueberlagert .wb-bt__eintrag:hover .wb-bt__titel a { color: #fff; }
.wb-bt--stil-ueberlagert .wb-bt__meta,
.wb-bt--stil-ueberlagert .wb-bt__datum,
.wb-bt--stil-ueberlagert .wb-bt__teaser { color: rgba(255,255,255,.86); }
.wb-bt--stil-ueberlagert .wb-bt__mehr { color: #fff; }
.wb-bt--stil-ueberlagert .wb-bt__marke { background: rgba(255,255,255,.16); border-color: rgba(255,255,255,.3); color: #fff; }
.wb-bt--stil-ueberlagert .wb-bt__marke--top { background: var(--wb-primary); border-color: var(--wb-primary); color: var(--wb-on-primary, var(--wb-btn-text, #fff)); }
.wb-bt--stil-ueberlagert .wb-bt__platzhalter { background: var(--wb-primary); color: var(--wb-on-primary, var(--wb-btn-text, #fff)); align-items: flex-start; padding-top: 18%; }
.wb-bt--stil-ueberlagert .wb-bt__platzhalter--datum { align-items: center; padding-top: 0; justify-content: flex-start; padding-top: 12%; }

/* Karten */
.wb-bt--karten { display: grid; grid-template-columns: repeat(var(--wb-bt-spalten, 3), minmax(0, 1fr)); gap: var(--wb-bt-gap); }
.wb-bt--karten .wb-bt__eintrag--gross { grid-column: span 2; }
.wb-bt--karten.wb-bt--stil-karte .wb-bt__eintrag--gross { flex-direction: row; }
.wb-bt--karten.wb-bt--stil-karte .wb-bt__eintrag--gross .wb-bt__bild { width: 55%; aspect-ratio: auto; min-height: 100%; }
.wb-bt--karten .wb-bt__eintrag--gross .wb-bt__titel { font-size: clamp(1.3rem, 2.2vw, 1.75rem); }

/* Liste: Bild seitlich */
.wb-bt--liste { display: flex; flex-direction: column; gap: 20px; }
.wb-bt--liste .wb-bt__eintrag { flex-direction: row; align-items: stretch; gap: 0; }
.wb-bt--liste .wb-bt__bild { width: clamp(180px, 34%, 380px); }
/* Bildgrösse der Liste: klein = ein Fünftel, oben bündig neben dem Text */
.wb-bt--liste.wb-bt--bildbreite-klein .wb-bt__eintrag { align-items: flex-start; }
.wb-bt--liste.wb-bt--bildbreite-klein .wb-bt__bild { width: clamp(96px, 20%, 220px); }
.wb-bt--liste.wb-bt--bildbreite-gross .wb-bt__bild { width: clamp(220px, 50%, 560px); }
.wb-bt--liste.wb-bt--bildbreite-klein.wb-bt--stil-karte .wb-bt__bild { margin: 20px 0 20px 20px; border-radius: var(--wb-radius); }
.wb-bt--liste.wb-bt--bildbreite-klein.wb-bt--stil-karte .wb-bt__eintrag--rechts .wb-bt__bild,
.wb-bt--liste.wb-bt--bildbreite-klein.wb-bt--stil-karte.wb-bt--bild-rechts .wb-bt__bild { margin: 20px 20px 20px 0; }
.wb-bt--liste.wb-bt--bildbreite-klein.wb-bt--stil-karte .wb-bt__text { justify-content: flex-start; }
/* Flache Liste: Luft und eine feine Linie zwischen den Einträgen */
.wb-bt--liste.wb-bt--stil-flach { gap: 0; }
.wb-bt--liste.wb-bt--stil-flach .wb-bt__eintrag { padding: 28px 0; border-top: 1px solid var(--wb-border); }
.wb-bt--liste.wb-bt--stil-flach .wb-bt__eintrag:first-child { padding-top: 0; border-top: 0; }
.wb-bt--liste.wb-bt--stil-flach .wb-bt__eintrag:last-child { padding-bottom: 0; }
.wb-bt--liste.wb-bt--stil-flach .wb-bt__text { gap: 8px; }
.wb-bt--liste .wb-bt__titel { font-size: clamp(1.15rem, 1.6vw, 1.35rem); }
.wb-bt--liste.wb-bt--stil-flach .wb-bt__eintrag,
.wb-bt--liste.wb-bt--stil-flach .wb-bt__eintrag { gap: 24px; }
.wb-bt--liste.wb-bt--stil-flach .wb-bt__text { padding-top: 4px; }
.wb-bt--liste.wb-bt--stil-karte .wb-bt__text { justify-content: center; }
.wb-bt--liste.wb-bt--bild-rechts .wb-bt__bild,
.wb-bt--liste .wb-bt__eintrag--rechts .wb-bt__bild { order: 2; }
.wb-bt--liste .wb-bt__datum-block { display: flex; align-items: flex-start; padding: 22px 0 22px 24px; }
.wb-bt--liste.wb-bt--stil-flach .wb-bt__datum-block { padding: 4px 0 0; }
.wb-bt--liste .wb-bt__datum-block .wb-bt__kalender { min-width: 64px; padding: 10px 12px; }
.wb-bt--liste.wb-bt--stil-ueberlagert .wb-bt__eintrag { aspect-ratio: 21/9; }

/* Magazin: ein grosser Eintrag, daneben kleine */
.wb-bt--magazin { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: var(--wb-bt-gap); align-items: start; }
.wb-bt--magazin .wb-bt__haupt .wb-bt__titel { font-size: clamp(1.35rem, 2.4vw, 1.9rem); }
.wb-bt--magazin .wb-bt__neben { display: flex; flex-direction: column; gap: 16px; }
.wb-bt--magazin .wb-bt__neben .wb-bt__eintrag { flex-direction: row; align-items: center; gap: 16px; aspect-ratio: auto; min-height: 0; background: transparent; border: 0; box-shadow: none; border-radius: 0; isolation: auto; transform: none; }
.wb-bt--magazin .wb-bt__neben .wb-bt__bild { position: relative; inset: auto; z-index: 0; width: 34%; max-width: 170px; aspect-ratio: var(--wb-bt-format, 16/9); border-radius: var(--wb-radius); }
.wb-bt--magazin .wb-bt__neben .wb-bt__bild::after { display: none; }
.wb-bt--magazin .wb-bt__neben .wb-bt__text { padding: 0; color: var(--wb-text); gap: 6px; background: none; text-shadow: none; }
.wb-bt--magazin .wb-bt__neben .wb-bt__platzhalter--datum .wb-bt__gross-wt { display: none; }
.wb-bt--magazin .wb-bt__neben .wb-bt__gross-tag { font-size: 1.6rem; }
.wb-bt--magazin .wb-bt__neben .wb-bt__titel { font-size: 1rem; color: var(--wb-heading); }
.wb-bt--magazin .wb-bt__neben .wb-bt__meta { color: var(--wb-text-light); }
.wb-bt--magazin .wb-bt__neben .wb-bt__marke { background: var(--wb-bg-soft); border-color: var(--wb-border); color: var(--wb-text-light); }
.wb-bt--magazin .wb-bt__neben .wb-bt__bild .wb-bt__kalender { top: 6px; left: 6px; min-width: 42px; padding: 5px 6px; }
.wb-bt--magazin .wb-bt__neben .wb-bt__bild .wb-bt__tag { font-size: 1.05rem; }
.wb-bt--magazin .wb-bt__neben .wb-bt__eintrag + .wb-bt__eintrag { padding-top: 16px; border-top: 1px solid var(--wb-border); }

/* Karussell: wischen, mit Pfeilen */
.wb-bt--karussell { position: relative; }
.wb-bt--karussell .wb-bt__spur { display: flex; gap: var(--wb-bt-gap); overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scroll-padding-inline: 4px; padding: 4px 4px 18px; margin: -4px -4px 0; scrollbar-width: thin; }
.wb-bt--karussell .wb-bt__eintrag { flex: 0 0 calc((100% - (var(--wb-bt-spalten, 3) - 1) * var(--wb-bt-gap)) / var(--wb-bt-spalten, 3)); scroll-snap-align: start; }
.wb-bt__pfeile { display: flex; justify-content: flex-end; gap: 8px; margin-top: 6px; }
.wb-bt__pfeile[hidden] { display: none; }
.wb-bt__pfeil { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--wb-border); background: var(--wb-bg); color: var(--wb-text); cursor: pointer; transition: background var(--wb-transition), color var(--wb-transition), border-color var(--wb-transition); }
.wb-bt__pfeil:hover:not(:disabled) { background: var(--wb-primary); border-color: var(--wb-primary); color: var(--wb-on-primary, var(--wb-btn-text, #fff)); }
.wb-bt__pfeil:disabled { opacity: .35; cursor: default; }
.wb-bt__pfeil:focus-visible { outline: 2px solid var(--wb-primary); outline-offset: 2px; }

/* Kompakt: Datum + Titel, ohne Bilder */
.wb-bt--kompakt { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--wb-border); }
.wb-bt--kompakt .wb-bt__eintrag { flex-direction: row; align-items: center; gap: 16px; padding: 14px 4px; border-bottom: 1px solid var(--wb-border); }
.wb-bt--kompakt .wb-bt__text { gap: 4px; }
.wb-bt--kompakt .wb-bt__titel { font-size: 1rem; font-family: inherit; }
.wb-bt--kompakt .wb-bt__kalender { min-width: 48px; padding: 6px 8px; }
.wb-bt--kompakt .wb-bt__tag { font-size: 1.15rem; }
.wb-bt--kompakt .wb-bt__zeiger { flex-shrink: 0; margin-left: auto; color: var(--wb-text-light); transition: transform var(--wb-transition), color var(--wb-transition); }
.wb-bt--kompakt .wb-bt__eintrag:hover .wb-bt__zeiger { transform: translateX(3px); color: var(--wb-primary-text, var(--wb-primary)); }
.wb-bt--kompakt .wb-bt__marke--top { vertical-align: 2px; margin-right: 4px; }
.wb-bt--kompakt .wb-bt__eintrag:focus-within { outline-offset: 0; }

/* «Alle anzeigen», leerer Bereich */
.wb-bt-alle { display: flex; justify-content: center; margin-top: 36px; }
.wb-bt-alle .wb-btn { display: inline-flex; align-items: center; gap: 8px; }
.wb-bt-leer { margin: 0; text-align: center; color: var(--wb-text-light); }

/* Übersichten: Kopf, Kategorien, Seiten */
.wb-bt-seite { padding-top: clamp(40px, 6vw, 64px); }
.wb-bt-kopf { margin-bottom: 32px; }
.wb-bt-kopf h1 { margin: 0 0 8px; font-family: var(--wb-font-heading); font-size: clamp(2rem, 4vw, 3rem); line-height: 1.15; color: var(--wb-heading); text-wrap: balance; }
.wb-bt-kopf p { margin: 0; color: var(--wb-text-light); }
.wb-bt-filter, .wb-bt-reiter { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 28px; }
.wb-bt-filter a, .wb-bt-reiter a { display: inline-flex; align-items: center; padding: 7px 16px; border-radius: 100px; border: 1px solid var(--wb-border); background: var(--wb-bg); color: var(--wb-text); font-size: .9rem; font-weight: 500; text-decoration: none; transition: border-color var(--wb-transition), background var(--wb-transition), color var(--wb-transition); }
.wb-bt-filter a:hover, .wb-bt-reiter a:hover { border-color: var(--wb-primary); color: var(--wb-primary-text, var(--wb-primary)); }
.wb-bt-filter a[aria-current], .wb-bt-reiter a[aria-current] { background: var(--wb-primary); border-color: var(--wb-primary); color: var(--wb-on-primary, var(--wb-btn-text, #fff)); }
.wb-bt-reiter { gap: 0; padding: 4px; border: 1px solid var(--wb-border); border-radius: 100px; width: fit-content; }
.wb-bt-reiter a { border: 0; }
.wb-bt-seiten { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 6px; margin-top: 44px; font-variant-numeric: tabular-nums; }
.wb-bt-seiten a, .wb-bt-seiten span { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; height: 40px; padding: 0 10px; border-radius: var(--wb-radius-sm); border: 1px solid var(--wb-border); color: var(--wb-text); text-decoration: none; }
.wb-bt-seiten a:hover { border-color: var(--wb-primary); color: var(--wb-primary-text, var(--wb-primary)); }
.wb-bt-seiten span[aria-current] { background: var(--wb-primary); border-color: var(--wb-primary); color: var(--wb-on-primary, var(--wb-btn-text, #fff)); font-weight: 700; }
.wb-bt-seiten .wb-bt-seiten__luecke { border: 0; min-width: 20px; padding: 0; }

/* Detailseite */
.wb-bt-detail { max-width: 820px; margin-inline: auto; }
.wb-bt-detail__kopf { margin-bottom: 28px; }
.wb-bt-detail__kopf h1 { margin: 12px 0 14px; font-family: var(--wb-font-heading); font-size: clamp(2rem, 4.2vw, 3.1rem); line-height: 1.12; color: var(--wb-heading); text-wrap: balance; overflow-wrap: anywhere; }
.wb-bt-detail__bild { margin: 0 0 36px; border-radius: var(--wb-radius-lg); overflow: hidden; aspect-ratio: 16/9; background: var(--wb-bg-soft); }
.wb-bt-detail__bild img { display: block; width: 100%; height: 100%; object-fit: cover; }
/* Detailseite «Bild klein»: links neben dem Text, der Text fliesst daneben */
.wb-bt-detail__bild--klein { float: left; width: clamp(140px, 30%, 280px); aspect-ratio: 4/3; margin: 6px 28px 18px 0; border-radius: var(--wb-radius); }
.wb-bt-detail__kopf .wb-bt__oben { margin-bottom: 4px; }
.wb-bt-detail__kopf h1 { margin-top: 8px; }
.wb-bt-detail__fuss, .wb-bt-fakten, .wb-bt-knoepfe, .wb-bt-anmeldung { clear: both; }
.wb-bt-detail .prose::after { content: ''; display: block; clear: both; }
.wb-bt-detail__bild figcaption { padding: 8px 2px 0; font-size: .85rem; color: var(--wb-text-light); }
.wb-bt-detail__vorspann { margin: 0 0 26px; font-size: 1.18rem; line-height: 1.65; color: var(--wb-text); opacity: .9; }
.wb-bt-fakten { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px 28px; margin: 0 0 30px; padding: 22px 24px; border: 1px solid var(--wb-border); border-radius: var(--wb-radius); background: var(--wb-bg-soft); }
.wb-bt-fakten div { position: relative; padding-left: 32px; }
.wb-bt-fakten dt svg { position: absolute; left: 0; top: 1px; color: var(--wb-primary-text, var(--wb-primary)); }
.wb-bt-fakten dt { font-size: .75rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--wb-text-light); margin-bottom: 3px; }
.wb-bt-fakten dd { margin: 0; color: var(--wb-text); line-height: 1.5; }
.wb-bt-fakten dd a { color: var(--wb-primary-text, var(--wb-primary)); }
.wb-bt-knoepfe { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 34px; }
.wb-bt-knoepfe .wb-btn { display: inline-flex; align-items: center; gap: 8px; }
.wb-bt-hinweis { margin: 0 0 28px; padding: 14px 18px; border-radius: var(--wb-radius); border: 1px solid var(--wb-border); background: var(--wb-bg-soft); color: var(--wb-text-light); }
.wb-bt-anmeldung { margin-top: 48px; padding: 30px; border: 1px solid var(--wb-border); border-radius: var(--wb-radius-lg); background: var(--wb-bg); }
.wb-bt-anmeldung h2 { margin: 0 0 18px; font-family: var(--wb-font-heading); font-size: 1.5rem; color: var(--wb-heading); }
.wb-bt-detail__fuss { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 52px; padding-top: 28px; border-top: 1px solid var(--wb-border); }
.wb-bt-weitere { margin-top: 72px; }
.wb-bt-weitere > h2 { margin: 0 0 26px; font-family: var(--wb-font-heading); font-size: 1.6rem; color: var(--wb-heading); }

@media (max-width: 1024px) {
  .wb-bt--karten.wb-bt--sp-3, .wb-bt--karten.wb-bt--sp-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wb-bt--karussell.wb-bt--sp-3 .wb-bt__eintrag, .wb-bt--karussell.wb-bt--sp-4 .wb-bt__eintrag { flex-basis: calc((100% - var(--wb-bt-gap)) / 2); }
}
@media (max-width: 720px) {
  .wb-bt { --wb-bt-gap: 20px; }
  .wb-bt--karten { grid-template-columns: minmax(0, 1fr) !important; }
  .wb-bt--karten .wb-bt__eintrag--gross { grid-column: auto; }
  .wb-bt--karten.wb-bt--stil-karte .wb-bt__eintrag--gross { flex-direction: column; }
  .wb-bt--karten.wb-bt--stil-karte .wb-bt__eintrag--gross .wb-bt__bild { width: 100%; aspect-ratio: var(--wb-bt-format, 16/9); }
  .wb-bt--liste:not(.wb-bt--bildbreite-klein) .wb-bt__eintrag { flex-direction: column; }
  .wb-bt--liste:not(.wb-bt--bildbreite-klein) .wb-bt__bild { width: 100%; order: 0 !important; }
  .wb-bt--liste.wb-bt--bildbreite-klein .wb-bt__bild { width: 28%; min-width: 84px; }
  .wb-bt--liste.wb-bt--stil-flach .wb-bt__eintrag { padding: 22px 0; }
  .wb-bt-detail__bild--klein { float: none; width: 100%; aspect-ratio: 16/9; margin: 0 0 24px; }
  .wb-bt--liste .wb-bt__datum-block { padding: 20px 24px 0; }
  .wb-bt--liste.wb-bt--stil-flach .wb-bt__eintrag { gap: 14px; }
  .wb-bt--magazin { grid-template-columns: minmax(0, 1fr); }
  .wb-bt--karussell .wb-bt__eintrag { flex-basis: 84% !important; }
  .wb-bt--stil-ueberlagert .wb-bt__teaser { -webkit-line-clamp: 2; }
  .wb-bt--stil-karte .wb-bt__text { padding: 18px 20px 20px; }
  .wb-bt-anmeldung { padding: 22px 18px; }
}
@media (prefers-reduced-motion: reduce) {
  .wb-bt__bild img, .wb-bt__eintrag, .wb-bt__mehr svg, .wb-bt__zeiger { transition: none !important; }
  .wb-bt__eintrag:hover .wb-bt__bild img { transform: none; }
  .wb-bt--karussell .wb-bt__spur { scroll-behavior: auto; }
}

/* ── Navigation ────────────────────────────────────────────── */
.wb-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: var(--wb-bg);
  border-bottom: 1px solid var(--wb-border);
  transition: box-shadow var(--wb-transition), background var(--wb-transition);
}
.wb-header.scrolled {
  box-shadow: 0 4px 24px rgba(0,0,0,.08);
}
.wb-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 72px;
  gap: 32px;
  max-width: 1400px;
  margin-inline: auto;
}
.wb-nav__logo {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 1.375rem;
  font-weight: 800;
  color: var(--wb-primary-text, var(--wb-primary));
  text-decoration: none;
  white-space: nowrap;
  flex-shrink: 0;
}
.wb-nav__logo:hover { opacity: 0.85; }
.wb-nav__logo img { height: 40px; width: auto; }
.wb-nav__menu {
  display: flex;
  align-items: center;
  gap: 4px;
  list-style: none;
}
.wb-nav__item { position: relative; }
.wb-nav__link {
  display: block;
  padding: 8px 14px;
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--wb-text);
  border-radius: var(--wb-radius-sm);
  transition: background var(--wb-transition), color var(--wb-transition);
  white-space: nowrap;
}
.wb-nav__link:hover,
.wb-nav__link.active { background: var(--wb-bg-soft); color: var(--wb-primary-text, var(--wb-primary)); opacity: 1; }
.wb-nav__link.active { font-weight: 600; }

/* Dropdown */
.wb-nav__dropdown {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  min-width: 220px;
  background: var(--wb-bg);
  border: 1px solid var(--wb-border);
  border-radius: var(--wb-radius);
  box-shadow: var(--wb-shadow-md);
  list-style: none;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px);
  transition: opacity var(--wb-transition), transform var(--wb-transition), visibility var(--wb-transition);
  z-index: 100;
  padding: 8px;
}
.wb-nav__item:hover .wb-nav__dropdown,
.wb-nav__item:focus-within .wb-nav__dropdown {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.wb-nav__dropdown a {
  display: block;
  padding: 10px 14px;
  font-size: 0.9375rem;
  color: var(--wb-text);
  border-radius: var(--wb-radius-sm);
}
.wb-nav__dropdown a:hover { background: var(--wb-bg-soft); color: var(--wb-primary-text, var(--wb-primary)); }

/* Hamburger */
.wb-nav__hamburger {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 8px;
  border-radius: var(--wb-radius-sm);
}
.wb-nav__hamburger span {
  display: block;
  width: 24px;
  height: 2px;
  background: var(--wb-primary);
  transition: transform var(--wb-transition), opacity var(--wb-transition);
  border-radius: 2px;
}
.wb-nav__hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.wb-nav__hamburger.open span:nth-child(2) { opacity: 0; }
.wb-nav__hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Mobile nav */
@media (max-width: 768px) {
  .wb-nav__hamburger { display: flex; }
  .wb-nav__menu {
    position: fixed;
    inset: 72px 0 0;
    background: var(--wb-bg);
    flex-direction: column;
    align-items: stretch;
    padding: 24px;
    gap: 4px;
    overflow-y: auto;
    transform: translateX(100%);
    transition: transform var(--wb-transition);
    border-top: 1px solid var(--wb-border);
  }
  .wb-nav__menu.open { transform: translateX(0); }
  .wb-nav__link { padding: 14px 16px; font-size: 1.0625rem; }
  .wb-nav__dropdown {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    box-shadow: none;
    border: none;
    background: var(--wb-bg-soft);
    border-radius: var(--wb-radius);
    margin-top: 4px;
    display: none;
  }
  .wb-nav__item.open .wb-nav__dropdown { display: block; }
}

/* ── Footer ────────────────────────────────────────────────── */
.wb-footer {
  background: var(--wb-primary);
  color: rgba(255,255,255,0.8);
  padding-block: 64px 32px;
}
.wb-footer__grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 48px;
  margin-bottom: 48px;
}
.wb-footer__brand .wb-nav__logo { color: #fff; margin-bottom: 16px; }
.wb-footer__brand p { font-size: 0.9375rem; opacity: 0.7; max-width: 280px; line-height: 1.6; }
.wb-footer__col h4 {
  font-size: 0.875rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: #fff;
  margin-bottom: 16px;
}
.wb-footer__col ul { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.wb-footer__col a {
  color: rgba(255,255,255,0.65);
  font-size: 0.9375rem;
  transition: color var(--wb-transition);
}
.wb-footer__col a:hover { color: #fff; opacity: 1; }
.wb-footer__bottom {
  border-top: 1px solid rgba(255,255,255,0.1);
  padding-top: 24px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  font-size: 0.875rem;
  opacity: 0.6;
}

@media (max-width: 1024px) {
  .wb-footer__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .wb-footer__grid { grid-template-columns: 1fr; gap: 32px; }
  .wb-footer__bottom { flex-direction: column; text-align: center; }
}

/* ── Cookie Banner ─────────────────────────────────────────── */
#wb-cookie-banner {
  position: fixed;
  bottom: 24px;
  left: 24px;
  right: 24px;
  max-width: 640px;
  margin: 0 auto;
  background: var(--wb-primary);
  color: var(--wb-on-primary, rgba(255,255,255,0.9));
  padding: 20px 24px;
  border-radius: var(--wb-radius-lg);
  box-shadow: var(--wb-shadow-lg);
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
  z-index: 9999;
  transform: translateY(calc(100% + 48px));
  transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}
#wb-cookie-banner.visible { transform: translateY(0); }
#wb-cookie-banner p { flex: 1; font-size: 0.875rem; margin: 0; min-width: 200px; line-height: 1.5; }
#wb-cookie-banner a { color: inherit; text-decoration: underline; }
#wb-cookie-banner .wb-cookie-actions {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
  flex-wrap: wrap;
}
#wb-cookie-banner .wb-btn { padding: 10px 20px; font-size: 0.875rem; }

/* ── Swiper override ───────────────────────────────────────── */
.swiper-button-next,
.swiper-button-prev {
  color: var(--wb-primary-text, var(--wb-primary)) !important;
}
.swiper-pagination-bullet-active { background: var(--wb-primary) !important; }

/* ── AOS overrides ─────────────────────────────────────────── */
[data-aos] { pointer-events: none; }
[data-aos].aos-animate { pointer-events: auto; }

/* ── Utility ───────────────────────────────────────────────── */
.wb-spacer { display: block; }
/* HTML block — wrapped in .container/.prose by default, .wb-html--raw skips that
   for embedded widgets, full-width custom HTML, iframes, etc. */
.wb-html--raw { padding: 0; }
.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;
}

/* ── 404 page ──────────────────────────────────────────────── */
.wb-404 {
  min-height: 60vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding-block: 80px;
}
.wb-404__code {
  font-size: clamp(6rem, 15vw, 10rem);
  font-weight: 900;
  color: var(--wb-primary-text, var(--wb-primary));
  line-height: 1;
  opacity: 0.08;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  white-space: nowrap;
}
.wb-404__inner { position: relative; z-index: 1; }
.wb-404__inner h1 {
  font-size: clamp(2rem, 5vw, 3.5rem);
  font-weight: 800;
  color: var(--wb-primary-text, var(--wb-primary));
  margin-bottom: 16px;
}
.wb-404__inner p { color: var(--wb-text-light); margin-bottom: 32px; font-size: 1.125rem; }

/* ── wb-row block ──────────────────────────────────────────── */
.wb-row {
  padding-block: 64px;
}

/* Style variants */
.wb-row--plain   { background: #fff; }
.wb-row--tinted  { background: #f8fafc; }
.wb-row--dark    { background: #1a1f2e; color: #fff; }
.wb-row--dark .wb-row-item__title  { color: #fff; }
.wb-row--dark .wb-row-item__text   { color: #cbd5e1; }
.wb-row--dark .wb-row-item__link   { color: #fde68a; }
.wb-row--colored { background: var(--wb-primary); color: var(--wb-on-primary, #fff); }
.wb-row--colored .wb-row-item__title { color: #fff; }
.wb-row--colored .wb-row-item__text  { color: rgba(255,255,255,.85); }

/* Grid */
.wb-row-grid {
  display: grid;
  gap: 32px;
}

/* Column counts */
.wb-row-cols-2 { grid-template-columns: repeat(2, 1fr); }
.wb-row-cols-3 { grid-template-columns: repeat(3, 1fr); }
.wb-row-cols-4 { grid-template-columns: repeat(4, 1fr); }

/* Gap variants */
.wb-row-gap-tight  { gap: 16px; }
.wb-row-gap-normal { gap: 32px; }
.wb-row-gap-wide   { gap: 48px; }

/* Align variants */
.wb-row-align-top     { align-items: start; }
.wb-row-align-center  { align-items: center; }
.wb-row-align-stretch { align-items: stretch; }

/* Responsive — 3/4 col → 2 col at 992px, 2 col → 1 col at 576px */
@media (max-width: 992px) {
  .wb-row-cols-3,
  .wb-row-cols-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  .wb-row-cols-2 { grid-template-columns: 1fr; }
}
@media (max-width: 576px) {
  .wb-row-cols-3,
  .wb-row-cols-4 { grid-template-columns: 1fr; }
}

/* ── Row item base ────── */
.wb-row-item {
  display: flex;
  flex-direction: column;
}

.wb-row-item__title {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--wb-heading);
  margin-bottom: 8px;
  margin-top: 12px;
}

.wb-row-item__text {
  font-size: 0.9375rem;
  color: var(--wb-text-light);
  line-height: 1.65;
  margin-bottom: 12px;
}

.wb-row-item__link {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--wb-accent-text, var(--wb-accent-dark, #b38f00));
  text-decoration: none;
  margin-top: auto;
}
.wb-row-item__link:hover { text-decoration: underline; }

/* icon_text */
.wb-row-item--icon-text { text-align: left; }
.wb-row-item__icon-circle {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.75rem;
  flex-shrink: 0;
}
.wb-row-item__icon-circle img {
  width: 32px;
  height: 32px;
  object-fit: contain;
}

/* stat */
.wb-row-item--stat { text-align: center; align-items: center; }
.wb-row-item__stat-value {
  font-size: clamp(2.5rem, 5vw, 4rem);
  font-weight: 900;
  color: var(--wb-primary-text, var(--wb-primary));
  line-height: 1;
}
.wb-row-item__stat-label {
  font-size: 1rem;
  font-weight: 600;
  color: var(--wb-heading);
  margin-top: 6px;
}
.wb-row-item__stat-desc {
  font-size: 0.875rem;
  color: var(--wb-text-light);
  margin-top: 6px;
}
.wb-row--dark .wb-row-item__stat-value  { color: #fde68a; }
.wb-row--dark .wb-row-item__stat-label  { color: #fff; }
.wb-row--colored .wb-row-item__stat-value { color: #fff; }

/* card */
.wb-row-item--card {
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 4px 20px rgba(0,0,0,.08);
  overflow: hidden;
}
.wb-row-item__card-img img {
  width: 100%;
  aspect-ratio: 16/9;
  object-fit: cover;
  display: block;
}
.wb-row-item__card-body {
  padding: 20px;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.wb-row-item--card .wb-row-item__title { margin-top: 0; }
.wb-row-item__card-footer { margin-top: auto; padding-top: 12px; }

/* step */
.wb-row-item--step { position: relative; padding-left: 0; }
.wb-row-item__step-num {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--wb-primary);
  color: var(--wb-on-primary, #fff);
  font-size: 1.25rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-bottom: 12px;
}
.wb-row--dark .wb-row-item__step-num { background: #fde68a; color: #1a1f2e; }

/* team_member */
.wb-row-item--team-member { text-align: center; align-items: center; }
.wb-row-item__team-photo {
  width: 96px;
  height: 96px;
  border-radius: 50%;
  overflow: hidden;
  margin-bottom: 12px;
  flex-shrink: 0;
}
.wb-row-item__team-photo img { width: 100%; height: 100%; object-fit: cover; }
.wb-row-item__team-photo--placeholder {
  background: var(--wb-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
  font-weight: 700;
  color: var(--wb-on-primary, #fff);
}
.wb-row-item__socials { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; justify-content: center; }
.wb-row-item__social {
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--wb-text-light);
  text-decoration: none;
  padding: 2px 8px;
  border: 1px solid var(--wb-border);
  border-radius: 20px;
  transition: color .15s, border-color .15s;
}
.wb-row-item__social:hover { color: var(--wb-primary-text, var(--wb-primary)); border-color: var(--wb-primary); }

/* testimonial_item */
.wb-row-item--testimonial {
  background: #fff;
  border-radius: 12px;
  padding: 24px;
  box-shadow: 0 2px 12px rgba(0,0,0,.06);
}
.wb-row-item__stars { color: #f59e0b; font-size: 1.125rem; margin-bottom: 12px; letter-spacing: 2px; }
.wb-row-item__quote {
  font-size: 0.9375rem;
  line-height: 1.7;
  color: var(--wb-text);
  font-style: italic;
  margin: 0 0 16px;
  border: none;
  padding: 0;
}
.wb-row-item__author { display: flex; flex-direction: column; gap: 2px; }
.wb-row-item__author strong { font-size: 0.9375rem; color: var(--wb-heading); }
.wb-row-item__author span  { font-size: 0.8125rem; color: var(--wb-text-light); }

/* image item */
.wb-row-item--image img { border-radius: 8px; }
.wb-row-item__caption { font-size: 0.8125rem; color: var(--wb-text-light); text-align: center; margin-top: 8px; }

/* ── Shop Block (quickBee Integration) ──────────────────── */
.wb-product-grid { display: grid; gap: 24px; }
.wb-product-cols-2 { grid-template-columns: repeat(2, 1fr); }
.wb-product-cols-3 { grid-template-columns: repeat(3, 1fr); }
.wb-product-cols-4 { grid-template-columns: repeat(4, 1fr); }
@media(max-width:992px){.wb-product-cols-3,.wb-product-cols-4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:576px){.wb-product-grid{grid-template-columns:1fr}}
.wb-product-card { background: var(--wb-surface); border-radius: var(--wb-radius); overflow: hidden; box-shadow: var(--wb-shadow); transition: transform .2s, box-shadow .2s; }
.wb-product-card:hover { transform: translateY(-4px); box-shadow: var(--wb-shadow-md); }
.wb-product-img-wrap { display: block; aspect-ratio: 1; overflow: hidden; position: relative; }
.wb-product-img-wrap img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.wb-product-card:hover .wb-product-img-wrap img { transform: scale(1.05); }
.wb-product-badge { position: absolute; top: 10px; left: 10px; background: #ef4444; color: white; font-size: .7rem; font-weight: 700; padding: 3px 8px; border-radius: 20px; letter-spacing: .05em; }
.wb-product-info { padding: 16px; }
.wb-product-name { font-size: .95rem; font-weight: 600; margin: 0 0 8px; }
.wb-product-name a { color: var(--wb-text); }
.wb-product-name a:hover { color: var(--wb-primary-text, var(--wb-primary)); }
.wb-product-price { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.wb-price-current { font-size: 1.05rem; font-weight: 700; color: var(--wb-primary-text, var(--wb-primary)); }
.wb-price-orig { font-size: .85rem; color: var(--wb-text-light); text-decoration: line-through; }
.wb-product-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.wb-btn-sm { padding: 6px 14px; font-size: .82rem; }
.wb-shop-cta { text-align: center; margin-top: 40px; }
.wb-shop-placeholder { text-align: center; padding: 60px 20px; color: var(--wb-text-light); }
.wb-shop-placeholder-icon { font-size: 3rem; margin-bottom: 16px; color: var(--wb-primary-text, var(--wb-primary, currentColor)); opacity: .8; }

/* ── Poll / Umfrage ────────────────────────────────────────── */
.wb-poll { max-width: 600px; margin: 0 auto; }
.wb-poll__question { font-size: 1.3rem; font-weight: 700; margin-bottom: 20px; line-height: 1.4; }
.wb-poll__options { display: flex; flex-direction: column; gap: 10px; }
.wb-poll__option {
    display: block; width: 100%; padding: 13px 18px;
    background: var(--wb-surface, rgba(255,255,255,.06));
    border: 2px solid var(--wb-border, rgba(255,255,255,.12));
    border-radius: 10px; cursor: pointer; text-align: left;
    font-size: 1rem; color: var(--wb-text, #fff);
    transition: background .15s, border-color .15s, transform .1s;
}
.wb-poll__option:hover { border-color: var(--wb-primary, #F5C400); background: var(--wb-bg-soft, rgba(0,0,0,.04)); transform: translateX(4px); }
.wb-poll__footer { margin-top: 14px; }
.wb-poll__show-results { background: none; border: none; color: var(--wb-text-light, rgba(255,255,255,.5)); font-size: .85rem; cursor: pointer; padding: 0; text-decoration: underline; }
.wb-poll__show-results:hover { color: var(--wb-primary-text, var(--wb-text, #1a1a1a)); }
.wb-poll__results { margin-top: 4px; }
.wb-poll__total { font-size: .85rem; color: var(--wb-text-light, rgba(255,255,255,.5)); margin-bottom: 14px; }
.wb-poll__result-row { margin-bottom: 12px; }
.wb-poll__result-label { display: flex; justify-content: space-between; font-size: .9rem; margin-bottom: 5px; }
.wb-poll__bar-track { background: var(--wb-surface, rgba(255,255,255,.08)); border-radius: 4px; height: 8px; overflow: hidden; }
.wb-poll__bar { height: 100%; background: var(--wb-primary, #F5C400); border-radius: 4px; transition: width .6s cubic-bezier(.34,1.56,.64,1); }
.wb-poll__msg { margin-top: 12px; font-size: .9rem; font-weight: 600; }

/* ── Newsletter ─────────────────────────────────────────────── */
.wb-newsletter { max-width: 560px; margin: 0 auto; text-align: center; padding: 48px 24px; }
.wb-newsletter__heading { font-size: 1.6rem; font-weight: 800; margin-bottom: 10px; }
.wb-newsletter__sub { color: var(--wb-text-light, rgba(255,255,255,.6)); margin-bottom: 28px; }
.wb-newsletter__form { display: flex; flex-direction: column; gap: 10px; }
.wb-nl__input {
    padding: 13px 16px; border-radius: 10px;
    border: 1.5px solid var(--wb-border, rgba(255,255,255,.15));
    background: var(--wb-surface, rgba(255,255,255,.06));
    color: var(--wb-text, #fff); font-size: 1rem; outline: none;
    transition: border-color .15s;
}
.wb-nl__input:focus { border-color: var(--wb-primary, #F5C400); }
.wb-nl__input::placeholder { color: var(--wb-text-light, rgba(255,255,255,.4)); }
.wb-nl__btn {
    padding: 13px 28px; border-radius: 10px; border: none; cursor: pointer;
    background: var(--wb-primary, #F5C400);
    color: var(--wb-on-primary, #1a1f2e); font-weight: 700; font-size: 1rem;
    transition: transform .15s, box-shadow .15s;
}
.wb-nl__btn:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0,0,0,.15); }
@media(min-width:480px){.wb-newsletter__form{flex-direction:row;}.wb-nl__input{flex:1;}.wb-nl__btn{white-space:nowrap;}}
.wb-newsletter__msg { margin-top: 14px; font-size: .9rem; font-weight: 600; }

/* ── Suche ──────────────────────────────────────────────────── */
.wb-search-block { padding: 48px 0; }
.wb-search__heading { font-size: 1.4rem; font-weight: 700; margin-bottom: 20px; }
.wb-search__form { display: flex; gap: 0; max-width: 600px; }
.wb-search__input {
    flex: 1; padding: 13px 18px; font-size: 1rem;
    border: 1.5px solid var(--wb-border, rgba(255,255,255,.15));
    border-right: none;
    border-radius: 10px 0 0 10px;
    background: var(--wb-surface, rgba(255,255,255,.06));
    color: var(--wb-text, #fff); outline: none;
    transition: border-color .15s;
}
.wb-search__input:focus { border-color: var(--wb-primary, #F5C400); }
.wb-search__input::placeholder { color: var(--wb-text-light, rgba(255,255,255,.4)); }
.wb-search__btn {
    padding: 13px 18px; border-radius: 0 10px 10px 0; border: none; cursor: pointer;
    background: var(--wb-primary, #F5C400);
    color: var(--wb-on-primary, #1a1f2e); display: flex; align-items: center;
    transition: opacity .15s;
}
.wb-search__btn:hover { opacity: .85; }
.wb-search__results { margin-top: 24px; max-width: 600px; }
.wb-search__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.wb-search__item { background: var(--wb-surface, rgba(255,255,255,.04)); border: 1px solid var(--wb-border, rgba(255,255,255,.08)); border-radius: 10px; }
.wb-search__link { display: block; padding: 14px 16px; text-decoration: none; transition: background .15s; border-radius: 10px; }
.wb-search__link:hover { background: var(--wb-bg-soft, rgba(0,0,0,.04)); }
.wb-search__link strong { display: block; color: var(--wb-text, #fff); font-size: .95rem; margin-bottom: 4px; }
.wb-search__excerpt { display: block; font-size: .85rem; color: var(--wb-text-light, rgba(255,255,255,.5)); }
.wb-search__empty { color: var(--wb-text-light, rgba(255,255,255,.5)); font-size: .9rem; margin: 16px 0; }

/* ── Blog post content — inserted image alignment (data-align) ─ */
/* Float: text wraps around image; no display:block so inline flow stays intact */
.wb-blog-content img[data-align="left"] {
    float: left;
    max-width: 45%;
    height: auto;
    margin: 0.25em 1.4em 0.6em 0;
    border-radius: 6px;
}
.wb-blog-content img[data-align="right"] {
    float: right;
    max-width: 45%;
    height: auto;
    margin: 0.25em 0 0.6em 1.4em;
    border-radius: 6px;
}
/* Center: noticeably smaller than full width */
.wb-blog-content img[data-align="center"] {
    display: block;
    margin: 1.2em auto;
    max-width: 65%;
    height: auto;
    border-radius: 8px;
    clear: both;
}
/* Full: spans the entire content column */
.wb-blog-content img[data-align="full"] {
    display: block;
    width: 100%;
    height: auto;
    margin: 1.4em 0;
    border-radius: 8px;
    clear: both;
}
.wb-blog-content::after { content:''; display:table; clear:both; }

/* ── Pricing-Block ─────────────────────────────────────────── */
.wb-pricing__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
    margin: 28px 0;
}
@media (max-width: 768px) { .wb-pricing__grid { grid-template-columns: 1fr; } }
.wb-pricing__card {
    background: var(--wb-surface, #ffffff);
    border: 1px solid var(--wb-border, rgba(0,0,0,.08));
    border-radius: 16px;
    padding: 32px 24px;
    text-align: center;
    transition: transform .2s, box-shadow .2s;
    position: relative;
}
.wb-pricing__card:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgba(0,0,0,.10); }
.wb-pricing__card--featured {
    border-color: var(--wb-primary, #EC4899);
    border-width: 2px;
    box-shadow: 0 12px 32px rgba(0,0,0,.12);
}
.wb-pricing__card--featured::before {
    content: 'Empfohlen';
    position: absolute;
    top: -12px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--wb-primary, #EC4899);
    color: var(--wb-on-primary, #fff);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
    padding: 4px 12px;
    border-radius: 999px;
}
.wb-pricing__tier {
    font-size: .85rem;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--wb-text-muted, #64748b);
    margin-bottom: 12px;
}
.wb-pricing__amount {
    font-size: 2.4rem;
    font-weight: 800;
    color: var(--wb-primary-text, var(--wb-primary, #EC4899));
    line-height: 1;
}
.wb-pricing__period {
    font-size: .9rem;
    color: var(--wb-text-muted, #64748b);
    margin-top: 4px;
}
.wb-pricing__save {
    font-size: .82rem;
    font-weight: 600;
    color: var(--wb-primary-text, var(--wb-primary, #EC4899));
    background: color-mix(in srgb, var(--wb-primary, #EC4899) 16%, transparent);
    margin-top: 12px;
    padding: 4px 12px;
    border-radius: 999px;
    display: inline-block;
}
.wb-pricing__billing {
    font-size: .82rem;
    color: var(--wb-text-muted, #64748b);
    margin-top: 14px;
    line-height: 1.5;
}
.wb-pricing__cta { margin-top: 18px; }
.wb-pricing__footnote {
    text-align: center;
    font-size: .9rem;
    color: var(--wb-text-muted, #64748b);
    margin-top: 6px;
}

/* ── Trust-Bar-Block ───────────────────────────────────────── */
.wb-trust-bar { --wb-trust-dot: var(--wb-primary, #EC4899); }
.wb-trust-bar__wrap {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    justify-content: center;
}
.wb-trust-bar__pill {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 8px 16px;
    border-radius: 999px;
    background: var(--wb-surface-2, rgba(0,0,0,.04));
    border: 1px solid var(--wb-border, rgba(0,0,0,.08));
    color: var(--wb-text, inherit);
    font-size: .9rem;
    font-weight: 500;
}
.wb-trust-bar__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--wb-trust-dot);
    flex-shrink: 0;
}

/* ── Feature-Flow-Block ────────────────────────────────────── */
.wb-feature-flow__grid {
    display: grid;
    grid-template-columns: repeat(var(--wb-feature-flow-cols, 2), 1fr);
    gap: 22px;
    align-items: stretch;
    max-width: 980px;
    margin: 0 auto;
}
@media (max-width: 768px) { .wb-feature-flow__grid { grid-template-columns: 1fr; } }
.wb-feature-flow__box {
    background: var(--wb-surface, #ffffff);
    border: 1px solid var(--wb-border, rgba(0,0,0,.08));
    border-radius: 14px;
    padding: 26px 24px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.wb-feature-flow__icon img {
    width: 44px;
    height: 44px;
    display: block;
}
.wb-feature-flow__title {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--wb-heading, inherit);
}
.wb-feature-flow__text {
    font-size: .95rem;
    color: var(--wb-text-muted, #64748b);
    line-height: 1.6;
}
.wb-feature-flow__arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--wb-text-muted, #94a3b8);
    opacity: .55;
}
@media (max-width: 768px) {
    .wb-feature-flow__arrow svg { transform: rotate(90deg); }
}

/* ── Seiten-Titel (H1 + Breadcrumbs) — Basic-Default ── */
.wb-page-header { padding: 1.5rem 0; }
.wb-page-header__inner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}
.wb-page-header__title {
    margin: 0;
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.2;
    color: var(--wb-heading, inherit);
    font-family: var(--wb-font-heading, inherit);
}
.wb-page-header__subtitle {
    margin: 0.35rem 0 0;
    color: var(--wb-text-muted, #64748b);
    font-size: 1.05rem;
}
.wb-page-header__crumbs {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 0;
    padding: 0;
    font-size: 0.9rem;
}
.wb-page-header__crumb + .wb-page-header__crumb::before {
    content: '/';
    margin-right: 0.4rem;
    color: var(--wb-text-muted, #94a3b8);
}
.wb-page-header__crumb a { color: inherit; text-decoration: none; }
.wb-page-header__crumb a:hover { color: var(--wb-primary-text, var(--wb-primary, #EC4899)); }
.wb-page-header__crumb--current { color: var(--wb-text-muted, #64748b); }
@media (max-width: 600px) {
    .wb-page-header__inner { flex-direction: column; align-items: flex-start; }
}

/* ── Preisliste (Basic-Default — Kunden können via Custom-CSS überschreiben) ── */
.wb-price-list {}
.wb-price-list__section { margin-bottom: 1.5rem; }
.wb-price-list__section-title {
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0 0 0.75rem;
    color: var(--wb-heading, inherit);
    font-family: var(--wb-font-heading, inherit);
}
.wb-price-list__cards {
    display: grid;
    gap: 1rem;
    grid-template-columns: 1fr;
}
.wb-price-list__section--cols-2 .wb-price-list__cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (max-width: 768px) {
    .wb-price-list__section--cols-2 .wb-price-list__cards { grid-template-columns: 1fr; }
}
.wb-price-list__card {}
.wb-price-list__card-title {
    font-size: 1.15rem;
    font-weight: 600;
    margin: 0 0 0.5rem;
}
.wb-price-list__items {
    list-style: none;
    padding: 0;
    margin: 0;
}
.wb-price-list__item {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.35rem 0;
    align-items: baseline;
}
.wb-price-list__item-text { flex: 1 1 auto; }
.wb-price-list__item-price {
    flex: 0 0 auto;
    white-space: nowrap;
    font-weight: 600;
}
.wb-price-list__item-duration {
    color: var(--wb-text-muted, #64748b);
    font-style: italic;
    font-size: 0.92em;
}

/* ── Section-Background (universell, gilt für JEDEN Block mit der Klasse) ──
   Malt --wb-section-bg als 100vmax-Schatten in beide Richtungen → Farbstreifen
   geht garantiert über volle Viewport-Breite, auch wenn der Eltern-Container
   (max-width) constraint ist. clip-path verhindert horizontales Scrollen. */
.wb-block--section-bg {
    position: relative;
    background: var(--wb-section-bg, transparent);
    box-shadow: 0 0 0 100vmax var(--wb-section-bg, transparent);
    clip-path: inset(0 -100vmax);
    /* etwas grosszügiger Innenabstand, damit Inhalt Luft zur Farbkante hat */
    padding-block: 60px;
}

/* ── Feature-Liste ─────────────────────────────────────────
   Flexibler Block für Icon/Bild + Titel + Text, Layout global steuerbar.
   Custom Properties werden pro Block via inline style gesetzt. */
.wb-feature-list__grid {
    display: grid;
    grid-template-columns: repeat(var(--wb-fl-cols, 1), minmax(0, 1fr));
    gap: 28px 32px;
}
.wb-feature-list__item {
    display: flex;
    gap: 18px;
}
/* Position: Medien links */
.wb-feature-list--pos-left .wb-feature-list__item {
    flex-direction: row;
    align-items: flex-start;
}
/* Position: Medien oben (über dem Titel) */
.wb-feature-list--pos-top .wb-feature-list__item {
    flex-direction: column;
    align-items: flex-start;
}
.wb-feature-list--pos-top.wb-feature-list--align-center .wb-feature-list__item { align-items: center; }
.wb-feature-list--pos-top.wb-feature-list--align-right  .wb-feature-list__item { align-items: flex-end; }

/* Medien-Wrapper: reserviert immer den vollen Raum, damit Titel neben grösseren
   und kleineren Icons konsistent bündig starten. */
.wb-feature-list__media {
    flex: 0 0 var(--wb-fl-media-wrap, 76px);
    width: var(--wb-fl-media-wrap, 76px);
    height: var(--wb-fl-media-wrap, 76px);
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 0;
    background: transparent;
}
.wb-feature-list--style-circle .wb-feature-list__media {
    background: var(--wb-fl-media-bg, #F3F4F6);
    border-radius: 50%;
}
.wb-feature-list--style-square .wb-feature-list__media {
    background: var(--wb-fl-media-bg, #F3F4F6);
    border-radius: 12px;
}
/* Kein Wrap-Padding wenn Stil "none" */
.wb-feature-list--style-none .wb-feature-list__media {
    flex: 0 0 var(--wb-fl-media-size, 48px);
    width: var(--wb-fl-media-size, 48px);
    height: var(--wb-fl-media-size, 48px);
}

/* Schatten unter den Icons (nur bei Stil circle/square) — bringt sie zur Geltung */
.wb-feature-list--shadow-sm.wb-feature-list--style-circle .wb-feature-list__media,
.wb-feature-list--shadow-sm.wb-feature-list--style-square .wb-feature-list__media {
    box-shadow: 0 2px 8px rgba(0, 0, 0, .08);
}
.wb-feature-list--shadow-md.wb-feature-list--style-circle .wb-feature-list__media,
.wb-feature-list--shadow-md.wb-feature-list--style-square .wb-feature-list__media {
    box-shadow: 0 5px 15px rgba(0, 0, 0, .12);
}
.wb-feature-list--shadow-lg.wb-feature-list--style-circle .wb-feature-list__media,
.wb-feature-list--shadow-lg.wb-feature-list--style-square .wb-feature-list__media {
    box-shadow: 0 10px 28px rgba(0, 0, 0, .16);
}

.wb-feature-list__body {
    flex: 1 1 auto;
    min-width: 0;
}
.wb-feature-list__title {
    margin: 0 0 6px;
    line-height: 1.25;
    font-family: var(--wb-font-heading, inherit);
    color: var(--wb-heading, inherit);
}
.wb-feature-list--title-sm .wb-feature-list__title { font-size: 1rem; }
.wb-feature-list--title-md .wb-feature-list__title { font-size: 1.15rem; }
.wb-feature-list--title-lg .wb-feature-list__title { font-size: 1.35rem; }
.wb-feature-list__title-link {
    color: inherit;
    text-decoration: none;
}
.wb-feature-list__title-link:hover .wb-feature-list__title {
    color: var(--wb-primary-text, var(--wb-primary, #EC4899));
}
/* Ganzer Eintrag als Link — sieht wie ein normaler Eintrag aus,
   nur mit Cursor-Pointer + sanftem Hover-Lift. */
.wb-feature-list__item--link {
    color: inherit;
    text-decoration: none;
    cursor: pointer;
    transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease;
    border-radius: 12px;
    padding: 12px;
    margin: -12px;
}
.wb-feature-list__item--link:hover {
    transform: translateY(-3px);
    background-color: rgba(0, 0, 0, .02);
}
.wb-feature-list__item--link:hover .wb-feature-list__title {
    color: var(--wb-primary-text, var(--wb-primary, #EC4899));
}
.wb-feature-list__item--link:focus-visible {
    outline: 2px solid var(--wb-primary, #EC4899);
    outline-offset: 3px;
}
.wb-feature-list__text {
    color: var(--wb-text-muted, #64748b);
    line-height: 1.6;
}
.wb-feature-list__text > *:first-child { margin-top: 0; }
.wb-feature-list__text > *:last-child  { margin-bottom: 0; }

/* Text-Ausrichtung */
.wb-feature-list--align-left  .wb-feature-list__body { text-align: left; }
.wb-feature-list--align-center .wb-feature-list__body { text-align: center; }
.wb-feature-list--align-right  .wb-feature-list__body { text-align: right; }

/* Optionale zweispaltige Variante: Bild + Liste nebeneinander */
.wb-feature-list__row {
    display: flex;
    gap: 40px;
    align-items: center;
}
.wb-feature-list__row > .wb-feature-list__image {
    flex: 0 0 var(--wb-fl-img-ratio, 50%);
    max-width: var(--wb-fl-img-ratio, 50%);
}
.wb-feature-list__row > .wb-feature-list__grid {
    flex: 1 1 auto;
    min-width: 0;
}
.wb-feature-list__image img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 12px;
}

/* Mobile: Grid immer einspaltig, Medien bleiben links (bei pos-left) für kompakteres Layout */
@media (max-width: 768px) {
    .wb-feature-list__grid { grid-template-columns: 1fr; gap: 22px; }
    /* Zweispaltiges Layout stapeln: Bild oben, Liste darunter */
    .wb-feature-list__row { flex-direction: column; gap: 24px; }
    .wb-feature-list__row > .wb-feature-list__image { flex: 0 0 auto; max-width: 100%; }
}

/* ── Lightbox (eigene Implementation für Templates ohne Fancybox) ──
   Weicher dunkler Hintergrund (nicht rein schwarz), Close-Button, ESC/Click-Outside.
   Prev/Next per Tastatur oder Buttons. Fade-in/out für ein weiches Öffnen. */
.wb-lightbox {
    position: fixed;
    inset: 0;
    background: rgba(30, 24, 23, 0.88);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10000;
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s ease, visibility 0s linear .3s;
    padding: 40px;
}
.wb-lightbox.is-open {
    opacity: 1;
    visibility: visible;
    transition: opacity .3s ease, visibility 0s linear 0s;
}
.wb-lightbox__stage {
    max-width: 100%;
    max-height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.wb-lightbox__img {
    max-width: min(1400px, 95vw);
    max-height: 85vh;
    height: auto;
    width: auto;
    border-radius: 6px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .5);
    display: block;
}
.wb-lightbox__close,
.wb-lightbox__prev,
.wb-lightbox__next {
    position: absolute;
    background: rgba(255, 255, 255, .1);
    border: 1px solid rgba(255, 255, 255, .25);
    color: #fff;
    cursor: pointer;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .15s ease, transform .15s ease;
    z-index: 2;
    backdrop-filter: blur(4px);
}
.wb-lightbox__close {
    top: 20px;
    right: 20px;
    width: 44px;
    height: 44px;
    font-size: 22px;
    line-height: 1;
}
.wb-lightbox__prev,
.wb-lightbox__next {
    top: 50%;
    transform: translateY(-50%);
    width: 52px;
    height: 52px;
    font-size: 20px;
}
.wb-lightbox__prev { left: 20px; }
.wb-lightbox__next { right: 20px; }
.wb-lightbox__close:hover,
.wb-lightbox__prev:hover,
.wb-lightbox__next:hover {
    background: rgba(255, 255, 255, .2);
}
.wb-lightbox__prev:hover { transform: translateY(-50%) translateX(-3px); }
.wb-lightbox__next:hover { transform: translateY(-50%) translateX(3px); }
@media (max-width: 640px) {
    .wb-lightbox { padding: 16px; }
    .wb-lightbox__close { top: 12px; right: 12px; width: 40px; height: 40px; }
    .wb-lightbox__prev,
    .wb-lightbox__next { width: 40px; height: 40px; }
    .wb-lightbox__prev { left: 8px; }
    .wb-lightbox__next { right: 8px; }
}

/* ── Kontakt-Block ────────────────────────────────────────────
   Info-Karten mit Icon (im Beauty/Salon-Stil, gepunkteter Kreis als Default),
   klickbare Adress-Karte, lazy-geladene Map, Formular unten. */
.wb-contact__cards {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 24px;
    margin-bottom: 24px;
}
@media (max-width: 900px) {
    .wb-contact__cards { grid-template-columns: 1fr; }
}
.wb-contact__card {
    padding: 32px 24px;
    text-align: center;
    background: var(--wb-surface, #fff);
    border-radius: 8px;
    transition: transform .18s ease, box-shadow .18s ease;
}
.wb-contact__card.is-clickable {
    cursor: pointer;
}
.wb-contact__card.is-clickable:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, .08);
}
.wb-contact__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
    margin: 0 auto 16px;
    color: var(--wb-contact-icon-color, #EC4899);
    border-radius: 50%;
}
.wb-contact__icon svg {
    width: 32px;
    height: 32px;
}
/* Voller Kreis */
.wb-contact--icon-circle .wb-contact__icon {
    background: rgba(236, 72, 153, .08);
    border: 2px solid var(--wb-contact-icon-border, #EC4899);
}
/* Gepunkteter Kreis — der typische Beauty-Studio-Look */
.wb-contact--icon-dotted .wb-contact__icon {
    background: transparent;
    border: 2px dotted var(--wb-contact-icon-border, #EC4899);
}
/* Ohne Kreis */
.wb-contact--icon-none .wb-contact__icon {
    background: transparent;
    border: none;
}
.wb-contact__title {
    margin: 0 0 8px;
    font-size: 1.15rem;
    font-weight: 600;
    color: var(--wb-heading, inherit);
    font-family: var(--wb-font-heading, inherit);
}
.wb-contact__text {
    margin: 0;
    color: var(--wb-text, inherit);
    line-height: 1.5;
}
.wb-contact__text a {
    color: inherit;
    text-decoration: none;
    border-bottom: 1px dotted currentColor;
}
.wb-contact__text a:hover { color: var(--wb-primary-text, var(--wb-primary, #EC4899)); }
.wb-contact__hint {
    margin: 8px 0 0;
    font-size: 11.5px;
    color: var(--wb-text-muted, #64748b);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-weight: 600;
}
/* Map-Bereich (initial versteckt, aufgeklappt via JS) */
.wb-contact__map {
    margin-top: 24px;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 4px 16px rgba(0, 0, 0, .06);
}
.wb-contact__map iframe {
    display: block;
    width: 100%;
}
.wb-contact__map-privacy {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px 24px;
    overflow: hidden;
    background: #e8e4dc;
}
/* Stylisierte Karten-Grafik (SVG inline als Data-URI, kein Datenabfluss).
   Zeigt Häuser-Blöcke, organisch geschwungene Straßen, Fluss und Park. */
.wb-contact__map-preview {
    position: absolute;
    inset: 0;
    background-color: #e8e2d5;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 500' preserveAspectRatio='xMidYMid slice'%3E%3Crect width='800' height='500' fill='%23e8e2d5'/%3E%3Cg fill='%23d8cfba'%3E%3Crect x='55' y='55' width='120' height='85' rx='3'/%3E%3Crect x='195' y='45' width='85' height='115' rx='3'/%3E%3Crect x='305' y='60' width='150' height='95' rx='3'/%3E%3Crect x='485' y='50' width='95' height='90' rx='3'/%3E%3Crect x='610' y='55' width='75' height='105' rx='3'/%3E%3Crect x='710' y='70' width='80' height='95' rx='3'/%3E%3Crect x='60' y='200' width='115' height='110' rx='3'/%3E%3Crect x='195' y='210' width='95' height='95' rx='3'/%3E%3Crect x='310' y='195' width='140' height='120' rx='3'/%3E%3Crect x='485' y='215' width='140' height='95' rx='3'/%3E%3Crect x='650' y='200' width='140' height='110' rx='3'/%3E%3Crect x='40' y='355' width='135' height='115' rx='3'/%3E%3Crect x='195' y='365' width='95' height='105' rx='3'/%3E%3Crect x='320' y='355' width='170' height='115' rx='3'/%3E%3Crect x='510' y='365' width='110' height='105' rx='3'/%3E%3Crect x='640' y='355' width='150' height='120' rx='3'/%3E%3C/g%3E%3Cg fill='none' stroke='%23ffffff' stroke-linecap='round'%3E%3Cpath d='M0 180 Q 200 172 400 180 T 800 178' stroke-width='14'/%3E%3Cpath d='M0 335 Q 220 348 440 335 T 800 340' stroke-width='14'/%3E%3Cpath d='M185 0 Q 188 250 190 500' stroke-width='9'/%3E%3Cpath d='M298 0 Q 305 250 302 500' stroke-width='7'/%3E%3Cpath d='M472 0 Q 478 250 475 500' stroke-width='9'/%3E%3Cpath d='M632 0 Q 628 250 630 500' stroke-width='7'/%3E%3Cpath d='M-20 480 Q 200 380 420 250 T 820 20' stroke-width='11'/%3E%3C/g%3E%3Cpath d='M-20 100 Q 120 60 260 105 T 540 95 T 820 85' stroke='%23b8d8de' stroke-width='18' fill='none' stroke-linecap='round' opacity='0.55'/%3E%3Cellipse cx='125' cy='420' rx='55' ry='28' fill='%23c8dcb0'/%3E%3Ccircle cx='95' cy='418' r='6' fill='%23a8c48c'/%3E%3Ccircle cx='125' cy='428' r='5' fill='%23a8c48c'/%3E%3Ccircle cx='158' cy='412' r='7' fill='%23a8c48c'/%3E%3Cellipse cx='700' cy='425' rx='45' ry='22' fill='%23c8dcb0'/%3E%3Ccircle cx='685' cy='420' r='5' fill='%23a8c48c'/%3E%3Ccircle cx='712' cy='428' r='6' fill='%23a8c48c'/%3E%3C/svg%3E");
}
.wb-contact__map-preview::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse at center, transparent 55%, rgba(0,0,0,.10) 100%);
    pointer-events: none;
}
.wb-contact__map-pin {
    position: absolute;
    top: 30%;
    left: 50%;
    width: 48px;
    height: 48px;
    display: block;
    color: var(--wb-contact-icon-color, #EC4899);
    transform: translate(-50%, -100%);
    filter: drop-shadow(0 6px 10px rgba(0,0,0,.28));
    animation: wbMapPinDrop .5s cubic-bezier(.34, 1.56, .64, 1) .1s both;
}
.wb-contact__map-pin svg {
    width: 100%;
    height: 100%;
    display: block;
}
@keyframes wbMapPinDrop {
    from { transform: translate(-50%, -160%); opacity: 0; }
    to   { transform: translate(-50%, -100%); opacity: 1; }
}
.wb-contact__map-panel {
    position: relative;
    z-index: 2;
    background: rgba(255,255,255,.96);
    border-radius: 12px;
    padding: 24px;
    max-width: 380px;
    box-shadow: 0 12px 32px rgba(0,0,0,.18);
    text-align: center;
    display: flex;
    flex-direction: column;
    gap: 14px;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}
.wb-contact__map-address {
    margin: 0;
    color: var(--wb-text, #1e293b);
    font-weight: 600;
    line-height: 1.5;
}
.wb-contact__map-actions {
    display: flex;
    gap: 10px;
    justify-content: center;
    flex-wrap: wrap;
}
.wb-contact__map-note {
    margin: 0;
    font-size: 12px;
    color: var(--wb-text-muted, #64748b);
    line-height: 1.4;
}
@media (max-width: 480px) {
    .wb-contact__map-privacy { padding: 20px 16px; }
    .wb-contact__map-panel { padding: 20px; }
    .wb-contact__map-actions { flex-direction: column; }
    .wb-contact__map-actions .wb-btn { width: 100%; }
}
/* Formular unter Karte und Map — volle Container-Breite */
.wb-contact__form {
    margin-top: 40px;
    padding-top: 8px;
}

/* ── Unterste Fusszeile — in allen Templates gleich ──────────────────────────
   templates/_partials/footer-bottom.php: links © Jahr Firma · created with
   webBee CMS, rechts Impressum · Datenschutz. Eine Schriftgrösse für die ganze
   Zeile (wie Lumina), alles darin übernimmt sie; die Template-Stile kommen nach
   dieser Datei, darum !important. Farben, Rahmen und Abstände bleiben beim Template. */
.wb-footer-bottom {
    font-size: .875rem !important;
    line-height: 1.5 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    flex-wrap: wrap !important;
    gap: 8px 24px !important;
    text-align: left !important;
}
.wb-footer-bottom .wb-footer-bottom__legal {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 4px 20px !important;
    margin: 0 !important;
}
.wb-footer-bottom .wb-footer-bottom__text,
.wb-footer-bottom .wb-footer-bottom__legal,
.wb-footer-bottom a {
    font-size: inherit !important;
    line-height: inherit !important;
    font-weight: inherit !important;
    letter-spacing: inherit !important;
    text-transform: inherit !important;
    font-family: inherit !important;
}
.wb-footer-bottom .wb-footer-bottom__legal a {
    display: inline !important;
    margin: 0 !important;
    padding: 0 !important;
}
/* «created with webBee CMS» als Einheit, in der Farbe des Textes — manche
   Templates machen Links in der Fusszeile zu Blöcken oder färben sie anders */
.wb-footer-bottom .wb-footer-bottom__credit { white-space: nowrap; }
.wb-footer-bottom .wb-footer-bottom__text a {
    display: inline !important;
    margin: 0 !important;
    padding: 0 !important;
    color: inherit !important;
    opacity: 1 !important;
}
.wb-footer-bottom .wb-footer-bottom__text a:hover { text-decoration: underline !important; }
@media (max-width: 600px) {
    .wb-footer-bottom .wb-footer-bottom__sep { display: none; }
    .wb-footer-bottom .wb-footer-bottom__credit { display: block; }
}
