/* ==========================================================================
   Norderney Barrierefrei – Frontend CSS v2.0.1
   ========================================================================== */

/* ── CSS-Variablen (Defaults, überschreibbar via Settings) ──────────────── */
:root {
  /* Farben – via Settings überschreibbar */
  --nbf-primary:    #1A3A5C;
  --nbf-secondary:  #0F7E6A;
  --nbf-accent:     #E8F4FD;
  --nbf-danger:     #C0392B;
  --nbf-text:       #1A1A1A;
  --nbf-muted:      #6B7280;
  --nbf-border:     #E2E8F0;
  --nbf-bg:         #FFFFFF;
  --nbf-bg-alt:     #F8FAFC;
  --nbf-radius:     8px;
  --nbf-shadow:     0 2px 8px rgba(0,0,0,.10);
  --nbf-shadow-lg:  0 8px 24px -2px rgba(0,0,0,.08);
  /* Soft UI */
  --shadow-soft:    0 2px 8px rgba(0,0,0,.05);
  --shadow-medium:  0 6px 18px rgba(0,0,0,.08);
  --shadow-large:   0 12px 32px rgba(0,0,0,.10);
  --border-light:   1px solid #e5e7eb;
  --radius-md:      12px;
  --nbf-transition: .18s ease;

  /* Typografie – via Settings überschreibbar */
  --nbf-font:           'Inter Lokal', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --nbf-size-base:      16px;
  --nbf-size-sm:        14px;
  --nbf-size-h1:        28px;
  --nbf-size-h2:        18px;
  --nbf-weight-body:    400;
  --nbf-weight-head:    700;
  --nbf-line-height:    1.55;
  --nbf-letter-spacing: 0em;
}

/* ── Reset / Base ───────────────────────────────────────────────────────── */
/* ── Isolations-Reset: verhindert Theme-Overrides innerhalb des Plugins ──── */
.nbf-wrap *,
.nbf-wrap *::before,
.nbf-wrap *::after {
  box-sizing: border-box;
}
/* Theme-Reset für inline-Elemente: verhindert dass Themes .sr-only brechen */
.nbf-wrap span { display: inline; }  /* Basis */
.nbf-wrap span.sr-only { display: block !important; }  /* sr-only überschreibt */

/* Theme-Isolation: Alle Buttons im Plugin-Kontext auf saubere Basis zurücksetzen,
   damit WordPress-Themes keine unerwünschten Farben/Styles einschleusen */
.nbf-wrap button,
.nbf-wrap input,
.nbf-wrap select,
.nbf-wrap textarea,
.nbf-report-modal button,
.nbf-report-modal input,
.nbf-report-modal select,
.nbf-report-modal textarea,
.nbf-modal button,
.nbf-modal input,
.nbf-modal select,
.nbf-modal textarea,
.nbf-lightbox button {
  font-family: inherit;
  font-size: inherit;
  box-sizing: border-box;
}

/* Sicherstellen dass theme-button-Resets nicht greifen */
.nbf-report-modal button:not(.nbf-btn):not(.nbf-report-modal__close):not(.btn):not(.modal-close),
.nbf-modal button:not(.nbf-btn):not(.nbf-modal__close):not(.btn):not(.modal-close) {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
}

.nbf-wrap {
  font-family: var(--nbf-font);
  font-size: var(--nbf-size-base);
  font-weight: var(--nbf-weight-body);
  color: var(--nbf-text);
  line-height: var(--nbf-line-height);
  letter-spacing: var(--nbf-letter-spacing);
  max-width: 100%;
  overflow-x: hidden;   /* verhindert horizontales Scrollen auf Mobile */
  background: #F8FAFC;
}

/* Auch Modals außerhalb von .nbf-wrap */
.nbf-report-modal,
.nbf-modal,
.nbf-lightbox {
  font-family: var(--nbf-font);
  font-size: var(--nbf-size-base);
  font-weight: var(--nbf-weight-body);
  line-height: var(--nbf-line-height);
  letter-spacing: var(--nbf-letter-spacing);
}

/* ── Buttons ────────────────────────────────────────────────────────────── */
.nbf-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 18px;
  border-radius: var(--nbf-radius);
  border: 1px solid transparent;
  font-size: .9rem;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  transition: background var(--nbf-transition), color var(--nbf-transition), border-color var(--nbf-transition);
  white-space: nowrap;
  line-height: 1.3;
}

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

.nbf-btn--primary {
  background: var(--nbf-primary);
  color: #fff;
  border-color: var(--nbf-primary);
}
.nbf-btn--primary:hover {
  background: color-mix(in srgb, var(--nbf-primary) 85%, #000);
  border-color: color-mix(in srgb, var(--nbf-primary) 85%, #000);
  color: #fff;
}

.nbf-btn--secondary {
  background: var(--nbf-secondary);
  color: #fff;
  border-color: var(--nbf-secondary);
}
.nbf-btn--secondary:hover {
  background: color-mix(in srgb, var(--nbf-secondary) 85%, #000);
  border-color: color-mix(in srgb, var(--nbf-secondary) 85%, #000);
  color: #fff;
}

.nbf-btn--outline {
  background: transparent;
  color: var(--nbf-primary);
  border-color: var(--nbf-primary);
}
.nbf-btn--outline:hover {
  background: var(--nbf-accent);
}

.nbf-btn--ghost {
  background: transparent;
  color: var(--nbf-muted);
  border-color: var(--nbf-border);
}
.nbf-btn--ghost:hover {
  background: var(--nbf-bg-alt);
  color: var(--nbf-text);
}

.nbf-btn--sm   { padding: 6px 12px; font-size: .82rem; }
.nbf-btn--full { width: 100%; }

/* ══════════════════════════════════════════════════════════════════════════
   CONTROL BAR — Suche, Filter, Toolbar (unified, mobile-first)
   ══════════════════════════════════════════════════════════════════════════ */

.nbf-control-bar {
  background: #ffffff;   /* Suchbereich bleibt weiß */
  border-bottom: 2px solid var(--nbf-border);
  box-shadow: 0 2px 12px rgba(0,0,0,.07);
}

.nbf-control-bar__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 16px 16px 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* ── Zeile 1: Suche ────────────────────────────────────────────────────── */
.nbf-search-row {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

/* ── Zeile 2: Dropdowns nebeneinander ──────────────────────────────────── */
.nbf-dropdowns-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

/* ── Zeile 3: Aktions-Buttons ──────────────────────────────────────────── */
.nbf-actions-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.nbf-actions-row .nbf-btn {
  flex: 1;
  justify-content: center;
  text-align: center;
  min-height: 42px;
  font-size: .9rem;
}

/* ── Ergebnis-Toolbar ──────────────────────────────────────────────────── */
.nbf-results-toolbar {
  background: #F8FAFC;
  border-top: 1px solid var(--nbf-border);
  border-bottom: 1px solid var(--nbf-border);
}

.nbf-results-toolbar__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 8px 16px;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.nbf-results-count {
  font-size: .88rem;
  color: var(--nbf-muted);
  font-weight: 600;
  flex: 1;
}

.nbf-toolbar-right {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

/* ── Filter-Gruppe (Label + Feld) ──────────────────────────────────────── */
.nbf-filter-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.nbf-filter-group--sort { flex-shrink: 0; }

.nbf-filter-label {
  font-size: .75rem;
  font-weight: 700;
  color: var(--nbf-muted);
  text-transform: uppercase;
  letter-spacing: .04em;
}

/* Desktop: Dropdowns inline */
@media (min-width: 768px) {
  .nbf-control-bar__inner {
    padding: 14px 20px 10px;
    gap: 10px;
  }

  .nbf-dropdowns-row {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  }

  .nbf-actions-row .nbf-btn {
    flex: 0 0 auto;
    min-height: unset;
  }

  .nbf-search-row {
    flex-direction: row;
    align-items: flex-end;
    gap: 12px;
  }

  .nbf-search-row label { white-space: nowrap; padding-bottom: 8px; }
  .nbf-search-row input { flex: 1; }
}

.nbf-search-input {
  width: 100%;
  padding: 10px 14px;
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-radius);
  font-size: 1rem;
  background: var(--nbf-bg);
  color: var(--nbf-text);
  transition: border-color var(--nbf-transition);
}
.nbf-search-input:focus {
  outline: none;
  border-color: var(--nbf-secondary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--nbf-secondary) 20%, transparent);
}

.nbf-select {
  padding: 10px 10px;
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-radius);
  font-size: 1rem;
  background: var(--nbf-bg);
  color: var(--nbf-text);
  cursor: pointer;
  transition: border-color var(--nbf-transition);
}
.nbf-select:focus {
  outline: none;
  border-color: var(--nbf-secondary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--nbf-secondary) 20%, transparent);
}
.nbf-select--sm { padding: 6px 8px; font-size: .82rem; }

/* ── Filter Panel (Merkmale) ────────────────────────────────────────────── */
.nbf-filter-panel {
  margin-top: 10px;
  padding: 14px;
  background: var(--nbf-bg-alt);
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-radius);
}

.nbf-filter-panel__footer {
  margin-top: 10px;
  text-align: right;
}

/* Merkmal-Checkboxen (aus filter-merkmale.php) */
.nbf-merkmal-group {
  margin-bottom: 12px;
}

.nbf-merkmal-group__title {
  font-size: .8rem;
  font-weight: 700;
  color: var(--nbf-muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin: 0 0 6px;
}

.nbf-merkmal-checks {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.nbf-merkmal-check {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border: 1px solid var(--nbf-border);
  border-radius: 999px;
  font-size: .8rem;
  cursor: pointer;
  background: var(--nbf-bg);
  transition: background var(--nbf-transition), border-color var(--nbf-transition);
  user-select: none;
}
.nbf-merkmal-check:has(input:checked) {
  background: var(--nbf-accent);
  border-color: var(--nbf-secondary);
  color: var(--nbf-secondary);
  font-weight: 600;
}
.nbf-merkmal-check input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

/* nbf-map-toggle-bar ist in nbf-results-toolbar aufgegangen — Kompatibilität */
.nbf-map-toggle-bar { display: none; }

.nbf-view-toggle {
  display: flex;
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-radius);
  overflow: hidden;
}

.nbf-view-btn {
  padding: 8px 14px;
  font-size: .88rem;
  font-weight: 600;
  border: none;
  background: var(--nbf-bg);
  color: var(--nbf-muted);
  cursor: pointer;
  min-height: 38px;
  transition: background var(--nbf-transition), color var(--nbf-transition);
}
.nbf-view-btn.active,
.nbf-view-btn:hover {
  background: var(--nbf-primary);
  color: #fff;
}
.nbf-view-btn:focus-visible {
  outline: 3px solid var(--nbf-secondary);
  outline-offset: -2px;
}

/* ── Karte ──────────────────────────────────────────────────────────────── */
.nbf-map-wrap {
  position: relative;
  overflow: hidden;
  transition: max-height .35s ease;
}

/* Volle Viewport-Breite: bricht aus dem Theme-Container heraus */
.nbf-map-wrap--fullwidth {
  width: 100vw;
  margin-left:  calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
}

/* Container-Breite: bleibt im Theme-Inhaltsbereich */
.nbf-map-wrap--container {
  width: 100%;
  margin-left:  0;
  margin-right: 0;
}

.nbf-map-wrap--collapsed {
  max-height: 0 !important;
}

.nbf-map {
  width: 100%;
  display: block;
  background: #f2efe9;
  position: relative;
}

/* Leaflet-Container: Theme-Backgrounds und Pseudo-Elemente blockieren */
.nbf-map .leaflet-container {
  background: #f2efe9 !important;
  isolation: isolate;
}
/* Gezielter Reset: nur direkte Kinder des leaflet-containers und der Panes,
   nicht rekursiv – Leaflet-interne ::before/::after bleiben unberührt */
.nbf-finder-layout .leaflet-pane::before,
.nbf-finder-layout .leaflet-pane::after,
.nbf-finder-layout .leaflet-map-pane::before,
.nbf-finder-layout .leaflet-map-pane::after {
  content: none !important;
  background-image: none !important;
}

/* ── Scroll-Falle Overlay ──────────────────────────────────────────────────
 * Zeigt einen Hinweis wenn der Nutzer mit Mausrad oder einem Finger über
 * die Karte fährt – ohne die Karte zuvor fokussiert zu haben.
 * Pattern: Google Maps, OpenStreetMap, Mapbox
 * ─────────────────────────────────────────────────────────────────────── */
.nbf-map-scroll-overlay {
  display: none;  /* versteckt bis JavaScript es aktiviert */
  position: absolute;
  inset: 0;
  z-index: 1000;  /* über Leaflet-Tiles (z-index 200-400) */
  background: rgba(0, 0, 0, 0.42);
  border-radius: inherit;
  pointer-events: none;  /* Klicks auf die Karte durchlassen */
  /* Smooth fade-in / fade-out */
  opacity: 0;
  transition: opacity .2s ease;
  /* Zentrierter Hinweistext */
  align-items: center;
  justify-content: center;
  gap: 8px;
  flex-direction: column;
}
.nbf-map-scroll-overlay--visible {
  display: flex;
  opacity: 1;
}
.nbf-map-scroll-overlay span {
  display: none;  /* Nur den passenden Hinweis zeigen */
  color: #fff;
  font-size: .95rem;
  font-weight: 600;
  text-align: center;
  padding: 10px 20px;
  background: rgba(0, 0, 0, 0.55);
  border-radius: 8px;
  pointer-events: none;
  /* Verhindert Theme-Overrides */
  line-height: 1.4 !important;
  letter-spacing: 0 !important;
}
/* Desktop: Maus-Hinweis anzeigen */
.nbf-map-scroll-overlay--mouse .nbf-map-scroll-overlay__mouse { display: block; }
/* Touch: Touch-Hinweis anzeigen */
.nbf-map-scroll-overlay--touch .nbf-map-scroll-overlay__touch { display: block; }

.nbf-locate-btn {
  position: absolute;
  bottom: 16px;
  right: 16px;
  z-index: 1000;
  background: var(--nbf-bg);
  border: 1px solid var(--nbf-primary);
  color: var(--nbf-primary);
  border-radius: var(--nbf-radius);
  padding: 7px 14px;
  font-size: .82rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: var(--nbf-shadow);
  transition: background var(--nbf-transition);
}
.nbf-locate-btn:hover { background: var(--nbf-accent); }
.nbf-locate-btn:focus-visible {
  outline: 3px solid var(--nbf-secondary);
  outline-offset: 2px;
}
/* ── Leaflet Popup ─────────────────────────────────────────────────── */
.nbf-leaflet-popup .leaflet-popup-content-wrapper {
  border-radius: var(--radius-md) !important;
  box-shadow: var(--shadow-large) !important;
  padding: 0 !important;
  overflow: hidden;
}
.nbf-leaflet-popup .leaflet-popup-content {
  margin: 0 !important;
  width: auto !important;
}
.nbf-leaflet-popup .leaflet-popup-close-button {
  top: 10px !important;
  right: 10px !important;
  color: #9CA3AF !important;
  font-size: 18px !important;
  z-index: 1;
}
.nbf-leaflet-popup .leaflet-popup-close-button:hover {
  color: #1A3A5C !important;
}
/* Popup — Variante A Minimalist */
.nbf-popup {
  padding: 16px 16px 14px;
  min-width: 220px;
  max-width: 280px;
  font-family: inherit;
}
.nbf-popup__cat {
  font-size: 12px;
  font-weight: 800;
  color: var(--nbf-secondary, #0F7E6A);
  text-transform: uppercase;
  letter-spacing: .08em;
  margin: 0 0 4px;
}
.nbf-popup__title {
  font-size: 15px;
  font-weight: 700;
  color: #111827;
  line-height: 1.3;
  margin: 0 0 6px;
  padding-right: 18px;
}
.nbf-popup__status {
  display: inline-flex;
  align-items: center;
  font-size: 12px;
  font-weight: 700;
  padding: 3px 9px;
  border-radius: 6px;
  margin-bottom: 8px;
}
.nbf-popup__status--ok   { background: #D1FAE5; color: #065F46; }
.nbf-popup__status--info { background: #FEF3C7; color: #92400E; }
.nbf-popup__addr {
  font-size: 12px;
  color: #6B7280;
  margin: 0 0 10px;
}
.nbf-popup__pills {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-bottom: 14px;
}
.nbf-popup__pill {
  font-size: 12px;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 20px;
  white-space: nowrap;
}
.nbf-popup__pill--ok  { background: #D1FAE5; color: #065F46; }
.nbf-popup__pill--mid { background: #FEF3C7; color: #92400E; }
.nbf-popup__pill--no  { background: #FEE2E2; color: #991B1B; }
.nbf-popup__cta {
  display: block;
  width: 100%;
  padding: 10px;
  background: var(--nbf-primary, #1A3A5C);
  color: #fff;
  border-radius: 9px;
  font-size: 13px;
  font-weight: 700;
  text-align: center;
  text-decoration: none;
  box-sizing: border-box;
  transition: background .15s;
}
.nbf-popup__cta:hover { background: var(--nbf-secondary, #0F7E6A); color: #fff; }
.nbf-popup__cta:focus-visible { outline: 3px solid #0F7E6A; outline-offset: 2px; }

/* Standard Leaflet Pin */
.nbf-map-pin {
  background: transparent !important;
  border: none !important;
}

/* ── Ergebnisliste ──────────────────────────────────────────────────────── */
.nbf-results-wrap {
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px 16px;
}

/* Grid */
.nbf-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
}

/* List view */
.nbf-grid.nbf-list-view {
  grid-template-columns: 1fr;
  gap: 8px;
}

/* ── Karte ──────────────────────────────────────────────────────────────── */
.nbf-card {
  display: flex;
  flex-direction: column;
  background: var(--nbf-ds-bg);
  border: none;
  border-radius: var(--nbf-ds-radius);
  overflow: hidden;
  text-decoration: none;
  color: var(--nbf-ds-text);
  box-shadow: var(--nbf-ds-shadow);
  transition: box-shadow .2s, transform .2s;
  font-family: var(--nbf-ds-font);
}
.nbf-card:hover {
  box-shadow: var(--nbf-ds-shadow-md);
  transform: translateY(-2px);
}
.nbf-card:focus-visible {
  outline: 3px solid var(--nbf-ds-focus);
  outline-offset: 3px;
}

/* Bild: 16:9, volle Breite, obere Ecken gerundet */
.nbf-card__img-wrap {
  position: relative;
  overflow: hidden;
  border-radius: var(--nbf-ds-radius) var(--nbf-ds-radius) 0 0;
  flex-shrink: 0;
  aspect-ratio: 16 / 9;
}
.nbf-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .35s ease;
}
.nbf-card:hover .nbf-card__img { transform: scale(1.04); }

/* Kein Bild Placeholder */
.nbf-card__no-img {
  width: 100%;
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, #EBF3F3 0%, #F3F4F6 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  color: #9CA3AF;
  font-weight: 600;
  text-align: center;
  padding: 1rem;
  border-radius: var(--nbf-ds-radius) var(--nbf-ds-radius) 0 0;
}

/* Kategorie-Badge: absolut über dem Bild */
.nbf-card__badge {
  position: absolute;
  top: 0.625rem;
  left: 0.625rem;
  z-index: 2;
}
.nbf-card__cat-badge {
  display: inline-block;
  background: var(--nbf-ds-accent);
  color: #fff;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  border-radius: var(--nbf-ds-radius-sm);
  padding: 0.2rem 0.5rem;
  font-family: var(--nbf-ds-font);
  line-height: 1.4;
}

/* Content-Bereich */
.nbf-card__body {
  padding: 1rem 1.25rem 1.25rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.nbf-card__cat {
  font-size: 0.75rem;
  color: var(--nbf-ds-accent);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  margin: 0;
  display: none; /* Badge übernimmt die Kategorie */
}
.nbf-card__title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--nbf-ds-primary);
  margin: 0;
  line-height: 1.35;
}
.nbf-card__address {
  font-size: 0.8125rem;
  color: #6B7280;
  margin: 0;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}
.nbf-card__merkmale {
  margin-top: 0.625rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  padding-top: 0.625rem;
  border-top: 1px solid var(--nbf-ds-border);
}

/* ── Listenansicht: horizontal, groß, barrierefrei ────────────────────── */
.nbf-grid.nbf-list-view {
  grid-template-columns: 1fr;
  gap: 12px;
}

.nbf-list-view .nbf-card-item { display: block; }

.nbf-list-view .nbf-card {
  flex-direction: row;
  min-height: 120px;
  border-left: 4px solid var(--nbf-primary);
}

.nbf-list-view .nbf-card:hover {
  border-left-color: var(--nbf-secondary);
}

.nbf-list-view .nbf-card__img-wrap {
  width: 160px;
  flex-shrink: 0;
}

.nbf-list-view .nbf-card__img {
  width: 160px;
  height: 100%;
  min-height: 120px;
  object-fit: cover;
}

.nbf-list-view .nbf-card__no-img {
  width: 160px;
  height: 100%;
  min-height: 120px;
  font-size: .8rem;
  flex-direction: column;
  gap: 6px;
}

.nbf-list-view .nbf-card__body {
  padding: 16px 20px;
  justify-content: center;
}

.nbf-list-view .nbf-card__cat {
  font-size: .8rem;
}

.nbf-list-view .nbf-card__title {
  font-size: 1.1rem;
  line-height: 1.3;
}

.nbf-list-view .nbf-card__address {
  font-size: .9rem;
  margin-top: 2px;
}

.nbf-list-view .nbf-card__badge {
  top: auto;
  bottom: 8px;
  left: 8px;
}

/* Kachelansicht — ebenfalls größere Texte */
.nbf-card__title {
  font-size: 1rem;
  font-weight: 700;
}

.nbf-card__cat {
  font-size: .78rem;
}

.nbf-card__address {
  font-size: .85rem;
}

/* ── Badges / Chips ─────────────────────────────────────────────────────── */
.nbf-cert-badge,
.nbf-badge--geprueft,
.nbf-badge--info {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  white-space: nowrap;
}

.nbf-badge--geprueft {
  background: #EFF6FF;
  color: #1565C0;
  border: 1px solid #BFDBFE;
}

.nbf-badge--info {
  background: #FFF7ED;
  color: #7A4500;     /* war #E65100 (3.57:1) → jetzt 7.38:1, WCAG AA ✓ */
  border: 1px solid #FED7AA;
}

.nbf-merkmal-chip {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: .72rem;
  background: var(--nbf-bg-alt);
  border: 1px solid var(--nbf-border);
  color: var(--nbf-muted);
  white-space: nowrap;
}

/* ── Ladezustand / Leer ─────────────────────────────────────────────────── */
.nbf-loading {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 48px 16px;
  color: var(--nbf-muted);
  font-size: .9rem;
}

.nbf-spinner {
  width: 36px;
  height: 36px;
  border: 3px solid var(--nbf-border);
  border-top-color: var(--nbf-secondary);
  border-radius: 50%;
  animation: nbf-spin .8s linear infinite;
}

@keyframes nbf-spin {
  to { transform: rotate(360deg); }
}

.nbf-empty {
  grid-column: 1 / -1;
  text-align: center;
  padding: 48px 16px;
  color: var(--nbf-muted);
}

/* ── Report Banner ──────────────────────────────────────────────────────── */
.nbf-report-banner {
  background: var(--nbf-accent);
  border-top: 1px solid var(--nbf-border);
  margin-top: 16px;
}

.nbf-report-banner__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.nbf-report-banner__text strong {
  display: block;
  font-size: .95rem;
  color: var(--nbf-primary);
  margin-bottom: 2px;
}

.nbf-report-banner__text p {
  margin: 0;
  font-size: .85rem;
  color: var(--nbf-muted);
}

/* ── Modals (Report + Kontakt) ──────────────────────────────────────────── */

/* KRITISCH: [hidden]-Attribut muss Vorrang vor allen display-Regeln haben.
   Ohne diese Regel überschreibt display:flex das HTML hidden-Attribut
   und das Modal wird dauerhaft angezeigt. */
[hidden] { display: none !important; }

.nbf-report-modal:not([hidden]),
.nbf-modal:not([hidden]) {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}

.nbf-report-modal__backdrop,
.nbf-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(2px);
}

.nbf-report-modal__inner,
.nbf-modal__inner {
  position: relative !important;
  background: var(--nbf-bg) !important;
  border-radius: var(--radius-md) !important;
  box-shadow: var(--shadow-large) !important;
  padding: 1.75rem 1.5rem 2rem !important;
  width: 100% !important;
  max-width: 520px !important;
  max-height: 88vh !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  /* Scrollbar dezent */
  scrollbar-width: thin;
  scrollbar-color: var(--border-gray) transparent;
}
.nbf-report-modal__inner::-webkit-scrollbar { width: 5px; }
.nbf-report-modal__inner::-webkit-scrollbar-thumb {
  background: var(--border-gray);
  border-radius: 3px;
}

.nbf-report-modal__close,
.nbf-modal__close {
  position: absolute !important;
  top: 12px !important;
  right: 14px !important;
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
  font-size: 1.6rem !important;
  line-height: 1 !important;
  color: var(--nbf-muted) !important;
  cursor: pointer !important;
  padding: 4px 8px !important;
  border-radius: 4px !important;
  transition: color var(--nbf-transition) !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  text-transform: none !important;
  letter-spacing: normal !important;
  font-weight: normal !important;
}
.nbf-report-modal__close:hover,
.nbf-modal__close:hover {
  background: transparent !important;
  background-color: transparent !important;
  color: var(--nbf-danger) !important;
}
.nbf-report-modal__close:focus-visible,
.nbf-modal__close:focus-visible {
  outline: 3px solid var(--nbf-secondary) !important;
}

.nbf-report-modal__title,
.nbf-modal__title {
  margin: 0 0 4px;
  font-size: 2rem !important;
  font-weight: 700;
  color: var(--nbf-primary);
  padding-right: 32px;
}

.nbf-report-modal__sub {
  margin: 0 0 18px;
  font-size: .88rem;
  color: var(--nbf-muted);
}

/* ── Formulare ──────────────────────────────────────────────────────────── */
.nbf-form-group {
  margin-bottom: 14px;
}

.nbf-form-group label {
  display: block;
  font-size: .85rem;
  font-weight: 600;
  color: var(--nbf-text);
  margin-bottom: 5px;
}

.nbf-form-group input[type="text"],
.nbf-form-group input[type="email"],
.nbf-form-group input[type="search"],
.nbf-form-group select,
.nbf-form-group textarea {
  width: 100%;
  padding: 8px 12px;
  border: var(--border-light);
  border-radius: var(--radius-md);
  font-size: .9rem;
  font-family: inherit;
  background: #f9fafb;
  color: var(--nbf-text);
  box-shadow: var(--shadow-soft);
  transition: border-color .2s, box-shadow .2s;
}

.nbf-form-group input:focus,
.nbf-form-group select:focus,
.nbf-form-group textarea:focus {
  outline: none;
  border-color: var(--petrol, #007B7A);
  background: #fff;
  box-shadow: 0 4px 12px rgba(0,123,122,.12);
}

.nbf-form-group input[aria-invalid="true"],
.nbf-form-group textarea[aria-invalid="true"] {
  border-color: var(--nbf-danger);
  box-shadow: 0 0 0 3px rgba(192,57,43,.12);
}

.nbf-form-group textarea { resize: vertical; min-height: 90px; }

.nbf-form-group--checkbox label {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-weight: 400;
  font-size: .85rem;
  cursor: pointer;
}
.nbf-form-group--checkbox input[type="checkbox"] {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  margin-top: 2px;
  accent-color: var(--nbf-secondary);
}

.nbf-form-row-2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.nbf-form-error {
  display: block;
  font-size: .78rem;
  color: var(--nbf-danger);
  margin-top: 4px;
  min-height: 1em;
}

.nbf-form-feedback {
  border-radius: var(--nbf-radius);
  padding: 0;
  margin-bottom: 0;
  font-size: .88rem;
}
.nbf-form-feedback--success {
  background: #F0FFF4;
  border: 1px solid #9AE6B4;
  color: #276749;
  padding: 10px 14px;
  margin-bottom: 14px;
}
.nbf-form-feedback--error {
  background: #FFF5F5;
  border: 1px solid #FEB2B2;
  color: var(--nbf-danger);
  padding: 10px 14px;
  margin-bottom: 14px;
}

.nbf-label-hint {
  font-weight: 400;
  color: var(--nbf-muted);
  font-size: .82em;
}

/* ── Detail-Seite ───────────────────────────────────────────────────────── */
.nbf-detail {
  max-width: var(--nbf-detail-max-width, 1200px);
  margin: 0 auto;
  padding:
    var(--nbf-detail-pad-top, 0px)
    var(--nbf-detail-pad-sides, 32px)
    var(--nbf-detail-pad-bottom, 32px);
  box-sizing: border-box;
  overflow-x: hidden;
}

/* Tablet ≤ 1024px: eigene Abstände */
@media (max-width: 1024px) {
  .nbf-detail {
    padding:
      var(--nbf-detail-pad-top, 0px)
      var(--nbf-detail-pad-tablet, 32px)
      var(--nbf-detail-pad-bottom, 32px);
  }
}

/* Mobile ≤ 767px: eigene Abstände + overflow verhindern */
@media (max-width: 767px) {
  .nbf-detail {
    padding:
      var(--nbf-detail-pad-top, 0px)
      var(--nbf-detail-pad-mobile, 24px)
      var(--nbf-detail-pad-bottom, 32px);
    overflow-x: hidden;
  }
  /* Langer Text bricht um statt über den Rand zu laufen */
  .nbf-detail *:not(pre) {
    word-break: break-word;
    overflow-wrap: anywhere;
    min-width: 0;
  }
  /* Tabellen auf Mobile skalieren */
    /* Accordion Items nicht über Rand */
  .nbf-accordion__item,
  .nbf-accordion__trigger,
  .nbf-accordion__panel-inner {
    max-width: 100%;
    overflow: hidden;
  }
  .nbf-merkmal-list {
    grid-template-columns: 1fr;
  }
}

/* Breadcrumb */
.nbf-breadcrumb { margin: 16px 0; }
.nbf-breadcrumb__list {
  display: flex;
  align-items: center;
  gap: 4px;
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: .82rem;
  color: var(--nbf-muted);
  flex-wrap: wrap;
}
.nbf-breadcrumb__list a {
  color: var(--nbf-secondary);
  text-decoration: none;
}
.nbf-breadcrumb__list a:hover { text-decoration: underline; }
.nbf-breadcrumb__sep { color: var(--nbf-border); }

/* Hero */

/* ════════════════════════════════════════════════════════════════════════════
   DETAIL / SINGLE POI — v0.dev Design
   ════════════════════════════════════════════════════════════════════════════ */

/* ── Wrapper ── */
.nbf-single-wrap {
  background-color: var(--light-gray);
  min-height: 100vh;
  font-family: 'Inter Lokal', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

/* ── Hero ── */
.nbf-hero {
  position: relative;
  min-height: 480px;
  height: 480px;
  overflow: visible;
  border-radius: 0;
}
.nbf-hero-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 0 !important;
}
.nbf-hero-overlay {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 50%;
  background: linear-gradient(to top, rgba(4,45,83,.6), transparent);
  pointer-events: none;
}
.nbf-hero-content {
  position: absolute;
  bottom: -110px;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 1200px;
  padding: 0 1.5rem;
  z-index: 2;
}
.nbf-hero-card {
  background-color: var(--white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: 1.5rem 2rem;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.5rem;
  position: relative;
  z-index: 3;
  margin-bottom: 3rem;
}
.nbf-hero-info { flex: 1; display: flex; flex-direction: column; }
.nbf-hero-badge,
.nbf-single-wrap .nbf-hero-badge,
[class*="elementor-kit"] .nbf-hero-badge,
[class*="elementor-kit"] .nbf-single-wrap .nbf-hero-badge {
  display: inline-flex !important;
  align-items: center !important;
  gap: .375rem !important;
  padding: .25rem .75rem !important;
  background-color: var(--navy) !important;
  color: #ffffff !important;
  font-size: .75rem !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: .04em !important;
  border-radius: 9999px !important;
  margin-bottom: .75rem !important;
  border: none !important;
  width: auto !important;
  max-width: fit-content !important;
  box-sizing: border-box !important;
}
.nbf-hero-title {
  font-size: 1.7rem;
  font-weight: 700;
  color: var(--navy);
  margin-bottom: .5rem;
  line-height: 1.2;
}
.hero-address {
  display: flex;
  align-items: center;
  gap: .375rem;
  color: var(--muted-gray);
  font-size: .9375rem;
  font-style: normal;
}
.hero-address svg { width: 1rem; height: 1rem; flex-shrink: 0; }
.nbf-hero-actions { display: flex; gap: .75rem; flex-shrink: 0; }

/* ── Page Content ── */
.page-content {
  max-width: 1200px;
  margin: 0 auto;
  /* Platz für nbf-hero-card (bottom:-110px + card ~130px = 240px) + Luft */
  padding: 9rem 1.5rem 3rem;
}
.content-grid {
  display: grid;
  grid-template-columns: 1fr 380px;
  gap: 2.5rem;
  align-items: start;
}

/* ── Section Titles ── */
.section-title,
.nbf-single-wrap .section-title,
.nbf-single-wrap h2.section-title,
[class*="elementor-kit"] .nbf-single-wrap h2.section-title,
[class*="elementor-kit"] .section-title {
  font-size: 2rem !important;
  font-weight: 700 !important;
  color: var(--navy) !important;
  margin-top: 3rem;
  margin-bottom: 1.5rem;
  line-height: 1.3 !important;
}
/* Erste H2 braucht keinen top-margin */
.main-column > section:first-child .section-title {
  margin-top: 0;
}

/* Optionaler Hinweistext in Kacheln und Akkordeons */
.optional-hint {
  font-size: .875rem;
  color: var(--muted-gray);
  margin-top: .5rem;
  line-height: 1.45;
}
.optional-hint strong {
  color: var(--body-gray);
  font-weight: 600;
}

/* ── Accessibility Overview Grid ── */
.accessibility-overview { display: none; } /* ersetzt durch .overview-grid */

/* ── Neue Übersichts-Kacheln ── */
.overview-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  margin-bottom: 3.5rem;
}
/* ── Overview-Card: horizontales Media-Object Layout ── */
.overview-card {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 1rem;
  padding: 1.25rem;
  background: #ffffff;
  border-radius: 12px;
  border: var(--border-light);
  box-shadow: var(--shadow-soft);
  transition: box-shadow .3s ease, transform .3s ease;
}
.overview-card:hover { box-shadow: var(--shadow-medium); transform: translateY(-2px); }

/* Linke Seite: Navy Icon-Block */
.card-icon-left {
  width: 52px; height: 52px; border-radius: 12px;
  background-color: rgba(0, 123, 122, 0.08);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.card-icon-left svg { width: 24px; height: 24px; color: var(--petrol); stroke: var(--petrol); fill: none; }

/* Rechte Seite: Titel + Badge */
.card-content-right {
  display: flex; flex-direction: column; align-items: flex-start;
  gap: .375rem; flex-grow: 1; min-width: 0;
}
.card-title {
  font-size: .9375rem; font-weight: 600; color: var(--navy);
  line-height: 1.3; margin: 0;
}

/* Status-Badge (inline, fit-content) */
.overview-badge {
  display: inline-flex; align-items: center; gap: .25rem;
  border-radius: 9999px; padding: .25rem .625rem;
  font-size: .75rem; font-weight: 500;
  width: fit-content; white-space: nowrap;
}
.overview-badge--full    { background-color: #d1fae5; color: #065f46; }
.overview-badge--partial { background-color: #fef3c7; color: #92400e; }
.overview-badge--none    { background-color: #fee2e2; color: #991b1b; }
.overview-badge--unknown { background-color: #f3f4f6; color: #374151; }
/* Legacy .accessibility-card für Übersichtsseite */
.accessibility-card {
  background-color: var(--white);
  border-radius: var(--radius-md);
  padding: 1rem;
  display: flex; align-items: flex-start; gap: .75rem;
  border: 1px solid var(--border-gray);
}
.accessibility-card:hover { box-shadow: 0 4px 16px -2px rgba(0,0,0,.08); }
.accessibility-icon {
  width: 2.75rem;
  height: 2.75rem;
  background-color: var(--petrol-light, #E6F2F2);
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.accessibility-icon svg { width: 1.375rem; height: 1.375rem; color: var(--petrol); }
.accessibility-content { flex: 1; min-width: 0; }
.accessibility-title {
  font-size: .875rem;
  font-weight: 600;
  color: var(--navy);
  margin-bottom: .375rem;
}
.accessibility-status {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  padding: .1875rem .625rem;
  font-size: .75rem;
  font-weight: 500;
  border-radius: 9999px;
}
.status-full    { background-color: #D1FAE5; color: #14532d; }
.status-partial { background-color: #FEF3C7; color: #78350f; }
.status-none    { background-color: #FEE2E2; color: #7f1d1d; }

/* ── Akkordeons ── */
.accordion-section { margin-bottom: 3rem; }
.accordion + .accordion { margin-top: 1rem; }
.accordion {
  background-color: var(--white);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-gray);
  overflow: hidden;
  box-shadow: 0 4px 16px -2px rgba(0,0,0,.06);
  transition: box-shadow .3s ease;
}
.accordion + .accordion { margin-top: .75rem; }
.accordion-header {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1.25rem;
  cursor: pointer;
  transition: background-color .2s;
  gap: 1rem;
  list-style: none;
  border: none;
  background: transparent;
  width: 100%;
  text-align: left;
}
.accordion-header:hover { background-color: var(--light-gray); }

/* Desktop: Reihenfolge via order wiederherstellen (badge DOM-seitig jetzt zuerst) */
.accordion-header .accordion-badge {
  order: 2;
}
.accordion-header .accordion-header-left {
  order: 1;
  flex: 1;
}
.accordion-header .accordion-chevron {
  order: 3;
}

.accordion-header-left {
  display: flex;
  align-items: center;
  gap: .75rem;
  flex: 1;
}
.accordion-icon {
  width: 52px;
  height: 52px;
  background-color: rgba(0, 123, 122, 0.08);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.accordion-icon svg { width: 24px; height: 24px; color: var(--petrol); stroke: var(--petrol); fill: none; stroke-width: 2; }
.accordion-title {
  font-size: .9375rem;
  font-weight: 600;
  color: var(--navy);
}
.accordion-badge {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  padding: .25rem .625rem;
  font-size: .6875rem;
  font-weight: 500;
  border-radius: 9999px;
  flex-shrink: 0;
  white-space: nowrap;
}
.accordion-chevron {
  width: 1.25rem;
  height: 1.25rem;
  color: var(--muted-gray);
  transition: transform .3s;
  flex-shrink: 0;
}
.accordion.open .accordion-chevron { transform: rotate(180deg); }
.accordion-body {
  display: none;
  padding: 0 1.25rem 1.25rem;
  border-top: 1px solid var(--border-gray);
}
.accordion.open .accordion-body { display: block; }
.accordion-hint {
  font-size: .8125rem;
  color: var(--muted-gray);
  padding: .75rem 0 0;
  font-style: italic;
}
.feature-list {
  padding-top: 1rem;
  padding-left: 0 !important;
  margin-left: 0 !important;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: .75rem;
  list-style: none;
}
.feature-list .feature-item,
.sub-feature-list .feature-item {
  padding-left: 0 !important;
  margin-left: 0 !important;
}
.sub-feature-list {
  padding-left: 0 !important;
  margin-left: 0 !important;
}
.feature-item--sub {
  padding-left: 1.75rem;
  opacity: .9;
  font-size: .8125rem;
}
.feature-item--sub .feature-check {
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
}
.feature-item {
  display: flex;
  align-items: flex-start !important;
  gap: .625rem;
  font-size: .875rem;
  color: var(--body-gray);
  line-height: 1.4 !important;
}
.feature-check,
.feature-no,
.feature-partial,
.feature-unknown,
.feature-check--no,
.feature-check--na,
.feature-check--partial {
  margin-top: 2px;
  flex-shrink: 0;
}
.feature-check {
  width: 1.25rem;
  height: 1.25rem;
  background-color: #D1FAE5;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.feature-check svg { width: .75rem; height: .75rem; color: #059669; }
.feature-check--partial { background-color: #FEF3C7; }
.feature-check--partial svg { color: #D97706; }
.feature-check--no { background-color: #FEE2E2; }
.feature-check--no svg { color: #DC2626; }
.feature-check--na { background-color: #F3F4F6; }
.feature-check--na svg { color: #9CA3AF; }
.status-unknown { background-color: #F3F4F6; color: #6B7280; }

/* ── Report Section ── */
.report-section {
  background-color: var(--white);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-gray);
  padding: 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  margin-top: 2rem;
}
.report-content { flex: 1; }
.report-title { font-size: 1rem; font-weight: 600; color: var(--navy); margin-bottom: .25rem; }
.report-text  { font-size: .875rem; color: var(--muted-gray); }

/* ── Sidebar ── */
.sidebar {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  position: sticky;
  top: 1.5rem;
}
.sidebar-card {
  background-color: var(--white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-soft);
  border: var(--border-light);
  overflow: hidden;
  transition: box-shadow .3s ease;
}
.sidebar-card-header {
  padding: 1rem 1.25rem;
  border-bottom: var(--border-light);
}
.sidebar-card-title {
  font-size: .9375rem;
  font-weight: 600;
  color: var(--navy);
  display: flex;
  align-items: center;
  gap: .5rem;
}
.sidebar-card-title svg { width: 1.5rem; height: 1.5rem; color: var(--navy); stroke-width: 2; }
.sidebar-card-body { padding: 1rem 1.25rem; }

/* ── Mini-Karte in Sidebar ── */
.nbf-detail-map-wrap {
  border-radius: var(--radius-sm);
  overflow: hidden;
  height: 160px;
}
.nbf-detail-map {
  width: 100%;
  height: 160px;
}

/* ── Kontakt ── */
.contact-list  { list-style: none; display: flex; flex-direction: column; gap: .875rem; padding: 0; margin: 0; }
.contact-item  { display: flex; align-items: flex-start; gap: .75rem; }
.contact-icon  {
  width: 2rem; height: 2rem;
  background-color: var(--light-gray);
  border-radius: var(--radius-sm);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.contact-icon svg { width: 1rem; height: 1rem; color: var(--petrol); }
.contact-link {
  font-size: .875rem;
  color: var(--navy);
  font-weight: 400;
  text-decoration: none;
  transition: color .2s, opacity .2s;
  display: inline-block;
  max-width: 100%;
  overflow-wrap: break-word;
  word-wrap: break-word;
  word-break: break-all;
}
.contact-link:hover {
  color: var(--navy);
  opacity: .7;
  text-decoration: underline;
}

/* ── Zurück-Button ── */
.back-section { padding-top: .5rem; }
.btn-back { width: 100%; justify-content: center; }
.btn-navy,
a.btn-navy {
  background-color: var(--navy) !important;
  color: #FFFFFF !important;
  text-decoration: none !important;
}
.btn-navy:hover,
a.btn-navy:hover {
  background-color: #053a6a !important;
  color: #FFFFFF !important;
  text-decoration: none !important;
}

/* ── Responsive ── */
@media (max-width: 1024px) {
  .content-grid { grid-template-columns: 1fr; }
  .sidebar {
    position: static;
    order: -1;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
  }
  .back-section { grid-column: 1 / -1; }
}
@media (max-width: 768px) {

  /* ── Overflow-Prevention ── */
  .nbf-single-wrap { overflow-x: hidden; }
  .nbf-single-wrap *,
  .nbf-hero-card,
  .accessibility-card,
  .accordion,
  .sidebar-card,
  .report-section {
    max-width: 100%;
    box-sizing: border-box;
  }

  /* ── Hero Mobile: Image-Block + Card im Normalfluss ── */
  .nbf-hero {
    height: auto !important;
    min-height: 0 !important;
    overflow: visible !important;
    display: flex !important;
    flex-direction: column !important;
  }
  /* Bild-Slot: feste Höhe, relativ damit Overlay passt */
  .nbf-hero-image {
    display: block !important;
    width: 100% !important;
    height: 220px !important;
    object-fit: cover !important;
    flex-shrink: 0 !important;
  }
  .nbf-hero-overlay {
    top: 0 !important;
    bottom: auto !important;
    height: 220px !important;
    position: absolute !important;
  }
  .nbf-hero-content {
    position: relative !important;
    bottom: auto !important;
    left: auto !important;
    transform: none !important;
    width: 100% !important;
    padding: 0 !important;
    margin-top: -3rem !important;
    z-index: 4 !important;
  }
  .nbf-hero-card {
    flex-direction: column !important;
    padding: 1.25rem !important;
    margin: 0 1rem 0 !important;
    width: calc(100% - 2rem) !important;
    box-shadow: var(--shadow-md) !important;
    border-radius: var(--radius-md) !important;
    position: relative !important;
    z-index: 4 !important;
  }
  .nbf-hero-title { font-size: 1.25rem !important; }
  .nbf-hero-actions { width: 100% !important; gap: .5rem !important; }
  .nbf-hero-actions .btn { flex: 1 !important; }

  /* Page-content: genug Abstand unterhalb der Card */
  .page-content { padding: 2rem 1rem 2rem !important; }

  /* ── Stacking: Main → Report → Sidebar → Back ── */
  .content-grid {
    display: flex;
    flex-direction: column;
  }
  .main-column  { order: 1; }
  .sidebar      { order: 3; padding: 0; }
  .report-section { order: 2; }  /* Melden direkt nach Hauptinhalt, vor Sidebar */

  /* ── Overview-Grid: 1-spaltig auf Mobile ── */
  .overview-grid {
    grid-template-columns: 1fr;
    gap: .75rem;
    margin-bottom: 2rem;
  }
  .overview-card { padding: 1rem; }
  .card-icon-left { width: 44px; height: 44px; border-radius: 10px; }
  .card-icon-left svg { width: 22px; height: 22px; }
  .card-title { font-size: .875rem; }

  /* ── Section Titles ── */
  .section-title {
    margin-top: 2rem;
    margin-bottom: 1rem;
  }

  /* ── Akkordeons ── */
  .accordion-section { margin-bottom: 1.5rem; }
  .accordion-header { padding: .875rem 1rem; }
  .accordion-body { padding: 0 1rem 1rem; }
  .feature-list,
  .sub-feature-list {
    grid-template-columns: 1fr;
    gap: .5rem;
    padding-left: 0 !important;
    margin-left: 0 !important;
  }
  .feature-list .feature-item,
  .sub-feature-list .feature-item {
    padding-left: 0 !important;
    margin-left: 0 !important;
  }
  /* Badge als volle Kopfzeile mit Hintergrundfarbe */
  .accordion-header {
    display: grid !important;
    grid-template-columns: 1fr auto !important;
    grid-template-rows: auto auto !important;
    padding: 0 !important;
    gap: 0 !important;
    align-items: center !important;
  }
  .accordion-header .accordion-badge {
    grid-column: 1 / -1 !important;
    grid-row: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 0 !important;
    padding: .375rem 1rem !important;
    font-size: .75rem !important;
    font-weight: 600 !important;
    text-align: center !important;
    white-space: nowrap !important;
    letter-spacing: .04em !important;
  }
  .accordion-header .accordion-header-left {
    grid-column: 1 !important;
    grid-row: 2 !important;
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    gap: .5rem !important;
    padding: .875rem .5rem .875rem 1rem !important;
    min-width: 0 !important;
  }
  .accordion-header .accordion-chevron {
    grid-column: 2 !important;
    grid-row: 2 !important;
    order: 0 !important;
    width: 1.25rem !important;
    height: 1.25rem !important;
    min-width: 1.25rem !important;
    min-height: 1.25rem !important;
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    color: var(--muted-gray) !important;
    margin-right: 1rem !important;
    align-self: center !important;
  }
  .accordion-title {
    font-size: .875rem !important;
    white-space: normal !important;
    line-height: 1.35 !important;
    flex: 1 !important;
    min-width: 0 !important;
  }

  /* ── Melden-Sektion ── */
  .report-section {
    flex-direction: column;
    text-align: center;
    padding: 1.25rem 1rem;
    margin-top: 0;
    margin-bottom: 1.5rem;
  }

  /* ── Sidebar: kein Extra-Padding — kommt vom page-content (0 1rem) ── */
  .sidebar {
    position: static;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
    padding: 0;
    box-sizing: border-box;
  }
  .sidebar-card {
    width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    box-sizing: border-box;
  }
  .sidebar-card-body { padding: .875rem 1rem; }

  /* ── Zurück-Button: volle Breite, kein Extra-Padding ── */
  .back-section {
    width: 100%;
    padding: 0;
    box-sizing: border-box;
  }
  .btn-back {
    width: 100%;
    border-radius: var(--radius-sm);
    box-sizing: border-box;
  }

  /* ── Stunden-Tabelle: today-Markierung volledge Breite ── */
  }

/* ══════════════════════════════════════════════════════════════
   MOBILITÄTS-FILTER (4-stufig)
══════════════════════════════════════════════════════════════ */
.nbf-merkmal-group--mobi {
    grid-column: 1 / -1;
    background: var(--nbf-accent, #E8F4FD);
    border: 1.5px solid var(--nbf-primary, #1A3A5C);
    border-radius: 8px;
    padding: 14px 16px;
}

.nbf-merkmal-group__desc {
    font-size: 12px;
    color: var(--nbf-muted, #6B7280);
    margin: 4px 0 10px;
}

.nbf-mobi-filter-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.nbf-mobi-filter-item {
    display: flex;
    align-items: center;
    gap: 6px;
    background: #fff;
    border: 1px solid var(--nbf-border, #D1D5DB);
    border-radius: 8px;
    padding: 7px 12px;
    flex: 1;
    min-width: 180px;
}

.nbf-mobi-filter-icon {
    font-size: 18px;
    flex-shrink: 0;
}

.nbf-mobi-filter-label {
    font-size: 12.5px;
    font-weight: 600;
    color: var(--nbf-primary, #1A3A5C);
    flex: 1;
}

.nbf-mobi-filter-checks {
    display: flex;
    gap: 4px;
}

.nbf-mobi-filter-check {
    display: flex;
    align-items: center;
    gap: 3px;
    padding: 4px 8px;
    border-radius: 20px;
    border: 1.5px solid var(--nbf-border, #D1D5DB);
    cursor: pointer;
    font-size: 12px;
    font-weight: 700;
    background: #fff;
    transition: background .12s, border-color .12s;
    white-space: nowrap;
}

.nbf-mobi-filter-check input[type="checkbox"] {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0,0,0,0);
    white-space: nowrap; border: 0;
}

.nbf-mobi-filter-check--uneingescr {
    color: #155724;
    border-color: #C3E6CB;
}
.nbf-mobi-filter-check--uneingescr:has(input:checked),
.nbf-mobi-filter-check--uneingescr:hover {
    background: #D4EDDA;
    border-color: #28A745;
}

.nbf-mobi-filter-check--mit-hilfe {
    color: #7A5000;
    border-color: #FFE69C;
}
.nbf-mobi-filter-check--mit-hilfe:has(input:checked),
.nbf-mobi-filter-check--mit-hilfe:hover {
    background: #FFF3CD;
    border-color: #F59E0B;
}

/* Mobilitäts-Icons im Popup */
.nbf-popup__mobi {
    display: flex;
    gap: 6px;
    align-items: center;
    margin-top: 5px;
    padding: 5px 0 2px;
    border-top: 1px solid var(--nbf-border, #D1D5DB);
}

/* Instagram im Detail-Template */
.nbf-contact__instagram a {
    color: var(--nbf-secondary, #0F7E6A);
    text-decoration: none;
    font-weight: 600;
}
.nbf-contact__instagram a:hover {
    text-decoration: underline;
}

/* ══════════════════════════════════════════════════════════════
   MOBILITÄTS-ÜBERSICHT (Detail-Seite)
══════════════════════════════════════════════════════════════ */
.nbf-mobi-overview {
    margin: 20px 0 24px;
    padding: 18px 20px;
    background: var(--nbf-accent, #E8F4FD);
    border-radius: 10px;
    border: 1px solid rgba(26,58,92,.12);
}

.nbf-mobi-overview__title {
    font-size: 15px;
    font-weight: 700;
    color: var(--nbf-primary, #1A3A5C);
    margin: 0 0 12px;
}

.nbf-mobi-overview__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 10px;
}

.nbf-mobi-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 12px 10px;
    border-radius: 8px;
    background: #fff;
    border: 1.5px solid var(--nbf-border, #D1D5DB);
    text-align: center;
}

.nbf-mobi-card--ok {
    border-color: #28A745;
    background: #F0FDF4;
}

.nbf-mobi-card--partial {
    border-color: #F59E0B;
    background: #FFFBEB;
}

.nbf-mobi-card--no {
    border-color: #EF4444;
    background: #FEF2F2;
}

.nbf-mobi-card__icon {
    font-size: 22px;
    line-height: 1;
}

.nbf-mobi-card__label {
    font-size: 11.5px;
    font-weight: 700;
    color: var(--nbf-primary, #1A3A5C);
}

.nbf-mobi-card__status {
    font-size: 10.5px;
    color: var(--nbf-muted, #6B7280);
}

.nbf-mobi-card--ok    .nbf-mobi-card__status { color: #155724; font-weight: 600; }
.nbf-mobi-card--partial .nbf-mobi-card__status { color: #7A5000; font-weight: 600; }
.nbf-mobi-card--no    .nbf-mobi-card__status { color: #721C24; font-weight: 600; }

/* ══════════════════════════════════════════════════════════════════════════
   FINDER — Professionelles 3-Spalten-Layout
   ══════════════════════════════════════════════════════════════════════════ */

/* ── SR-ONLY (mit nbf-Präfix, überall gültig) ─────────────────────────── */
.nbf-sr-only,
.nbf-wrap .nbf-sr-only,
.nbf-search-header .nbf-sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* Hidden Selects in Filter-Sidebar (nicht display:none wegen Screenreader-Kompatibilität) */
.nbf-filter-sidebar select.nbf-sr-only {
  display: none !important;
}

/* ── Wrap-Reset ────────────────────────────────────────────────────────── */
.nbf-wrap {
  font-family: var(--nbf-font);
  background: #F5F7FA;
  min-height: 600px;
}

/* ══ SUCH-HEADER ══════════════════════════════════════════════════════════ */
.nbf-search-header {
  background: #1A3A5C;
  padding: 14px 20px;
  position: sticky;
  top: 0;
  z-index: 300;
  box-shadow: 0 2px 8px rgba(0,0,0,.12);
}
.nbf-search-header__inner { max-width: 100%; }
.nbf-search-header__bar {
  display: flex;
  align-items: center;
  background: #fff;
  border-radius: 8px;
  padding: 0 14px;
  gap: 10px;
  height: 44px;
  box-shadow: 0 1px 4px rgba(0,0,0,.12);
}
.nbf-search-header__icon {
  flex-shrink: 0;
  color: #9CA3AF;
  width: 17px;
  height: 17px;
}
.nbf-search-header__input {
  flex: 1;
  border: none !important;
  outline: none !important;
  font-size: 14.5px;
  background: transparent !important;
  color: #1A1A1A;
  box-shadow: none !important;
  padding: 0 !important;
  height: auto !important;
  min-height: 0 !important;
  font-family: inherit;
}
.nbf-search-header__input::placeholder { color: #9CA3AF; }
.nbf-search-header__count {
  flex-shrink: 0;
  font-size: 12px;
  color: #6B7280;
  white-space: nowrap;
  padding-left: 10px;
  border-left: 1px solid #E5E7EB;
}

/* ══════════════════════════════════════════════════════════════════════════
   DESIGNSYSTEM NORDERNEY BARRIEREFREI
   ══════════════════════════════════════════════════════════════════════════ */
:root {
  --nbf-ds-primary:    #00264D;
  --nbf-ds-accent:     #007B7A;
  --nbf-ds-accent-h:   #005C5B;
  --nbf-ds-text:       #2C2C2C;
  --nbf-ds-bg:         #FFFFFF;
  --nbf-ds-bg-subtle:  #F3F4F6;
  --nbf-ds-border:     #E5E7EB;
  --nbf-ds-focus:      #FFB300;
  --nbf-ds-radius:     10px;
  --nbf-ds-radius-sm:  6px;
  --nbf-ds-radius-pill:15px;
  --nbf-ds-font:       'Inter', sans-serif;
  --nbf-ds-shadow:     0 4px 6px rgba(0,0,0,.05);
  --nbf-ds-shadow-md:  0 8px 24px rgba(0,0,0,.09);
}

/* ════════════════════════════════════════════════════════════════════════════
   DESIGNSYSTEM — NORDERNEY BARRIEREFREI
   Layout nach v0.dev: flex-col > mobile-bar + flex-row(filter|results|map)
   ════════════════════════════════════════════════════════════════════════════ */

/* ════════════════════════════════════════════════════════════════════════════
   DESIGN-SYSTEM — exakt aus v0.dev übernommen + Plugin-Erweiterungen
   ════════════════════════════════════════════════════════════════════════════ */

/* ── CSS Variables & Reset ── */
:root {
  --navy:           #042D53;
  --petrol:         #007B7A;
  --petrol-hover:   #006665;
  --petrol-light:    #E6F2F2;
  --white:          #FFFFFF;
  --light-gray:     #F8F9FA;
  --border-gray:    #E5E7EB;
  --body-gray:      #4B5563;
  --muted-gray:     #6B7280;
  --input-bg:       #F3F4F6;
  --radius-sm:      8px;
  --radius-md:      12px;
  --radius-lg:      16px;
  --shadow-sm:      0 1px 3px rgba(0,0,0,.05);
  --shadow-md:      0 4px 16px -2px rgba(0,0,0,.06);
  --shadow-lg:      0 8px 24px -2px rgba(0,0,0,.08);
  --shadow-btn:     0 2px 8px rgba(0,0,0,.10);
  --shadow-btn-hov: 0 4px 12px rgba(0,0,0,.12);
  /* Plugin-Aliasse für rückwärts-kompatible JS-Refs */
  --nbf-primary:    #042D53;
  --nbf-accent:     #007B7A;
  --nbf-accent-h:   #006665;
  --nbf-text:       #4B5563;
  --nbf-bg:         #FFFFFF;
  --nbf-bg-subtle:  #F8F9FA;
  --nbf-border:     #E5E7EB;
  --nbf-muted:      #6B7280;
  --nbf-focus:      #FFB300;
  --nbf-font:       'Inter', system-ui, sans-serif;
  --nbf-shadow:     0 1px 2px rgba(0,0,0,.05);
  --nbf-shadow-md:  0 4px 6px -1px rgba(0,0,0,.1);
}

/* ── Layout Structure ── */
/* ── Full-Width + Full-Height Breakout aus WordPress/Elementor ── */
.app-container {
  display: flex;
  flex-direction: column;
  /* Full-Width-Breakout */
  width: 100vw !important;
  max-width: 100vw !important;
  position: relative;
  left: 50%;
  margin-left: -50vw !important;
  margin-right: -50vw !important;
  margin-top: 0 !important;
  margin-bottom: -50px !important;
  padding: 0 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  /* Höhe exakt: Karte + Spalten schließen bündig ab */
  height: calc(100vh - 100px);
  max-height: calc(100vh - 100px);
  min-height: 0;
  overflow: hidden;
  font-family: 'Inter Lokal', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  color: var(--navy);
  box-sizing: border-box;
}

/* Alle Elementor/Theme-Wrapper um den Shortcode neutralisieren */
.elementor-widget-shortcode,
.elementor-widget-shortcode .elementor-widget-container,
.elementor-widget-container:has(.app-container),
.elementor-section:has(.app-container),
.elementor-section:has(.app-container) .elementor-container,
.e-con:has(.app-container),
.entry-content:has(.app-container),
.entry-content > .app-container,
.wp-block-group > .app-container,
.site-content:has(.app-container),
.page-content:has(.app-container) {
  padding: 0 !important;
  margin: 0 !important;
  max-width: 100% !important;
}

.main-content {
  display: flex;
  flex: 1;
  overflow: hidden;
  /* Keine Gaps — Spalten liegen bündig aneinander */
  gap: 0;
  margin: 0;
  padding: 0;
}

/* ── Buttons ── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: .625rem 1.25rem;
  font-size: .875rem;
  font-weight: 500;
  border-radius: var(--radius-sm);
  border: none;
  cursor: pointer;
  text-decoration: none;
  transition: all .25s ease;
  font-family: inherit;
  line-height: 1;
  vertical-align: middle;
  box-shadow: var(--shadow-btn);
}
.btn:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-btn-hov);
}
/* SVGs in Buttons: inline-flex Kontext, kein Baseline-Gap */
.btn svg,
.mobile-filter-btn svg,
.mobile-filter-apply svg,
.mobile-filter-reset svg,
.nbf-pag__nav svg,
.nbf-map-consent__btn svg,
.nbf-mobile-map-load-btn svg {
  flex-shrink: 0;
  margin: 0;
  align-self: center;
}
.btn-primary {
  background-color: var(--petrol);
  color: var(--white);
}
.btn-primary:hover { background-color: var(--petrol-hover); }
.btn-primary:focus-visible { outline: 3px solid var(--nbf-focus); outline-offset: 2px; }
.btn-ghost {
  background-color: transparent;
  color: var(--body-gray);
  padding: .5rem;
}
.btn-ghost:hover { background-color: var(--light-gray); }
.btn-outline {
  background-color: transparent;
  color: var(--navy);
  border: 1px solid var(--border-gray);
}
.btn-outline:hover { background-color: var(--light-gray); }

/* ── Filter Sidebar ── */
.filter-sidebar {
  /* Breite = 240px Inhalt + linkes Grid-Padding */
  width: calc(240px + max(0px, (100vw - 1200px) / 2));
  flex-shrink: 0;
  background-color: var(--white);
  border-right: 1px solid var(--border-gray);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
/* Inhalte in der Sidebar: bündig mit 1200px-Grid */
.filter-sidebar .filter-header,
.filter-sidebar .filter-content,
.filter-sidebar .filter-footer {
  padding-left: 2rem;
  padding-right: 1.25rem;
  box-sizing: border-box;
}
.filter-header {
  /* Padding kommt von .filter-sidebar .filter-header (grid-aware) */
  padding-top: 1.25rem;
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--border-gray);
  flex-shrink: 0;
}
.filter-title {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--navy);
  margin-bottom: 1rem;
}
.search-input-wrapper { position: relative; display: block; }
.search-input {
  width: 100%;
  padding: .625rem 2.5rem .625rem 3rem;  /* rechts: Platz für Mic */
  font-size: .875rem;
  border: 1px solid var(--border-gray);
  border-radius: var(--radius-sm);
  background-color: var(--input-bg);
  color: var(--navy);
  outline: none;
  transition: border-color .2s, box-shadow .2s;
  font-family: inherit;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  box-sizing: border-box;
}
/* Browser-native Dekorationen entfernen */
.search-input::-webkit-search-decoration,
.search-input::-webkit-search-cancel-button,
.search-input::-webkit-search-results-button,
.search-input::-webkit-search-results-decoration { display: none; -webkit-appearance: none; }
.search-input:focus {
  border-color: var(--petrol);
  box-shadow: 0 0 0 3px rgba(4,45,83,.10);
}
.search-input::placeholder { color: #737373; }
.search-icon {
  position: absolute;
  left: .875rem;
  top: 50%;
  transform: translateY(-50%);
  width: 1rem;
  height: 1rem;
  color: var(--muted-gray);
  pointer-events: none;
  z-index: 1;
}
.filter-content {
  flex: 1;
  overflow-y: auto;
  padding: .5rem 0;
}
.filter-content::-webkit-scrollbar { width: 3px; }
.filter-content::-webkit-scrollbar-thumb { background: var(--border-gray); border-radius: 3px; }
.filter-section {
  border: var(--border-light);
  border-radius: var(--radius-md);
  margin-bottom: .5rem;
  overflow: hidden;
  background: #f9fafb;
  box-shadow: var(--shadow-soft);
}
.filter-section:last-child { margin-bottom: 0; }

/* Header: IDENTISCH in allen Zuständen — nur Chevron rotiert */
.filter-section-header,
.filter-section.open .filter-section-header,
.filter-section.open .filter-section-header:hover,
[class*="elementor-kit"] .filter-section-header,
[class*="elementor-kit"] .filter-section.open .filter-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: .75rem 1rem;
  background: #ffffff !important;
  border: none !important;
  border-radius: 8px !important;
  box-shadow: none !important;
  cursor: pointer;
  text-align: left;
  font-size: 1rem !important;
  font-weight: 600 !important;
  color: var(--navy) !important;
  font-family: inherit !important;
  line-height: 1.4 !important;
  transition: background .15s;
}
.filter-section-header:hover {
  background: #F9FAFB !important;
}
.filter-section-header:focus-visible {
  outline: 3px solid var(--nbf-focus);
  outline-offset: -2px;
}
.filter-section-header svg {
  width: 1rem;
  height: 1rem;
  color: #6B7280 !important;
  transition: transform .2s;
  flex-shrink: 0;
}
/* Offen: nur Chevron dreht sich + Trennlinie */
.filter-section.open .filter-section-header {
  border-bottom: 1px solid #E5E7EB !important;
  border-radius: 8px 8px 0 0 !important;
}
.filter-section.open .filter-section-header svg {
  transform: rotate(180deg);
  color: #6B7280 !important;
}
.filter-options {
  display: none;
  padding: .5rem 1rem 1rem;
}
.filter-section.open .filter-options { display: block; }
.filter-option {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .5rem 0;
  cursor: pointer;
}
.filter-option input[type="checkbox"] {
  width: 1.125rem;
  height: 1.125rem;
  border: 2px solid var(--border-gray);
  border-radius: 4px;
  appearance: none;
  cursor: pointer;
  position: relative;
  background-color: var(--white);
  transition: all .2s;
  flex-shrink: 0;
}
.filter-option input[type="checkbox"]:checked {
  background-color: var(--petrol);
  border-color: var(--petrol);
}
.filter-option input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 4px;
  height: 8px;
  border: solid var(--white);
  border-width: 0 2px 2px 0;
  transform: translate(-50%, -60%) rotate(45deg);
}
.filter-option input[type="checkbox"]:focus-visible {
  outline: 3px solid var(--nbf-focus);
  outline-offset: 2px;
}
.filter-option-label {
  font-size: .875rem;
  color: var(--body-gray);
  line-height: 1.35;
}
.filter-footer {
  padding-top: 1rem;
  padding-bottom: 1rem;
  padding-left: 0;
  border-top: 1px solid var(--border-gray);
  display: flex;
  flex-direction: column;
  gap: .5rem;
  flex-shrink: 0;
}
.filter-footer .btn { width: 100%; }

/* ── POI List (Spalte 2) ── */
.poi-list-container {
  width: 450px;
  flex-shrink: 0;
  background-color: var(--light-gray);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  margin: 0;
}
.poi-list-header {
  padding: 1rem;
  background-color: var(--white);
  flex-shrink: 0;
}
.poi-list-title {
  font-size: 1rem;
  color: var(--body-gray);
}
.poi-list-title strong {
  color: var(--navy);
  font-weight: 700;
}
/* updateCount schreibt innerHTML direkt in #nbf-results-count-side */
#nbf-results-count-side strong,
#nbf-results-count strong {
  color: var(--navy);
  font-weight: 700;
}
#nbf-results,
.poi-list {
  flex: 1;
  overflow-y: auto;
  padding: 1rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  list-style: none;
  margin: 0;
}
.poi-list::-webkit-scrollbar { width: 3px; }
.poi-list::-webkit-scrollbar-thumb { background: var(--border-gray); border-radius: 3px; }

/* ── POI Card ── */
.poi-card {
  background-color: var(--white);
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-soft);
  border: var(--border-light);
  transition: all .3s ease;
  cursor: pointer;
  text-decoration: none;
  display: flex;
  flex-direction: column;
  color: var(--navy);
}
.poi-card:hover {
  box-shadow: var(--shadow-medium);
  transform: translateY(-2px);
}
.poi-card:focus-visible {
  outline: 3px solid var(--nbf-focus);
  outline-offset: 2px;
}
.poi-card-image {
  position: relative;
  height: 180px;
  overflow: hidden;
  flex-shrink: 0;
  border-radius: var(--radius-md) var(--radius-md) 0 0;
}
.poi-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .35s;
}
.poi-card:hover .poi-card-image img { transform: scale(1.04); }
.poi-card-no-img {
  width: 100%;
  height: 180px;
  background: linear-gradient(135deg, #EBF3F3 0%, var(--light-gray) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .8rem;
  color: var(--muted-gray);
  font-weight: 600;
  text-align: center;
  padding: 1rem;
}
.poi-card-badge {
  position: absolute;
  top: .75rem;
  left: .75rem;
  padding: .25rem .625rem;
  background-color: var(--navy) !important;
  color: #ffffff !important;
  font-size: .75rem !important;
  font-weight: 600 !important;
  border-radius: 9999px !important;
  text-transform: uppercase !important;
  letter-spacing: .04em;
  line-height: 1.4;
  border: none !important;
}
/* Elementor-Override verhindern */
[class*="elementor-kit"] .poi-card-badge,
[class*="elementor"] .poi-card-badge {
  background-color: var(--navy) !important;
  color: #ffffff !important;
  border: none !important;
}
.poi-card-content {
  padding: 1rem;
}
.poi-card-category {
  display: none;
}
.poi-card-title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--navy);
  margin-bottom: .25rem;
  line-height: 1.4;
}
.poi-card-address {
  font-size: .8125rem;
  color: var(--muted-gray);
  margin-bottom: .75rem;
  display: flex;
  align-items: center;
  gap: .25rem;
}
.poi-card-accessibility {
  display: flex;
  gap: .5rem;
  margin-bottom: .75rem;
  flex-wrap: wrap;
}
.accessibility-icon {
  width: 2rem;
  height: 2rem;
  background-color: var(--light-gray);
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.accessibility-icon svg {
  width: 1.125rem;
  height: 1.125rem;
  color: var(--petrol);
}
.poi-card-tags {
  display: flex;
  flex-wrap: wrap;
  gap: .375rem;
}
.poi-tag {
  padding: .25rem .625rem;
  background-color: var(--light-gray);
  color: var(--body-gray);
  font-size: .75rem;
  border-radius: 9999px;
}

/* ── List Footer & Pagination ── */
.poi-list-footer {
  padding: 1rem 1.25rem;
  background-color: var(--white);
  border-top: 1px solid var(--border-gray);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
/* ── Pagination v0-Design ── */
.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .375rem;
  padding-top: 0;
  box-shadow: none !important;
}

/* ── Zurück / Weiter — Outline-Stil ── */
/* ── Zurück / Weiter ── */
#nbf-pagination .nbf-pag__nav,
.pagination .nbf-pag__nav,
.nbf-pag__nav {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: .5rem !important;
  height: 2.25rem !important;
  padding: 0 .875rem !important;
  background-color: transparent !important;
  border: 1px solid #E5E7EB !important;
  border-radius: var(--radius-sm) !important;
  color: var(--navy) !important;
  font-size: .8125rem !important;
  font-weight: 500 !important;
  font-family: inherit !important;
  cursor: pointer !important;
  transition: background .15s, color .15s !important;
  white-space: nowrap !important;
}
#nbf-pagination .nbf-pag__nav:hover:not(:disabled),
.pagination .nbf-pag__nav:hover:not(:disabled),
.nbf-pag__nav:hover:not(:disabled) {
  background-color: #F3F4F6 !important;
  border-color: #D1D5DB !important;
  color: var(--navy) !important;
}
#nbf-pagination .nbf-pag__nav:disabled,
.nbf-pag__nav:disabled {
  opacity: .35 !important;
  cursor: not-allowed !important;
}
.nbf-pag__nav svg { flex-shrink: 0; }

/* ── Seitenzahlen (inaktiv): kein harter Rahmen ── */
#nbf-pagination .nbf-pag__num,
.pagination .nbf-pag__num,
.nbf-pag__num {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 2.25rem !important;
  height: 2.25rem !important;
  padding: 0 .375rem !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  border-radius: var(--radius-sm) !important;
  color: var(--navy) !important;
  font-size: .8125rem !important;
  font-weight: 500 !important;
  font-family: inherit !important;
  cursor: pointer !important;
  transition: background .15s !important;
}
/* Hover — sanftes Grau */
#nbf-pagination .nbf-pag__num:hover:not(.nbf-pag__num--active),
.pagination .nbf-pag__num:hover:not(.nbf-pag__num--active),
.nbf-pag__num:hover:not(.nbf-pag__num--active) {
  background-color: #F3F4F6 !important;
  border-color: transparent !important;
  color: var(--navy) !important;
}

/* ── Aktive Seite — Navy ── */
#nbf-pagination .nbf-pag__num--active,
.pagination .nbf-pag__num--active,
.nbf-pag__num--active {
  background-color: var(--navy) !important;
  border-color: transparent !important;
  color: #ffffff !important;
  font-weight: 700 !important;
  cursor: default !important;
}

/* Ellipsis */
.nbf-pag__ellipsis {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2rem;
  height: 2.25rem;
  color: var(--muted-gray);
  font-size: .875rem;
  user-select: none;
}

/* Focus */
#nbf-pagination .nbf-pag__nav:focus-visible,
#nbf-pagination .nbf-pag__num:focus-visible,
.nbf-pag__nav:focus-visible,
.nbf-pag__num:focus-visible {
  outline: 3px solid var(--navy);
  outline-offset: 2px;
}

/* ── Map Container (Spalte 3) ── */
.map-container {
  flex: 1;
  position: relative;
  overflow: hidden;
  background: #E8F4F3;
  min-width: 0;
  height: 100vh;
  min-height: 500px;
}
/* Leaflet-Karte füllt den Container vollständig */
.map-placeholder,
#nbf-map {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
}

/* Report-Hinweis unter der Karte */
.nbf-map-report-hint {
  position: absolute;
  bottom: 1.25rem;
  right: 1.5rem;
  left: auto;
  transform: none;
  background: var(--white);
  border: 1px solid var(--border-gray);
  border-radius: var(--radius-md);
  padding: .75rem 1rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  box-shadow: var(--shadow-md);
  font-size: .8rem;
  z-index: 1000;
  white-space: nowrap;
  pointer-events: all;
}
.nbf-map-report-hint__text { display: flex; flex-direction: column; gap: .1rem; }
.nbf-map-report-hint__text strong { color: var(--navy); font-size: .8125rem; }
.nbf-map-report-hint__text span { color: var(--muted-gray); }
.nbf-map-report-hint__btn {
  padding: .4rem .875rem;
  font-size: .8rem;
}

/* ── Loading State ── */
.nbf-loading {
  list-style: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  padding: 3rem 1rem;
  color: var(--muted-gray);
}
.nbf-spinner {
  width: 2rem;
  height: 2rem;
  border: 3px solid var(--border-gray);
  border-top-color: var(--petrol);
  border-radius: 50%;
  animation: nbf-spin .7s linear infinite;
}
@keyframes nbf-spin { to { transform: rotate(360deg); } }

/* ── Mobile: Filter-Toggle Button (fixiert) ── */
.mobile-top-bar {
  display: none; /* → sichtbar auf Mobile */
  align-items: center;
  gap: .75rem;
  padding: .75rem 1rem;
  background: var(--white);
  border-bottom: 1px solid var(--border-gray);
  flex-shrink: 0;
}
.mobile-top-bar__count {
  font-size: .875rem;
  color: var(--muted-gray);
}
.mobile-filter-toggle {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem .875rem;
  border: 1.5px solid var(--petrol);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--petrol);
  font-size: .875rem;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: background .15s;
}
.mobile-filter-toggle:hover { background: rgba(0,123,122,.08); }
.mobile-filter-toggle svg { width: 1rem; height: 1rem; }

/* ── Mobile: Filter Overlay + Sheet ── */
.mobile-filter-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background-color: rgba(0,0,0,.5);
  z-index: 10000; /* Über Leaflet (max z-index ~1000) */
}
.mobile-filter-overlay.open { display: block; }
.mobile-filter-sheet {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  max-height: 92vh;
  background-color: var(--white);
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  z-index: 10001;
  transform: translateY(100%);
  transition: transform .3s ease;
  display: flex;
  flex-direction: column;
}
.mobile-filter-overlay.open .mobile-filter-sheet { transform: translateY(0); }
.mobile-filter-handle {
  width: 2.5rem;
  height: .25rem;
  background-color: var(--border-gray);
  border-radius: .125rem;
  margin: .75rem auto .25rem;
  flex-shrink: 0;
}
.mobile-filter-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: .5rem 1.25rem 1rem;
  border-bottom: 1px solid var(--border-gray);
  flex-shrink: 0;
}
.mobile-filter-title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--navy);
}
.mobile-filter-close {
  width: 2rem;
  height: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--petrol) !important;
  border: none;
  cursor: pointer;
  border-radius: 50%;
  transition: background .15s;
  font-size: 1rem;
  color: #ffffff !important;
}
.mobile-filter-close:hover { background-color: var(--petrol-hover) !important; }
/* Alle möglichen Selektoren um das X weiß zu machen */
.mobile-filter-close svg,
button.mobile-filter-close svg,
#nbf-mobile-filter-close svg {
  width: 1.125rem;
  height: 1.125rem;
  color: #ffffff !important;
  stroke: #ffffff !important;
  fill: none !important;
}
.mobile-filter-close svg *,
button.mobile-filter-close svg *,
#nbf-mobile-filter-close svg * {
  stroke: #ffffff !important;
  color: #ffffff !important;
}
/* Suchfeld im Sheet */
.mobile-filter-search {
  padding: 1rem 1.25rem .5rem;
  border-bottom: 1px solid var(--border-gray);
  flex-shrink: 0;
}
.mobile-filter-body {
  flex: 1;
  overflow-y: auto;
  padding: 0;
}
/* Filter-Sektionen im Sheet: nur border-bottom, kein Hintergrund */
.mobile-filter-body .filter-section { border-bottom: 1px solid var(--border-gray); }
.mobile-filter-body .filter-section {
  border: 1px solid #E5E7EB;
  border-radius: 8px;
  margin: .375rem 1rem;
  width: calc(100% - 2rem);
  overflow: hidden;
  background: #ffffff;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.mobile-filter-body .filter-section-header,
.mobile-filter-body .filter-section.open .filter-section-header {
  padding: .75rem 1rem;
  margin: 0;
  border-radius: 8px !important;
  border: none !important;
  border-bottom: none !important;
  font-size: 1rem;
  font-weight: 600;
  width: 100%;
  background: #ffffff !important;
  color: var(--navy) !important;
  box-shadow: none !important;
}
.mobile-filter-body .filter-section-header:hover {
  background: #F9FAFB !important;
  color: var(--navy) !important;
}
.mobile-filter-body .filter-section.open .filter-section-header {
  border-bottom: 1px solid #E5E7EB !important;
  border-radius: 8px 8px 0 0 !important;
}
.mobile-filter-body .filter-section.open .filter-section-header svg {
  color: #6B7280 !important;
}
.mobile-filter-body .filter-options {
  padding: 0 1rem 1rem;
  margin: 0;
  width: 100%;
}
.mobile-filter-body .filter-options {
  padding: 0 1rem 1rem;
  margin: 0 1rem;            /* bündig mit Header */
  width: calc(100% - 2rem);
}
.mobile-filter-body .filter-option { padding: .625rem 0; }
.mobile-filter-body .filter-option-label { font-size: .9375rem; color: var(--body-gray); }
/* Apply-Button unten */
.mobile-filter-footer {
  padding: 1rem;
  border-top: 1px solid var(--border-gray);
  flex-shrink: 0;
  background: var(--white);
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.mobile-filter-reset {
  display: none; /* JS zeigt ihn nur wenn Filter aktiv */
  width: 100%;
  padding: .75rem 1rem;
  background: transparent;
  border: 1.5px solid var(--border-gray);
  border-radius: var(--radius-md);
  font-size: .9375rem;
  font-weight: 500;
  color: var(--navy);
  cursor: pointer;
  font-family: inherit;
  transition: background .2s;
  text-align: center;
}
.mobile-filter-reset:hover { background: var(--light-gray); }
.mobile-filter-apply {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  width: 100%;
  padding: .875rem 1rem;
  background: var(--petrol);
  color: var(--white);
  border: none;
  border-radius: var(--radius-md);
  font-size: .9375rem;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: background .2s;
}
.mobile-filter-apply:hover { background: var(--petrol-hover); }

/* ── Utility ── */
.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;
}
.nbf-sr-only { @extend .sr-only; }

/* ── Responsive < 1024px (Tablet Landscape + kleine Desktops) ── */
@media (max-width: 1024px) {
  .filter-sidebar { display: none; }
  .poi-list-container { width: 400px; }
}


/* Bei kleinen Screens: filter-sidebar normale Breite + normale Paddings */
@media (max-width: 1280px) {
  .filter-sidebar {
    width: 300px;
  }
  .filter-sidebar .filter-header,
  .filter-sidebar .filter-content,
  .filter-sidebar .filter-footer {
    padding-left: 1.25rem;
  }
}

@media (max-width: 768px) {

  /* ── App-Container: scrollbar statt fixed height ── */
  .app-container {
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    flex-direction: column;
  }

  /* ── Mobile Top-Bar: sichtbar, direkt über der Karte ── */
  .mobile-top-bar {
    display: flex !important;
    align-items: center;
    gap: .75rem;
    padding: .625rem 1rem;
    background: var(--white);
    border-bottom: 1px solid var(--border-gray);
    flex-shrink: 0;
    order: 0;
    z-index: 10;
  }

  /* ── Filter-Button: Petrol Outline Pill ── */
  .mobile-filter-btn {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .5rem 1rem;
    background: transparent;
    border: 1.5px solid var(--petrol);
    border-radius: 9999px;
    color: var(--petrol);
    font-size: .875rem;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    transition: background .15s;
  }
  .mobile-filter-btn:hover { background: rgba(0,123,122,.08); }
  .mobile-filter-btn svg { width: 1rem; height: 1rem; }

  .mobile-top-bar__divider {
    flex: 1;
  }
  .mobile-top-bar__count {
    font-size: .8125rem;
    color: var(--muted-gray);
    white-space: nowrap;
  }

  /* ── Desktop-Sidebar ausblenden ── */
  .filter-sidebar { display: none !important; }

  /* ── Hauptbereich: gestapelt ── */
  .main-content {
    flex-direction: column;
    overflow: visible;
    height: auto;
    flex: none;
    order: 1;
  }

  /* ── Karte: kompakt, direkt nach Filter-Bar ── */
  .map-container {
    order: 1;
    height: 220px !important;
    min-height: 220px !important;
    flex: none;
    width: 100%;
    position: relative;
  }

  /* ── Ergebnisliste: voll scrollbar, Pagination sichtbar ── */
  .poi-list-container {
    order: 2;
    width: 100%;
    height: auto;
    overflow: visible;
    flex: none;
    display: flex;
    flex-direction: column;
  }
  #nbf-results,
  .poi-list {
    overflow: visible;
    height: auto;
    max-height: none;
  }
  .poi-list-footer {
    position: static !important;
    display: flex !important;
    height: auto !important;
    min-height: 60px;
    padding: .75rem 1rem !important;
    background: var(--white);
    border-top: 1px solid var(--border-gray);
  }
  #nbf-pagination {
    display: flex !important;
    flex-wrap: wrap;
    justify-content: center;
    gap: .375rem;
  }

  /* ── Melden-Hinweis: statisch unten ── */
  .nbf-map-report-hint {
    position: static;
    transform: none;
    left: auto;
    right: auto;
    bottom: auto;
    margin: 1rem;
    border-radius: var(--radius-md);
    white-space: normal;
    max-width: calc(100% - 2rem);
    box-shadow: var(--shadow-sm);
  }

  /* ── Desktop mobile-filter-toggle verstecken ── */
  .mobile-filter-toggle { display: none !important; }
}

.nbf-report-modal button,
.nbf-report-modal input,
.nbf-report-modal select,
.nbf-report-modal textarea,
.nbf-modal button,
.nbf-modal input,
.nbf-modal select,
.nbf-modal textarea,
.nbf-lightbox button {
  font-family: inherit;
  font-size: inherit;
  box-sizing: border-box;
}

/* Sicherstellen dass theme-button-Resets nicht greifen */
.nbf-report-modal button:not(.nbf-btn):not(.nbf-report-modal__close):not(.btn):not(.modal-close),
.nbf-modal button:not(.nbf-btn):not(.nbf-modal__close):not(.btn):not(.modal-close) {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
}

.nbf-wrap {
  font-family: var(--nbf-font);
  font-size: var(--nbf-size-base);
  font-weight: var(--nbf-weight-body);
  color: var(--nbf-text);
  line-height: var(--nbf-line-height);
  letter-spacing: var(--nbf-letter-spacing);
  max-width: 100%;
  overflow-x: hidden;   /* verhindert horizontales Scrollen auf Mobile */
  background: #F8FAFC;
}

/* Auch Modals außerhalb von .nbf-wrap */
.nbf-report-modal,
.nbf-modal,
.nbf-lightbox {
  font-family: var(--nbf-font);
  font-size: var(--nbf-size-base);
  font-weight: var(--nbf-weight-body);
  line-height: var(--nbf-line-height);
  letter-spacing: var(--nbf-letter-spacing);
}

/* ── Buttons ────────────────────────────────────────────────────────────── */
.nbf-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 18px;
  border-radius: var(--nbf-radius);
  border: 1px solid transparent;
  font-size: .9rem;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  transition: background var(--nbf-transition), color var(--nbf-transition), border-color var(--nbf-transition);
  white-space: nowrap;
  line-height: 1.3;
}

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

.nbf-btn--primary {
  background: var(--nbf-primary);
  color: #fff;
  border-color: var(--nbf-primary);
}
.nbf-btn--primary:hover {
  background: color-mix(in srgb, var(--nbf-primary) 85%, #000);
  border-color: color-mix(in srgb, var(--nbf-primary) 85%, #000);
  color: #fff;
}

.nbf-btn--secondary {
  background: var(--nbf-secondary);
  color: #fff;
  border-color: var(--nbf-secondary);
}
.nbf-btn--secondary:hover {
  background: color-mix(in srgb, var(--nbf-secondary) 85%, #000);
  border-color: color-mix(in srgb, var(--nbf-secondary) 85%, #000);
  color: #fff;
}

.nbf-btn--outline {
  background: transparent;
  color: var(--nbf-primary);
  border-color: var(--nbf-primary);
}
.nbf-btn--outline:hover {
  background: var(--nbf-accent);
}

.nbf-btn--ghost {
  background: transparent;
  color: var(--nbf-muted);
  border-color: var(--nbf-border);
}
.nbf-btn--ghost:hover {
  background: var(--nbf-bg-alt);
  color: var(--nbf-text);
}

.nbf-btn--sm   { padding: 6px 12px; font-size: .82rem; }
.nbf-btn--full { width: 100%; }

/* ══════════════════════════════════════════════════════════════════════════
   CONTROL BAR — Suche, Filter, Toolbar (unified, mobile-first)
   ══════════════════════════════════════════════════════════════════════════ */

.nbf-control-bar {
  background: #ffffff;   /* Suchbereich bleibt weiß */
  border-bottom: 2px solid var(--nbf-border);
  box-shadow: 0 2px 12px rgba(0,0,0,.07);
}

.nbf-control-bar__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 16px 16px 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* ── Zeile 1: Suche ────────────────────────────────────────────────────── */
.nbf-search-row {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

/* ── Zeile 2: Dropdowns nebeneinander ──────────────────────────────────── */
.nbf-dropdowns-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

/* ── Zeile 3: Aktions-Buttons ──────────────────────────────────────────── */
.nbf-actions-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.nbf-actions-row .nbf-btn {
  flex: 1;
  justify-content: center;
  text-align: center;
  min-height: 42px;
  font-size: .9rem;
}

/* ── Ergebnis-Toolbar ──────────────────────────────────────────────────── */
.nbf-results-toolbar {
  background: #F8FAFC;
  border-top: 1px solid var(--nbf-border);
  border-bottom: 1px solid var(--nbf-border);
}

.nbf-results-toolbar__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 8px 16px;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.nbf-results-count {
  font-size: .88rem;
  color: var(--nbf-muted);
  font-weight: 600;
  flex: 1;
}

.nbf-toolbar-right {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

/* ── Filter-Gruppe (Label + Feld) ──────────────────────────────────────── */
.nbf-filter-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.nbf-filter-group--sort { flex-shrink: 0; }

.nbf-filter-label {
  font-size: .75rem;
  font-weight: 700;
  color: var(--nbf-muted);
  text-transform: uppercase;
  letter-spacing: .04em;
}

/* Desktop: Dropdowns inline */
@media (min-width: 768px) {
  .nbf-control-bar__inner {
    padding: 14px 20px 10px;
    gap: 10px;
  }

  .nbf-dropdowns-row {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  }

  .nbf-actions-row .nbf-btn {
    flex: 0 0 auto;
    min-height: unset;
  }

  .nbf-search-row {
    flex-direction: row;
    align-items: flex-end;
    gap: 12px;
  }

  .nbf-search-row label { white-space: nowrap; padding-bottom: 8px; }
  .nbf-search-row input { flex: 1; }
}

.nbf-search-input {
  width: 100%;
  padding: 10px 14px;
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-radius);
  font-size: 1rem;
  background: var(--nbf-bg);
  color: var(--nbf-text);
  transition: border-color var(--nbf-transition);
}
.nbf-search-input:focus {
  outline: none;
  border-color: var(--nbf-secondary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--nbf-secondary) 20%, transparent);
}

.nbf-select {
  padding: 10px 10px;
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-radius);
  font-size: 1rem;
  background: var(--nbf-bg);
  color: var(--nbf-text);
  cursor: pointer;
  transition: border-color var(--nbf-transition);
}
.nbf-select:focus {
  outline: none;
  border-color: var(--nbf-secondary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--nbf-secondary) 20%, transparent);
}
.nbf-select--sm { padding: 6px 8px; font-size: .82rem; }

/* ── Filter Panel (Merkmale) ────────────────────────────────────────────── */
.nbf-filter-panel {
  margin-top: 10px;
  padding: 14px;
  background: var(--nbf-bg-alt);
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-radius);
}

.nbf-filter-panel__footer {
  margin-top: 10px;
  text-align: right;
}

/* Merkmal-Checkboxen (aus filter-merkmale.php) */
.nbf-merkmal-group {
  margin-bottom: 12px;
}

.nbf-merkmal-group__title {
  font-size: .8rem;
  font-weight: 700;
  color: var(--nbf-muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin: 0 0 6px;
}

.nbf-merkmal-checks {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.nbf-merkmal-check {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border: 1px solid var(--nbf-border);
  border-radius: 999px;
  font-size: .8rem;
  cursor: pointer;
  background: var(--nbf-bg);
  transition: background var(--nbf-transition), border-color var(--nbf-transition);
  user-select: none;
}
.nbf-merkmal-check:has(input:checked) {
  background: var(--nbf-accent);
  border-color: var(--nbf-secondary);
  color: var(--nbf-secondary);
  font-weight: 600;
}
.nbf-merkmal-check input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

/* nbf-map-toggle-bar ist in nbf-results-toolbar aufgegangen — Kompatibilität */
.nbf-map-toggle-bar { display: none; }

.nbf-view-toggle {
  display: flex;
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-radius);
  overflow: hidden;
}

.nbf-view-btn {
  padding: 8px 14px;
  font-size: .88rem;
  font-weight: 600;
  border: none;
  background: var(--nbf-bg);
  color: var(--nbf-muted);
  cursor: pointer;
  min-height: 38px;
  transition: background var(--nbf-transition), color var(--nbf-transition);
}
.nbf-view-btn.active,
.nbf-view-btn:hover {
  background: var(--nbf-primary);
  color: #fff;
}
.nbf-view-btn:focus-visible {
  outline: 3px solid var(--nbf-secondary);
  outline-offset: -2px;
}

/* ── Karte ──────────────────────────────────────────────────────────────── */
.nbf-map-wrap {
  position: relative;
  overflow: hidden;
  transition: max-height .35s ease;
}

/* Volle Viewport-Breite: bricht aus dem Theme-Container heraus */
.nbf-map-wrap--fullwidth {
  width: 100vw;
  margin-left:  calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
}

/* Container-Breite: bleibt im Theme-Inhaltsbereich */
.nbf-map-wrap--container {
  width: 100%;
  margin-left:  0;
  margin-right: 0;
}

.nbf-map-wrap--collapsed {
  max-height: 0 !important;
}

.nbf-map {
  width: 100%;
  display: block;
  background: #f2efe9;
  position: relative;
}

/* Leaflet-Container: Theme-Backgrounds und Pseudo-Elemente blockieren */
.nbf-map .leaflet-container {
  background: #f2efe9 !important;
  isolation: isolate;
}
/* Gezielter Reset: nur direkte Kinder des leaflet-containers und der Panes,
   nicht rekursiv – Leaflet-interne ::before/::after bleiben unberührt */
.nbf-finder-layout .leaflet-pane::before,
.nbf-finder-layout .leaflet-pane::after,
.nbf-finder-layout .leaflet-map-pane::before,
.nbf-finder-layout .leaflet-map-pane::after {
  content: none !important;
  background-image: none !important;
}

/* ── Scroll-Falle Overlay ──────────────────────────────────────────────────
 * Zeigt einen Hinweis wenn der Nutzer mit Mausrad oder einem Finger über
 * die Karte fährt – ohne die Karte zuvor fokussiert zu haben.
 * Pattern: Google Maps, OpenStreetMap, Mapbox
 * ─────────────────────────────────────────────────────────────────────── */
.nbf-map-scroll-overlay {
  display: none;  /* versteckt bis JavaScript es aktiviert */
  position: absolute;
  inset: 0;
  z-index: 1000;  /* über Leaflet-Tiles (z-index 200-400) */
  background: rgba(0, 0, 0, 0.42);
  border-radius: inherit;
  pointer-events: none;  /* Klicks auf die Karte durchlassen */
  /* Smooth fade-in / fade-out */
  opacity: 0;
  transition: opacity .2s ease;
  /* Zentrierter Hinweistext */
  align-items: center;
  justify-content: center;
  gap: 8px;
  flex-direction: column;
}
.nbf-map-scroll-overlay--visible {
  display: flex;
  opacity: 1;
}
.nbf-map-scroll-overlay span {
  display: none;  /* Nur den passenden Hinweis zeigen */
  color: #fff;
  font-size: .95rem;
  font-weight: 600;
  text-align: center;
  padding: 10px 20px;
  background: rgba(0, 0, 0, 0.55);
  border-radius: 8px;
  pointer-events: none;
  /* Verhindert Theme-Overrides */
  line-height: 1.4 !important;
  letter-spacing: 0 !important;
}
/* Desktop: Maus-Hinweis anzeigen */
.nbf-map-scroll-overlay--mouse .nbf-map-scroll-overlay__mouse { display: block; }
/* Touch: Touch-Hinweis anzeigen */
.nbf-map-scroll-overlay--touch .nbf-map-scroll-overlay__touch { display: block; }

.nbf-locate-btn {
  position: absolute;
  bottom: 16px;
  right: 16px;
  z-index: 1000;
  background: var(--nbf-bg);
  border: 1px solid var(--nbf-primary);
  color: var(--nbf-primary);
  border-radius: var(--nbf-radius);
  padding: 7px 14px;
  font-size: .82rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: var(--nbf-shadow);
  transition: background var(--nbf-transition);
}
.nbf-locate-btn:hover { background: var(--nbf-accent); }
.nbf-locate-btn:focus-visible {
  outline: 3px solid var(--nbf-secondary);
  outline-offset: 2px;
}
/* ── Leaflet Popup ─────────────────────────────────────────────────── */
.nbf-leaflet-popup .leaflet-popup-content-wrapper {
  border-radius: var(--radius-md) !important;
  box-shadow: var(--shadow-large) !important;
  padding: 0 !important;
  overflow: hidden;
}
.nbf-leaflet-popup .leaflet-popup-content {
  margin: 0 !important;
  width: auto !important;
}
.nbf-leaflet-popup .leaflet-popup-close-button {
  top: 10px !important;
  right: 10px !important;
  color: #9CA3AF !important;
  font-size: 18px !important;
  z-index: 1;
}
.nbf-leaflet-popup .leaflet-popup-close-button:hover {
  color: #1A3A5C !important;
}
/* Popup — Variante A Minimalist */
.nbf-popup {
  padding: 16px 16px 14px;
  min-width: 220px;
  max-width: 280px;
  font-family: inherit;
}
.nbf-popup__cat {
  font-size: 12px;
  font-weight: 800;
  color: var(--nbf-secondary, #0F7E6A);
  text-transform: uppercase;
  letter-spacing: .08em;
  margin: 0 0 4px;
}
.nbf-popup__title {
  font-size: 15px;
  font-weight: 700;
  color: #111827;
  line-height: 1.3;
  margin: 0 0 6px;
  padding-right: 18px;
}
.nbf-popup__status {
  display: inline-flex;
  align-items: center;
  font-size: 12px;
  font-weight: 700;
  padding: 3px 9px;
  border-radius: 6px;
  margin-bottom: 8px;
}
.nbf-popup__status--ok   { background: #D1FAE5; color: #065F46; }
.nbf-popup__status--info { background: #FEF3C7; color: #92400E; }
.nbf-popup__addr {
  font-size: 12px;
  color: #6B7280;
  margin: 0 0 10px;
}
.nbf-popup__pills {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-bottom: 14px;
}
.nbf-popup__pill {
  font-size: 12px;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 20px;
  white-space: nowrap;
}
.nbf-popup__pill--ok  { background: #D1FAE5; color: #065F46; }
.nbf-popup__pill--mid { background: #FEF3C7; color: #92400E; }
.nbf-popup__pill--no  { background: #FEE2E2; color: #991B1B; }
.nbf-popup__cta {
  display: block;
  width: 100%;
  padding: 10px;
  background: var(--nbf-primary, #1A3A5C);
  color: #fff;
  border-radius: 9px;
  font-size: 13px;
  font-weight: 700;
  text-align: center;
  text-decoration: none;
  box-sizing: border-box;
  transition: background .15s;
}
.nbf-popup__cta:hover { background: var(--nbf-secondary, #0F7E6A); color: #fff; }
.nbf-popup__cta:focus-visible { outline: 3px solid #0F7E6A; outline-offset: 2px; }

/* Standard Leaflet Pin */
.nbf-map-pin {
  background: transparent !important;
  border: none !important;
}

/* ── Ergebnisliste ──────────────────────────────────────────────────────── */
.nbf-results-wrap {
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px 16px;
}

/* Grid */
.nbf-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
}

/* List view */
.nbf-grid.nbf-list-view {
  grid-template-columns: 1fr;
  gap: 8px;
}

/* ── Karte ──────────────────────────────────────────────────────────────── */
.nbf-card {
  display: flex;
  flex-direction: column;
  background: var(--nbf-ds-bg);
  border: none;
  border-radius: var(--nbf-ds-radius);
  overflow: hidden;
  text-decoration: none;
  color: var(--nbf-ds-text);
  box-shadow: var(--nbf-ds-shadow);
  transition: box-shadow .2s, transform .2s;
  font-family: var(--nbf-ds-font);
}
.nbf-card:hover {
  box-shadow: var(--nbf-ds-shadow-md);
  transform: translateY(-2px);
}
.nbf-card:focus-visible {
  outline: 3px solid var(--nbf-ds-focus);
  outline-offset: 3px;
}

/* Bild: 16:9, volle Breite, obere Ecken gerundet */
.nbf-card__img-wrap {
  position: relative;
  overflow: hidden;
  border-radius: var(--nbf-ds-radius) var(--nbf-ds-radius) 0 0;
  flex-shrink: 0;
  aspect-ratio: 16 / 9;
}
.nbf-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .35s ease;
}
.nbf-card:hover .nbf-card__img { transform: scale(1.04); }

/* Kein Bild Placeholder */
.nbf-card__no-img {
  width: 100%;
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, #EBF3F3 0%, #F3F4F6 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  color: #9CA3AF;
  font-weight: 600;
  text-align: center;
  padding: 1rem;
  border-radius: var(--nbf-ds-radius) var(--nbf-ds-radius) 0 0;
}

/* Kategorie-Badge: absolut über dem Bild */
.nbf-card__badge {
  position: absolute;
  top: 0.625rem;
  left: 0.625rem;
  z-index: 2;
}
.nbf-card__cat-badge {
  display: inline-block;
  background: var(--nbf-ds-accent);
  color: #fff;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  border-radius: var(--nbf-ds-radius-sm);
  padding: 0.2rem 0.5rem;
  font-family: var(--nbf-ds-font);
  line-height: 1.4;
}

/* Content-Bereich */
.nbf-card__body {
  padding: 1rem 1.25rem 1.25rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.nbf-card__cat {
  font-size: 0.75rem;
  color: var(--nbf-ds-accent);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  margin: 0;
  display: none; /* Badge übernimmt die Kategorie */
}
.nbf-card__title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--nbf-ds-primary);
  margin: 0;
  line-height: 1.35;
}
.nbf-card__address {
  font-size: 0.8125rem;
  color: #6B7280;
  margin: 0;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}
.nbf-card__merkmale {
  margin-top: 0.625rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  padding-top: 0.625rem;
  border-top: 1px solid var(--nbf-ds-border);
}

/* ── Listenansicht: horizontal, groß, barrierefrei ────────────────────── */
.nbf-grid.nbf-list-view {
  grid-template-columns: 1fr;
  gap: 12px;
}

.nbf-list-view .nbf-card-item { display: block; }

.nbf-list-view .nbf-card {
  flex-direction: row;
  min-height: 120px;
  border-left: 4px solid var(--nbf-primary);
}

.nbf-list-view .nbf-card:hover {
  border-left-color: var(--nbf-secondary);
}

.nbf-list-view .nbf-card__img-wrap {
  width: 160px;
  flex-shrink: 0;
}

.nbf-list-view .nbf-card__img {
  width: 160px;
  height: 100%;
  min-height: 120px;
  object-fit: cover;
}

.nbf-list-view .nbf-card__no-img {
  width: 160px;
  height: 100%;
  min-height: 120px;
  font-size: .8rem;
  flex-direction: column;
  gap: 6px;
}

.nbf-list-view .nbf-card__body {
  padding: 16px 20px;
  justify-content: center;
}

.nbf-list-view .nbf-card__cat {
  font-size: .8rem;
}

.nbf-list-view .nbf-card__title {
  font-size: 1.1rem;
  line-height: 1.3;
}

.nbf-list-view .nbf-card__address {
  font-size: .9rem;
  margin-top: 2px;
}

.nbf-list-view .nbf-card__badge {
  top: auto;
  bottom: 8px;
  left: 8px;
}

/* Kachelansicht — ebenfalls größere Texte */
.nbf-card__title {
  font-size: 1rem;
  font-weight: 700;
}

.nbf-card__cat {
  font-size: .78rem;
}

.nbf-card__address {
  font-size: .85rem;
}

/* ── Badges / Chips ─────────────────────────────────────────────────────── */
.nbf-cert-badge,
.nbf-badge--geprueft,
.nbf-badge--info {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  white-space: nowrap;
}

.nbf-badge--geprueft {
  background: #EFF6FF;
  color: #1565C0;
  border: 1px solid #BFDBFE;
}

.nbf-badge--info {
  background: #FFF7ED;
  color: #7A4500;     /* war #E65100 (3.57:1) → jetzt 7.38:1, WCAG AA ✓ */
  border: 1px solid #FED7AA;
}

.nbf-merkmal-chip {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: .72rem;
  background: var(--nbf-bg-alt);
  border: 1px solid var(--nbf-border);
  color: var(--nbf-muted);
  white-space: nowrap;
}

/* ── Ladezustand / Leer ─────────────────────────────────────────────────── */
.nbf-loading {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 48px 16px;
  color: var(--nbf-muted);
  font-size: .9rem;
}

.nbf-spinner {
  width: 36px;
  height: 36px;
  border: 3px solid var(--nbf-border);
  border-top-color: var(--nbf-secondary);
  border-radius: 50%;
  animation: nbf-spin .8s linear infinite;
}

@keyframes nbf-spin {
  to { transform: rotate(360deg); }
}

.nbf-empty {
  grid-column: 1 / -1;
  text-align: center;
  padding: 48px 16px;
  color: var(--nbf-muted);
}

/* ── Report Banner ──────────────────────────────────────────────────────── */
.nbf-report-banner {
  background: var(--nbf-accent);
  border-top: 1px solid var(--nbf-border);
  margin-top: 16px;
}

.nbf-report-banner__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.nbf-report-banner__text strong {
  display: block;
  font-size: .95rem;
  color: var(--nbf-primary);
  margin-bottom: 2px;
}

.nbf-report-banner__text p {
  margin: 0;
  font-size: .85rem;
  color: var(--nbf-muted);
}

/* ── Modals (Report + Kontakt) ──────────────────────────────────────────── */

/* KRITISCH: [hidden]-Attribut muss Vorrang vor allen display-Regeln haben.
   Ohne diese Regel überschreibt display:flex das HTML hidden-Attribut
   und das Modal wird dauerhaft angezeigt. */
[hidden] { display: none !important; }

.nbf-report-modal:not([hidden]),
.nbf-modal:not([hidden]) {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}

.nbf-report-modal__backdrop,
.nbf-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(2px);
}

.nbf-report-modal__inner,
.nbf-modal__inner {
  position: relative !important;
  background: var(--nbf-bg) !important;
  border-radius: var(--radius-md) !important;
  box-shadow: var(--shadow-large) !important;
  padding: 1.75rem 1.5rem 2rem !important;
  width: 100% !important;
  max-width: 520px !important;
  max-height: 88vh !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  /* Scrollbar dezent */
  scrollbar-width: thin;
  scrollbar-color: var(--border-gray) transparent;
}
.nbf-report-modal__inner::-webkit-scrollbar { width: 5px; }
.nbf-report-modal__inner::-webkit-scrollbar-thumb {
  background: var(--border-gray);
  border-radius: 3px;
}

.nbf-report-modal__close,
.nbf-modal__close {
  position: absolute !important;
  top: 12px !important;
  right: 14px !important;
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
  font-size: 1.6rem !important;
  line-height: 1 !important;
  color: var(--nbf-muted) !important;
  cursor: pointer !important;
  padding: 4px 8px !important;
  border-radius: 4px !important;
  transition: color var(--nbf-transition) !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  text-transform: none !important;
  letter-spacing: normal !important;
  font-weight: normal !important;
}
.nbf-report-modal__close:hover,
.nbf-modal__close:hover {
  background: transparent !important;
  background-color: transparent !important;
  color: var(--nbf-danger) !important;
}
.nbf-report-modal__close:focus-visible,
.nbf-modal__close:focus-visible {
  outline: 3px solid var(--nbf-secondary) !important;
}

.nbf-report-modal__title,
.nbf-modal__title {
  margin: 0 0 4px;
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--nbf-primary);
  padding-right: 32px;
}

.nbf-report-modal__sub {
  margin: 0 0 18px;
  font-size: .88rem;
  color: var(--nbf-muted);
}

/* ── Formulare ──────────────────────────────────────────────────────────── */
.nbf-form-group {
  margin-bottom: 14px;
}

.nbf-form-group label {
  display: block;
  font-size: .85rem;
  font-weight: 600;
  color: var(--nbf-text);
  margin-bottom: 5px;
}

.nbf-form-group input[type="text"],
.nbf-form-group input[type="email"],
.nbf-form-group input[type="search"],
.nbf-form-group select,
.nbf-form-group textarea {
  width: 100%;
  padding: 8px 12px;
  border: var(--border-light);
  border-radius: var(--radius-md);
  font-size: .9rem;
  font-family: inherit;
  background: #f9fafb;
  color: var(--nbf-text);
  box-shadow: var(--shadow-soft);
  transition: border-color .2s, box-shadow .2s;
}

.nbf-form-group input:focus,
.nbf-form-group select:focus,
.nbf-form-group textarea:focus {
  outline: none;
  border-color: var(--petrol, #007B7A);
  background: #fff;
  box-shadow: 0 4px 12px rgba(0,123,122,.12);
}

.nbf-form-group input[aria-invalid="true"],
.nbf-form-group textarea[aria-invalid="true"] {
  border-color: var(--nbf-danger);
  box-shadow: 0 0 0 3px rgba(192,57,43,.12);
}

.nbf-form-group textarea { resize: vertical; min-height: 90px; }

.nbf-form-group--checkbox label {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-weight: 400;
  font-size: .85rem;
  cursor: pointer;
}
.nbf-form-group--checkbox input[type="checkbox"] {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  margin-top: 2px;
  accent-color: var(--nbf-secondary);
}

.nbf-form-row-2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.nbf-form-error {
  display: block;
  font-size: .78rem;
  color: var(--nbf-danger);
  margin-top: 4px;
  min-height: 1em;
}

.nbf-form-feedback {
  border-radius: var(--nbf-radius);
  padding: 0;
  margin-bottom: 0;
  font-size: .88rem;
}
.nbf-form-feedback--success {
  background: #F0FFF4;
  border: 1px solid #9AE6B4;
  color: #276749;
  padding: 10px 14px;
  margin-bottom: 14px;
}
.nbf-form-feedback--error {
  background: #FFF5F5;
  border: 1px solid #FEB2B2;
  color: var(--nbf-danger);
  padding: 10px 14px;
  margin-bottom: 14px;
}

.nbf-label-hint {
  font-weight: 400;
  color: var(--nbf-muted);
  font-size: .82em;
}

/* ── Detail-Seite ───────────────────────────────────────────────────────── */
.nbf-detail {
  max-width: var(--nbf-detail-max-width, 1200px);
  margin: 0 auto;
  padding:
    var(--nbf-detail-pad-top, 0px)
    var(--nbf-detail-pad-sides, 32px)
    var(--nbf-detail-pad-bottom, 32px);
  box-sizing: border-box;
  overflow-x: hidden;
}

/* Tablet ≤ 1024px: eigene Abstände */
@media (max-width: 1024px) {
  .nbf-detail {
    padding:
      var(--nbf-detail-pad-top, 0px)
      var(--nbf-detail-pad-tablet, 32px)
      var(--nbf-detail-pad-bottom, 32px);
  }
}

/* Mobile ≤ 767px: eigene Abstände + overflow verhindern */
@media (max-width: 767px) {
  .nbf-detail {
    padding:
      var(--nbf-detail-pad-top, 0px)
      var(--nbf-detail-pad-mobile, 24px)
      var(--nbf-detail-pad-bottom, 32px);
    overflow-x: hidden;
  }
  /* Langer Text bricht um statt über den Rand zu laufen */
  .nbf-detail *:not(pre) {
    word-break: break-word;
    overflow-wrap: anywhere;
    min-width: 0;
  }
  /* Tabellen auf Mobile skalieren */
    /* Accordion Items nicht über Rand */
  .nbf-accordion__item,
  .nbf-accordion__trigger,
  .nbf-accordion__panel-inner {
    max-width: 100%;
    overflow: hidden;
  }
  .nbf-merkmal-list {
    grid-template-columns: 1fr;
  }
}

/* Breadcrumb */
.nbf-breadcrumb { margin: 16px 0; }
.nbf-breadcrumb__list {
  display: flex;
  align-items: center;
  gap: 4px;
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: .82rem;
  color: var(--nbf-muted);
  flex-wrap: wrap;
}
.nbf-breadcrumb__list a {
  color: var(--nbf-secondary);
  text-decoration: none;
}
.nbf-breadcrumb__list a:hover { text-decoration: underline; }
.nbf-breadcrumb__sep { color: var(--nbf-border); }

/* Hero */
.nbf-detail__hero {
  position: relative;
  margin-bottom: 28px;
  border-radius: 12px;
  overflow: hidden;
}

.nbf-detail__hero-img {
  width: 100%;
  height: 280px;
  background-size: cover;
  background-position: center;
}

.nbf-detail__hero-content {
  padding: 20px 0 8px;
}

.nbf-detail__hero-img + .nbf-detail__hero-content {
  padding: 16px;
  background: linear-gradient(to top, rgba(0,0,0,.7) 0%, transparent 100%);
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
}

.nbf-detail__hero-img + .nbf-detail__hero-content .nbf-detail__title,
.nbf-detail__hero-img + .nbf-detail__hero-content .nbf-detail__address {
  color: #fff;
}

.nbf-cat-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  background: var(--nbf-secondary);
  color: #fff;
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  margin-bottom: 6px;
}

.nbf-detail__title {
  font-size: var(--nbf-size-h1);
  font-weight: var(--nbf-weight-head);
  color: var(--nbf-primary);
  margin: 0 0 4px;
  line-height: 1.2;
}

.nbf-detail__address {
  font-size: .9rem;
  color: var(--nbf-muted);
  margin: 0 0 8px;
}

/* Body Layout */
.nbf-detail__body {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 28px;
  align-items: start;
}

/* Sections */
.nbf-detail__section {
  margin-bottom: 28px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--nbf-border);
}
.nbf-detail__section:last-child { border-bottom: none; }

.nbf-section-title {
  font-size: var(--nbf-size-h2);
  font-weight: var(--nbf-weight-head);
  color: var(--nbf-primary);
  margin: 0 0 14px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--nbf-accent);
}

.nbf-detail__content {
  font-size: .95rem;
  line-height: 1.65;
  color: var(--nbf-text);
}

/* Akkordeon */
/* ── Accordion ─────────────────────────────────────────────────────────── */
/*
 * WCAG 2.1 AA konforme Umsetzung:
 * - SC 1.4.1: Status nie nur durch Farbe (3 Signale: Farbe + Icon + Text im Badge)
 * - SC 1.4.3: Text-Kontrast mind. 4.5:1 (dunkle Schrift auf hellem Hintergrund)
 * - SC 1.4.11: UI-Komponenten mind. 3:1 (Header #1A3A5C auf #F8F9FA = 11.2:1)
 * - SC 2.4.11: Fokus-Indikator 3:1 gegen Umgebung (blauer Outline auf hellem Bg)
 */

/* Status-Farb-Tokens (WCAG AA, alle >= 4.9:1)
 * Anpassbar über: Einstellungen → Barrierefreiheits-Farben
 * Die :root-Defaults werden durch output_custom_css() mit gespeicherten Werten überschrieben */
:root {
  /* ── Status-Badge Farben (WCAG AA >= 4.9:1) ──────────────────── */
  --nbf-status-ok-bg:      #D4EDDA;
  --nbf-status-ok-text:    #155724;
  --nbf-status-ok-border:  #A3C9AD;
  --nbf-status-part-bg:    #FFF3CD;
  --nbf-status-part-text:  #7A5000;
  --nbf-status-part-border:#D4B87A;
  --nbf-status-no-bg:      #F8D7DA;
  --nbf-status-no-text:    #721C24;
  --nbf-status-no-border:  #D9949A;
  --nbf-status-na-bg:      #F0F4F8;
  --nbf-status-na-text:    #3A4A5C;
  --nbf-status-na-border:  #C5CDD6;
  /* ── Accordion-Header: neutral, kein Blau ────────────────────── */
  --nbf-acc-header-bg:     #FFFFFF;
  --nbf-acc-header-text:   #1F2937;
  --nbf-acc-header-hover:  #F3F4F6;
  --nbf-acc-header-border: #E5E7EB;
  --nbf-acc-chevron:       #6B7280;
}

.nbf-accordion {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.nbf-accordion__item {
  border: var(--border-light);
  border-radius: var(--radius-md);
  overflow: hidden;
  background: #fff;
  box-shadow: var(--shadow-soft);
}

/* Status-Farben am linken Rand: sichtbarer visueller Anker (Signal 1: Farbe) */
.nbf-accordion__item--voll    { border-left: 5px solid var(--nbf-status-ok-text); }
.nbf-accordion__item--teil    { border-left: 5px solid var(--nbf-status-part-text); }
.nbf-accordion__item--nicht   { border-left: 5px solid var(--nbf-status-no-text); }
.nbf-accordion__item--neutral { border-left: 5px solid #8A9BB0; }

/* Trigger: heller Hintergrund, dunkle Schrift → WCAG-konformer Kontrast */
.nbf-accordion__trigger {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  background: #fff;                /* immer weiß */
  border: none;
  cursor: pointer;
  text-align: left;
  font-size: 1rem;
  font-weight: 700;
  color: #1F2937;
  transition: background var(--nbf-transition);
}
.nbf-accordion__trigger:hover {
  background: #F9FAFB;
}
.nbf-accordion__trigger:focus-visible {
  outline: 3px solid var(--nbf-primary, #1A3A5C);
  outline-offset: -2px;
  background: #F9FAFB;
}
.nbf-accordion__trigger[aria-expanded="true"] {
  background: #F9FAFB;
  border-bottom: 1px solid #E5E7EB;
}

/* Titel: wächst und füllt den Platz links */
.nbf-accordion__title {
  flex: 1;
  font-size: 1rem;
  font-weight: 700;
  color: #1F2937;
  text-align: left;
}

/* Rechte Seite: Badge + Chevron zusammen */
.nbf-accordion__right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  margin-left: auto;
}

/* Status-Badge: Pill mit heller BG + dunkler Schrift (Signal 2: Farbe, Signal 3: Text) */
.nbf-accordion__badge {
  font-size: .78rem;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 999px;
  white-space: nowrap;
  flex-shrink: 0;
  border: 1px solid transparent;
  /* Mindestgrösse für Touch-Targets */
  min-height: 22px;
  display: inline-flex;
  align-items: center;
}
/* Jeder Badge: dunkler Text auf hellem Hintergrund → SC 1.4.3 PASS */
.nbf-accordion__badge--voll {
  background: var(--nbf-status-ok-bg);
  color: var(--nbf-status-ok-text);
  border-color: var(--nbf-status-ok-border);
}
.nbf-accordion__badge--teil {
  background: var(--nbf-status-part-bg);
  color: var(--nbf-status-part-text);
  border-color: var(--nbf-status-part-border);
}
.nbf-accordion__badge--nicht {
  background: var(--nbf-status-no-bg);
  color: var(--nbf-status-no-text);
  border-color: var(--nbf-status-no-border);
}
.nbf-accordion__badge--neutral {
  background: var(--nbf-status-na-bg);
  color: var(--nbf-status-na-text);
  border-color: var(--nbf-status-na-border);
}

.nbf-accordion__chevron {
  font-size: .75rem;
  color: #6B7280;
  transition: transform var(--nbf-transition);
  flex-shrink: 0;
}
.nbf-accordion__trigger[aria-expanded="true"] .nbf-accordion__chevron {
  transform: rotate(180deg);
}

.nbf-accordion__panel-inner {
  padding: 16px;
  background: #fff;
}

.nbf-bf-summary {
  font-size: .92rem;
  color: var(--nbf-text);
  margin: 0 0 14px;
  padding: 10px 14px;
  background: #F8FAFB;
  border-left: 3px solid var(--nbf-secondary);
  border-radius: 0 4px 4px 0;
}

/* ── Merkmalliste ──────────────────────────────────────────────────────── */
.nbf-merkmal-list {
  list-style: none;
  margin: 0 0 12px;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 10px;
}

/* Card: Icon oben, Label darunter — wie im Designbeispiel */
.nbf-merkmal-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 8px;
  padding: 16px 12px 14px;
  border-radius: 10px;
  border: 1.5px solid transparent;
  background: #FAFAFA;
  transition: box-shadow .15s;
}
.nbf-merkmal-item:hover { box-shadow: 0 2px 8px rgba(0,0,0,.08); }

/* Sub-Item: etwas kleiner und eingerückt */
.nbf-merkmal-item--sub {
  padding: 10px 10px 10px;
  opacity: .92;
}
.nbf-merkmal-item__label--sub {
  font-size: .75rem;
  font-weight: 500;
}
.nbf-merkmal-item--sub .nbf-merkmal-item__check {
  width: 36px;
  height: 36px;
  font-size: 1.1rem;
}

/* Ja: grüne Card */
.nbf-merkmal-item--yes {
  background: #F0FFF6;
  border-color: #A7D9B4;
}
/* Nein: dezent grau */
.nbf-merkmal-item--no {
  background: #F7F7F7;
  border-color: #E0E0E0;
  opacity: .75;
}
/* Teilweise: warmes Gelb */
.nbf-merkmal-item--partial {
  background: #FFFBEF;
  border-color: #F0CC6A;
}

/* Großes Icon-Badge */
.nbf-merkmal-item__check {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  font-size: 1.4rem;
  flex-shrink: 0;
  line-height: 1;
}
.nbf-merkmal-item--yes     .nbf-merkmal-item__check {
  background: #D1FAE5;
  color: #065F46;
}
.nbf-merkmal-item--no      .nbf-merkmal-item__check {
  background: #F0F0F0;
  color: #9E9E9E;
}
.nbf-merkmal-item--partial .nbf-merkmal-item__check {
  background: #FEF3C7;
  color: #92400E;
}

/* Label */
.nbf-merkmal-item__label {
  font-size: .8rem;
  font-weight: 600;
  line-height: 1.3;
  color: inherit;
}
.nbf-merkmal-item--yes     .nbf-merkmal-item__label { color: #065F46; }
.nbf-merkmal-item--no      .nbf-merkmal-item__label { color: #757575; }
.nbf-merkmal-item--partial .nbf-merkmal-item__label { color: #92400E; }

.nbf-cert-period {
  margin-top: 12px;
  font-size: .82rem;
  color: var(--nbf-muted);
  padding: 8px 12px;
  background: var(--nbf-bg-alt);
  border-radius: 4px;
}
.nbf-cert-period p { margin: 0; }

/* Galerie */
.nbf-gallery {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 8px;
}

.nbf-gallery__thumb {
  border: none;
  padding: 0;
  cursor: pointer;
  border-radius: 6px;
  overflow: hidden;
  background: var(--nbf-bg-alt);
  transition: transform var(--nbf-transition), box-shadow var(--nbf-transition);
}
.nbf-gallery__thumb:hover {
  transform: scale(1.03);
  box-shadow: var(--nbf-shadow-lg);
}
.nbf-gallery__thumb:focus-visible {
  outline: 3px solid var(--nbf-secondary);
  outline-offset: 2px;
}
.nbf-gallery__thumb img {
  width: 100%;
  height: 100px;
  object-fit: cover;
  display: block;
}

/* Report Section */
.nbf-report-section {
  padding: 16px;
  background: var(--nbf-bg-alt);
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-radius);
  font-size: .88rem;
  color: var(--nbf-muted);
}
.nbf-report-section p { margin: 0 0 10px; }

/* Sidebar */
.nbf-sidebar-card {
  background: var(--nbf-bg);
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-radius);
  padding: 16px;
  margin-bottom: 16px;
  box-shadow: var(--nbf-shadow);
}

.nbf-sidebar-card__title {
  font-size: .9rem;
  font-weight: 700;
  color: var(--nbf-primary);
  margin: 0 0 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--nbf-border);
}

.nbf-mini-map {
  width: 100%;
  height: 180px;
  border-radius: 6px;
  overflow: hidden;
  margin-bottom: 12px;
  background: var(--nbf-bg-alt);
}

/* Kontakt */
.nbf-contact-row {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 10px 0;
  border-bottom: 1px solid var(--nbf-border);
  font-size: .88rem;
}
.nbf-contact-row:last-of-type { border-bottom: none; }

.nbf-contact-row__label {
  font-weight: 600;
  color: var(--nbf-muted);
  min-width: 72px;   /* breiter für "Webseite" */
  flex-shrink: 0;
}

.nbf-contact-row__val a {
  color: var(--nbf-secondary);
  text-decoration: none;
  word-break: break-all;
}
.nbf-contact-row__val a:hover { text-decoration: underline; }

/* Screenreader-only */
/* Screenreader-only: innerhalb .nbf-wrap mit hoher Spezifität.
 * Kein globales .sr-only mehr – verhindert Kollisionen mit Theme-CSS. */
.nbf-wrap .sr-only,
.nbf-wrap .nbf-sr-only,

/* nbf-sr-only auch außerhalb .nbf-wrap (z.B. sticky Such-Header) */
.nbf-search-header .nbf-sr-only {
  position: absolute !important;
  width: 1px !important; height: 1px !important;
  padding: 0 !important; margin: -1px !important;
  overflow: hidden !important; clip: rect(0,0,0,0) !important;
  white-space: nowrap !important; border: 0 !important;
}

/* Letzte Zeile: Ecken der Zellen runden damit der Zebra-BG den Wrapper-Radius ausfüllt */

/* Zebra */

/* Wochenende: border-top als zweites visuelles Signal (SC 1.4.1) */

/* Tageskürzel-Pill */
/* Wochenende-Pill: dunkleres Grau – weiß drauf = 6.06:1 ✓ */

/* Uhrzeit: #2D3748 auf #F8F9FB = 11.38:1 ✓ */

/* Geschlossen: #525F6E / #F8F9FB = 6.19:1 ✓
   + kursiv + ✕-Icon = SC 1.4.1 (3 redundante Signale) */
/* Icon + Text inline auf gleicher Ebene */

/* Back link */
.nbf-back-link {
  display: block;
  text-align: center;
  font-size: .85rem;
  color: var(--nbf-muted);
  text-decoration: none;
  padding: 8px;
  border-radius: var(--nbf-radius);
  transition: color var(--nbf-transition);
}
.nbf-back-link:hover { color: var(--nbf-primary); }

/* ── Lightbox ────────────────────────────────────────────────────────────── */
.nbf-lightbox:not([hidden]) {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
}

.nbf-lightbox__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.9);
}

.nbf-lightbox__inner {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  max-width: 90vw;
  max-height: 90vh;
}

.nbf-lightbox__img-wrap {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}

.nbf-lightbox__img {
  max-width: 80vw;
  max-height: 85vh;
  border-radius: 6px;
  display: block;
  object-fit: contain;
}

.nbf-lightbox__prev,
.nbf-lightbox__next,
.nbf-lightbox__close {
  position: relative;
  z-index: 1;
  background: rgba(255,255,255,.15);
  border: 2px solid rgba(255,255,255,.3);
  color: #fff;
  border-radius: 50%;
  width: 44px;
  height: 44px;
  font-size: 1.4rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background var(--nbf-transition);
}
.nbf-lightbox__prev:hover,
.nbf-lightbox__next:hover,
.nbf-lightbox__close:hover { background: rgba(255,255,255,.3); }

.nbf-lightbox__close {
  position: absolute;
  top: -48px;
  right: 0;
}

/* ── Screen Reader Only ─────────────────────────────────────────────────── */
.nbf-wrap .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

/* ── Responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 1023px) {
  .nbf-detail__body {
    grid-template-columns: 1fr;
  }
  .nbf-detail__sidebar {
    order: -1;
  }
  .nbf-detail__hero-img { height: 200px; }
  .nbf-detail__title { font-size: 1.4rem; }
}

@media (max-width: 767px) {
  .nbf-grid { grid-template-columns: 1fr; }
  .nbf-results-count { width: 100%; }
  .nbf-list-view .nbf-card { flex-direction: column; min-height: unset; border-left: none; border-top: 4px solid var(--nbf-primary); }
  .nbf-list-view .nbf-card__img-wrap,
  .nbf-list-view .nbf-card__img,
  .nbf-list-view .nbf-card__no-img { width: 100%; min-height: 160px; }
  .nbf-list-view .nbf-card__body { padding: 14px; }
  .nbf-report-banner__inner { flex-direction: column; }
  .nbf-form-row-2col { grid-template-columns: 1fr; }
  .nbf-merkmal-list { grid-template-columns: repeat(2, 1fr); }
  .nbf-merkmal-item { padding: 12px 8px 10px; }
  .nbf-merkmal-item__check { width: 36px; height: 36px; font-size: 1.1rem; }
  .nbf-merkmal-item__label { font-size: .75rem; }
  .nbf-detail__hero-img { height: 150px; }
  .nbf-report-modal__inner,
  .nbf-modal__inner { padding: 20px 16px; }
  .nbf-lightbox__prev,
  .nbf-lightbox__next { display: none; }
}

.nbf-card-item { display: contents; } /* li wrapper für a.nbf-card in Grid */

.nbf-gallery__item { display: contents; }

.nbf-form-hint {
  display: block;
  font-size: .75rem;
  color: var(--nbf-muted);
  margin-top: 3px;
  margin-bottom: 4px;
}

/* Merkmal-Status Icons (Farben direkt über Item-Background gesteuert) */
/* check-Farben: in .nbf-merkmal-item integriert */
.nbf-merkmal-item--na      { display: none; }
.nbf-merkmal-item--unknown { display: none; }
.nbf-back-btn { display: block; text-align: center; margin-top: 16px; }

/* ══════════════════════════════════════════════════════════════
   MOBILITÄTS-FILTER (4-stufig)
══════════════════════════════════════════════════════════════ */
.nbf-merkmal-group--mobi {
    grid-column: 1 / -1;
    background: var(--nbf-accent, #E8F4FD);
    border: 1.5px solid var(--nbf-primary, #1A3A5C);
    border-radius: 8px;
    padding: 14px 16px;
}

.nbf-merkmal-group__desc {
    font-size: 12px;
    color: var(--nbf-muted, #6B7280);
    margin: 4px 0 10px;
}

.nbf-mobi-filter-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.nbf-mobi-filter-item {
    display: flex;
    align-items: center;
    gap: 6px;
    background: #fff;
    border: 1px solid var(--nbf-border, #D1D5DB);
    border-radius: 8px;
    padding: 7px 12px;
    flex: 1;
    min-width: 180px;
}

.nbf-mobi-filter-icon {
    font-size: 18px;
    flex-shrink: 0;
}

.nbf-mobi-filter-label {
    font-size: 12.5px;
    font-weight: 600;
    color: var(--nbf-primary, #1A3A5C);
    flex: 1;
}

.nbf-mobi-filter-checks {
    display: flex;
    gap: 4px;
}

.nbf-mobi-filter-check {
    display: flex;
    align-items: center;
    gap: 3px;
    padding: 4px 8px;
    border-radius: 20px;
    border: 1.5px solid var(--nbf-border, #D1D5DB);
    cursor: pointer;
    font-size: 12px;
    font-weight: 700;
    background: #fff;
    transition: background .12s, border-color .12s;
    white-space: nowrap;
}

.nbf-mobi-filter-check input[type="checkbox"] {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0,0,0,0);
    white-space: nowrap; border: 0;
}

.nbf-mobi-filter-check--uneingescr {
    color: #155724;
    border-color: #C3E6CB;
}
.nbf-mobi-filter-check--uneingescr:has(input:checked),
.nbf-mobi-filter-check--uneingescr:hover {
    background: #D4EDDA;
    border-color: #28A745;
}

.nbf-mobi-filter-check--mit-hilfe {
    color: #7A5000;
    border-color: #FFE69C;
}
.nbf-mobi-filter-check--mit-hilfe:has(input:checked),
.nbf-mobi-filter-check--mit-hilfe:hover {
    background: #FFF3CD;
    border-color: #F59E0B;
}

/* Mobilitäts-Icons im Popup */
.nbf-popup__mobi {
    display: flex;
    gap: 6px;
    align-items: center;
    margin-top: 5px;
    padding: 5px 0 2px;
    border-top: 1px solid var(--nbf-border, #D1D5DB);
}

/* Instagram im Detail-Template */
.nbf-contact__instagram a {
    color: var(--nbf-secondary, #0F7E6A);
    text-decoration: none;
    font-weight: 600;
}
.nbf-contact__instagram a:hover {
    text-decoration: underline;
}

/* ══════════════════════════════════════════════════════════════
   MOBILITÄTS-ÜBERSICHT (Detail-Seite)
══════════════════════════════════════════════════════════════ */
.nbf-mobi-overview {
    margin: 20px 0 24px;
    padding: 18px 20px;
    background: var(--nbf-accent, #E8F4FD);
    border-radius: 10px;
    border: 1px solid rgba(26,58,92,.12);
}

.nbf-mobi-overview__title {
    font-size: 15px;
    font-weight: 700;
    color: var(--nbf-primary, #1A3A5C);
    margin: 0 0 12px;
}

.nbf-mobi-overview__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 10px;
}

.nbf-mobi-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 12px 10px;
    border-radius: 8px;
    background: #fff;
    border: 1.5px solid var(--nbf-border, #D1D5DB);
    text-align: center;
}

.nbf-mobi-card--ok {
    border-color: #28A745;
    background: #F0FDF4;
}

.nbf-mobi-card--partial {
    border-color: #F59E0B;
    background: #FFFBEB;
}

.nbf-mobi-card--no {
    border-color: #EF4444;
    background: #FEF2F2;
}

.nbf-mobi-card__icon {
    font-size: 22px;
    line-height: 1;
}

.nbf-mobi-card__label {
    font-size: 11.5px;
    font-weight: 700;
    color: var(--nbf-primary, #1A3A5C);
}

.nbf-mobi-card__status {
    font-size: 10.5px;
    color: var(--nbf-muted, #6B7280);
}

.nbf-mobi-card--ok    .nbf-mobi-card__status { color: #155724; font-weight: 600; }
.nbf-mobi-card--partial .nbf-mobi-card__status { color: #7A5000; font-weight: 600; }
.nbf-mobi-card--no    .nbf-mobi-card__status { color: #721C24; font-weight: 600; }

/* ══════════════════════════════════════════════════════════════════════════
   FINDER — Professionelles 3-Spalten-Layout
   ══════════════════════════════════════════════════════════════════════════ */

/* ── SR-ONLY (mit nbf-Präfix, überall gültig) ─────────────────────────── */
.nbf-sr-only,
.nbf-wrap .nbf-sr-only,
.nbf-search-header .nbf-sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* Hidden Selects in Filter-Sidebar (nicht display:none wegen Screenreader-Kompatibilität) */
.nbf-filter-sidebar select.nbf-sr-only {
  display: none !important;
}

/* ── Wrap-Reset ────────────────────────────────────────────────────────── */
.nbf-wrap {
  font-family: var(--nbf-font);
  background: #F5F7FA;
  min-height: 600px;
}

/* ══ SUCH-HEADER ══════════════════════════════════════════════════════════ */
.nbf-search-header {
  background: #1A3A5C;
  padding: 14px 20px;
  position: sticky;
  top: 0;
  z-index: 300;
  box-shadow: 0 2px 8px rgba(0,0,0,.12);
}
.nbf-search-header__inner { max-width: 100%; }
.nbf-search-header__bar {
  display: flex;
  align-items: center;
  background: #fff;
  border-radius: 8px;
  padding: 0 14px;
  gap: 10px;
  height: 44px;
  box-shadow: 0 1px 4px rgba(0,0,0,.12);
}
.nbf-search-header__icon {
  flex-shrink: 0;
  color: #9CA3AF;
  width: 17px;
  height: 17px;
}
.nbf-search-header__input {
  flex: 1;
  border: none !important;
  outline: none !important;
  font-size: 14.5px;
  background: transparent !important;
  color: #1A1A1A;
  box-shadow: none !important;
  padding: 0 !important;
  height: auto !important;
  min-height: 0 !important;
  font-family: inherit;
}
.nbf-search-header__input::placeholder { color: #9CA3AF; }
.nbf-search-header__count {
  flex-shrink: 0;
  font-size: 12px;
  color: #6B7280;
  white-space: nowrap;
  padding-left: 10px;
  border-left: 1px solid #E5E7EB;
}

/* ══════════════════════════════════════════════════════════════════════════
   DESIGNSYSTEM NORDERNEY BARRIEREFREI
   ══════════════════════════════════════════════════════════════════════════ */
:root {
  --nbf-ds-primary:    #00264D;
  --nbf-ds-accent:     #007B7A;
  --nbf-ds-accent-h:   #005C5B;
  --nbf-ds-text:       #2C2C2C;
  --nbf-ds-bg:         #FFFFFF;
  --nbf-ds-bg-subtle:  #F3F4F6;
  --nbf-ds-border:     #E5E7EB;
  --nbf-ds-focus:      #FFB300;
  --nbf-ds-radius:     10px;
  --nbf-ds-radius-sm:  6px;
  --nbf-ds-radius-pill:15px;
  --nbf-ds-font:       'Inter', sans-serif;
  --nbf-ds-shadow:     0 4px 6px rgba(0,0,0,.05);
  --nbf-ds-shadow-md:  0 8px 24px rgba(0,0,0,.09);
}

/* ════════════════════════════════════════════════════════════════════════════
   DESIGNSYSTEM — NORDERNEY BARRIEREFREI
   Layout nach v0.dev: flex-col > mobile-bar + flex-row(filter|results|map)
   ════════════════════════════════════════════════════════════════════════════ */
:root {
  --nbf-primary:     #042D53;   /* Marineblau (v0) */
  --nbf-accent:      #007B7A;   /* Petrol */
  --nbf-accent-h:    #005C5B;   /* Petrol hover */
  --nbf-text:        #2C2C2C;
  --nbf-bg:          #FFFFFF;
  --nbf-bg-subtle:   #F8F9FA;   /* Hintergrund Ergebnisspalte (v0) */
  --nbf-border:      #E5E7EB;
  --nbf-muted:       #6B7280;
  --nbf-focus:       #FFB300;
  --nbf-r:           10px;      /* Border-Radius Buttons/Cards */
  --nbf-r-sm:        6px;       /* Border-Radius Tags/Badges */
  --nbf-r-pill:      999px;
  --nbf-font:        'Inter', system-ui, sans-serif;
  --nbf-shadow:      0 1px 3px rgba(0,0,0,.06), 0 4px 6px rgba(0,0,0,.04);
  --nbf-shadow-md:   0 4px 16px rgba(0,0,0,.10), 0 1px 4px rgba(0,0,0,.06);
  --nbf-sidebar-w:   300px;
  --nbf-results-w:   450px;
}

/* ── App-Wrapper ───────────────────────────────────────────────────────── */
.nbf-app {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  font-family: var(--nbf-font);
  color: var(--nbf-text);
  background: var(--nbf-bg);
}

/* ── MOBILE: Filter-Toggle-Bar ─────────────────────────────────────────── */
.nbf-mobile-bar {
  display: none; /* → sichtbar unter 1024px */
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--nbf-border);
  background: var(--nbf-bg);
}
.nbf-mobile-bar__filter-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.45rem 0.875rem;
  border: 1.5px solid var(--nbf-accent);
  border-radius: var(--nbf-r);
  background: transparent;
  color: var(--nbf-accent);
  font-size: 0.875rem;
  font-weight: 600;
  font-family: var(--nbf-font);
  cursor: pointer;
  transition: background .15s;
}
.nbf-mobile-bar__filter-btn:hover { background: rgba(0,123,122,.08); }
.nbf-mobile-bar__filter-btn:focus-visible {
  outline: 3px solid var(--nbf-focus);
  outline-offset: 2px;
}
.nbf-mobile-bar__count {
  font-size: 0.875rem;
  color: var(--nbf-muted);
}

/* ── MOBILE: Karte (erscheint über Ergebnissen) ────────────────────────── */
.nbf-mobile-map {
  display: none; /* → sichtbar unter 1024px */
  height: 300px;
  width: 100%;
}
.nbf-map-mobile {
  width: 100%;
  height: 300px;
}

/* ── HAUPT-LAYOUT: 3 Spalten Flex ──────────────────────────────────────── */
.nbf-main-layout {
  display: flex;
  flex: 1;
  overflow: hidden;
  height: calc(100vh - 0px); /* volle Höhe, kein Theme-Header in diesem Kontext */
}

/* ════ SPALTE 1: FILTER-SIDEBAR ════════════════════════════════════════════ */
.nbf-filter-sidebar {
  width: var(--nbf-sidebar-w);
  flex-shrink: 0;
  border-right: 1px solid var(--nbf-border);
  background: var(--nbf-bg);
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow-y: auto;
}
.nbf-filter-sidebar::-webkit-scrollbar { width: 4px; }
.nbf-filter-sidebar::-webkit-scrollbar-thumb {
  background: var(--nbf-border);
  border-radius: var(--nbf-r-pill);
}

.nbf-filter-sidebar__inner {
  display: flex;
  flex-direction: column;
  height: 100%;
}

/* Sidebar-Header: Titel */
.nbf-filter-sidebar__header {
  padding: 1.5rem 1.5rem 1rem;
  border-bottom: 1px solid var(--nbf-border);
  flex-shrink: 0;
}
.nbf-filter-sidebar__title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--nbf-primary);
  margin: 0;
  line-height: 1.25;
  font-family: var(--nbf-font);
}

/* Sidebar-Body: scrollbarer Bereich */
.nbf-filter-sidebar__body {
  flex: 1;
  overflow-y: auto;
  padding-bottom: 1.5rem;
}

/* Filter-Sektionen */
.nbf-fs-section {
  padding: 0.875rem 1.25rem 0.375rem;
}

/* Suchfeld */
.nbf-fs-search {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  background: #F3F4F6;
  border: none;
  border-radius: 8px;
  padding: 0.65rem 0.875rem;
  transition: box-shadow .15s;
}
.nbf-fs-search:focus-within {
  box-shadow: 0 0 0 2px var(--nbf-accent);
}
.nbf-fs-search svg { color: #9CA3AF; flex-shrink: 0; }
.nbf-fs-search__input {
  border: none;
  background: transparent;
  outline: none;
  width: 100%;
  font-size: 0.875rem;
  font-family: var(--nbf-font);
  color: var(--nbf-text);
}
.nbf-fs-search__input::placeholder { color: #9CA3AF; }

/* Label */
.nbf-fs-label {
  display: block;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--nbf-primary);
  margin-bottom: 0.5rem;
}

/* Select */
.nbf-fs-select-wrap { position: relative; }
.nbf-fs-select {
  width: 100%;
  padding: 0.65rem 2rem 0.65rem 0.875rem;
  border: 1px solid var(--nbf-border);
  border-radius: var(--nbf-r);
  background: var(--nbf-bg);
  font-size: 0.875rem;
  font-family: var(--nbf-font);
  color: var(--nbf-text);
  appearance: none;
  cursor: pointer;
  transition: border-color .15s;
}
.nbf-fs-select:hover { border-color: var(--nbf-accent); }
.nbf-fs-select:focus {
  outline: none;
  border-color: var(--nbf-accent);
  box-shadow: 0 0 0 2px rgba(4,45,83,.12);
}
.nbf-fs-select__chevron {
  position: absolute;
  right: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  color: #9CA3AF;
}

/* Divider */
.nbf-fs-divider {
  height: 1px;
  background: var(--nbf-border);
  margin: 0.375rem 1.25rem;
}

/* Reset-Button */
.nbf-fs-reset-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  width: 100%;
  justify-content: center;
  padding: 0.6rem 1rem;
  border: 1.5px solid var(--nbf-border);
  border-radius: var(--nbf-r);
  background: transparent;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--nbf-text);
  cursor: pointer;
  font-family: var(--nbf-font);
  transition: background .15s, border-color .15s, color .15s;
}
.nbf-fs-reset-btn:hover {
  background: var(--nbf-primary);
  border-color: var(--nbf-primary);
  color: #fff;
}
.nbf-fs-reset-btn--hidden { display: none !important; }
.nbf-sidebar-toggle-btn { display: none; }

/* ════ SPALTE 2: ERGEBNISSE ════════════════════════════════════════════════ */
.nbf-results-col {
  width: var(--nbf-results-w);
  max-width: var(--nbf-results-w);
  flex-shrink: 0;
  background: var(--nbf-bg-subtle);
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
}

.nbf-results-col__head {
  padding: 0.875rem 1.25rem 0.625rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-shrink: 0;
  border-bottom: 1px solid var(--nbf-border);
  background: var(--nbf-bg-subtle);
}
.nbf-results-col__count {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--nbf-muted);
  font-family: var(--nbf-font);
}

/* Kachel-Liste: wächst + scrollt */
.nbf-results-list {
  list-style: none;
  margin: 0;
  padding: 1rem 1rem 0;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  flex: 1;
  overflow-y: auto;
}
.nbf-results-list::-webkit-scrollbar { width: 4px; }
.nbf-results-list::-webkit-scrollbar-thumb {
  background: var(--nbf-border);
  border-radius: var(--nbf-r-pill);
}

/* Pagination: sticky bottom */
.nbf-pagination {
  position: sticky;
  bottom: 0;
  background: var(--nbf-bg);
  padding: 0.75rem 1rem;
  border-top: 1px solid var(--nbf-border);
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  flex-shrink: 0;
}

/* ════ SPALTE 3: KARTE ══════════════════════════════════════════════════════ */
.nbf-map-col {
  flex: 1;
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100%;
  overflow: hidden;
  min-width: 0;
}
.nbf-map {
  flex: 1;
  width: 100%;
  height: 100% !important;
  min-height: 0;
}

/* ══════════════════════════════════════════════════════════════
   EIGNUNGEN FILTER — Designsystem Norderney
   ══════════════════════════════════════════════════════════════ */

.nbf-fs-group--eignungen {
  padding: 0.75rem 1rem 1rem;
}

/* Haupt-Toggle */
.nbf-fs-eignungen-toggle {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.65rem 0.875rem;
  background: var(--nbf-ds-bg-subtle);
  border: 1.5px solid var(--nbf-ds-border);
  border-radius: var(--nbf-ds-radius-lg);
  cursor: pointer;
  font-size: 0.8rem;
  font-weight: 600;
  font-family: var(--nbf-ds-font);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--nbf-ds-primary);
  text-align: left;
  transition: border-color .15s, background .15s;
}
.nbf-fs-eignungen-toggle:hover {
  border-color: var(--nbf-ds-accent);
  background: #fff;
}
.nbf-fs-eignungen-toggle:focus-visible {
  outline: 3px solid var(--nbf-ds-focus);
  outline-offset: 2px;
}
.nbf-fs-eignungen-toggle__label {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex: 1;
}
.nbf-fs-eignungen-toggle__count {
  font-size: 0.7rem;
  font-weight: 700;
  background: var(--nbf-ds-accent);
  color: #fff;
  border-radius: var(--nbf-ds-radius-pill);
  padding: 0.1rem 0.5rem;
  min-width: 1.25rem;
  text-align: center;
  display: none;
  font-family: var(--nbf-ds-font);
}
.nbf-fs-eignungen-toggle__count:not(:empty) { display: inline-block; }
.nbf-fs-eignungen-toggle__chevron {
  flex-shrink: 0;
  color: #94A3B8;
  transition: transform .2s;
}
.nbf-fs-eignungen-toggle[aria-expanded="true"] .nbf-fs-eignungen-toggle__chevron {
  transform: rotate(180deg);
}

/* Eignungen Body */
.nbf-fs-eignungen-body {
  margin-top: 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.nbf-fs-eignungen-body[hidden] { display: none; }

/* Untergruppe: <details> */
.nbf-eignung-subgroup {
  border: 1px solid var(--nbf-ds-border);
  border-radius: var(--nbf-ds-radius-lg);
  background: var(--nbf-ds-bg);
  overflow: hidden;
  transition: box-shadow .15s;
}
.nbf-eignung-subgroup[open] {
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
  border-color: #CBD5E1;
}

/* Summary */
.nbf-eignung-subgroup__header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.6rem 0.875rem;
  cursor: pointer;
  user-select: none;
  list-style: none;
  font-size: 0.8rem;
  font-weight: 600;
  font-family: var(--nbf-ds-font);
  color: var(--nbf-ds-text);
  background: var(--nbf-ds-bg-subtle);
  transition: background .12s, color .12s;
}
.nbf-eignung-subgroup__header::-webkit-details-marker { display: none; }
.nbf-eignung-subgroup[open] > .nbf-eignung-subgroup__header {
  color: var(--nbf-ds-primary);
  background: #EBF3F3;
  border-bottom: 1px solid var(--nbf-ds-border);
}
.nbf-eignung-subgroup__header:hover { background: #EBF3F3; color: var(--nbf-ds-primary); }
.nbf-eignung-subgroup__header:focus-visible {
  outline: 3px solid var(--nbf-ds-focus);
  outline-offset: -2px;
}
.nbf-eignung-subgroup__title { flex: 1; }
.nbf-eignung-subgroup__count {
  font-size: 0.65rem;
  font-weight: 700;
  background: var(--nbf-ds-accent);
  color: #fff;
  border-radius: var(--nbf-ds-radius-pill);
  padding: 0.1rem 0.45rem;
  display: none;
}
.nbf-eignung-subgroup__count:not(:empty) { display: inline-block; }
.nbf-eignung-subgroup__chevron {
  flex-shrink: 0;
  color: #94A3B8;
  transition: transform .18s;
}
.nbf-eignung-subgroup[open] > .nbf-eignung-subgroup__header .nbf-eignung-subgroup__chevron {
  transform: rotate(180deg);
  color: var(--nbf-ds-accent);
}

/* Items */
.nbf-eignung-subgroup__items {
  padding: 0.4rem 0.75rem 0.6rem;
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
}

.nbf-eignung-item {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  padding: 0.45rem 0.5rem;
  border-radius: var(--nbf-ds-radius-sm);
  cursor: pointer;
  font-size: 0.8125rem;
  font-family: var(--nbf-ds-font);
  color: var(--nbf-ds-text);
  transition: background .1s;
  user-select: none;
}
.nbf-eignung-item:hover { background: var(--nbf-ds-bg-subtle); }
.nbf-eignung-item input { position: absolute; opacity: 0; width: 0; height: 0; }

/* Custom Checkbox */
.nbf-eignung-item__box {
  width: 1rem;
  height: 1rem;
  border: 1.5px solid var(--nbf-ds-border);
  border-radius: var(--nbf-ds-radius-sm);
  flex-shrink: 0;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color .12s, background .12s;
}
.nbf-eignung-item input:checked ~ .nbf-eignung-item__box {
  background: var(--nbf-ds-accent);
  border-color: var(--nbf-ds-accent);
}
.nbf-eignung-item input:checked ~ .nbf-eignung-item__box::after {
  content: '';
  width: 0.5rem;
  height: 0.3rem;
  border-left: 2px solid #fff;
  border-bottom: 2px solid #fff;
  transform: rotate(-45deg) translateY(-1px);
  display: block;
}
.nbf-eignung-item input:focus-visible ~ .nbf-eignung-item__box {
  outline: 3px solid var(--nbf-ds-focus);
  outline-offset: 2px;
}
.nbf-eignung-item__label { flex: 1; line-height: 1.35; }
.nbf-eignung-item:has(input:checked) .nbf-eignung-item__label {
  color: var(--nbf-ds-accent);
  font-weight: 600;
}

/* Mobile responsive */

/* ══ RESPONSIVE: < 1024px (Tailwind lg: breakpoint) ══════════════════════ */
@media (max-width: 1024px) {
  /* Mobile-Bar + Mobile-Map einblenden */
  .nbf-mobile-bar { display: flex; }
  .nbf-mobile-map { display: block; }

  /* Haupt-Layout: vertikal stapeln */
  .nbf-main-layout {
    flex-direction: column;
    height: auto;
    overflow: visible;
  }

  /* Filter-Sidebar: Desktop ausblenden, Mobile als Sheet */
  .nbf-filter-sidebar {
    display: none;
    width: 100%;
    height: auto;
    border-right: none;
    border-bottom: 1px solid var(--nbf-border);
  }
  .nbf-filter-sidebar.nbf-filter-sidebar--open {
    display: flex;
  }

  /* Ergebnisse: volle Breite, kein festes Width */
  .nbf-results-col {
    width: 100% !important;
    max-width: 100% !important;
    height: auto;
    overflow: visible;
  }
  .nbf-results-list {
    overflow: visible;
    padding-bottom: 1rem;
  }
  .nbf-pagination {
    position: static;
  }

  /* Karte: auf Mobile ausblenden (mobile-map übernimmt) */
  .nbf-map-col { display: none; }
}

@media (max-width: 640px) {
  .nbf-filter-sidebar__title { font-size: 1.1rem; }
  .nbf-results-list { padding: 0.75rem 0.75rem 1rem; gap: 0.75rem; }
}

@media (max-width: 640px) {
  .nbf-filter-sidebar__heading { padding: 1rem; }
  .nbf-finder-title { font-size: 1.1rem; }
  .nbf-card__body { padding: 0.875rem 1rem 1rem; }
}

/* ── Report-Modal: Submit-Button immer sichtbar ── */
.nbf-report-modal .nbf-btn--primary,
.nbf-report-modal button[type="submit"],
.nbf-report-form button[type="submit"] {
  display: block !important;
  width: 100% !important;
  margin-top: 1rem !important;
  padding: .75rem 1.5rem !important;
  background-color: var(--petrol) !important;
  color: var(--white) !important;
  border: none !important;
  border-radius: var(--radius-sm) !important;
  font-size: .9375rem !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  font-family: inherit !important;
  transition: background-color .2s !important;
}
.nbf-report-modal .nbf-btn--primary:hover,
.nbf-report-modal button[type="submit"]:hover,
.nbf-report-form button[type="submit"]:hover {
  background-color: var(--petrol-hover) !important;
}

/* ════════════════════════════════════════════════════════════════════════════
   MAP POPUP (Infobox) — v0.dev Design
   ════════════════════════════════════════════════════════════════════════════ */

/* 1. Leaflet-Standard-Popup-Rahmen/-Pfeil komplett neutralisieren */
.nbf-leaflet-popup--v0 .leaflet-popup-content-wrapper {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
}
.nbf-leaflet-popup--v0 .leaflet-popup-content {
  margin: 0 !important;
  width: auto !important;
  line-height: inherit !important;
}
.nbf-leaflet-popup--v0 .leaflet-popup-tip-container,
.nbf-leaflet-popup--v0 .leaflet-popup-tip {
  display: none !important;
}
.nbf-leaflet-popup--v0 .leaflet-popup-close-button,
.nbf-leaflet-popup--v0 a.leaflet-popup-close-button {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
  width: 0 !important;
  height: 0 !important;
}

/* 2. Popup-Box */
.map-popup {
  width: 300px;
  background-color: var(--white);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: 1rem;
  position: relative;
  animation: mapPopupFadeIn .2s ease-out;
  font-family: 'Inter Lokal', system-ui, sans-serif;
}
@keyframes mapPopupFadeIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Pfeil nach unten (zeigt auf Pin) */
.map-popup::after {
  content: '';
  position: absolute;
  bottom: -8px;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left:  10px solid transparent;
  border-right: 10px solid transparent;
  border-top:   10px solid var(--white);
  filter: drop-shadow(0 2px 2px rgba(0,0,0,.08));
}

/* Schließen-Button */
.map-popup-close {
  position: absolute;
  top: .5rem;
  right: .5rem;
  width: 1.75rem !important;
  height: 1.75rem !important;
  min-width: 0 !important;
  min-height: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: var(--petrol) !important;
  border: none !important;
  border-radius: 50% !important;
  cursor: pointer !important;
  color: var(--white) !important;
  transition: background-color .2s !important;
  padding: 0 !important;
  box-shadow: none !important;
  line-height: 1 !important;
}
.map-popup-close:hover {
  background: var(--petrol-hover) !important;
  color: var(--white) !important;
}
.map-popup-close svg {
  width: 1rem !important;
  height: 1rem !important;
  pointer-events: none;
  stroke: var(--white) !important;
}

/* Titel */
.map-popup-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--navy);
  margin: 0 0 .25rem;
  padding-right: 2rem;
  line-height: 1.35;
}

/* Adresse */
.map-popup-address {
  font-size: .8125rem;
  color: var(--muted-gray);
  margin: 0 0 .75rem;
  line-height: 1.4;
}

/* Tags */
.map-popup-tags {
  display: flex;
  flex-wrap: wrap;
  gap: .375rem;
  margin-bottom: 1rem;
}
.map-popup-tag {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  padding: .25rem .625rem;
  background-color: #E6F2F2;
  color: var(--petrol);
  font-size: .75rem;
  font-weight: 500;
  border-radius: 9999px;
  line-height: 1.3;
}
.map-popup-tag svg {
  width: .75rem;
  height: .75rem;
  flex-shrink: 0;
}

/* CTA-Button */
.map-popup-btn {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: .5rem !important;
  width: 100% !important;
  padding: .75rem 1rem !important;
  background-color: var(--petrol) !important;
  color: var(--white) !important;
  font-size: .9375rem !important;
  font-weight: 600 !important;
  border: none !important;
  border-radius: var(--radius-md) !important;
  cursor: pointer !important;
  text-decoration: none !important;
  transition: background-color .2s !important;
  font-family: inherit !important;
  box-shadow: none !important;
}
.map-popup-btn:hover {
  background-color: var(--petrol-hover) !important;
  color: var(--white) !important;
  text-decoration: none !important;
}
.map-popup-btn svg {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
}

/* ── Elementor-Override: alle Links im Plugin ── */
[class*="elementor-kit"] .nbf-single-wrap a,
[class*="elementor-kit"] .nbf-single-wrap a:hover,
[class*="elementor-kit"] .nbf-single-wrap a:visited {
  text-decoration: none !important;
}

/* Zurück-Button: Navy Hintergrund, weißer Text */
[class*="elementor-kit"] .btn-navy,
[class*="elementor-kit"] a.btn-navy,
[class*="elementor-kit"] a.btn-navy:hover,
[class*="elementor-kit"] a.btn-navy:visited {
  color: #FFFFFF !important;
  text-decoration: none !important;
}

/* Kontakt-Links: keine Unterstreichung, dezente Farbe */
[class*="elementor-kit"] .contact-link,
[class*="elementor-kit"] .contact-link:visited {
  color: var(--navy) !important;
  font-weight: 400 !important;
  text-decoration: none !important;
  display: inline-block !important;
  max-width: 100% !important;
  overflow-wrap: break-word !important;
  word-break: break-all !important;
}
[class*="elementor-kit"] .contact-link:hover {
  color: var(--navy) !important;
  opacity: .7 !important;
  text-decoration: underline !important;
}

/* Alle anderen Plugin-Links ebenfalls ohne Unterstrich */
.nbf-single-wrap a,
.nbf-wrap a {
  text-decoration: none;
}
.nbf-single-wrap a:hover,
.nbf-wrap a:hover {
  text-decoration: none;
}

/* ── Body-Klasse: alle Theme/Elementor-Abstände auf Shortcode-Seite ── */
body.nbf-fullwidth-page .site-main,
body.nbf-fullwidth-page .entry-content,
body.nbf-fullwidth-page .wp-block-post-content,
body.nbf-fullwidth-page .elementor-section-wrap,
body.nbf-fullwidth-page .elementor-top-section,
body.nbf-fullwidth-page .e-con-inner {
  padding: 0 !important;
  margin: 0 !important;
  max-width: 100% !important;
}
body.nbf-fullwidth-page .elementor-widget-shortcode .elementor-widget-container {
  padding: 0 !important;
  margin: 0 !important;
  line-height: 0;
  font-size: 0;
}

/* ════════════════════════════════════════════════════════════════════════════
   FORCE-RESET: Elementor / Theme Abstände um app-container eliminieren
   ════════════════════════════════════════════════════════════════════════════ */

/* 1. Leere Paragraphen die WordPress/Elementor um Shortcodes einfügt */
.app-container ~ p:empty,
.app-container + p:empty,
p:empty:has(+ .app-container),
.elementor-widget-shortcode p:empty,
.elementor-shortcode p:empty {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  height: 0 !important;
}

/* 2. Elementor-Widget-Container: Padding/Margin komplett weg */
.elementor-widget-shortcode,
.elementor-widget-shortcode .elementor-widget-container,
[class*="elementor-widget"] > .elementor-widget-container:has(.app-container),
.elementor-section:has(.app-container),
.elementor-container:has(.app-container),
.elementor-column:has(.app-container),
.elementor-column-wrap:has(.app-container),
.e-con:has(.app-container),
.e-con-inner:has(.app-container) {
  padding: 0 !important;
  margin: 0 !important;
}

/* 3. app-container direkt: volle Höhe auf Desktop erzwingen */
.app-container {
  display: flex !important;
  height: calc(100vh - 100px) !important;
  min-height: calc(100vh - 100px) !important;
  max-height: calc(100vh - 100px) !important;
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
  overflow: hidden !important;
}
/* Mobile: Force-Reset ÜBERSCHREIBEN — scrollen erlauben */
@media (max-width: 768px) {
  .app-container {
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    overflow: visible !important;
    overflow-x: hidden !important;
  }
  .main-content {
    flex-direction: column !important;
    height: auto !important;
    overflow: visible !important;
  }
}

/* 4. Elementor-Widget selbst: kein unteres Padding */
[class*="elementor-widget"]:has(.app-container) {
  padding-bottom: 0 !important;
  margin-bottom: 0 !important;
}

/* ── Kategorie-Count-Badge in Filterleiste ── */
.nbf-kat-count {
  margin-left: .4rem;
  font-size: .75rem;
  color: var(--muted-gray);
  font-weight: 400;
}
.filter-option input:checked ~ .filter-option-label .nbf-kat-count {
  color: rgba(255,255,255,.8);
}

/* ════════════════════════════════════════════════════════════════
   MOBILE-ONLY FIXES (max-width: 768px)
   ════════════════════════════════════════════════════════════════ */

/* ── Consent-Overlay "Karte laden" — komplett neu, zentriert ── */
/* ── Mobile Map Wrap ── */
.nbf-mobile-map-wrap {
  display: contents; /* Desktop: transparenter Wrapper, Karte bleibt in flex-row */
}

/* ── Karten-Placeholder (auf Mobile: eingesperrter Container) ── */
.nbf-mobile-map-placeholder {
  display: contents; /* Desktop: kein Effekt */
}

/* ── Consent-Overlay: auf Desktop unsichtbar ── */
.nbf-map-consent {
  display: none !important;
}
.nbf-map-consent--hidden { display: none !important; }

/* ── Mobile-spezifisch ── */
@media (max-width: 768px) {
  /* Wrap: normaler Block-Container */
  .nbf-mobile-map-wrap {
    display: block;
    width: 100%;
    order: 1;
    flex-shrink: 0;
  }

  /* Placeholder: einsperrender Container — Consent-Overlay bleibt darin */
  .nbf-mobile-map-placeholder {
    display: block;
    position: relative;       /* Consent-Overlay: position:absolute relativ hierzu */
    overflow: hidden;          /* Overlay bricht nicht aus */
    height: 280px;
    flex: none;
    background: var(--light-gray);
  }

  /* map-container passt sich dem Placeholder an */
  .nbf-mobile-map-placeholder .map-container {
    position: absolute !important;
    inset: 0 !important;
    height: 100% !important;
    width: 100% !important;
    flex: none !important;
  }

  /* Consent-Overlay: füllt Placeholder exakt, KEIN position:fixed */
  .nbf-map-consent:not(.nbf-map-consent--hidden) {
    display: flex !important;
    position: absolute !important;  /* relativ zu .nbf-mobile-map-placeholder */
    inset: 0 !important;
    z-index: 10;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 1rem;
    padding: 1.25rem;
    background: rgba(4, 45, 83, 0.80);
    color: var(--white);
  }

  /* Icon */
  .nbf-map-consent__icon svg { color: var(--white) !important; stroke: var(--white) !important; fill: none !important; }

  /* Titel */
  .nbf-map-consent__title {
    font-size: .9375rem;
    font-weight: 700;
    color: var(--white) !important;
    margin: 0;
  }

  /* Text */
  .nbf-map-consent__text {
    font-size: .8125rem;
    color: rgba(255,255,255,.9) !important;
    margin: 0;
    line-height: 1.5;
  }

  /* Button: Petrol, volle Breite (max 220px) */
  .nbf-map-consent__btn {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    padding: .75rem 1.5rem;
    background: var(--petrol) !important;
    color: var(--white) !important;
    border: none;
    border-radius: var(--radius-sm);
    font-size: .9375rem;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    transition: background .2s;
    width: 100%;
    max-width: 220px;
    text-decoration: none !important;
  }
  .nbf-map-consent__btn:hover { background: var(--petrol-hover) !important; }
}
.nbf-map-consent__preview { display: none; }
.nbf-map-consent__box {
  background: var(--white);
  border-radius: var(--radius-md);
  padding: 1.25rem;
  max-width: 260px;
  width: calc(100% - 2rem);
  text-align: center;
  box-shadow: var(--shadow-lg);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .625rem;
}
/* consent text — Mobile-Stile in @media (max-width:768px) */
.nbf-map-consent__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  width: 100%;
  padding: .75rem 1rem;
  background: var(--petrol);
  color: var(--white) !important;
  border: none;
  border-radius: var(--radius-sm);
  font-size: .9375rem;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: background .2s;
  text-decoration: none !important;
}
.nbf-map-consent__btn:hover { background: var(--petrol-hover); }
.nbf-map-consent__btn svg { flex-shrink: 0; }

.nbf-map-consent__preview { display: none; }
.nbf-map-consent__box {
  background: var(--white);
  border-radius: var(--radius-md);
  padding: 1.5rem 1.25rem;
  max-width: 260px;
  width: calc(100% - 2rem);
  max-height: calc(100% - 1rem);
  text-align: center;
  box-shadow: var(--shadow-lg);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .75rem;
}
/* consent icon/text — Mobile-Stile in @media (max-width:768px) */
.nbf-map-consent__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: .75rem 1.25rem;
  background: var(--petrol);
  color: var(--white) !important;
  border: none;
  border-radius: var(--radius-sm);
  font-size: .9375rem;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: background .2s;
}
.nbf-map-consent__btn:hover { background: var(--petrol-hover); }

/* ── Mobile: Melden unter Pagination + Consent zentriert ── */
@media (max-width: 768px) {
  /* Melden: nach der Pagination, statisch im Fluss */
  .nbf-map-report-hint {
    position: static !important;
    transform: none !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    display: flex;
    margin: 0 1rem 1.5rem;
    border-radius: var(--radius-md);
    white-space: normal;
    max-width: calc(100% - 2rem);
    box-shadow: var(--shadow-sm);
    order: 3;
  }

  /* Consent-Overlay: horizontal zentriert über Karte */
  .map-container { position: relative; }
  .nbf-map-consent {
    position: absolute !important;
    inset: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
  .nbf-map-consent__box {
    margin: auto;
  }
}

/* ── Pagination Scroll-Anker ── */
#poi-liste {
  display: block;
  scroll-margin-top: 80px; /* Höhe des Theme-Headers */
}
@media (max-width: 768px) {
  #poi-liste {
    scroll-margin-top: 60px;
  }
}

/* ══════════════════════════════════════════════════════════════
   AKKORDEON — Feature-Legend, Sub-Categories, Freetext
   (v2.5.138 — v0.dev Design-Referenz)
══════════════════════════════════════════════════════════════ */

/* ── Legende ── */
.feature-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .75rem 1rem;
  padding: .75rem 1rem;
  margin: 1rem 0 .5rem;
  background-color: var(--light-gray);
  border-radius: var(--radius-sm);
}
.legend-title {
  font-size: .6875rem;
  font-weight: 600;
  color: var(--muted-gray);
  text-transform: uppercase;
  letter-spacing: .5px;
  padding-right: .75rem;
  border-right: 1px solid var(--border-gray);
}
.legend-item {
  display: inline-flex;
  align-items: center;
  gap: .375rem;
  font-size: .8125rem;
  color: var(--muted-gray);
}
.legend-icon { width: 1rem; height: 1rem; flex-shrink: 0; }
.legend-icon.icon-yes     { color: #16a34a; }
.legend-icon.icon-no      { color: #dc2626; }
.legend-icon.icon-unknown { color: var(--muted-gray); }
.legend-icon.icon-partial { color: #f59e0b; }

/* ── Feature icons (v0.dev Varianten) ── */
.feature-no {
  width: 1.25rem; height: 1.25rem;
  background-color: #fee2e2;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.feature-no svg { width: .75rem; height: .75rem; color: #dc2626; }
.feature-unknown {
  width: 1.25rem; height: 1.25rem;
  background-color: #f3f4f6;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.feature-unknown svg { width: .75rem; height: .75rem; color: var(--muted-gray); }
.feature-partial {
  width: 1.25rem; height: 1.25rem;
  background-color: #fef3c7;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.feature-partial svg { width: .75rem; height: .75rem; color: #f59e0b; }

/* ── Sub-Categories ── */
.sub-categories {
  display: flex;
  flex-direction: column;
  gap: 2rem;
  padding-top: .5rem;
}
.sub-category {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.sub-headline {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--navy);
  margin: 0;
}

/* ── Explanation-Box ── */
.explanation-box {
  background-color: #f0f9ff;
  border-left: 4px solid var(--petrol);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  padding: .875rem 1rem;
}
.explanation-title {
  font-size: .8125rem;
  font-weight: 600;
  color: var(--navy);
  margin-bottom: .5rem;
}
.explanation-list {
  list-style: none;
  padding: 0; margin: 0;
  display: flex;
  flex-direction: column;
  gap: .375rem;
}
.explanation-list li {
  font-size: .8125rem;
  color: var(--body-gray);
  display: flex;
  align-items: flex-start;
  gap: .5rem;
  line-height: 1.5;
}
.explanation-list li::before {
  content: '→';
  color: var(--petrol);
  font-weight: 500;
  flex-shrink: 0;
}

/* ── Sub-Feature-List ── */
.sub-feature-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: .75rem;
  padding: 0; margin: 0;
  list-style: none;
}
@media (max-width: 640px) {
  .sub-feature-list { grid-template-columns: 1fr; }
}

/* ── Optional Freetext ── */
.optional-freetext {
  display: flex;
  align-items: flex-start;
  gap: .625rem;
  padding: 1rem;
  margin-top: 1.5rem;
  background-color: var(--light-gray);
  border-radius: var(--radius-sm);
}
.freetext-icon {
  width: 1.125rem;
  height: 1.125rem;
  color: var(--muted-gray);
  flex-shrink: 0;
  margin-top: .125rem;
}
.freetext-content {
  font-size: .875rem;
  font-style: italic;
  color: var(--muted-gray);
  line-height: 1.6;
}

/* ════════════════════════════════════════════════════════════════
   CUSTOM MAP MARKER — v0-Ästhetik, runder Pin mit Kategorie-Icon
   ════════════════════════════════════════════════════════════════ */
.nbf-custom-marker {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  cursor: pointer;
  filter: drop-shadow(0 2px 6px rgba(4,45,83,.40));
  transition: filter .15s, transform .15s;
  width: 44px !important;
  box-sizing: content-box !important;
}
.nbf-custom-marker:hover {
  filter: drop-shadow(0 4px 10px rgba(4,45,83,.55));
  transform: translateY(-2px);
}

/* Kreis */
.nbf-custom-marker__circle {
  width: 44px !important;
  height: 44px !important;
  min-width: 44px !important;
  min-height: 44px !important;
  border-radius: 50% !important;
  background: var(--navy, #042D53) !important;
  border: 2.5px solid rgba(255,255,255,.85) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0 !important;
  box-sizing: border-box !important;
}
.nbf-custom-marker__circle svg {
  width: 22px !important;
  height: 22px !important;
  min-width: 22px !important;
  min-height: 22px !important;
  stroke: #ffffff !important;
  fill: none !important;
  display: block !important;
  flex-shrink: 0 !important;
}

/* Spitze: kleines gleichschenkeliges Dreieck */
.nbf-custom-marker__tip {
  width: 0 !important;
  height: 0 !important;
  border-left:  8px solid transparent !important;
  border-right: 8px solid transparent !important;
  border-top:   10px solid var(--navy, #042D53) !important;
  margin-top: -1px !important;
  flex-shrink: 0 !important;
}

/* Alle Kategorien: einheitlich Navy — keine abweichenden Farben */

/* Leaflet-Standard-Wrapper neutralisieren */
.leaflet-marker-icon.leaflet-zoom-animated { background: none !important; border: none !important; box-shadow: none !important; }

/* ── Sidebar-Title Icons — höchste Spezifität ── */
.sidebar-card-title svg,
.sidebar-card-title > svg,
.nbf-single-wrap .sidebar-card-title svg,
[class*="elementor-kit"] .sidebar-card-title svg {
  width: 24px !important;
  height: 24px !important;
  color: var(--navy) !important;
  stroke-width: 2px !important;
  flex-shrink: 0;
}

/* ── POI-Card Ampel-Icons ── */
.poi-card-ampel {
  display: flex;
  gap: .375rem;
  margin-top: .75rem;
}
.mobi-ampel-icon {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.mobi-ampel-icon svg {
  width: 16px;
  height: 16px;
  display: block;
}

/* ── POI-Card Feature-Liste ── */
.poi-card-features {
  display: flex;
  flex-direction: column;
  gap: .25rem;
  margin-top: .5rem;
}
.poi-feature-item {
  display: flex;
  align-items: flex-start;
  gap: .3rem;
  font-size: .8rem;
  color: var(--body-gray);
  line-height: 1.3;
}
.poi-feature-item svg {
  color: #16a34a;
  flex-shrink: 0;
  margin-top: 1px;
}

/* ── Ergebnis-Legende (Ampel-Erklärung) ── */
.results-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem .75rem;
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  padding: .625rem 1rem;
  margin-bottom: 1rem;
  font-size: .75rem;
  color: var(--body-gray);
  line-height: 1.4;
}
.legend-icons-row,
.legend-colors-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .3rem .625rem;
}
.legend-icon-item,
.legend-color-item {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  white-space: nowrap;
}
.legend-icon-wrap {
  width: 22px;
  height: 22px;
  border-radius: 5px;
  background: #f3f4f6;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: #6b7280;
}
.legend-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
}
.legend-dot--green  { background: #d1fae5; border: 1px solid #6ee7b7; }
.legend-dot--yellow { background: #fef3c7; border: 1px solid #fcd34d; }
.legend-dot--red    { background: #fee2e2; border: 1px solid #fca5a5; }
.legend-dot--gray   { background: #f3f4f6; border: 1px solid #d1d5db; }
.legend-divider {
  width: 1px;
  height: 20px;
  background: #e5e7eb;
  flex-shrink: 0;
}
@media (max-width: 768px) {
  .legend-divider { display: none; }
  .results-legend { flex-direction: column; align-items: flex-start; gap: .4rem; }
}

/* ── Filter-Option mit Icon ── */
.filter-option--icon {
  gap: .5rem;
}
.filter-option--icon input[type="checkbox"] {
  flex-shrink: 0;
}
.filter-option--icon svg {
  flex-shrink: 0;
  color: #6b7280;
  margin-top: 1px;
}
.filter-option--icon .filter-option-label {
  flex: 1;
}

/* ── Legend-Trigger ── */
.legend-trigger,
button.legend-trigger,
a.legend-trigger,
[class*="elementor-kit"] .legend-trigger,
[class*="elementor-kit"] button.legend-trigger {
  background: transparent !important;
  border: none !important;
  color: var(--navy, #042D53) !important;
  text-decoration: underline !important;
  text-underline-offset: 4px !important;
  padding: 0 !important;
  box-shadow: none !important;
  font-size: .875rem !important;
  font-weight: 500 !important;
  font-family: inherit !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: .375rem !important;
  width: 100% !important;
  margin: .75rem 0 0 !important;
  cursor: pointer !important;
  transition: color .15s !important;
  transform: none !important;
}
.legend-trigger:hover,
button.legend-trigger:hover,
a.legend-trigger:hover {
  color: #000000 !important;
  background: transparent !important;
  text-decoration: underline !important;
  box-shadow: none !important;
  transform: none !important;
}
.legend-trigger svg,
button.legend-trigger svg {
  color: inherit !important;
  flex-shrink: 0;
}

/* ── Modal Overlay ── */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.45);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  box-sizing: border-box;
  opacity: 0;
  pointer-events: none;
  transition: opacity .25s ease;
  overflow-y: auto;
}
.modal-overlay.is-open {
  opacity: 1;
  pointer-events: auto;
}
.modal-content {
  background: #ffffff;
  border-radius: var(--radius-md);
  padding: 1.5rem;
  max-width: 420px;
  width: 100%;
  box-shadow: var(--shadow-large);
  border: var(--border-light);
  transform: translateY(20px);
  transition: transform .25s ease;
  max-height: calc(100dvh - 2rem);
  overflow-y: auto;
  box-sizing: border-box;
  flex-shrink: 0;
  margin: auto;
}
.modal-overlay.is-open .modal-content {
  transform: translateY(0);
}

/* Modal Header */
.modal-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.25rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--border-gray);
}
.modal-title {
  font-size: 1.5rem !important;
  font-weight: 700 !important;
  color: var(--navy) !important;
  margin: 0 !important;
  line-height: 1.3;
  flex: 1;
}
.modal-close {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--muted-gray);
  padding: .25rem;
  width: 2rem;
  height: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border-radius: 4px;
  transition: color .15s;
}
.modal-close:hover { color: var(--navy); }

/* Modal Sections */
.modal-section { margin-bottom: 1.125rem; }
.modal-section:last-child { margin-bottom: 0; }
.modal-section-title {
  font-size: .8125rem !important;
  font-weight: 600 !important;
  color: var(--muted-gray) !important;
  text-transform: uppercase !important;
  letter-spacing: .05em !important;
  margin: 0 0 .625rem !important;
}

/* Icons Grid */
.modal-icons-grid {
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.modal-icon-item {
  display: flex;
  align-items: center;
  gap: .625rem;
  font-size: .875rem;
  color: var(--body-gray);
  line-height: 1.4;
}
.modal-icon-wrap {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  background: rgba(0,123,122,.08);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: var(--petrol);
}

/* Colors List */
.modal-colors-list {
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.modal-color-item {
  display: flex;
  align-items: center;
  gap: .625rem;
  font-size: .875rem;
  color: var(--body-gray);
}
.modal-dot {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 1.5px solid transparent;
  flex-shrink: 0;
  display: inline-block;
}

/* ── Map-Popup Ampel-Icons ── */
.popup-ampel-row {
  display: flex;
  gap: .5rem;
  margin: .5rem 0 .75rem;
}
.popup-ampel-icon {
  width: 28px;
  height: 28px;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.popup-ampel-icon svg {
  display: block;
  width: 14px;
  height: 14px;
}

/* ── Map-Popup: Accessibility-Header & kompakte Abstände ── */

/* Leaflet-Defaults für h3 und p im Popup killen */
.leaflet-popup-content h3,
.leaflet-popup-content .map-popup-title {
  margin-bottom: 2px !important;
  padding-bottom: 0 !important;
  line-height: 1.2 !important;
  font-size: 1rem !important;
  font-weight: 700 !important;
  color: var(--navy) !important;
  padding-right: 1.5rem !important;
}
.leaflet-popup-content p,
.leaflet-popup-content .map-popup-address {
  margin-top: 0 !important;
  padding-top: 0 !important;
  margin-bottom: 1rem !important;
  color: var(--body-gray) !important;
  font-size: .8125rem !important;
}

/* Accessibility-Header: eng am Text, Fragezeichen hochgestellt */
/* .popup-accessibility-header — jetzt inline-style */
/* .popup-info-btn entfernt — Trigger nicht mehr im Popup */

/* ── Vorschlags-Modal Felder ── */
.modal-content--wide { max-width: 560px; }
.proposal-field-group { margin-bottom: 1.25rem; }
.proposal-group-title {
  display: flex; align-items: center; gap: .375rem;
  font-size: .8125rem !important; font-weight: 600 !important;
  color: var(--muted-gray) !important; text-transform: uppercase !important;
  letter-spacing: .05em !important; margin: 0 0 .625rem !important;
}
.proposal-upload-area {
  display: flex; flex-direction: column; align-items: center; gap: .5rem;
  padding: 1.5rem 1.25rem; border: 2px dashed var(--border-gray);
  border-radius: var(--radius-md); text-align: center;
  color: var(--muted-gray); font-size: .8125rem;
  transition: border-color .2s, background .2s; cursor: pointer;
}
.proposal-upload-area.dragover {
  border-color: var(--petrol); background: rgba(0,123,122,.04);
}
.proposal-upload-area svg { color: var(--muted-gray); }
.proposal-upload-area p { margin: 0; }
.proposal-file-trigger { color: var(--petrol); text-decoration: underline; cursor: pointer; }
.proposal-hint { font-size: .75rem; color: var(--muted-gray); }
.proposal-preview { margin-top: .5rem; }
.proposal-feedback {
  margin-top: .75rem; padding: .625rem 1rem; border-radius: var(--radius-sm);
  font-size: .875rem;
}
.proposal-feedback.success { background: #d1fae5; color: #065f46; }
.proposal-feedback.error   { background: #fee2e2; color: #991b1b; }
.proposal-text-input {
  display: block; width: 100%; padding: .5rem .75rem;
  border: 1px solid var(--border-gray); border-radius: var(--radius-sm);
  font-size: .875rem; font-family: inherit; color: var(--navy);
  transition: border-color .15s;
  box-sizing: border-box;
}
.proposal-text-input:focus {
  outline: none; border-color: var(--petrol);
  box-shadow: 0 0 0 3px rgba(0,123,122,.12);
}
.proposal-textarea { resize: vertical; min-height: 72px; }
.proposal-contact-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: .625rem;
}
.proposal-contact-label {
  display: flex; flex-direction: column; gap: .3rem;
  font-size: .8125rem; color: var(--body-gray); font-weight: 500;
}
.proposal-contact-label--full { grid-column: 1 / -1; }
.modal-footer {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
  align-items: stretch;
  gap: .75rem;
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid var(--border-gray);
}
.modal-footer .btn {
  padding: .5rem 1.25rem !important;
  font-size: .875rem !important;
  line-height: 1 !important;
  box-sizing: border-box !important;
  border: 1px solid transparent !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  height: 2.5rem !important;
  min-height: 0 !important;
  white-space: nowrap !important;
}
.modal-footer .btn.btn-outline {
  border-color: var(--border-gray, #e5e7eb) !important;
}
.modal-footer .btn.btn-primary {
  border-color: var(--petrol, #007B7A) !important;
}
@media (max-width: 480px) {
  .proposal-contact-grid { grid-template-columns: 1fr; }
  .proposal-contact-label--full { grid-column: 1; }
  .modal-footer {
    flex-direction: column-reverse;
    align-items: stretch;
  }
  .modal-footer .btn {
    width: 100%;
    text-align: center;
    justify-content: center;
  }
}
.proposal-intro { font-size: .875rem; color: var(--body-gray); margin-bottom: 1.25rem; }
.proposal-upload-area {
  display: flex; flex-direction: column; align-items: center; gap: .75rem;
  padding: 2rem 1.5rem; border: 2px dashed var(--border-gray);
  border-radius: var(--radius-md); text-align: center;
  color: var(--muted-gray); font-size: .875rem;
  transition: border-color .2s, background .2s; cursor: pointer;
}
.proposal-upload-area.dragover {
  border-color: var(--petrol); background: rgba(0,123,122,.04);
}
.proposal-upload-area svg { color: var(--muted-gray); }
.proposal-upload-area p { margin: 0; }
.proposal-file-label { cursor: pointer; }
.proposal-hint { font-size: .75rem; color: var(--muted-gray); }
.proposal-preview {
  margin-top: 1rem; border-radius: var(--radius-sm); overflow: hidden;
  max-width: 320px;
}
.proposal-preview img { width: 100%; display: block; }
.proposal-feedback {
  margin-top: .75rem; padding: .75rem 1rem; border-radius: var(--radius-sm);
  font-size: .875rem;
}
.proposal-feedback.success { background: #d1fae5; color: #065f46; }
.proposal-feedback.error   { background: #fee2e2; color: #991b1b; }
.proposal-submit { margin-top: 1rem; }

/* ── Proposal-Spinner ── */
.proposal-spinner {
  display: inline-block;
  width: 14px; height: 14px;
  border: 2px solid rgba(255,255,255,.35);
  border-top-color: #ffffff;
  border-radius: 50%;
  animation: nbf-spin .6s linear infinite;
  vertical-align: middle;
  margin-right: 4px;
}
@keyframes nbf-spin { to { transform: rotate(360deg); } }

/* ── Voice Search ── */
.search-input-wrapper {
  position: relative;
  display: flex;
  align-items: center;
}
.search-input-wrapper input[type="search"],
.search-input-wrapper input[type="text"] {
  padding-right: 40px !important;
}

#voice-search-btn,
.voice-search-btn {
  position: absolute !important;
  right: 12px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 4px !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: #4b5563 !important;
  transition: color .2s ease !important;
  z-index: 10;
  width: auto !important;
  height: auto !important;
  border-radius: 4px;
}
#voice-search-btn:hover,
.voice-search-btn:hover {
  color: var(--navy, #042D53) !important;
  background: transparent !important;
}
#voice-search-btn svg,
.voice-search-btn svg {
  width: 18px !important;
  height: 18px !important;
  stroke: currentColor !important;
  fill: none !important;
  pointer-events: none;
  flex-shrink: 0;
}
#voice-search-btn.is-listening,
.voice-search-btn.is-listening {
  color: #dc2626 !important;
  background: transparent !important;
  animation: pulse-mic 1.5s infinite !important;
}
@keyframes pulse-mic {
  0%   { transform: translateY(-50%) scale(1);    opacity: 1; }
  50%  { transform: translateY(-50%) scale(1.15); opacity: .7; }
  100% { transform: translateY(-50%) scale(1);    opacity: 1; }
}

/* ═══════════════════════════════════════════════════════════════
   HOME HERO SEARCH  [norderney_home_search]
   ═══════════════════════════════════════════════════════════════ */
.home-hero-search {
  background-color: #ffffff !important;
  border-radius: 16px !important;
  padding: 2rem !important;
  max-width: 900px !important;
  margin: 0 auto !important;
  box-shadow: 0 10px 40px rgba(0,0,0,.15) !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 1.5rem !important;
  box-sizing: border-box !important;
}
.home-hero-search svg {
  width: 20px !important;
  height: 20px !important;
  max-width: 20px !important;
  max-height: 20px !important;
  flex-shrink: 0 !important;
  display: inline-block !important;
}
.home-hero-search .search-row-1 {
  display: flex !important;
  gap: 1rem !important;
  width: 100% !important;
  align-items: center !important;
}
.home-hero-search .hhs-search-wrap,
.home-hero-search .hhs-select-wrap {
  position: relative !important;
  flex: 1 !important;
  display: flex !important;
  align-items: center !important;
}
.home-hero-search .hhs-select-wrap { flex: 0 0 220px !important; }
.home-hero-search .hhs-icon {
  position: absolute !important;
  left: 14px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  pointer-events: none !important;
  color: #9ca3af !important;
  z-index: 1 !important;
}
.home-hero-search input[type="text"],
.home-hero-search input[type="search"],
.home-hero-search select {
  width: 100% !important;
  padding: 14px 16px 14px 44px !important;
  border: 1.5px solid #d1d5db !important;
  border-radius: 8px !important;
  font-size: 16px !important;
  color: #1f2937 !important;
  background: #f9fafb !important;
  font-family: inherit !important;
  outline: none !important;
  box-sizing: border-box !important;
  -webkit-appearance: none !important;
  appearance: none !important;
  transition: border-color .2s, box-shadow .2s !important;
}
.home-hero-search input:focus,
.home-hero-search select:focus {
  border-color: var(--petrol, #007B7A) !important;
  background: #fff !important;
  box-shadow: 0 0 0 3px rgba(0,123,122,.12) !important;
}
.home-hero-search input::placeholder { color: #737373 !important; }
.home-hero-search .hhs-voice-btn {
  position: absolute !important;
  right: 10px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 4px !important;
  cursor: pointer !important;
  color: #6b7280 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  z-index: 2 !important;
  width: auto !important;
  height: auto !important;
}
.home-hero-search .hhs-voice-btn:hover { color: var(--petrol, #007B7A) !important; }
.home-hero-search .hhs-voice-btn.is-listening { color: #dc2626 !important; animation: hhs-mic-pulse 1.2s ease-in-out infinite !important; }
@keyframes hhs-mic-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(220,38,38,.35); }
  55%      { box-shadow: 0 0 0 5px rgba(220,38,38,.0); }
}
.home-hero-search .accessibility-row {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 1rem !important;
  align-items: center !important;
  color: #374151 !important;
}
.home-hero-search .hhs-row-label {
  font-size: 14px !important;
  font-weight: 600 !important;
  color: #6b7280 !important;
  white-space: nowrap !important;
}
.home-hero-search .accessibility-label {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-size: 14px !important;
  cursor: pointer !important;
  color: #374151 !important;
  padding: 6px 14px !important;
  border: 1.5px solid #e5e7eb !important;
  border-radius: 9999px !important;
  background: #f9fafb !important;
  transition: border-color .2s, background .2s, color .2s !important;
  user-select: none !important;
}
.home-hero-search .accessibility-label:hover {
  border-color: var(--petrol, #007B7A) !important;
  color: var(--petrol, #007B7A) !important;
  background: rgba(0,123,122,.05) !important;
}
.home-hero-search input[type="checkbox"] {
  width: 16px !important;
  height: 16px !important;
  max-width: 16px !important;
  max-height: 16px !important;
  margin: 0 !important;
  flex-shrink: 0 !important;
  cursor: pointer !important;
  accent-color: var(--petrol, #007B7A) !important;
}
.home-hero-search .submit-btn {
  background-color: var(--navy, #042D53) !important;
  color: #ffffff !important;
  padding: 14px 32px !important;
  border: none !important;
  border-radius: 8px !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  font-family: inherit !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  width: 100% !important;
  transition: opacity .2s, transform .15s !important;
  box-shadow: 0 4px 14px rgba(4,45,83,.25) !important;
  box-sizing: border-box !important;
}
.home-hero-search .submit-btn:hover { opacity: .9 !important; transform: translateY(-1px) !important; }
@media (max-width: 768px) {
  .home-hero-search .search-row-1 { flex-direction: column !important; }
  .home-hero-search .hhs-select-wrap { flex: 1 !important; }
  .home-hero-search { padding: 1.25rem !important; }
}

/* Sonstige Merkmale: 1-Spalte + größere Abstände */
.sub-feature-list--sonstige {
  grid-template-columns: 1fr !important;
}
.sub-categories > .sub-category + .sub-category {
  border-top: 1px solid var(--border-light, #e5e7eb);
  padding-top: 2rem;
}
.sub-categories {
  gap: 2.5rem;
}

/* ── Modal-Inputs: Soft UI — Elementor-Override ───────────────────────── */
.nbf-report-modal .nbf-form-group input,
.nbf-report-modal .nbf-form-group input[type="text"],
.nbf-report-modal .nbf-form-group input[type="email"],
.nbf-report-modal .nbf-form-group input[type="search"],
.nbf-report-modal .nbf-form-group select,
.nbf-report-modal .nbf-form-group textarea,
#proposal-modal .proposal-text-input,
#proposal-modal input[type="text"],
#proposal-modal input[type="tel"],
#proposal-modal input[type="email"],
#proposal-modal input[type="url"],
#proposal-modal select,
#proposal-modal textarea {
  border: 1px solid #e5e7eb !important;
  border-radius: 10px !important;
  background: #f9fafb !important;
  box-shadow: 0 2px 6px rgba(0,0,0,.04) !important;
  outline: none !important;
  transition: border-color .2s, box-shadow .2s, background .2s !important;
  padding: 10px 14px !important;
  font-family: inherit !important;
  font-size: .9375rem !important;
  color: #1f2937 !important;
  width: 100% !important;
  box-sizing: border-box !important;
}
.nbf-report-modal .nbf-form-group input:focus,
.nbf-report-modal .nbf-form-group select:focus,
.nbf-report-modal .nbf-form-group textarea:focus,
#proposal-modal .proposal-text-input:focus,
#proposal-modal input:focus,
#proposal-modal select:focus,
#proposal-modal textarea:focus {
  border-color: #007B7A !important;
  background: #ffffff !important;
  box-shadow: 0 4px 12px rgba(0,123,122,.12) !important;
}
#proposal-modal textarea.proposal-text-input {
  resize: vertical !important;
  min-height: 80px !important;
}

/* Consent-Checkbox im Melden-Modal: native Darstellung bewahren */
.nbf-report-modal input[type="checkbox"],
.nbf-modal input[type="checkbox"],
#proposal-modal input[type="checkbox"] {
  width: auto !important;
  height: auto !important;
  padding: 0 !important;
  border: none !important;
  box-shadow: none !important;
  background: transparent !important;
  border-radius: 0 !important;
  -webkit-appearance: checkbox !important;
  appearance: checkbox !important;
  accent-color: var(--petrol, #007B7A) !important;
  flex-shrink: 0 !important;
  cursor: pointer !important;
  margin: 0 !important;
  min-width: 1rem;
  min-height: 1rem;
}

/* Hero-Bild ohne Rundung — Bild via wrapper clippen */
.nbf-hero::before {
  content: '';
  display: block;
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
.nbf-hero-image {
  clip-path: inset(0) !important;
  border-radius: 0 !important;
}

/* Badge: flex-child auf natürliche Breite begrenzen */
.nbf-hero-info .nbf-hero-badge,
.nbf-hero-card .nbf-hero-badge {
  align-self: flex-start !important;
  width: auto !important;
  max-width: fit-content !important;
  flex-shrink: 0 !important;
}

/* Accordion-Chevron SVG explizit */
.accordion-chevron {
  width: 1.25rem !important;
  height: 1.25rem !important;
}

/* ── Globale Fokus-Sichtbarkeit (WCAG 2.4.7) ── */
:focus-visible {
  outline: 3px solid var(--petrol, #007B7A) !important;
  outline-offset: 2px !important;
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--petrol, #007B7A) !important;
  outline-offset: 2px !important;
  border-radius: 2px;
}
/* Skip-Link sichtbar bei Fokus */
.nbf-skip-link:focus,
.nbf-skip-links a:focus {
  position: fixed !important;
  top: 8px !important;
  left: 8px !important;
  z-index: 99999 !important;
  clip: auto !important;
  width: auto !important;
  height: auto !important;
  padding: 10px 18px !important;
  background: var(--navy, #042D53) !important;
  color: #fff !important;
  font-weight: 600 !important;
  border-radius: 4px !important;
  text-decoration: none !important;
  outline: 3px solid #fff !important;
}

/* Elementor Container-Kompatibilität (Flexbox Plugin, Classic, 3.6+ Container) */
.e-con > .nbf-wrap,
.e-con-inner > .nbf-wrap,
.e-container > .nbf-wrap,
.e-container--row > .nbf-wrap,
.elementor-widget-container > .nbf-wrap {
  width: 100%;
  max-width: 100%;
}

/* iOS-Hinweis unter Sucheingabe (Mobile Slide-Out) */
.mobile-filter-search {
  display: flex !important;
  flex-direction: column !important;
  flex-wrap: nowrap !important;
}

/* Desktop: iOS-Hint vertikal zentriert in der Sidebar */
@media (min-width: 769px) {
  }
/* Desktop: Suche + iOS-Hint nebeneinander auf gleicher Höhe */
.nbf-search-hint-row {
  display: flex;
  align-items: center;
  gap: 0;
}
.nbf-search-hint-row .search-input-wrapper {
  flex: 1;
}

/* Mini-Map auf Mobile: explizite Höhe damit Leaflet sie rendern kann */
@media (max-width: 768px) {
  .nbf-detail-map-wrap { height: 160px !important; min-height: 160px !important; }
  .nbf-detail-map      { height: 160px !important; min-height: 160px !important; }
}

/* Leaflet divIcon Reset für nbf-Marker */
.nbf-leaflet-div-icon {
  background: none !important;
  border: none !important;
  box-shadow: none !important;
}

/* Report-Modal Submit: gleiches Design wie Proposal-Modal */
.nbf-report-modal .nbf-submit-btn,
#nbf-report-modal .nbf-submit-btn {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .75rem 1.5rem;
  background: var(--petrol, #007B7A);
  color: #fff;
  border: none;
  border-radius: var(--radius-md);
  font-size: 1rem;
  font-weight: 600;
  cursor: pointer;
  width: 100%;
  justify-content: center;
  margin-top: .5rem;
}
@media (max-width: 480px) {
  #nbf-report-modal .modal-footer,
  .nbf-report-modal .modal-footer {
    flex-direction: column-reverse;
    align-items: stretch;
  }
}

/* ── Report Modal: Close-Button grün mit weißem Icon ─────────────────── */
#nbf-report-modal .modal-close {
  background: var(--petrol, #007B7A) !important;
  border: none !important;
  cursor: pointer !important;
  padding: .375rem !important;
  width: 2rem !important;
  height: 2rem !important;
  min-width: 2rem !important;
  min-height: 2rem !important;
  flex-shrink: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 6px !important;
  transition: background .15s !important;
  opacity: 1 !important;
  visibility: visible !important;
}
#nbf-report-modal .modal-close:hover {
  background: var(--petrol-hover, #006665) !important;
}
#nbf-report-modal .modal-close svg,
#nbf-report-modal .modal-close svg line,
#nbf-report-modal .modal-close svg path {
  color: #ffffff !important;
  stroke: #ffffff !important;
  opacity: 1 !important;
  visibility: visible !important;
  display: block !important;
}

/* Formularfelder: Soft UI */
#nbf-report-modal input[type="text"],
#nbf-report-modal input[type="email"],
#nbf-report-modal select,
#nbf-report-modal textarea {
  width: 100% !important;
  padding: 10px 14px !important;
  border: 1px solid #e5e7eb !important;
  border-radius: 10px !important;
  background: #f9fafb !important;
  box-shadow: 0 2px 6px rgba(0,0,0,.04) !important;
  font-family: inherit !important;
  font-size: .9375rem !important;
  color: #1f2937 !important;
  box-sizing: border-box !important;
  transition: border-color .2s, box-shadow .2s !important;
  -webkit-appearance: none !important;
  appearance: none !important;
}
#nbf-report-modal input:focus,
#nbf-report-modal select:focus,
#nbf-report-modal textarea:focus {
  border-color: #007B7A !important;
  background: #fff !important;
  box-shadow: 0 4px 12px rgba(0,123,122,.12) !important;
  outline: none !important;
}

/* Buttons: gleiche Höhe und Padding */
#nbf-report-modal .btn,
#nbf-report-modal button[type="submit"],
#nbf-report-modal button[type="button"] {
  min-height: 48px !important;
  padding: 12px 20px !important;
  font-size: 1rem !important;
  font-weight: 600 !important;
  font-family: inherit !important;
  border-radius: 8px !important;
  cursor: pointer !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
  transition: background .15s, box-shadow .15s !important;
  width: 100% !important;
}
#nbf-report-modal .btn-primary,
#nbf-report-modal button[type="submit"] {
  background: var(--petrol, #007B7A) !important;
  color: #fff !important;
  border: 1px solid var(--petrol, #007B7A) !important;
  box-shadow: 0 4px 12px rgba(0,123,122,.25) !important;
}
#nbf-report-modal .btn-primary:hover,
#nbf-report-modal button[type="submit"]:hover {
  background: var(--petrol-hover, #006665) !important;
}

/* Checkbox: native Darstellung */
#nbf-report-modal input[type="checkbox"] {
  width: auto !important;
  min-width: 1rem !important;
  height: auto !important;
  min-height: 1rem !important;
  padding: 0 !important;
  border: none !important;
  box-shadow: none !important;
  background: transparent !important;
  -webkit-appearance: checkbox !important;
  appearance: checkbox !important;
  accent-color: var(--petrol, #007B7A) !important;
  flex-shrink: 0 !important;
}

/* Report Modal: Buttons einheitlich */
#nbf-report-modal .btn {
  padding: .625rem 1.25rem !important;
  font-size: .875rem !important;
  font-weight: 500 !important;
  height: auto !important;
  line-height: 1 !important;
  min-height: 2.5rem !important;
}
#nbf-report-modal .btn[style*="width:100%"],
#nbf-report-modal .btn[style*="width: 100%"] {
  width: 100% !important;
  display: flex !important;
}

/* Proposal Modal: Close-Button grün mit weißem Icon */
#proposal-modal .modal-close {
  background: var(--petrol, #007B7A) !important;
  border: none !important;
  cursor: pointer !important;
  padding: .375rem !important;
  width: 2rem !important;
  height: 2rem !important;
  min-width: 2rem !important;
  min-height: 2rem !important;
  flex-shrink: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 6px !important;
  transition: background .15s !important;
}
#proposal-modal .modal-close:hover {
  background: var(--petrol-hover, #006665) !important;
}
#proposal-modal .modal-close svg,
#proposal-modal .modal-close svg line,
#proposal-modal .modal-close svg path {
  color: #ffffff !important;
  stroke: #ffffff !important;
}
/* Proposal Modal: Submit Button gleiche Größe wie Abbrechen */
#proposal-modal button[type="submit"],
#proposal-modal .btn-primary {
  border: 1px solid var(--petrol, #007B7A) !important;
  box-sizing: border-box !important;
}




/* Bild-Fallback: Kategorie-Tile */
.poi-card-tile,
.nbf-hero-tile{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:var(--nbf-bg-alt,#eef1f4);color:var(--nbf-primary,#1c6b5a);}
.poi-card-tile{position:absolute;inset:0;}
.poi-card-tile svg{width:56px;height:56px;stroke:currentColor;fill:none;}
.nbf-hero-tile{min-height:220px;}
.nbf-hero-tile svg{width:96px;height:96px;stroke:currentColor;fill:none;}

/* Fix: Hero-Tile zentrieren (schlaegt .nbf-hero-image display:block) */
.nbf-hero-image.nbf-hero-tile{display:flex !important;align-items:center;justify-content:center;}

/* Kategorie-Pills: refined (Variante A) */
[class*="elementor-kit"] .nbf-single-wrap .nbf-hero-badge,
[class*="elementor-kit"] .poi-card-image .poi-card-badge,
.nbf-hero-badge,
.poi-card-badge{font-size:11px !important;line-height:1.3 !important;font-weight:700 !important;padding:6px 12px !important;border-radius:8px !important;letter-spacing:.04em !important;}

/* ── v2.6.0 Fix: Tablet 769–1024 px – Filter/Suche erreichbar (Sidebar ist hier ausgeblendet) (T-01, E-31) ── */
@media (min-width: 769px) and (max-width: 1024px) {
  .mobile-top-bar {
    display: flex !important;
    align-items: center;
    gap: .75rem;
    padding: .625rem 1rem;
    background: var(--white);
    border-bottom: 1px solid var(--border-gray);
    flex-shrink: 0;
    z-index: 10;
  }
  .mobile-filter-btn {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    min-height: 44px;
    padding: .5rem 1rem;
    background: transparent;
    border: 1.5px solid var(--petrol);
    border-radius: 9999px;
    color: var(--petrol);
    font-size: .875rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: background .15s;
  }
  .mobile-filter-btn:hover { background: rgba(0,123,122,.08); }
  .mobile-filter-btn svg { width: 1rem; height: 1rem; }
  .mobile-top-bar__divider { flex: 1; }
  .mobile-top-bar__count { font-size: .8125rem; color: var(--muted-gray); white-space: nowrap; }
  .mobile-filter-sheet { max-width: 560px; margin-left: auto; margin-right: auto; }
}

/* ── v2.6.0 (T-11): Honeypot im Melden-Formular – für Menschen unsichtbar, nicht fokussierbar ── */
.nbf-report-form .nbf-hp {
  position: absolute !important;
  left: -10000px !important;
  top: auto !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
}

/* 2.7.4 A11Y-14 (WCAG 1.4.4): feste Schriftgrößen < 14 px als rem (16 px Basis = identische Normalansicht).
   Gleiche Selektoren, gleiche Reihenfolge, gleiches !important wie die Originalregeln – nur die Einheit ändert sich. */
.nbf-popup__cat { font-size: .75rem; }
.nbf-popup__status { font-size: .75rem; }
.nbf-popup__addr { font-size: .75rem; }
.nbf-popup__pill { font-size: .75rem; }
.nbf-popup__cta { font-size: .8125rem; }
.nbf-merkmal-group__desc { font-size: .75rem; }
.nbf-mobi-filter-label { font-size: .78125rem; }
.nbf-mobi-filter-check { font-size: .75rem; }
.nbf-mobi-card__label { font-size: .71875rem; }
.nbf-mobi-card__status { font-size: .65625rem; }
.nbf-search-header__count { font-size: .75rem; }
.nbf-popup__cat { font-size: .75rem; }
.nbf-popup__status { font-size: .75rem; }
.nbf-popup__addr { font-size: .75rem; }
.nbf-popup__pill { font-size: .75rem; }
.nbf-popup__cta { font-size: .8125rem; }
.nbf-merkmal-group__desc { font-size: .75rem; }
.nbf-mobi-filter-label { font-size: .78125rem; }
.nbf-mobi-filter-check { font-size: .75rem; }
.nbf-mobi-card__label { font-size: .71875rem; }
.nbf-mobi-card__status { font-size: .65625rem; }
.nbf-search-header__count { font-size: .75rem; }
[class*="elementor-kit"] .nbf-single-wrap .nbf-hero-badge, [class*="elementor-kit"] .poi-card-image .poi-card-badge, .nbf-hero-badge, .poi-card-badge { font-size: .6875rem !important; }

/* 2.7.4 A11Y-13 (WCAG 1.4.4/1.4.10): Ortsseite – Spalten dürfen schrumpfen statt aus dem Bild zu laufen.
   Bei normaler Schrift identisch (genug Platz), greift nur, wenn der Inhalt breiter wird (200 % Text). */
.content-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 380px); }
@media (max-width: 1024px) { .content-grid { grid-template-columns: minmax(0, 1fr); } }
.content-grid > .main-column, .content-grid > .sidebar { min-width: 0; }
/* 2.7.4 A11Y-13: Hero-Karte der Ortsseite (≥ 769 px, content-box + padding 0 1.5rem). Bei 16 px Basisschrift
   ergibt die Formel exakt 100 % (= bisherige Breite, auch das bestehende Verhalten bei 1024 px bleibt),
   bei vergrößerter Schrift wird das wachsende Padding abgezogen → kein horizontaler Überlauf. */
@media (min-width: 769px) {
  .nbf-single-wrap .nbf-hero-content { max-width: min(1200px, calc(100% - 3rem + max(0px, 48px - (3rem - 48px) * 16))); }
}
/* 2.7.4 A11Y-13: Inselkarte – Filterleiste darf umbrechen (greift nur, wenn der Platz nicht reicht). */
.mobile-top-bar { flex-wrap: wrap; }
.mobile-top-bar__count { white-space: normal; min-width: 0; }
/* 2.7.4 A11Y-13: Karten-Platzhalter mobil 17.5rem = 280 px bei 16 px Basis; wächst mit der Schrift,
   damit „Karte laden“ bei 200 % nicht abgeschnitten wird (E-20 unverändert). */
@media (max-width: 768px) {
  .nbf-mobile-map-placeholder { height: 17.5rem; }
}
/* 2.7.4 A11Y-13: Ortsseite – Übersichtskacheln und Merkmal-Listen schrumpfen statt überzulaufen
   (minmax(0,1fr) statt 1fr; Badge darf umbrechen, wenn der Platz fehlt). */
.overview-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.feature-list, .sub-feature-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.overview-badge { white-space: normal; max-width: 100%; }
.card-title, .feature-item { overflow-wrap: break-word; min-width: 0; }
@media (max-width: 768px) {
  .overview-grid { grid-template-columns: minmax(0, 1fr); }
  .feature-list { grid-template-columns: minmax(0, 1fr); }
}
/* bestehender Umbruchpunkt der Unterlisten (640 px, siehe „Sub-Feature-List“) – unverändert übernommen */
@media (max-width: 640px) {
  .sub-feature-list { grid-template-columns: minmax(0, 1fr); }
}
/* 2.7.8: Zahl neben angehakter Kategorie lesbar – vorher weiß (rgba 255/.8) auf hellem Grund, Kontrast 1,03 (WCAG 1.4.3);
   jetzt wie bei nicht angehakten Einträgen. */
.filter-option input:checked ~ .filter-option-label .nbf-kat-count {
  color: var(--muted-gray);
}
/* 2.7.9 T-92 (E-62): Ortsseite ab 769 px – Hero-Karte bricht nur bei Platzmangel um (z. B. Tablet + 200 % Text):
   Info-Block mit Basis 16rem (passt in der Normalansicht immer neben die Buttons, daher dort identisch),
   Buttons rutschen sonst in eine eigene Zeile und dürfen selbst umbrechen bzw. zweizeilig werden. */
@media (min-width: 769px) {
  .nbf-single-wrap .nbf-hero-card { flex-wrap: wrap; }
  .nbf-single-wrap .nbf-hero-card > .nbf-hero-info { flex: 1 1 16rem; min-width: 0; }
  .nbf-single-wrap .nbf-hero-card > .nbf-hero-actions { flex-wrap: wrap; min-width: 0; max-width: 100%; }
  .nbf-single-wrap .nbf-hero-actions .btn,
  [class*="elementor-kit"] .nbf-single-wrap .nbf-hero-actions .btn { white-space: normal; max-width: 100%; }
}
/* 2.7.9 T-92: Ortsseite bei Tablet + 200 % – Kachel- und Abschnittstitel dürfen lange Wörter umbrechen,
   wenn sie nicht in die Kachel passen (anywhere senkt die Mindestbreite; passt das Wort, ändert sich nichts). */
.nbf-single-wrap .overview-card .card-title,
.nbf-single-wrap .accordion-title { overflow-wrap: anywhere; }
@media (min-width: 769px) {
  /* Abschnittskopf (Badge | Titel | Pfeil): Badge rutscht nur bei Platzmangel in eine eigene Zeile */
  .nbf-single-wrap .accordion-header { flex-wrap: wrap; }
}
/* 2.7.11 T-95 (E-64): Filterleiste mobil klebt oben (ersetzt die schwebende Leiste aus 2.7.10).
   frontend.js setzt .nbf-sticky-ready (Seite), .is-sticky / .is-stuck (Leiste) und --nbf-sticky-top / --nbf-bar-h auf <html>.
   Ohne JS oder ohne overflow:clip bleibt alles statisch wie bisher. */
@media (max-width: 768px) {
  @supports (overflow: clip) {
    /* hidden machte .app-container zum Scroll-Container → sticky griff nicht; clip schneidet optisch gleich */
    .app-container.nbf-sticky-ready { overflow-x: clip !important; }
    /* Vorfahren mit overflow hidden/auto (Theme/Elementor), von frontend.js markiert – nur auf dieser Seite */
    .nbf-sticky-clip { overflow: clip !important; }
  }
  .mobile-top-bar.is-sticky,
  [class*="elementor-kit"] .app-container .mobile-top-bar.is-sticky {
    position: sticky;
    top: var(--nbf-sticky-top, 0px);
    z-index: 10; /* wie bisher: Menüs/Overlays des Seitenkopfs bleiben darüber */
  }
  /* Beim Kleben: dezenter Schatten unter der vorhandenen Trennlinie (keine Höhenänderung) */
  .mobile-top-bar.is-stuck { box-shadow: var(--nbf-shadow-md); }
  /* Leaflet-Ebenen (z-index 400–1000) bleiben in .main-content, damit sie nicht über die Leiste malen;
     der Melden-Hinweis braucht z-index 1000 nur am Desktop (über der Karte), mobil steht er statisch */
  .app-container.nbf-sticky-ready .main-content { isolation: isolate; }
  .app-container.nbf-sticky-ready .nbf-map-report-hint { z-index: auto !important; }
  /* WCAG 2.4.11: fokussierte Elemente nie unter Kopf + Leiste */
  html.nbf-sticky-on { scroll-padding-top: calc(var(--nbf-sticky-top, 0px) + var(--nbf-bar-h, 0px) + 8px); }

  /* --nbf-row-h (frontend.js) = Höhe des Filter-Buttons, höchstens 36 px. Karten-Button nimmt im Fluss genau
     diese Höhe ein (negativer Block-Rand), die Trefferzahl ist mindestens so hoch (Text mittig): ohne Umbruch
     steht sie neben „Filter“ → unverändert; bricht die Zeile um (Zoom), wächst Zeile 2 nicht, wenn der Button erscheint */
  .app-container.nbf-sticky-ready .mobile-top-bar__count { min-height: var(--nbf-row-h, 36px); display: inline-flex; align-items: center; }
  /* Karten-Button: 44 × 44, Rahmen/Radius wie „Filter“ */
  .mobile-top-bar .mobile-map-btn,
  [class*="elementor-kit"] .app-container .mobile-top-bar .mobile-map-btn {
    flex: 0 0 auto;
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    margin: calc((var(--nbf-row-h, 36px) - 44px) / 2) 0;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 1.5px solid var(--petrol);
    border-radius: 9999px;
    color: var(--petrol);
    box-shadow: none;
    cursor: pointer;
    transition: background .15s;
  }
  .mobile-top-bar .mobile-map-btn[hidden],
  [class*="elementor-kit"] .app-container .mobile-top-bar .mobile-map-btn[hidden] { display: none; }
  .mobile-top-bar .mobile-map-btn:hover,
  [class*="elementor-kit"] .app-container .mobile-top-bar .mobile-map-btn:hover { background: rgba(0,123,122,.08); color: var(--petrol); }
  .mobile-top-bar .mobile-map-btn:focus-visible,
  [class*="elementor-kit"] .app-container .mobile-top-bar .mobile-map-btn:focus-visible { outline: 3px solid var(--nbf-focus); outline-offset: 2px; }
  .mobile-top-bar .mobile-map-btn svg { width: 18px; height: 18px; flex-shrink: 0; }
}
@media (min-width: 769px) {
  /* Tablet/Desktop unverändert */
  .mobile-filter-btn__count,
  .mobile-top-bar .mobile-map-btn { display: none !important; }
}
/* 2.7.12 T-96 (E-65) F1: Mikrofon-Buttons nur bei vorhandener Web-Speech-API – „hidden“ muss gegen die
   display:flex!important-Regeln gewinnen (vorher immer sichtbar, auf iPhone ohne Funktion) */
#voice-search-btn[hidden],
.voice-search-btn[hidden],
.home-hero-search .hhs-vbtn[hidden] { display: none !important; }
/* Meldung der Sprachsuche: absolut unter dem Suchfeld (kein Layoutsprung), leer ohne Größe (Live-Region bleibt) */
.nbf-voice-msg {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(100% + 4px);
  z-index: 30;
  margin: 0;
  padding: .5rem .75rem;
  background: var(--white, #FFFFFF);
  border: 1px solid var(--border-gray, #E5E7EB);
  border-radius: var(--radius-sm, 8px);
  box-shadow: var(--nbf-shadow-md, 0 4px 6px -1px rgba(0,0,0,.1));
  color: var(--navy, #042D53);
  font-size: .8125rem;
  font-weight: 500;
  line-height: 1.4;
  text-align: left;
}
.nbf-voice-msg:empty { padding: 0; border: 0; box-shadow: none; }
/* F2: Link „Datenschutzerklärung“ in Einwilligungen – unterstrichen (A11Y-01), Fokus sichtbar */
.nbf-privacy-link,
[class*="elementor-kit"] .nbf-privacy-link {
  color: var(--petrol, #007B7A);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.nbf-privacy-link:hover,
[class*="elementor-kit"] .nbf-privacy-link:hover { color: var(--navy, #042D53); text-decoration: underline; }
.nbf-privacy-link:focus-visible { outline: 3px solid var(--nbf-focus, #FFB300); outline-offset: 2px; border-radius: 2px; }
/* 2.7.13 T-97: Einwilligungstext als ein Flex-Element (Label ist flex – sonst wird der Link eine eigene Spalte) */
.nbf-form-group--checkbox .nbf-consent-text { flex: 1 1 auto; min-width: 0; }

/* 2.7.16 T-105 (E-73): Inselkarte – Filterleiste + Ergebnisliste modernisiert (Tokens wie 2.7.14). Nur Optik;
   Karte/Leaflet, Zustimmung, Mobil-Zeile und Melden-Hinweis unverändert (→ T-106). */
.app-container .filter-sidebar .search-input-wrapper input[type="search"],
.app-container .mobile-filter-sheet .search-input-wrapper input[type="search"] {min-height:3.25rem!important;height:auto!important;padding:.5rem 3rem .5rem 2.875rem!important;border:1.5px solid #83919e!important;border-radius:14px!important;background:#f5f8fa!important;color:#13283d!important;font-size:1rem!important;box-shadow:none!important;transition:background-color .15s,border-color .15s;}
.app-container .filter-sidebar .search-input-wrapper input[type="search"]::placeholder,
.app-container .mobile-filter-sheet .search-input-wrapper input[type="search"]::placeholder {color:#4a5b6b!important;opacity:1;}
.app-container .filter-sidebar .search-input-wrapper input[type="search"]:focus,
.app-container .filter-sidebar .search-input-wrapper input[type="search"]:focus-visible,
.app-container .mobile-filter-sheet .search-input-wrapper input[type="search"]:focus,
.app-container .mobile-filter-sheet .search-input-wrapper input[type="search"]:focus-visible {border-color:#006564!important;background:#fff!important;box-shadow:0 0 0 4px rgba(0,123,122,.18)!important;outline:none!important;}
.app-container .filter-sidebar .search-input-wrapper .search-icon,
.app-container .mobile-filter-sheet .search-input-wrapper .search-icon {color:#006564!important;left:1rem!important;}
.app-container .filter-sidebar .filter-section,
.app-container .mobile-filter-sheet .filter-section {border:1.5px solid #d5dde5!important;border-radius:16px!important;background:#fff!important;margin:0 0 .75rem!important;padding:0!important;}
.app-container .filter-sidebar .filter-section-header,
.app-container .mobile-filter-sheet .filter-section-header {display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:.5rem!important;width:100%!important;min-height:3rem;padding:.75rem 1rem!important;background:transparent!important;border:0!important;border-radius:16px!important;color:#00264d!important;font-size:1rem!important;font-weight:700!important;text-align:left;cursor:pointer;}
.app-container .filter-sidebar .filter-section-header > svg,
.app-container .mobile-filter-sheet .filter-section-header > svg {margin-left:auto!important;width:1.25rem!important;height:1.25rem!important;flex:0 0 auto;color:#4a5b6b!important;}
.app-container .filter-sidebar .filter-section-header:focus-visible,
.app-container .mobile-filter-sheet .filter-section-header:focus-visible {outline:3px solid #00264d!important;outline-offset:3px;}
.app-container .filter-sidebar .nbf-sec-count,
.app-container .mobile-filter-sheet .nbf-sec-count {display:inline-flex;align-items:center;justify-content:center;min-width:1.375rem;height:1.375rem;padding:0 .375rem;border-radius:999px;background:#006564;color:#fff;font-size:.75rem;font-weight:700;line-height:1;}
.app-container .filter-sidebar .nbf-sec-count[hidden],
.app-container .mobile-filter-sheet .nbf-sec-count[hidden] {display:none!important;}
.app-container .filter-sidebar .filter-section .filter-options,
.app-container .mobile-filter-sheet .filter-section .filter-options {padding:0 .5rem .625rem!important;}
.app-container .filter-sidebar .filter-option:not(.filter-option--icon),
.app-container .mobile-filter-sheet .filter-option:not(.filter-option--icon) {position:relative;display:flex!important;align-items:center!important;gap:.75rem!important;min-height:2.75rem;margin:0 0 2px!important;padding:.375rem .625rem!important;border-radius:12px!important;background:transparent!important;color:#13283d!important;font-size:.9375rem!important;font-weight:500!important;cursor:pointer;transition:background-color .15s,color .15s;}
.app-container .filter-sidebar .filter-option:not(.filter-option--icon) input[type="checkbox"],
.app-container .mobile-filter-sheet .filter-option:not(.filter-option--icon) input[type="checkbox"] {position:absolute!important;opacity:0!important;width:1px!important;height:1px!important;margin:0!important;pointer-events:none;}
.app-container .filter-sidebar .filter-option:not(.filter-option--icon)::before,
.app-container .mobile-filter-sheet .filter-option:not(.filter-option--icon)::before {content:'';flex:0 0 1.375rem;width:1.375rem;height:1.375rem;box-sizing:border-box;border:2px solid #83919e;border-radius:6px;background:#fff center/.875rem no-repeat;transition:background-color .15s,border-color .15s;}
.app-container .filter-sidebar .filter-option:not(.filter-option--icon):hover,
.app-container .mobile-filter-sheet .filter-option:not(.filter-option--icon):hover {background:#f5f8fa!important;}
.app-container .filter-sidebar .filter-option:not(.filter-option--icon):has(input:checked),
.app-container .mobile-filter-sheet .filter-option:not(.filter-option--icon):has(input:checked) {background:#e6f2f2!important;color:#004c4b!important;font-weight:600!important;}
.app-container .filter-sidebar .filter-option:not(.filter-option--icon):has(input:checked)::before,
.app-container .mobile-filter-sheet .filter-option:not(.filter-option--icon):has(input:checked)::before {border-color:#006564;background-color:#006564;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");}
.app-container .filter-sidebar .filter-option:not(.filter-option--icon):has(input:focus-visible),
.app-container .mobile-filter-sheet .filter-option:not(.filter-option--icon):has(input:focus-visible) {outline:3px solid #00264d;outline-offset:2px;}
.app-container .filter-sidebar .filter-option:not(.filter-option--icon) .filter-option-label,
.app-container .mobile-filter-sheet .filter-option:not(.filter-option--icon) .filter-option-label {flex:1 1 auto;min-width:0;display:flex!important;align-items:center;justify-content:space-between;gap:.5rem;color:inherit!important;font:inherit!important;overflow-wrap:anywhere;hyphens:auto;}
.app-container .filter-sidebar .nbf-kat-count,
.app-container .mobile-filter-sheet .nbf-kat-count {flex:0 0 auto;margin:0!important;min-width:1.75rem;padding:.125rem .5rem;border-radius:999px;background:#eef3f6;color:#33475b!important;font-size:.75rem!important;font-weight:600!important;text-align:center;line-height:1.4;}
.app-container .filter-sidebar .filter-option:not(.filter-option--icon):has(input:checked) .nbf-kat-count,
.app-container .mobile-filter-sheet .filter-option:not(.filter-option--icon):has(input:checked) .nbf-kat-count {background:#006564;color:#fff!important;}
.app-container .filter-sidebar .filter-options:has(> .filter-option--icon),
.app-container .mobile-filter-sheet .filter-options:has(> .filter-option--icon) {display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem!important;}
.app-container .filter-sidebar .filter-options > .filter-option--icon:nth-of-type(n+3),
.app-container .mobile-filter-sheet .filter-options > .filter-option--icon:nth-of-type(n+3) {grid-column:1/-1;}
.app-container .filter-sidebar .filter-option--icon,
.app-container .mobile-filter-sheet .filter-option--icon {position:relative;display:flex!important;align-items:center!important;gap:.625rem!important;min-height:3rem;margin:0!important;padding:.375rem 2.25rem .375rem .375rem!important;border:1.5px solid #83919e!important;border-radius:999px!important;background:#fff!important;color:#13283d!important;font-size:.9375rem!important;font-weight:600!important;line-height:1.25;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s;}
.app-container .filter-sidebar .filter-option--icon input[type="checkbox"],
.app-container .mobile-filter-sheet .filter-option--icon input[type="checkbox"] {position:absolute!important;opacity:0!important;width:1px!important;height:1px!important;margin:0!important;pointer-events:none;}
.app-container .filter-sidebar .filter-option--icon > svg,
.app-container .mobile-filter-sheet .filter-option--icon > svg {flex:0 0 2.25rem;width:2.25rem!important;height:2.25rem!important;padding:.5rem;margin:0!important;box-sizing:border-box;border-radius:50%;background:#eef3f6;color:#00264d!important;stroke:currentColor;transition:background-color .15s,color .15s;}
.app-container .filter-sidebar .filter-option--icon .filter-option-label,
.app-container .mobile-filter-sheet .filter-option--icon .filter-option-label {min-width:0;color:inherit!important;font:inherit!important;overflow-wrap:anywhere;hyphens:auto;}
.app-container .filter-sidebar .filter-option--icon:hover,
.app-container .mobile-filter-sheet .filter-option--icon:hover {border-color:#006564!important;}
.app-container .filter-sidebar .filter-option--icon:has(input:checked),
.app-container .mobile-filter-sheet .filter-option--icon:has(input:checked) {background:#e6f2f2!important;border-color:#006564!important;box-shadow:0 0 0 .5px #006564;color:#004c4b!important;}
.app-container .filter-sidebar .filter-option--icon:has(input:checked) > svg,
.app-container .mobile-filter-sheet .filter-option--icon:has(input:checked) > svg {background:#006564;color:#fff!important;}
.app-container .filter-sidebar .filter-option--icon::after,
.app-container .mobile-filter-sheet .filter-option--icon::after {content:'';position:absolute;right:.75rem;top:50%;width:1.125rem;height:1.125rem;margin-top:-.5625rem;border-radius:50%;background:#006564 center/.75rem no-repeat;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");visibility:hidden;}
.app-container .filter-sidebar .filter-option--icon:has(input:checked)::after,
.app-container .mobile-filter-sheet .filter-option--icon:has(input:checked)::after {visibility:visible;}
.app-container .filter-sidebar .filter-option--icon:has(input:focus-visible),
.app-container .mobile-filter-sheet .filter-option--icon:has(input:focus-visible) {outline:3px solid #00264d;outline-offset:3px;}
.app-container .filter-sidebar .filter-section:has(.filter-option--icon),
.app-container .mobile-filter-sheet .filter-section:has(.filter-option--icon) {container:nbf-zug/inline-size;}
@container nbf-zug (max-width: 24rem){.app-container .filter-sidebar .filter-options:has(> .filter-option--icon),
.app-container .mobile-filter-sheet .filter-options:has(> .filter-option--icon) {grid-template-columns:minmax(0,1fr)!important;}
}
.app-container .filter-sidebar .filter-footer{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;align-items:center;gap:.5rem .75rem!important;}
.app-container .filter-sidebar .legend-trigger,
[class*="elementor-kit"] .app-container .filter-sidebar .legend-trigger{flex:1 1 100%;display:inline-flex!important;align-items:center;gap:.375rem;min-height:2.75rem;padding:0!important;margin:0!important;background:transparent!important;border:0!important;color:#00264d!important;font-size:.875rem!important;font-weight:600!important;text-decoration:underline!important;text-underline-offset:3px;cursor:pointer;justify-content:flex-start!important;}
.app-container .filter-sidebar .legend-trigger:focus-visible{outline:3px solid #00264d!important;outline-offset:3px;}
.app-container .filter-sidebar .legend-trigger svg{width:1rem!important;height:1rem!important;color:#006564;}
.app-container .filter-sidebar #nbf-filter-reset,
.app-container .mobile-filter-sheet #nbf-mobile-reset{flex:1 1 0;min-height:3.25rem;height:auto!important;margin:0!important;padding:.5rem 1rem!important;border-radius:14px!important;font-size:1rem!important;font-weight:700!important;line-height:1.25;box-shadow:none!important;transform:none!important;transition:background-color .15s,border-color .15s,color .15s;background:#fff!important;border:1.5px solid #83919e!important;color:#00264d!important;}
.app-container .filter-sidebar #nbf-filter-reset:hover,
.app-container .mobile-filter-sheet #nbf-mobile-reset:hover{border-color:#006564!important;color:#006564!important;}
.app-container .filter-sidebar #nbf-filter-apply,
.app-container .mobile-filter-sheet #nbf-mobile-apply{flex:1 1 0;min-height:3.25rem;height:auto!important;margin:0!important;padding:.5rem 1rem!important;border-radius:14px!important;font-size:1rem!important;font-weight:700!important;line-height:1.25;box-shadow:none!important;transform:none!important;transition:background-color .15s,border-color .15s,color .15s;background:#006564!important;border:0!important;color:#fff!important;}
.app-container .filter-sidebar #nbf-filter-apply:hover,
.app-container .mobile-filter-sheet #nbf-mobile-apply:hover{background:#004c4b!important;}
.app-container .filter-sidebar #nbf-filter-reset:focus-visible,.app-container .filter-sidebar #nbf-filter-apply:focus-visible,
.app-container .mobile-filter-sheet #nbf-mobile-reset:focus-visible,.app-container .mobile-filter-sheet #nbf-mobile-apply:focus-visible{outline:3px solid #00264d!important;outline-offset:3px;}
.app-container .mobile-filter-sheet .mobile-filter-footer{display:flex!important;gap:.75rem!important;}
.app-container .mobile-filter-sheet .mobile-filter-body .filter-section{margin:0 1rem .75rem!important;}
.app-container #nbf-results{display:grid!important;gap:.75rem!important;}
.app-container #nbf-results .poi-card,
[class*="elementor-kit"] .app-container #nbf-results .poi-card{display:grid!important;grid-template-columns:72px minmax(0,1fr)!important;align-items:start!important;gap:1rem!important;padding:18px!important;border:1px solid #d5dde5!important;border-radius:18px!important;background:#fff!important;box-shadow:0 1px 3px rgba(0,38,77,.06)!important;color:#13283d!important;text-decoration:none!important;height:auto!important;overflow:visible!important;transform:none!important;transition:border-color .15s,box-shadow .15s;}
.app-container #nbf-results .poi-card:hover{border-color:#006564!important;box-shadow:0 8px 24px rgba(0,38,77,.12)!important;transform:none!important;}
.app-container #nbf-results .poi-card:focus-visible{outline:3px solid #00264d!important;outline-offset:3px;}
.app-container #nbf-results .poi-card-image{position:relative;width:72px!important;height:72px!important;min-height:0!important;margin:0!important;padding:0!important;border-radius:16px!important;background:#e6f2f2!important;display:grid!important;place-items:center;overflow:hidden!important;aspect-ratio:auto!important;}
.app-container #nbf-results .poi-card-image img{width:100%!important;height:100%!important;object-fit:cover;display:block;border-radius:0!important;}
.app-container #nbf-results .poi-card-image .poi-card-badge{display:none!important;}
.app-container #nbf-results .poi-card-tile{width:100%!important;height:100%!important;min-height:0!important;display:grid!important;place-items:center;background:transparent!important;color:#006564!important;}
.app-container #nbf-results .poi-card-tile svg{width:32px!important;height:32px!important;color:#006564!important;stroke:currentColor;}
.app-container #nbf-results .poi-card-content{display:flex!important;flex-direction:column!important;gap:.375rem!important;min-width:0;padding:0!important;}
.app-container #nbf-results .poi-card-category{display:block!important;margin:0!important;color:#006564!important;font-size:.8125rem!important;font-weight:600!important;letter-spacing:0!important;text-transform:none!important;line-height:1.3;}
.app-container #nbf-results .poi-card-title{margin:0!important;color:#00264d!important;font-size:1.125rem!important;font-weight:700!important;line-height:1.3!important;overflow-wrap:anywhere;hyphens:auto;}
.app-container #nbf-results .poi-card-address{display:flex!important;align-items:flex-start;gap:.375rem;margin:0!important;color:#4a5b6b!important;font-size:.875rem!important;line-height:1.4;}
.app-container #nbf-results .poi-card-address svg{flex:0 0 auto;width:.875rem!important;height:.875rem!important;margin-top:.15em;color:#4a5b6b;}
.app-container #nbf-results .poi-card-ampel{display:flex!important;flex-wrap:wrap;gap:.5rem!important;margin:.25rem 0 0!important;}
.app-container #nbf-results .mobi-ampel-icon{position:relative;width:36px!important;height:36px!important;border-radius:10px!important;}
.app-container #nbf-results .mobi-ampel-icon svg{width:20px!important;height:20px!important;}
.app-container #nbf-results .poi-card-features{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;gap:.375rem!important;margin:.25rem 0 0!important;}
.app-container #nbf-results .poi-feature-item{display:inline-flex!important;align-items:center!important;gap:.3rem!important;padding:.25rem .625rem!important;border-radius:999px;background:#eef6f1!important;color:#1d4a3a!important;font-size:.8125rem!important;font-weight:500!important;line-height:1.3!important;}
.app-container #nbf-results .poi-feature-item svg{color:#1d6b42!important;margin:0!important;}
.app-container .nbf-status{position:absolute;right:-5px;bottom:-5px;width:17px;height:17px;box-sizing:border-box;border:2px solid #fff;border-radius:50%;display:grid;place-items:center;color:#fff;}
.app-container .nbf-status svg,
.app-container #nbf-results .mobi-ampel-icon .nbf-status svg{width:9px!important;height:9px!important;display:block;}
.app-container .nbf-status--ok{background:#1d6b42;}
.app-container .nbf-status--hilfe{background:#a26a00;}
.app-container .nbf-status--nein{background:#a1251c;}
.app-container .poi-list-header{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.25rem 1rem;}
.app-container .poi-list-header .poi-list-title,.app-container .poi-list-header #nbf-results-count-side{margin:0!important;color:#00264d!important;font-size:1.375rem!important;font-weight:700!important;line-height:1.25;}
.app-container .poi-list-header #nbf-results-count-side strong{font:inherit;color:inherit;}
.app-container .poi-list-header .nbf-active-line{grid-column:1;margin:0!important;color:#4a5b6b;font-size:.8125rem;line-height:1.4;}
.app-container .poi-list-header .nbf-active-line[hidden]{display:none!important;}
.app-container .poi-list-header .nbf-status-legend{grid-column:2;grid-row:1;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin:0!important;color:#4a5b6b;font-size:.75rem;line-height:1.4;}
.app-container .poi-list-header .nbf-status-legend__item{display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap;}
.app-container .poi-list-header .nbf-status-legend .nbf-status{position:static;border:0;width:16px;height:16px;}
.app-container .poi-list-header .nbf-lg-short{display:none;}
.app-container #nbf-pagination{display:flex!important;flex-wrap:wrap;justify-content:center;gap:.5rem!important;}
.app-container #nbf-pagination .nbf-pag__num,.app-container #nbf-pagination .nbf-pag__nav{min-width:44px!important;min-height:44px!important;height:auto!important;padding:0 .875rem!important;border:1px solid #d5dde5!important;border-radius:999px!important;background:#fff!important;color:#13283d!important;font-size:.9375rem!important;font-weight:600!important;display:inline-flex!important;align-items:center;justify-content:center;gap:.25rem;box-shadow:none!important;}
.app-container #nbf-pagination .nbf-pag__num:hover,.app-container #nbf-pagination .nbf-pag__nav:not(:disabled):hover{border-color:#006564!important;color:#006564!important;}
.app-container #nbf-pagination .nbf-pag__num--active,.app-container #nbf-pagination .nbf-pag__num[aria-current="page"]{background:#00264d!important;border-color:#00264d!important;color:#fff!important;}
.app-container #nbf-pagination .nbf-pag__nav:disabled,.app-container #nbf-pagination .nbf-pag__nav[aria-disabled="true"]{color:#5b6b7b!important;opacity:1!important;background:#fff!important;cursor:default;}
.app-container #nbf-pagination .nbf-pag__num:focus-visible,.app-container #nbf-pagination .nbf-pag__nav:focus-visible{outline:3px solid #00264d!important;outline-offset:3px;}
@media (max-width: 768px) {
  .app-container #nbf-results .poi-card{grid-template-columns:56px minmax(0,1fr)!important;gap:.75rem!important;padding:14px!important;border-radius:16px!important;}
  .app-container #nbf-results .poi-card-image{width:56px!important;height:56px!important;border-radius:14px!important;}
  .app-container #nbf-results .poi-card-tile svg{width:28px!important;height:28px!important;}
  .app-container #nbf-results .poi-card-title{font-size:1rem!important;}
  .app-container #nbf-results .mobi-ampel-icon{width:32px!important;height:32px!important;}
  .app-container #nbf-results .mobi-ampel-icon svg{width:18px!important;height:18px!important;}
  .app-container .poi-list-header{grid-template-columns:minmax(0,1fr);}
  .app-container .poi-list-header .poi-list-title,.app-container .poi-list-header #nbf-results-count-side{font-size:1.0625rem!important;}
  .app-container .poi-list-header .nbf-status-legend{grid-column:1;grid-row:auto;}
  .app-container .poi-list-header .nbf-lg-long{display:none;}
  .app-container .poi-list-header .nbf-lg-short{display:inline;}
}
@media (prefers-reduced-motion: reduce) {
  .app-container .filter-option,.app-container .filter-option::before,.app-container .filter-option--icon > svg,.app-container #nbf-results .poi-card,.app-container #nbf-filter-apply,.app-container #nbf-mobile-apply,.app-container #nbf-filter-reset,.app-container #nbf-mobile-reset{transition:none!important;}
}
@media (forced-colors: active) {
  .app-container .filter-option:has(input:checked){outline:2px solid Highlight;outline-offset:-2px;}
  .app-container .filter-option:not(.filter-option--icon)::before{forced-color-adjust:none;border-color:CanvasText;background-color:Canvas;}
  .app-container .filter-option:not(.filter-option--icon):has(input:checked)::before{background-color:Highlight;border-color:Highlight;}
  .app-container .filter-option--icon::after{forced-color-adjust:none;background-color:Highlight;}
  .app-container #nbf-results .poi-card,.app-container .filter-section,.app-container .filter-option--icon{border-color:CanvasText!important;}
  .app-container .nbf-status{forced-color-adjust:none;background:CanvasText;color:Canvas;border-color:Canvas;}
  .app-container #nbf-pagination .nbf-pag__num--active{forced-color-adjust:none;background:Highlight!important;color:HighlightText!important;}
  .app-container #nbf-filter-apply,.app-container #nbf-mobile-apply{border:2px solid ButtonText!important;}
}

/* 2.7.17 T-107 (E-73, E-74): Inselkarte Feinschliff – Tablet-Layout bis 1279 px, Legendenkarte, Paginierung,
   Dialog „Symbole und Farben“, Marker-Popup, Melden-Hinweis. Karte/Cluster/Zoom/Handy-Zeile → 2.7.18 (T-106). */

/* B · Tablet-Layout 769–1279 px (E-74: drei Spalten erst ab 1280) */
@media (min-width: 1025px) and (max-width: 1279px) {
  .app-container .filter-sidebar { display: none !important; }
  .app-container .mobile-top-bar {
    display: flex !important; align-items: center; gap: .75rem; padding: .625rem 1rem;
    background: var(--white); border-bottom: 1px solid var(--border-gray); flex-shrink: 0; z-index: 10;
  }
  .app-container .mobile-filter-sheet { max-width: 560px; margin-left: auto; margin-right: auto; }
}
@media (min-width: 769px) and (max-width: 1279px) {
  .app-container .poi-list-container { width: 44% !important; min-width: 360px; flex: 0 0 auto !important; }
  /* nur eine Trefferzahl: Überschrift „xx Orte gefunden“ (Live-Region) bleibt, Zahl in der Kopfzeile entfällt */
  .app-container #nbf-mobile-count { display: none !important; }
  .app-container .mobile-filter-btn,
  [class*="elementor-kit"] .app-container .mobile-filter-btn {
    display: inline-flex !important; align-items: center; gap: .5rem; min-height: 44px; margin: 0;
    padding: .5rem 1.125rem !important; background: transparent !important; border: 1.5px solid var(--petrol) !important;
    border-radius: 9999px !important; color: var(--petrol) !important; font-size: .9375rem !important; font-weight: 600 !important;
  }
  .app-container .mobile-filter-btn:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px; }
  .app-container .mobile-filter-btn__count { display: inline !important; }
}
/* Sidebar ab 1280 px: 320 px, Kategorien ohne Silbentrennung, Suchfeld volle Breite, Mikrofon 36 px */
@media (min-width: 1280px) {
  .app-container .filter-sidebar { width: 320px !important; flex: 0 0 320px !important; }
  .app-container .filter-sidebar .filter-option:not(.filter-option--icon) .filter-option-label { -webkit-hyphens: manual !important; hyphens: manual !important; overflow-wrap: normal !important; word-break: normal !important; }
  .app-container .filter-sidebar .search-input-wrapper input[type="search"] { padding-left: 2.5rem !important; padding-right: 2.75rem !important; }
  .app-container .filter-sidebar .voice-search-btn { width: 36px !important; height: 36px !important; right: 6px !important; }
}

/* A · Legendenkarte „So lesen Sie die Symbole“ */
.app-container .poi-list-header { grid-template-columns: minmax(0, 1fr) !important; }
.app-container .nbf-legend-card { margin: 0 1rem .75rem; padding: .75rem 1rem; border: 1px solid #d5dde5; border-radius: 16px; background: #fff; container: nbf-legend / inline-size; }
.app-container .nbf-legend-card__head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.app-container .nbf-legend-card__title { margin: 0 !important; color: #00264d; font-size: .875rem; font-weight: 700; line-height: 1.3; }
.app-container .nbf-legend-card__toggle,
[class*="elementor-kit"] .app-container .nbf-legend-card__toggle {
  display: inline-flex !important; align-items: center; gap: .375rem; min-height: 44px; margin: -.5rem -.5rem -.5rem 0 !important;
  padding: 0 .5rem !important; background: transparent !important; border: 0 !important; box-shadow: none !important;
  color: #00264d !important; font-size: .8125rem !important; font-weight: 600 !important; text-decoration: underline; text-underline-offset: 3px; cursor: pointer;
}
.app-container .nbf-legend-card__toggle:focus-visible { outline: 3px solid #00264d !important; outline-offset: 2px; border-radius: 8px; }
.app-container .nbf-legend-card__toggle svg { color: #006564; flex: 0 0 auto; }
.app-container .nbf-legend-card__when-closed { display: none; align-items: center; gap: .375rem; }
.app-container .nbf-legend-card.is-collapsed { padding-top: .375rem; padding-bottom: .375rem; }
.app-container .nbf-legend-card.is-collapsed .nbf-legend-card__title,
.app-container .nbf-legend-card.is-collapsed .nbf-legend-card__when-open { display: none; }
.app-container .nbf-legend-card.is-collapsed .nbf-legend-card__when-closed { display: inline-flex; }
.app-container .nbf-legend-card.is-collapsed .nbf-legend-card__toggle { margin: 0 !important; }
.app-container .nbf-legend-card__body { display: grid; gap: .75rem; margin-top: .625rem; }
.app-container .nbf-legend-card__body[hidden] { display: none; }
.app-container .nbf-legend-card__symbols,
.app-container .nbf-legend-card__states { display: grid; gap: .5rem .75rem; margin: 0 !important; padding: 0 !important; list-style: none !important; }
.app-container .nbf-legend-card__symbols { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.app-container .nbf-legend-card__states { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.app-container .nbf-legend-card li { display: flex; align-items: center; gap: .5rem; margin: 0 !important; padding: 0 !important; color: #13283d; font-size: .8125rem; line-height: 1.3; }
.app-container .nbf-legend-card li::before { content: none !important; }
.app-container .nbf-legend-card li strong { font-weight: 700; color: #13283d; }
@container nbf-legend (max-width: 520px) {
  .app-container .nbf-legend-card__symbols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .app-container .nbf-legend-card__states { grid-template-columns: minmax(0, 1fr); }
}
/* Kacheln (Legendenkarte + Dialog): neutral bzw. in Ampelfarbe mit Statuszeichen */
.nbf-legend-tile { position: relative; flex: 0 0 auto; width: 32px; height: 32px; border-radius: 9px; background: #eef3f6; color: #00264d; display: inline-grid; place-items: center; }
.nbf-legend-tile > svg { width: 18px !important; height: 18px !important; stroke: currentColor; }
.nbf-legend-tile--ok    { background: #dff1e6; color: #1d6b42; }
.nbf-legend-tile--hilfe { background: #fdefcf; color: #a26a00; }
.nbf-legend-tile--nein  { background: #fbe3e1; color: #a1251c; }
.nbf-legend-tile--na    { background: #eef3f6; color: #4a5b6b; }
.nbf-legend-tile .nbf-status { position: absolute; right: -5px; bottom: -5px; width: 17px; height: 17px; box-sizing: border-box; border: 2px solid #fff; border-radius: 50%; display: grid; place-items: center; color: #fff; }
.nbf-legend-tile .nbf-status svg { width: 9px !important; height: 9px !important; display: block; }
.nbf-status--ok { background: #1d6b42; } .nbf-status--hilfe { background: #a26a00; } .nbf-status--nein { background: #a1251c; }
/* 4 · Zustand „nicht bekannt“: Zeichen ? auf #5b6b7b */
.nbf-status--na, .app-container .nbf-status--na { background: #5b6b7b; }

/* C · Paginierung kompakt */
.app-container #nbf-pagination { width: 100%; box-sizing: border-box; display: flex !important; flex-wrap: nowrap !important; align-items: center; justify-content: space-between !important; gap: .5rem 1rem !important; container: nbf-pag / inline-size; }
.app-container #nbf-pagination .nbf-pag__info { margin: 0 !important; color: #4a5b6b; font-size: .8125rem; line-height: 1.3; white-space: nowrap; }
.app-container #nbf-pagination .nbf-pag__btns { display: flex; flex-wrap: nowrap; align-items: center; gap: 4px; margin-left: auto; }
.app-container #nbf-pagination .nbf-pag__num,
.app-container #nbf-pagination .nbf-pag__nav { width: 40px; min-width: 40px !important; height: 40px !important; min-height: 40px !important; padding: 0 !important; border-radius: 10px !important; font-size: .9375rem !important; }
.app-container #nbf-pagination .nbf-pag__num { border: 0 !important; background: transparent !important; color: #13283d !important; }
.app-container #nbf-pagination .nbf-pag__num:hover { background: #eef3f6 !important; color: #00264d !important; }
.app-container #nbf-pagination .nbf-pag__num--active,
.app-container #nbf-pagination .nbf-pag__num[aria-current="page"] { background: #00264d !important; color: #fff !important; }
.app-container #nbf-pagination .nbf-pag__nav { border: 1.5px solid #83919e !important; background: #fff !important; color: #00264d !important; }
.app-container #nbf-pagination .nbf-pag__nav:disabled,
.app-container #nbf-pagination .nbf-pag__nav[aria-disabled="true"] { border-color: #d5dde5 !important; color: #5b6b7b !important; }
.app-container #nbf-pagination .nbf-pag__ellipsis { min-width: 20px; height: 40px; line-height: 40px !important; align-self: center; text-align: center; color: #4a5b6b; }
@container nbf-pag (max-width: 420px) {
  .app-container #nbf-pagination .nbf-pag__info { display: none; }
  .app-container #nbf-pagination .nbf-pag__btns { margin: 0 auto; }
}
/* sehr schmal (z. B. Zoom 200 % auf dem Handy): nur Pfeile + aktuelle Seite, bleibt einzeilig */
@container nbf-pag (max-width: 300px) {
  .app-container #nbf-pagination .nbf-pag__num:not(.nbf-pag__num--active),
  .app-container #nbf-pagination .nbf-pag__ellipsis { display: none !important; }
}
@container nbf-pag (max-width: 370px) {
  .app-container #nbf-pagination .nbf-pag__btns { gap: 2px; }
  .app-container #nbf-pagination .nbf-pag__num,
  .app-container #nbf-pagination .nbf-pag__nav { width: 34px; min-width: 34px !important; height: 40px !important; }
}

/* D · Dialog „Symbole und Farben“ */
#legend-modal.nbf-symbol-dialog .modal-content { width: min(520px, calc(100vw - 32px)) !important; max-width: 520px !important; max-height: 90vh; overflow: auto; padding: 0 !important; border-radius: 22px !important; box-shadow: 0 24px 60px rgba(0,38,77,.25), 0 2px 6px rgba(0,38,77,.08) !important; background: #fff !important; }
#legend-modal.nbf-symbol-dialog .modal-header { display: flex !important; align-items: center !important; justify-content: space-between !important; gap: 1rem; margin: 0 !important; padding: 1.25rem 1.25rem .5rem !important; border: 0 !important; }
#legend-modal.nbf-symbol-dialog .modal-title { margin: 0 !important; color: #00264d !important; font-size: 1.1875rem !important; font-weight: 700 !important; line-height: 1.3 !important; }
#legend-modal.nbf-symbol-dialog .modal-title:focus { outline: none; }
#legend-modal.nbf-symbol-dialog .modal-title:focus-visible { outline: 3px solid #00264d; outline-offset: 3px; border-radius: 4px; }
#legend-modal.nbf-symbol-dialog .modal-close,
[class*="elementor-kit"] #legend-modal.nbf-symbol-dialog .modal-close {
  flex: 0 0 44px; width: 44px !important; height: 44px !important; min-width: 44px !important; min-height: 44px !important; padding: 0 !important;
  display: inline-grid !important; place-items: center; border-radius: 50% !important; border: 1.5px solid #83919e !important;
  background: #fff !important; color: #00264d !important; box-shadow: none !important; cursor: pointer;
}
#legend-modal.nbf-symbol-dialog .modal-close svg { width: 20px !important; height: 20px !important; display: block !important; stroke: currentColor !important; color: #00264d !important; }
#legend-modal.nbf-symbol-dialog .modal-close:hover { border-color: #006564 !important; color: #006564 !important; }
#legend-modal.nbf-symbol-dialog .modal-close:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px; }
#legend-modal.nbf-symbol-dialog .modal-section { margin: 0 !important; padding: .5rem 1.25rem 1rem !important; border: 0 !important; }
#legend-modal.nbf-symbol-dialog .modal-section-title { margin: 0 0 .625rem !important; color: #00264d !important; font-size: .9375rem !important; font-weight: 700 !important; text-transform: none !important; letter-spacing: 0 !important; }
#legend-modal.nbf-symbol-dialog ul { display: grid; gap: .75rem 1rem; margin: 0 !important; padding: 0 !important; list-style: none !important; }
#legend-modal.nbf-symbol-dialog .nbf-symbol-dialog__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
#legend-modal.nbf-symbol-dialog li { display: flex; align-items: flex-start; gap: .75rem; margin: 0 !important; padding: 0 !important; color: #13283d; font-size: .9375rem; line-height: 1.35; }
#legend-modal.nbf-symbol-dialog li::before { content: none !important; }
#legend-modal.nbf-symbol-dialog li strong { display: block; color: #13283d; font-weight: 700; }
#legend-modal.nbf-symbol-dialog .nbf-symbol-dialog__desc { display: block; color: #4a5b6b; font-size: .8125rem; }
#legend-modal.nbf-symbol-dialog .nbf-legend-tile { width: 40px; height: 40px; border-radius: 12px; }
#legend-modal.nbf-symbol-dialog .nbf-legend-tile > svg { width: 22px !important; height: 22px !important; }
#legend-modal.nbf-symbol-dialog .nbf-symbol-dialog__footer { padding: .25rem 1.25rem 1.25rem; }
#legend-modal.nbf-symbol-dialog .nbf-symbol-dialog__ok,
[class*="elementor-kit"] #legend-modal.nbf-symbol-dialog .nbf-symbol-dialog__ok {
  width: 100%; min-height: 48px; margin: 0; padding: .5rem 1rem !important; border: 0 !important; border-radius: 14px !important;
  background: #006564 !important; color: #fff !important; font-size: 1rem !important; font-weight: 700 !important; cursor: pointer; box-shadow: none !important;
}
#legend-modal.nbf-symbol-dialog .nbf-symbol-dialog__ok:hover { background: #004c4b !important; }
#legend-modal.nbf-symbol-dialog .nbf-symbol-dialog__ok:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px; }
@media (max-width: 420px) { #legend-modal.nbf-symbol-dialog .nbf-symbol-dialog__grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 768px) {
  #legend-modal.nbf-symbol-dialog { align-items: flex-end !important; padding: 0 !important; }
  #legend-modal.nbf-symbol-dialog .modal-content { width: 100% !important; max-width: none !important; max-height: 90vh; border-radius: 22px 22px 0 0 !important; }
}

/* E · Marker-Popup als Mini-Ergebniskarte */
.nbf-leaflet-popup--card .map-popup { width: min(330px, calc(var(--nbf-map-w, 100vw) - 32px)) !important; max-width: none; padding: 14px 14px 14px !important; border-radius: 18px !important; box-shadow: 0 12px 32px rgba(0,38,77,.22), 0 2px 6px rgba(0,38,77,.08) !important; color: #13283d; box-sizing: border-box; }
.nbf-leaflet-popup--card .map-popup-close {
  top: 4px !important; right: 4px !important; width: 44px !important; height: 44px !important; background: transparent !important; color: #00264d !important;
  border-radius: 50% !important; display: grid !important; place-items: center;
}
.nbf-leaflet-popup--card .map-popup-close::before { content: ''; position: absolute; inset: 4px; border-radius: 50%; background: #fff; border: 1.5px solid #83919e; }
.nbf-leaflet-popup--card .map-popup-close:hover::before { border-color: #006564; }
.nbf-leaflet-popup--card .map-popup-close svg { position: relative; width: 18px !important; height: 18px !important; stroke: currentColor !important; }
.nbf-leaflet-popup--card .map-popup-close:hover { background: transparent !important; color: #006564 !important; }
.nbf-leaflet-popup--card .map-popup-close:focus-visible { outline: 3px solid #00264d !important; outline-offset: 0; }
.nbf-leaflet-popup--card .map-popup-head { display: flex; align-items: flex-start; gap: 12px; padding-right: 40px; }
.nbf-leaflet-popup--card .map-popup-tile { flex: 0 0 48px; width: 48px; height: 48px; border-radius: 14px; background: #e6f2f2; color: #006564; display: grid; place-items: center; }
.nbf-leaflet-popup--card .map-popup-tile svg { width: 26px !important; height: 26px !important; stroke: currentColor; }
.nbf-leaflet-popup--card .map-popup-headtext { min-width: 0; }
.nbf-leaflet-popup--card .map-popup-cat { margin: 0 0 2px !important; padding: 0 !important; color: #006564 !important; font-size: .75rem !important; font-weight: 600 !important; line-height: 1.3; }
.nbf-leaflet-popup--card .map-popup-title { margin: 0 !important; padding: 0 !important; color: #00264d !important; font-size: 1rem !important; font-weight: 700 !important; line-height: 1.3 !important; white-space: normal !important; overflow: visible !important; text-overflow: clip !important; overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto; }
.nbf-leaflet-popup--card .map-popup-address { display: flex; align-items: flex-start; gap: 6px; margin: 10px 0 0 !important; color: #4a5b6b !important; font-size: .8125rem !important; line-height: 1.4; }
.nbf-leaflet-popup--card .map-popup-address svg { flex: 0 0 auto; margin-top: .15em; color: #4a5b6b; }
.nbf-leaflet-popup--card .map-popup-ampel { display: flex !important; flex-wrap: wrap; gap: 8px !important; margin: 12px 0 0 !important; }
.nbf-leaflet-popup--card .mobi-ampel-icon { position: relative; width: 34px !important; height: 34px !important; border-radius: 10px !important; display: flex; align-items: center; justify-content: center; }
.nbf-leaflet-popup--card .mobi-ampel-icon > span:first-child svg { width: 18px !important; height: 18px !important; display: block; }
.nbf-leaflet-popup--card .map-popup-btn,
[class*="elementor-kit"] .nbf-leaflet-popup--card .map-popup-btn {
  display: flex !important; align-items: center; justify-content: center; gap: 6px; width: 100%; min-height: 44px; margin: 14px 0 0 !important;
  padding: .5rem 1rem !important; border-radius: 12px !important; background: #006564 !important; color: #fff !important;
  font-size: .9375rem !important; font-weight: 700 !important; text-decoration: none !important; box-sizing: border-box;
}
.nbf-leaflet-popup--card .map-popup-btn:hover { background: #004c4b !important; color: #fff !important; }
.nbf-leaflet-popup--card .map-popup-btn:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px; }
.nbf-leaflet-popup--card .map-popup-btn svg { width: 18px !important; height: 18px !important; stroke: currentColor; }
/* Aktiver Marker: Navy mit Ring */
.leaflet-marker-icon.is-active .nbf-custom-marker__circle { box-shadow: 0 0 0 3px #fff, 0 0 0 6px #00264d !important; }

/* F · „Eintrag fehlt oder fehlerhaft?“ – immer innerhalb der Karte, nie unter dem Ally-Button */
.app-container .nbf-map-report-hint__text strong .nbf-hint-long { color: inherit !important; font: inherit !important; } /* alle Breiten: Teil der Überschrift */
@media (min-width: 769px) {
  .app-container .nbf-map-report-hint {
    left: auto !important; right: calc(12px + var(--nbf-hint-dx, 0px)) !important; bottom: calc(12px + var(--nbf-hint-dy, 0px)) !important;
    max-width: calc(var(--nbf-map-w, 100%) - 24px - var(--nbf-hint-dx, 0px)); box-sizing: border-box;
    gap: 12px !important; padding: 10px 10px 10px 10px !important; border: 1px solid #d5dde5 !important; border-radius: 18px !important;
    box-shadow: 0 8px 24px rgba(0,38,77,.14) !important; white-space: normal !important;
  }
  .app-container .nbf-map-report-hint::before {
    content: ''; flex: 0 0 40px; width: 40px; height: 40px; border-radius: 12px;
    background: #e6f2f2 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23006564' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z'/%3E%3Cline x1='4' x2='4' y1='22' y2='15'/%3E%3C/svg%3E") center / 20px no-repeat;
  }
  .app-container .nbf-map-report-hint__text { min-width: 0; }
  .app-container .nbf-map-report-hint__text strong { color: #00264d !important; font-size: .875rem !important; line-height: 1.3; }
  .app-container .nbf-map-report-hint__text span { color: #4a5b6b !important; font-size: .8125rem; line-height: 1.35; }
  .app-container .nbf-map-report-hint__btn,
  [class*="elementor-kit"] .app-container .nbf-map-report-hint__btn {
    flex: 0 0 auto; min-height: 44px; margin: 0 !important; padding: 0 1rem !important; border: 0 !important; border-radius: 12px !important;
    background: #006564 !important; color: #fff !important; font-size: .875rem !important; font-weight: 700 !important; white-space: nowrap;
  }
  .app-container .nbf-map-report-hint__btn:hover { background: #004c4b !important; color: #fff !important; }
  .app-container .nbf-map-report-hint__btn:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px; }
  .app-container .nbf-map-report-hint.is-compact .nbf-map-report-hint__text span,
  .app-container .nbf-map-report-hint.is-compact .nbf-hint-long { display: none !important; }
}
@media (prefers-reduced-motion: reduce) {
  .nbf-leaflet-popup--card .map-popup { animation: none !important; }
}
@media (forced-colors: active) {
  .app-container .nbf-legend-card, #legend-modal.nbf-symbol-dialog .modal-content, .nbf-leaflet-popup--card .map-popup { border: 1px solid CanvasText !important; }
  .nbf-legend-tile .nbf-status, .nbf-leaflet-popup--card .nbf-status { forced-color-adjust: none; background: CanvasText; color: Canvas; border-color: Canvas; }
  .app-container #nbf-pagination .nbf-pag__num--active { forced-color-adjust: none; background: Highlight !important; color: HighlightText !important; }
  #legend-modal.nbf-symbol-dialog .nbf-symbol-dialog__ok, .nbf-leaflet-popup--card .map-popup-btn, .app-container .nbf-map-report-hint__btn { border: 2px solid ButtonText !important; }
  .leaflet-marker-icon.is-active .nbf-custom-marker__circle { outline: 3px solid Highlight; }
}

/* 2.7.19 T-109 (E-75): Inselkarte Tablet quer – Filterleiste oben (Variante A). Nur 769–1279 px im Querformat;
   die Desktop-Sidebar wird zur Leiste (gleiche Inputs → ein Filterzustand). Tablet hoch, Handy, Desktop unverändert. */
/* Fix 2.7.16: Zugänglichkeits-Pillen nur bei aufgeklapptem Abschnitt (vorher auch zugeklappt sichtbar) */
.app-container .filter-sidebar .filter-section:not(.open) .filter-options:has(> .filter-option--icon),
.app-container .mobile-filter-sheet .filter-section:not(.open) .filter-options:has(> .filter-option--icon) { display: none !important; }
/* Gruppe „Kategorie (Mehrfachauswahl)“: ohne Rahmen, Bezeichnung außerhalb der Leiste nur für Screenreader */
.app-container .nbf-kat-fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.app-container .nbf-kat-legend { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.app-container .nbf-bar-label { display: none; }

@media (min-width: 769px) and (max-width: 1279px) and (orientation: landscape) {
  /* Button „Filter · n“ und Sheet sind im Querformat nicht nötig */
  .app-container #nbf-mobile-top-bar,
  .app-container .mobile-filter-overlay { display: none !important; }
  /* Leiste oben, darunter Liste 44 % (min. 360 px) und Karte */
  /* Höhe wie bisher (Viewport − Kopf); wird die Leiste bei großer Schrift hoch, wächst die App und die Seite scrollt –
     Liste/Karte behalten mind. 420 px (Leiste bleibt statisch) */
  div.app-container { height: auto !important; max-height: none !important; min-height: calc(100vh - 100px) !important; }
  .app-container .main-content { flex: 1 1 auto !important; display: grid !important; grid-template-columns: minmax(360px, 44%) minmax(0, 1fr); grid-template-rows: auto minmax(420px, 1fr); }
  .app-container .poi-list-container { grid-column: 1; grid-row: 2; width: auto !important; min-width: 0 !important; min-height: 0; contain: size; } /* Inhalt bestimmt nicht die Zeilenhöhe → Liste scrollt intern */
  .app-container .map-container { grid-column: 2; grid-row: 2; min-height: 0; height: auto !important; contain: size; }

  .app-container .filter-sidebar,
  [class*="elementor-kit"] .app-container .filter-sidebar {
    grid-column: 1 / -1; grid-row: 1; position: relative; z-index: 1100;
    display: flex !important; flex-direction: row !important; flex-wrap: wrap !important; align-items: center; gap: 10px 12px;
    width: auto !important; height: auto !important; max-height: none !important; min-width: 0;
    padding: 12px 20px !important; background: #f7f9fb !important; border: 0 !important; border-bottom: 1px solid #e1e7ec !important; overflow: visible !important;
  }
  .app-container .filter-sidebar .filter-header,
  .app-container .filter-sidebar .filter-content,
  .app-container .filter-sidebar .filter-footer { display: contents !important; }

  /* Abschnitte in der Leiste: kein Kartenschatten, nichts abschneiden (Popover ragt heraus) */
  .app-container .filter-sidebar .filter-section { box-shadow: none !important; overflow: visible !important; }
  /* Zeile 1: Suche · Kategorie · Zurücksetzen */
  .app-container .filter-sidebar .filter-header .nbf-search-hint-row { order: 1; flex: 1 1 320px; min-width: 0; margin: 0 !important; padding: 0 !important; }
  .app-container .filter-sidebar .search-input-wrapper input[type="search"] { min-height: 2.75rem !important; padding-top: .25rem !important; padding-bottom: .25rem !important; background: #fff !important; }
  .app-container .filter-sidebar .filter-section:has(#nbf-kat-options) { order: 2; position: relative; flex: 0 0 auto; margin: 0 !important; border: 0 !important; background: transparent !important; }
  .app-container .filter-sidebar .filter-section:has(#nbf-kat-options) > .filter-section-header,
  [class*="elementor-kit"] .app-container .filter-sidebar .filter-section:has(#nbf-kat-options) > .filter-section-header {
    min-height: 2.75rem; padding: .375rem .875rem !important; gap: .5rem !important; border: 1.5px solid #83919e !important; border-radius: 999px !important;
    background: #fff !important; color: #00264d !important; font-size: .9375rem !important; font-weight: 600 !important; white-space: nowrap;
  }
  .app-container .filter-sidebar .filter-section:has(#nbf-kat-options) > .filter-section-header::before {
    content: ''; flex: 0 0 18px; width: 18px; height: 18px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23006564' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7'/%3E%3Crect x='14' y='3' width='7' height='7'/%3E%3Crect x='14' y='14' width='7' height='7'/%3E%3Crect x='3' y='14' width='7' height='7'/%3E%3C/svg%3E") center / 18px no-repeat;
  }
  .app-container .filter-sidebar .filter-section:has(#nbf-kat-options) > .filter-section-header > svg { margin-left: .125rem !important; width: 1.125rem !important; height: 1.125rem !important; }
  .app-container .filter-sidebar .filter-section:has(#nbf-kat-options).open > .filter-section-header { border-color: #006564 !important; background: #e6f2f2 !important; }
  /* Popover unter dem Button (nicht modal) */
  .app-container .filter-sidebar #nbf-kat-options {
    display: none; position: absolute; top: calc(100% + 6px); left: auto; right: 0; z-index: 1200; width: 320px; max-width: calc(100vw - 40px); /* rechtsbündig: Button steht rechts */
    max-height: 60vh; overflow: auto; overscroll-behavior: contain; padding: .5rem !important; box-sizing: border-box;
    background: #fff; border: 1px solid #d5dde5; border-radius: 16px; box-shadow: 0 16px 40px rgba(0,38,77,.18), 0 2px 6px rgba(0,38,77,.08);
  }
  .app-container .filter-sidebar .filter-section.open #nbf-kat-options { display: block !important; }
  .app-container .filter-sidebar #nbf-kat-options .filter-option-label { -webkit-hyphens: manual !important; hyphens: manual !important; overflow-wrap: normal !important; word-break: normal !important; }
  .app-container .filter-sidebar .nbf-kat-legend { position: static !important; width: auto; height: auto; margin: 0 0 .25rem; padding: .25rem .625rem; overflow: visible; clip: auto; white-space: normal; color: #00264d; font-size: .8125rem; font-weight: 700; }
  .app-container .filter-sidebar #nbf-filter-reset { order: 3; }
  .app-container .filter-sidebar #nbf-filter-reset,
  [class*="elementor-kit"] .app-container .filter-sidebar #nbf-filter-reset {
    flex: 0 0 auto; min-height: 2.75rem; padding: 0 .375rem !important; border: 0 !important; background: transparent !important; color: #00264d !important;
    font-size: .9375rem !important; font-weight: 600 !important; text-decoration: underline; text-underline-offset: 3px;
  }
  .app-container .filter-sidebar #nbf-filter-apply { display: none !important; }

  /* Zeile 2: „Zugänglichkeit:“ + Pillen · Symbolik */
  .app-container .filter-sidebar .filter-section:has(.filter-option--icon) { order: 4; flex: 1 1 70%; min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin: 0 !important; border: 0 !important; background: transparent !important; }
  .app-container .filter-sidebar .filter-section:has(.filter-option--icon) > .filter-section-header { display: none !important; }
  .app-container .filter-sidebar .nbf-bar-label { display: inline; color: #00264d; font-size: .875rem; font-weight: 700; }
  .app-container .filter-sidebar .filter-section:has(.filter-option--icon) .filter-options:has(> .filter-option--icon) { display: flex !important; flex-wrap: wrap; gap: 8px !important; padding: 0 !important; }
  .app-container .filter-sidebar .filter-option--icon { min-height: 2.75rem; padding: .25rem 2.25rem .25rem .25rem !important; gap: .5rem !important; font-size: .875rem !important; }
  .app-container .filter-sidebar .filter-option--icon > svg { flex-basis: 2rem; width: 2rem !important; height: 2rem !important; padding: .4375rem; }
  .app-container .filter-sidebar .legend-trigger,
  [class*="elementor-kit"] .app-container .filter-sidebar .legend-trigger { order: 5; flex: 0 0 auto !important; width: auto !important; margin-left: auto !important; }
  .app-container .filter-sidebar .nbf-lt-long { display: none; }
}
@media (min-width: 769px) and (max-width: 1279px) and (orientation: landscape) and (forced-colors: active) {
  .app-container .filter-sidebar #nbf-kat-options { border: 1px solid CanvasText; }
  .app-container .filter-sidebar .filter-section:has(#nbf-kat-options) > .filter-section-header { border-color: ButtonText !important; }
}

/* 2.7.20 T-110: Tablet quer – Listenhöhe, Chips, Ally, Listenkopf, Leiste Zeile 2 */
/* Chips (alle Breiten): kompakter, damit zwei nebeneinander passen; Breite nach Inhalt, lange Texte umbrechen */
.app-container #nbf-results .poi-card-features { display: flex !important; flex-wrap: wrap !important; gap: 6px !important; }
.app-container #nbf-results .poi-feature-item { flex: 0 0 auto !important; width: auto !important; max-width: 100%; box-sizing: border-box; gap: .25rem !important; padding: .1875rem .5rem !important; font-size: .75rem !important; }
.app-container #nbf-results .poi-feature-item svg { flex: 0 0 auto; width: 11px !important; height: 11px !important; }
/* „Melden“-Hinweis: schmale Karte → unten links, endet vor dem Ally-Button (Werte aus frontend.js) */
@media (min-width: 769px) {
  .app-container .nbf-map-report-hint.is-left {
    left: var(--nbf-hint-left, 12px) !important; right: auto !important; bottom: 12px !important;
    max-width: var(--nbf-hint-maxw, calc(100% - 108px)) !important;
  }
}
@media (min-width: 769px) and (max-width: 1279px) and (orientation: landscape) {
  /* Höhe: Liste + Karte füllen den Rest des Viewports (Zeilenhöhe misst frontend.js); Seite scrollt dafür nicht */
  div.app-container.nbf-bar-fit { min-height: 0 !important; }
  .app-container.nbf-bar-fit .main-content { grid-template-rows: auto var(--nbf-bar-rows, calc(100vh - 220px)); }
  .app-container .poi-list-container #nbf-results { overflow-y: auto !important; overscroll-behavior: contain; scroll-padding-block: 12px; } /* Fokusrahmen beim Tabben nicht abschneiden */
  /* Listenkopf: Titel und eingeklappte Legende in einer Zeile (nicht bei großer Schrift – dort eigene Zeile) */
  .app-container .poi-list-container { display: grid !important; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto auto minmax(0, 1fr) auto; }
  .app-container .poi-list-container > * { grid-column: 1 / -1; }
  .app-container .poi-list-container > #poi-liste,
  .app-container .poi-list-container > .poi-list-header { grid-column: 1; grid-row: 1; }
  .app-container .poi-list-container > .nbf-legend-card { grid-row: 2; }
  .app-container.nbf-bar-fit .poi-list-container > .nbf-legend-card.is-collapsed { grid-column: 2; grid-row: 1; align-self: stretch; display: flex; align-items: center; margin: 0 !important; padding: 8px 16px 0 0 !important; border: 0 !important; border-radius: 0; background: #fff !important; container-type: normal; } /* Hintergrund wie Listenkopf; ohne Größen-Containment (sonst 0 px breit) */
  .app-container .poi-list-container > #nbf-results { grid-row: 3; min-height: 0; }
  .app-container .poi-list-container > .poi-list-footer { grid-row: 4; }
  /* Karten etwas straffer (Maße wie Handy-Karte), damit mind. zwei sichtbar sind */
  .app-container #nbf-results .poi-card,
  [class*="elementor-kit"] .app-container #nbf-results .poi-card { grid-template-columns: 56px minmax(0, 1fr) !important; gap: .75rem !important; padding: 14px !important; }
  .app-container #nbf-results .poi-card-image { width: 56px !important; height: 56px !important; border-radius: 14px !important; }
  .app-container #nbf-results .poi-card-tile svg { width: 28px !important; height: 28px !important; }
  .app-container #nbf-results .poi-card-content { gap: .25rem !important; }
  .app-container #nbf-results .poi-card-ampel,
  .app-container #nbf-results .poi-card-features { margin-top: .125rem !important; }
  .app-container .poi-list-container > .nbf-legend-card:not(.is-collapsed) { margin-top: 0 !important; margin-bottom: .5rem !important; }
  /* aufgeklappte Legende höchstens halbe Höhe, scrollt selbst – Liste bleibt sichtbar */
  .app-container.nbf-bar-fit .poi-list-container > .nbf-legend-card:not(.is-collapsed) { max-height: calc(var(--nbf-bar-rows, 400px) * .5); overflow-y: auto; overscroll-behavior: contain; }
  /* Leiste Zeile 2: Pillen mittig ausgerichtet, „ⓘ Symbolik“ rechts auf Pillenhöhe; Texte wie Startseite */
  .app-container .filter-sidebar .filter-section:has(.filter-option--icon) { display: flex !important; align-items: center; flex-wrap: wrap; gap: 8px !important; }
  .app-container .filter-sidebar .filter-section:has(.filter-option--icon) .filter-options:has(> .filter-option--icon) { align-items: center; }
  .app-container .filter-sidebar .legend-trigger,
  [class*="elementor-kit"] .app-container .filter-sidebar .legend-trigger { align-self: center !important; min-height: 2.75rem; margin-top: 0 !important; margin-bottom: 0 !important; }
  .app-container .filter-sidebar .nbf-mit { display: none; }
}

/* 2.7.21 T-106 (E-73): Inselkarte Schritt 2b – Cluster, Marker, Zoom, Attribution, Handy-Zeile, „Karte laden“, Filter-Sheet (nur Optik) */
/* Cluster: einheitlich Navy, Zahl weiß, weißer Ring; Größe 42 / 48 / 54 px setzt frontend.js */
.app-container .leaflet-marker-icon.nbf-cluster { background: transparent !important; border-radius: 50%; }
.app-container .leaflet-marker-icon.nbf-cluster div {
  width: 100% !important; height: 100% !important; margin: 0 !important; display: grid; place-items: center; box-sizing: border-box;
  border-radius: 50% !important; background: #00264d !important; color: #fff;
  box-shadow: 0 0 0 4px rgba(255,255,255,.95), 0 4px 12px rgba(0,38,77,.35);
}
.app-container .leaflet-marker-icon.nbf-cluster span { color: #fff !important; font-family: inherit; font-size: .9375rem; font-weight: 700; line-height: 1 !important; }
.app-container .leaflet-marker-icon.nbf-cluster.marker-cluster-medium span { font-size: 1rem; }
.app-container .leaflet-marker-icon.nbf-cluster.marker-cluster-large span { font-size: 1.0625rem; }
.app-container .leaflet-marker-icon.nbf-cluster:focus { outline: none; }
.app-container .leaflet-marker-icon.nbf-cluster:focus-visible { outline: 3px solid #00264d !important; outline-offset: 6px !important; }

/* Einzelmarker: Tropfen Teal mit weißem 3-px-Rand und weißem Kategorie-Icon (36 px sichtbar, Trefferfläche 44 × 50) */
.app-container .leaflet-marker-icon .nbf-custom-marker {
  position: relative; width: 44px !important; height: 50px; display: block !important;
  filter: drop-shadow(0 2px 4px rgba(0,38,77,.35));
}
.app-container .leaflet-marker-icon .nbf-custom-marker .nbf-custom-marker__circle {
  position: absolute; left: 4px; top: 4px;
  width: 36px !important; height: 36px !important; min-width: 36px !important; min-height: 36px !important;
  border-radius: 50% 50% 50% 0 !important; transform: rotate(-45deg);
  background: #006564 !important; border: 3px solid #fff !important; box-shadow: none !important;
  transition: background-color .15s;
}
.app-container .leaflet-marker-icon .nbf-custom-marker .nbf-custom-marker__circle svg {
  width: 17px !important; height: 17px !important; min-width: 17px !important; min-height: 17px !important;
  transform: rotate(45deg); stroke: #fff !important;
}
.app-container .leaflet-marker-icon .nbf-custom-marker .nbf-custom-marker__tip { display: none !important; }
.app-container .leaflet-marker-icon .nbf-custom-marker:hover .nbf-custom-marker__circle,
.app-container .leaflet-marker-icon.is-active .nbf-custom-marker .nbf-custom-marker__circle { background: #00264d !important; box-shadow: none !important; }
.app-container .leaflet-marker-icon.is-active { z-index: 1000 !important; }
.app-container .leaflet-marker-icon:has(> .nbf-custom-marker):focus { outline: none; }
.app-container .leaflet-marker-icon:has(> .nbf-custom-marker):focus-visible { outline: 3px solid #00264d !important; outline-offset: 2px; border-radius: 12px; }

/* Zoom: gemeinsamer weißer Block, 44 × 44, Zeichen Navy 22 px, Trennlinie */
.app-container .leaflet-control-zoom.leaflet-bar,
[class*="elementor-kit"] .app-container .leaflet-control-zoom.leaflet-bar {
  border: 0 !important; border-radius: 14px !important; overflow: hidden; background: #fff;
  box-shadow: 0 4px 14px rgba(0,38,77,.16), 0 1px 3px rgba(0,38,77,.10) !important;
}
.app-container .leaflet-control-zoom.leaflet-bar a,
[class*="elementor-kit"] .app-container .leaflet-control-zoom.leaflet-bar a {
  width: 44px !important; height: 44px !important; line-height: 44px !important; padding: 0 !important; display: block;
  background: #fff !important; color: #00264d !important; font-family: inherit !important; font-size: 22px !important; font-weight: 400 !important; text-decoration: none !important;
  border: 0 !important; border-radius: 0 !important;
}
.app-container .leaflet-control-zoom.leaflet-bar a + a { border-top: 1px solid #d5dde5 !important; }
.app-container .leaflet-control-zoom.leaflet-bar a:hover { background: #f5f8fa !important; color: #006564 !important; }
.app-container .leaflet-control-zoom.leaflet-bar a.leaflet-disabled { background: #f5f8fa !important; color: #5b6b7b !important; }
.app-container .leaflet-control-zoom.leaflet-bar a:focus-visible { outline: 3px solid #00264d !important; outline-offset: -3px !important; }

/* Attribution sichtbar lassen: Karte nur so hoch wie die App (vorher 100vh statt 100vh − 100px → unterste 100 px
   samt „© OpenStreetMap“ abgeschnitten); Melden-Hinweis steht über der Attributionszeile */
@media (min-width: 769px) {
  .app-container .main-content > .nbf-mobile-map-wrap .map-container,
  .app-container .map-container { height: auto !important; align-self: stretch; }
  .app-container .nbf-map-report-hint,
  .app-container .nbf-map-report-hint.is-left { bottom: calc(28px + var(--nbf-hint-dy, 0px)) !important; }
}
.app-container .leaflet-control-attribution { color: #4a5b6b; }

/* Handy ≤ 768: Zeile „Filter · n“ als gefüllte Teal-Pille, Karten-Button Kreis – Zeilenhöhe bleibt 56 px */
@media (max-width: 768px) {
  .app-container #nbf-mobile-top-bar { padding-top: 5px !important; padding-bottom: 6px !important; }
  .app-container .mobile-filter-btn,
  [class*="elementor-kit"] .app-container .mobile-filter-btn {
    display: inline-flex !important; align-items: center; gap: .5rem; min-height: 44px; margin: 0;
    padding: 0 1.125rem !important; background: #006564 !important; border: 0 !important; border-radius: 9999px !important;
    color: #fff !important; font-size: .9375rem !important; font-weight: 700 !important;
  }
  .app-container .mobile-filter-btn svg { color: #fff !important; stroke: #fff !important; }
  .app-container .mobile-filter-btn:hover { background: #004c4b !important; }
  .app-container .mobile-filter-btn:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px; }
  .app-container .mobile-top-bar .mobile-map-btn,
  [class*="elementor-kit"] .app-container .mobile-top-bar .mobile-map-btn { background: #fff; border: 1.5px solid #83919e; color: #006564; }
  .app-container .mobile-top-bar .mobile-map-btn:focus-visible,
  [class*="elementor-kit"] .app-container .mobile-top-bar .mobile-map-btn:focus-visible { outline: 3px solid #00264d; outline-offset: 3px; }

  /* „Karte laden“: schlanke Box mit angedeuteter Kartenvorschau (Inline-SVG, keine Kacheln/Bilder – E-20) */
  .app-container .nbf-mobile-map-placeholder:has(> .nbf-map-consent:not(.nbf-map-consent--hidden)) {
    height: auto !important; padding: 12px 16px; background: transparent !important;
  }
  /* leere Karte vor dem Laden nicht zeigen (keine Fläche hinter der Box, kein leeres Element im Tab-Weg) */
  .app-container .nbf-mobile-map-placeholder:has(> .nbf-map-consent:not(.nbf-map-consent--hidden)) > .map-container { visibility: hidden; }
  .app-container .nbf-mobile-map-placeholder .nbf-map-consent:not(.nbf-map-consent--hidden) {
    position: relative !important; inset: auto !important; z-index: 10;
    display: flex !important; flex-direction: row !important; flex-wrap: wrap; align-items: center !important; justify-content: space-between !important;
    gap: 12px 14px; min-height: 132px; box-sizing: border-box; padding: 16px; text-align: left;
    border: 1px solid #d5dde5; border-radius: 18px; color: #13283d;
    background:
      linear-gradient(90deg, rgba(255,255,255,.96) 0, rgba(255,255,255,.9) 52%, rgba(255,255,255,.35) 100%),
      url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 360 140' preserveAspectRatio='xMidYMid slice'%3E%3Crect width='360' height='140' fill='%23d6e9ee'/%3E%3Cpath d='M118 112c26-38 82-62 150-66 40-2 76 6 92 12v82H128z' fill='%23eef3e4'/%3E%3Cpath d='M150 104c40-26 92-40 150-40' stroke='%23fff' stroke-width='5' fill='none' stroke-linecap='round'/%3E%3Cpath d='M214 72l26 68M270 56l-6 84' stroke='%23fff' stroke-width='4' fill='none' stroke-linecap='round'/%3E%3Ccircle cx='238' cy='86' r='9' fill='%2300264d'/%3E%3Ccircle cx='300' cy='72' r='7' fill='%23006564'/%3E%3Ccircle cx='190' cy='100' r='6' fill='%23006564'/%3E%3C/svg%3E") right center / cover no-repeat,
      #eef3f6;
    box-shadow: 0 1px 3px rgba(0,38,77,.06);
  }
  .app-container .nbf-map-consent .nbf-map-consent__icon { display: none !important; }
  .app-container .nbf-map-consent__body { flex: 1 1 8em; min-width: 0; display: flex; flex-direction: column; gap: .25rem; }
  .app-container .nbf-map-consent .nbf-map-consent__title { margin: 0 !important; color: #00264d !important; font-size: 1rem; font-weight: 700; line-height: 1.3; }
  .app-container .nbf-map-consent .nbf-map-consent__text { margin: 0 !important; color: #4a5b6b !important; font-size: .8125rem; line-height: 1.45; }
  .app-container .nbf-map-consent .nbf-map-consent__text strong { color: inherit; font-weight: 600; }
  .app-container .nbf-map-consent .nbf-privacy-link { color: #00264d !important; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; white-space: nowrap; }
  .app-container .nbf-map-consent .nbf-map-consent__btn,
  [class*="elementor-kit"] .app-container .nbf-map-consent .nbf-map-consent__btn {
    flex: 0 0 auto; width: auto !important; max-width: none !important; min-height: 44px; margin: 0 !important;
    padding: 0 1.125rem !important; gap: .5rem; border: 0 !important; border-radius: 9999px !important;
    background: #00264d !important; color: #fff !important; font-size: .9375rem !important; font-weight: 700 !important; box-shadow: none !important;
  }
  .app-container .nbf-map-consent .nbf-map-consent__btn svg { display: none; } /* schmaler, mehr Platz für den Text */
  .app-container .nbf-map-consent .nbf-map-consent__btn:hover { background: #003a73 !important; }
  .app-container .nbf-map-consent .nbf-map-consent__btn:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px; }
}

/* Filter-Sheet: Schließen 44 × 44 (Navy auf Weiß wie Dialog), Fuß Zurücksetzen | Anwenden nebeneinander */
.app-container .mobile-filter-sheet #nbf-mobile-filter-close,
[class*="elementor-kit"] .app-container .mobile-filter-sheet #nbf-mobile-filter-close {
  width: 44px !important; height: 44px !important; min-width: 44px; padding: 0 !important; border-radius: 50% !important;
  background: #fff !important; border: 1.5px solid #83919e !important; color: #00264d !important;
}
.app-container .mobile-filter-sheet #nbf-mobile-filter-close svg,
.app-container .mobile-filter-sheet #nbf-mobile-filter-close svg * { color: #00264d !important; stroke: #00264d !important; }
.app-container .mobile-filter-sheet #nbf-mobile-filter-close:hover { background: #f5f8fa !important; }
.app-container .mobile-filter-sheet #nbf-mobile-filter-close:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px; }
.app-container .mobile-filter-sheet .mobile-filter-footer { flex-direction: row !important; flex-wrap: wrap; }
.app-container .mobile-filter-sheet .mobile-filter-footer > button { flex: 1 1 8em !important; }

@media (prefers-reduced-motion: reduce) {
  .app-container .leaflet-marker-icon .nbf-custom-marker,
  .app-container .leaflet-marker-icon .nbf-custom-marker .nbf-custom-marker__circle,
  .app-container .leaflet-cluster-anim .leaflet-marker-icon,
  .app-container .leaflet-cluster-anim .leaflet-marker-shadow { transition: none !important; }
  .app-container .leaflet-marker-icon .nbf-custom-marker:hover { transform: none !important; }
}
@media (forced-colors: active) {
  /* Kartengrafik bleibt farbig (liegt auf dem Kartenbild); Fokus in Systemfarbe */
  .app-container .leaflet-marker-icon.nbf-cluster div,
  .app-container .leaflet-marker-icon .nbf-custom-marker { forced-color-adjust: none; }
  .app-container .leaflet-marker-icon:focus-visible { outline-color: Highlight !important; }
  .app-container .leaflet-control-zoom.leaflet-bar { border: 1px solid CanvasText !important; }
  .app-container .nbf-mobile-map-placeholder .nbf-map-consent:not(.nbf-map-consent--hidden) { border-color: CanvasText; }
  .app-container .mobile-filter-btn, .app-container .nbf-map-consent .nbf-map-consent__btn { border: 2px solid ButtonText !important; }
  .app-container .mobile-filter-btn svg { color: ButtonText !important; stroke: ButtonText !important; }
}

/* 2.7.22 T-112 (E-76) + T-111: Smartphone – Umschalter „Liste | Karte“, Karte im Vollbild, Ort als Bottom-Sheet.
   Nur ≤ 768 px; Tablet/Desktop unverändert (Umschalter, Hinweis, Sheet und „Eintrag fehlt?“ dort ausgeblendet). */
.app-container .nbf-view-switch,
.app-container .nbf-osm-note,
.app-container .nbf-place-sheet,
.app-container .nbf-map-missing-btn { display: none; }
/* „xx Orte gefunden“ ist jetzt h2: Optik wie bisher (Theme-/Kit-Überschriften nicht übernehmen) */
.app-container .poi-list-header h2.poi-list-title,
[class*="elementor-kit"] .app-container .poi-list-header h2.poi-list-title {
  margin: 0 !important; padding: 0 !important; font-family: inherit !important; font-size: inherit; line-height: 1.25 !important;
  letter-spacing: normal !important; text-transform: none !important;
}
.app-container .poi-list-header h2.poi-list-title:focus { outline: none; }
.app-container .poi-list-header h2.poi-list-title:focus-visible { outline: 3px solid #00264d !important; outline-offset: 2px !important; }
@media (max-width: 768px) {
  /* Leiste: Umschalter (flex 1) + „Filter · n“; zweite Trefferzahl und „Zur Karte“ entfallen (T-111) */
  .app-container #nbf-mobile-top-bar { gap: 8px; flex-wrap: wrap; }
  .app-container #nbf-mobile-top-bar .mobile-top-bar__divider,
  .app-container #nbf-mobile-top-bar #nbf-mobile-count,
  .app-container #nbf-mobile-top-bar .mobile-map-btn { display: none !important; }
  .app-container .nbf-view-switch {
    display: flex; flex: 1 1 auto; min-width: 0; gap: 4px; padding: 4px; box-sizing: border-box;
    border: 1.5px solid #83919e; border-radius: 9999px; background: #eef3f6;
  }
  .app-container .nbf-view-btn,
  [class*="elementor-kit"] .app-container .nbf-view-btn {
    position: relative; flex: 1 1 0; min-width: 0; min-height: 40px; margin: 0; padding: 0 .625rem !important;
    display: inline-flex; align-items: center; justify-content: center; gap: .375rem;
    border: 0 !important; border-radius: 9999px !important; background: transparent !important; box-shadow: none !important;
    color: #00264d !important; font-family: inherit; font-size: .9375rem !important; font-weight: 600 !important; line-height: 1.2; cursor: pointer;
  }
  .app-container .nbf-view-btn::after { content: ''; position: absolute; left: 0; right: 0; top: -3px; bottom: -3px; } /* Trefferfläche ≥ 46 px */
  .app-container .nbf-view-btn svg { flex: 0 0 auto; width: 18px; height: 18px; }
  .app-container .nbf-view-btn[aria-pressed="true"],
  [class*="elementor-kit"] .app-container .nbf-view-btn[aria-pressed="true"] {
    background: #00264d !important; color: #fff !important; font-weight: 700 !important; box-shadow: 0 1px 4px rgba(0,38,77,.28) !important;
  }
  .app-container .nbf-view-btn[aria-pressed="false"]:hover { background: #fff !important; }
  .app-container .nbf-view-btn:focus-visible { outline: 3px solid #00264d !important; outline-offset: 2px !important; z-index: 1; }
  .app-container #nbf-mobile-top-bar .mobile-filter-btn { flex: 0 0 auto; }
  /* Datenschutz-Hinweis unter dem Umschalter, bis die Karte in der Sitzung geladen wurde */
  .app-container .nbf-osm-note {
    display: flex; flex: 1 1 100%; align-items: flex-start; gap: 6px; margin: 0 !important; padding: 0 2px;
    color: #4a5b6b !important; font-size: 12px !important; line-height: 1.4;
  }
  .app-container .nbf-osm-note[hidden] { display: none !important; }
  .app-container .nbf-osm-note svg { flex: 0 0 auto; margin-top: 2px; color: #4a5b6b; }
  .app-container .nbf-osm-note .nbf-privacy-link { color: #00264d !important; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }

  /* Ansicht „Liste“ (Standard): Kartenbereich samt Kasten „Karte laden“ nicht anzeigen */
  .app-container .nbf-mobile-map-wrap { display: none !important; }

  /* Ansicht „Karte“: Liste, Legende, Paginierung, Melden-Kasten aus; Karte füllt den Rest unter Kopf + Leiste */
  body.nbf-mapview .app-container .poi-list-container,
  body.nbf-mapview .app-container .nbf-map-report-hint { display: none !important; }
  body.nbf-mapview .app-container .nbf-mobile-map-wrap { display: block !important; }
  body.nbf-mapview .app-container .nbf-mobile-map-placeholder {
    height: calc(100vh - var(--nbf-mapview-off, 120px)) !important;
    height: calc(100dvh - var(--nbf-mapview-off, 120px)) !important;
    padding: 0 !important;
  }
  html.nbf-mapview, html.nbf-mapview body { overflow: hidden !important; overscroll-behavior: none; }
  body.nbf-mapview .app-container .nbf-map-scroll-overlay { display: none !important; } /* Vollbild: ein Finger verschiebt */

  /* „Eintrag fehlt?“ unten links (über der Quellenangabe) */
  body.nbf-mapview .app-container .nbf-map-missing-btn {
    display: inline-flex; position: absolute; left: 12px; bottom: calc(var(--nbf-attr-h, 18px) + 10px); z-index: 1000;
    align-items: center; gap: .375rem; min-height: 44px; margin: 0; padding: 0 .875rem !important;
    border: 1.5px solid #83919e !important; border-radius: 9999px !important; background: #fff !important; color: #00264d !important;
    font-family: inherit; font-size: .875rem !important; font-weight: 600 !important; box-shadow: 0 4px 14px rgba(0,38,77,.16) !important; cursor: pointer;
  }
  body.nbf-mapview .app-container .nbf-map-missing-btn[hidden] { display: none !important; }
  body.nbf-mapview .app-container .nbf-map-missing-btn svg { color: #006564; }
  body.nbf-mapview .app-container .nbf-map-missing-btn:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px !important; }

  /* Bottom-Sheet (statt Leaflet-Popup): unten 12 px bzw. über dem Ally-Button, Radius 20, max. 60 %, scrollbar */
  body.nbf-mapview .app-container .nbf-place-sheet {
    display: block; position: absolute; left: 12px; right: 12px; bottom: var(--nbf-sheet-bottom, 12px); z-index: 1100;
    max-height: 60%; overflow-y: auto; overscroll-behavior: contain; box-sizing: border-box;
    padding: 6px 16px 16px; border-radius: 20px; background: #fff; color: #13283d;
    box-shadow: 0 -4px 24px rgba(0,38,77,.18), 0 2px 6px rgba(0,38,77,.08);
  }
  body.nbf-mapview .app-container .nbf-place-sheet[hidden] { display: none !important; }
  .app-container .nbf-place-sheet__grip { display: block; width: 40px; height: 4px; margin: 2px auto 10px; border-radius: 2px; background: #c3ced8; }
  .app-container .nbf-place-sheet .map-popup-close { position: absolute !important; }
  .app-container .nbf-place-sheet .map-popup-head { padding-right: 44px; }
  .app-container .nbf-place-sheet .map-popup-title:focus { outline: none; }
  .app-container .nbf-place-sheet .map-popup-title:focus-visible { outline: 3px solid #00264d !important; outline-offset: 2px !important; }
  .app-container .nbf-place-sheet__actions { display: flex; align-items: stretch; gap: 8px; margin-top: 14px; }
  .app-container .nbf-place-sheet__actions .map-popup-btn { flex: 1 1 auto; width: auto !important; margin: 0 !important; }
  .app-container .nbf-place-sheet__report,
  [class*="elementor-kit"] .app-container .nbf-place-sheet__report {
    flex: 0 0 44px; width: 44px; min-height: 44px; margin: 0; padding: 0 !important; display: grid; place-items: center;
    border: 1.5px solid #83919e !important; border-radius: 12px !important; background: #fff !important; color: #00264d !important; box-shadow: none !important; cursor: pointer;
  }
  .app-container .nbf-place-sheet__report:hover { border-color: #006564 !important; color: #006564 !important; }
  .app-container .nbf-place-sheet__report:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px !important; }
  /* Kartenansicht: Fokus nie unter der Leiste */
  html.nbf-mapview { scroll-padding-top: var(--nbf-mapview-off, 0px); }
}
@media (max-width: 768px) and (prefers-reduced-motion: no-preference) {
  body.nbf-mapview .app-container .nbf-place-sheet:not([hidden]) { animation: nbf-sheet-in .18s ease-out; }
}
@keyframes nbf-sheet-in { from { transform: translateY(16px); opacity: 0; } to { transform: none; opacity: 1; } }
@media (max-width: 768px) and (forced-colors: active) {
  .app-container .nbf-view-switch { border-color: CanvasText; }
  .app-container .nbf-view-btn[aria-pressed="true"] { forced-color-adjust: none; background: Highlight !important; color: HighlightText !important; }
  body.nbf-mapview .app-container .nbf-place-sheet { border: 1px solid CanvasText; }
  body.nbf-mapview .app-container .nbf-map-missing-btn, .app-container .nbf-place-sheet__report { border-color: ButtonText !important; }
}

/* 2.7.24 T-117 (E-79): Ortsseite modernisiert – Kopf als Karte, Überblick in Ampelfarben, Akkordeons mit Pillen,
   Inhaber/Melden als zwei Karten, Seitenleiste (Standort mit „Auf Inselkarte“, Kontaktzeilen). Daten/Texte unverändert. */
.nbf-single-wrap.nbf-d { color: #13283d; }
.nbf-d .nbf-d-head { max-width: 1200px; margin: 0 auto; padding: 16px 1.5rem 0; box-sizing: content-box; } /* bündig mit .page-content */
.nbf-d .page-content { padding-top: 2rem !important; }
/* „Zurück zur Übersicht“ oben */
.nbf-d .nbf-d-back,
[class*="elementor-kit"] .nbf-d .nbf-d-back {
  display: inline-flex; align-items: center; gap: 6px; min-height: 44px; margin: 0 0 8px;
  color: #00264d !important; font-size: 15px; font-weight: 600; text-decoration: underline !important; text-underline-offset: 3px;
}
.nbf-d .nbf-d-back:hover { color: #006564 !important; }
.nbf-d .nbf-d-back:focus-visible { outline: 3px solid #00264d !important; outline-offset: 2px !important; border-radius: 4px; }

/* Kopf: Karte 120 | 1fr | auto */
.nbf-d .nbf-d-hero {
  display: grid; grid-template-columns: 120px minmax(0, 1fr) auto; align-items: center; gap: 24px;
  padding: 24px; background: #fff; border: 1px solid #d5dde5; border-radius: 20px; box-sizing: border-box;
}
.nbf-d .nbf-d-hero__media { width: 120px; height: 120px; }
.nbf-d .nbf-d-hero__img { display: block; width: 120px; height: 120px; object-fit: cover; border-radius: 28px; }
.nbf-d .nbf-d-hero__tile { display: grid; place-items: center; width: 120px; height: 120px; border-radius: 28px; background: #e6f2f2; color: #006564; }
.nbf-d .nbf-d-hero__tile svg { width: 56px !important; height: 56px !important; stroke: currentColor; }
.nbf-d .nbf-d-hero__info { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.nbf-d .nbf-d-hero__cat { margin: 0 !important; color: #006564 !important; font-size: 15px; font-weight: 600; line-height: 1.35; text-transform: none; letter-spacing: 0; }
.nbf-d .nbf-d-hero__title,
[class*="elementor-kit"] .nbf-d .nbf-d-hero__title {
  margin: 0 !important; color: #00264d !important; font-family: inherit !important; font-size: 36px !important; font-weight: 700 !important;
  line-height: 1.15 !important; letter-spacing: -.01em; overflow-wrap: anywhere; hyphens: auto;
}
.nbf-d .nbf-d-hero__address { display: flex; align-items: flex-start; gap: 6px; margin: 2px 0 0; color: #4a5b6b; font-size: 15px; font-style: normal; line-height: 1.4; }
.nbf-d .nbf-d-hero__address svg { flex: 0 0 auto; margin-top: 2px; }
.nbf-d .nbf-d-ampel { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
.nbf-d .nbf-d-ampel__icon { position: relative; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; box-sizing: border-box; }
.nbf-d .nbf-d-ampel__icon > svg { width: 22px !important; height: 22px !important; }
.nbf-d .nbf-d-ampel__icon--ok    { background: #dff1e6; color: #1d6b42; }
.nbf-d .nbf-d-ampel__icon--hilfe { background: #fdefcf; color: #a26a00; }
.nbf-d .nbf-d-ampel__icon--nein  { background: #fbe3e1; color: #a1251c; }
.nbf-d .nbf-d-ampel__icon--na    { background: #eef3f6; color: #4a5b6b; }
/* Statuszeichen (wie Inselkarte) */
.nbf-d .nbf-status { position: absolute; right: -5px; bottom: -5px; width: 18px; height: 18px; box-sizing: border-box; border: 2px solid #fff; border-radius: 50%; display: grid; place-items: center; color: #fff; }
.nbf-d .nbf-status svg { width: 10px !important; height: 10px !important; display: block; }
.nbf-d .nbf-status--ok { background: #1d6b42; }
.nbf-d .nbf-status--hilfe { background: #a26a00; }
.nbf-d .nbf-status--nein { background: #a1251c; }
.nbf-d .nbf-status--na { background: #5b6b7b; }
.nbf-d .nbf-d-hero__actions { display: flex; flex-direction: column; gap: 10px; min-width: 200px; }
.nbf-d .nbf-d-quick { display: none; }

/* Buttons */
.nbf-d .nbf-d-btn,
[class*="elementor-kit"] .nbf-d .nbf-d-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; margin: 0; padding: .375rem 1.125rem !important;
  border-radius: 12px !important; font-family: inherit; font-size: 15px !important; font-weight: 700 !important; line-height: 1.25;
  text-decoration: none !important; text-align: center; cursor: pointer; box-shadow: none !important; box-sizing: border-box; white-space: normal;
}
.nbf-d .nbf-d-btn svg { flex: 0 0 auto; }
.nbf-d .nbf-d-btn--primary,
[class*="elementor-kit"] .nbf-d .nbf-d-btn--primary { background: #006564 !important; border: 0 !important; color: #fff !important; }
.nbf-d .nbf-d-btn--primary:hover { background: #004c4b !important; color: #fff !important; }
.nbf-d .nbf-d-btn--secondary,
[class*="elementor-kit"] .nbf-d .nbf-d-btn--secondary { background: #fff !important; border: 1.5px solid #83919e !important; color: #00264d !important; }
.nbf-d .nbf-d-btn--secondary:hover { border-color: #006564 !important; color: #006564 !important; background: #fff !important; }
.nbf-d .nbf-d-btn:focus-visible, .nbf-d .nbf-d-quick__btn:focus-visible, .nbf-d .nbf-d-linkbtn:focus-visible,
.nbf-d .nbf-d-contact__link:focus-visible { outline: 3px solid #00264d !important; outline-offset: 3px !important; }

/* Abschnitte */
.nbf-d .nbf-d-section { margin-bottom: 2.5rem; }
.nbf-d .nbf-d-h2,
[class*="elementor-kit"] .nbf-d h2.nbf-d-h2 { margin: 0 0 1rem !important; color: #00264d !important; font-size: 1.625rem !important; font-weight: 700 !important; line-height: 1.25 !important; }

/* Zugänglichkeit im Überblick: 2 × 2 */
.nbf-d .nbf-d-overview { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0 !important; padding: 0 !important; list-style: none !important; }
.nbf-d .nbf-d-ov { display: flex; align-items: flex-start; gap: 14px; margin: 0 !important; padding: 16px; background: #fff; border: 1px solid #d5dde5; border-radius: 16px; }
.nbf-d .nbf-d-ov::before { content: none !important; }
.nbf-d .nbf-d-ov__tile { position: relative; flex: 0 0 56px; display: grid; place-items: center; width: 56px; height: 56px; border-radius: 16px; }
.nbf-d .nbf-d-ov__tile > svg { width: 28px !important; height: 28px !important; }
.nbf-d .nbf-d-ov__tile .nbf-status { width: 22px; height: 22px; right: -6px; bottom: -6px; }
.nbf-d .nbf-d-ov__tile .nbf-status svg { width: 12px !important; height: 12px !important; }
.nbf-d .nbf-d-ov--ok .nbf-d-ov__tile    { background: #dff1e6; color: #1d6b42; }
.nbf-d .nbf-d-ov--hilfe .nbf-d-ov__tile { background: #fdefcf; color: #a26a00; }
.nbf-d .nbf-d-ov--nein .nbf-d-ov__tile  { background: #fbe3e1; color: #a1251c; }
.nbf-d .nbf-d-ov--na .nbf-d-ov__tile    { background: #eef3f6; color: #4a5b6b; }
.nbf-d .nbf-d-ov__text { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.nbf-d .nbf-d-ov__title,
[class*="elementor-kit"] .nbf-d h3.nbf-d-ov__title { -webkit-hyphens: auto; hyphens: auto; overflow-wrap: anywhere; margin: 0 !important; color: #00264d !important; font-family: inherit !important; font-size: 16px !important; font-weight: 700 !important; line-height: 1.3 !important; }
.nbf-d .nbf-d-ov__sub { display: block; color: #4a5b6b; font-size: 14px; font-weight: 500; }
.nbf-d .nbf-d-ov__status { font-size: 14px; font-weight: 600; line-height: 1.35; }
.nbf-d .nbf-d-ov--ok .nbf-d-ov__status    { color: #1d6b42; }
.nbf-d .nbf-d-ov--hilfe .nbf-d-ov__status { color: #7a4f00; }
.nbf-d .nbf-d-ov--nein .nbf-d-ov__status  { color: #a1251c; }
.nbf-d .nbf-d-ov--na .nbf-d-ov__status    { color: #4a5b6b; }
.nbf-d .nbf-d-ov__hint { color: #4a5b6b; font-size: 13px; line-height: 1.4; }
.nbf-d .nbf-d-ov__short { display: none; }

/* Barrierefreiheit im Detail: Legende neben der H2 */
.nbf-d .nbf-d-detail-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 20px; margin-bottom: 1rem; }
.nbf-d .nbf-d-detail-head .nbf-d-h2 { margin: 0 !important; }
.nbf-d .nbf-d-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 0 !important; padding: 0 !important; list-style: none !important; color: #4a5b6b; font-size: 13px; }
.nbf-d .nbf-d-legend li { display: inline-flex; align-items: center; gap: 6px; margin: 0 !important; padding: 0 !important; }
.nbf-d .nbf-d-legend li::before { content: none !important; }
.nbf-d .nbf-d-legend .nbf-d-dot { width: 18px; height: 18px; flex-basis: 18px; }
/* Ampelpunkt mit Zeichen */
.nbf-d .nbf-d-dot { flex: 0 0 22px; display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; color: #fff; }
.nbf-d .nbf-d-dot .nbf-status { position: static; width: auto; height: auto; border: 0; background: transparent !important; }
.nbf-d .nbf-d-dot .nbf-status svg { width: 12px !important; height: 12px !important; }
.nbf-d .nbf-d-dot--ok { background: #1d6b42; }
.nbf-d .nbf-d-dot--hilfe { background: #a26a00; }
.nbf-d .nbf-d-dot--nein { background: #a1251c; }
.nbf-d .nbf-d-dot--na { background: #5b6b7b; }

/* Akkordeons */
.nbf-d .nbf-d-acc,
.nbf-d .accordion.nbf-d-acc { margin: 0 0 12px !important; padding: 0 !important; background: #fff !important; border: 1px solid #d5dde5 !important; border-radius: 16px !important; box-shadow: none !important; overflow: visible !important; }
.nbf-d .nbf-d-acc__heading { margin: 0 !important; padding: 0 !important; font-size: inherit !important; }
.nbf-d .nbf-d-acc__btn,
[class*="elementor-kit"] .nbf-d .nbf-d-acc__btn {
  display: grid; grid-template-columns: 44px minmax(0, 1fr) auto 20px; align-items: center; gap: 14px; width: 100%; min-height: 72px;
  margin: 0; padding: 14px 18px !important; background: transparent !important; border: 0 !important; border-radius: 16px !important;
  color: #00264d !important; font-family: inherit; text-align: left; cursor: pointer; box-shadow: none !important;
}
.nbf-d .nbf-d-acc__btn:hover { background: #f5f8fa !important; }
.nbf-d .nbf-d-acc__btn:focus-visible { outline: 3px solid #00264d !important; outline-offset: 2px !important; }
.nbf-d .nbf-d-acc__icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; background: #e6f2f2; color: #006564; }
.nbf-d .nbf-d-acc__icon svg { width: 22px !important; height: 22px !important; stroke: currentColor; }
.nbf-d .nbf-d-acc__title { color: #00264d; font-size: 18px; font-weight: 700; line-height: 1.3; overflow-wrap: anywhere; }
.nbf-d .nbf-d-acc__chevron { grid-column: -2; color: #00264d; transition: transform .2s; } /* auch ohne Pille in der letzten Spalte */
.nbf-d .nbf-d-acc__btn[aria-expanded="true"] .nbf-d-acc__chevron { transform: rotate(180deg); }
.nbf-d .nbf-d-pill { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px 4px 5px; border-radius: 999px; font-size: 13px; font-weight: 700; line-height: 1.2; white-space: nowrap; }
.nbf-d .nbf-d-pill .nbf-status { position: static; width: 18px; height: 18px; border: 0; }
.nbf-d .nbf-d-pill--ok    { background: #dff1e6; color: #1d6b42; }
.nbf-d .nbf-d-pill--hilfe { background: #fdefcf; color: #7a4f00; }
.nbf-d .nbf-d-pill--nein  { background: #fbe3e1; color: #a1251c; }
.nbf-d .nbf-d-pill--na    { background: #eef3f6; color: #4a5b6b; }
.nbf-d .nbf-d-acc__body { display: block !important; padding: 2px 18px 20px 94px !important; border: 0 !important; }
.nbf-d .nbf-d-acc__body[hidden] { display: none !important; }
.nbf-d .nbf-d-crit { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 24px; margin: 0 !important; padding: 0 !important; list-style: none !important; }
.nbf-d .nbf-d-crit__item { display: flex; align-items: flex-start; gap: 10px; margin: 0 !important; padding: 0 !important; color: #13283d; font-size: 15px; line-height: 1.45; }
.nbf-d .nbf-d-crit__item::before { content: none !important; }
.nbf-d .nbf-d-crit__item .nbf-d-dot { margin-top: 1px; }
.nbf-d .nbf-d-acc__body .sub-categories { display: grid; gap: 18px; margin-top: 4px; }
.nbf-d .nbf-d-acc__body .nbf-d-crit + .sub-categories { margin-top: 18px; }
.nbf-d .nbf-d-acc__body .sub-categories + .sub-categories { margin-top: 18px; }
.nbf-d .nbf-d-acc__body .sub-headline,
[class*="elementor-kit"] .nbf-d .nbf-d-acc__body h4.sub-headline { margin: 0 0 8px !important; color: #00264d !important; font-size: 15px !important; font-weight: 700 !important; }
.nbf-d .nbf-d-acc__body .explanation-box { margin: 0 0 10px; padding: 12px 14px; border: 0; border-radius: 12px; background: #f5f8fa; }
.nbf-d .nbf-d-note { margin-top: 16px !important; }
.nbf-d .nbf-d-note__text { margin: 0; color: #13283d; font-size: 14px; line-height: 1.5; }
.nbf-d .nbf-d-acc-all { margin-top: 4px; }
.nbf-d .nbf-d-linkbtn,
[class*="elementor-kit"] .nbf-d .nbf-d-linkbtn {
  min-height: 44px; margin: 0; padding: 0 4px !important; background: transparent !important; border: 0 !important; box-shadow: none !important;
  color: #00264d !important; font-family: inherit; font-size: 15px !important; font-weight: 600 !important; text-decoration: underline; text-underline-offset: 3px; cursor: pointer;
}

/* Inhaber / Melden: zwei ruhige Karten */
.nbf-d .nbf-d-cta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-bottom: 2rem; }
.nbf-d .nbf-d-cta .report-section.nbf-d-cta__card {
  display: flex !important; flex-direction: column !important; align-items: flex-start !important; gap: 12px !important; margin: 0 !important;
  padding: 20px !important; background: #fff !important; border: 1px solid #d5dde5 !important; border-radius: 16px !important; color: #13283d !important; box-shadow: none !important; text-align: left !important;
}
.nbf-d .nbf-d-cta .nbf-d-cta__card--owner { border: 1.5px solid #9fcfcd !important; }
.nbf-d .nbf-d-cta__icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; background: #e6f2f2; color: #006564; }
.nbf-d .nbf-d-cta .report-title,
[class*="elementor-kit"] .nbf-d .nbf-d-cta h3.report-title { margin: 0 0 4px !important; color: #00264d !important; font-size: 17px !important; font-weight: 700 !important; }
.nbf-d .nbf-d-cta .report-text { margin: 0 !important; color: #4a5b6b !important; font-size: 14px !important; line-height: 1.5; }
.nbf-d .nbf-d-cta .nbf-d-btn { margin-top: auto; min-height: 44px; }

/* Seitenleiste */
.nbf-d .nbf-d-side .sidebar-card-title svg { color: #006564; }
.nbf-d .nbf-detail-map-wrap { border-radius: 14px; overflow: hidden; }
.nbf-d .nbf-detail-map,
.nbf-d #nbf-mini-map { height: 200px !important; border-radius: 14px; }
.nbf-d #nbf-mini-map .leaflet-control-attribution { color: #4a5b6b; font-size: 11px; }
.nbf-d .nbf-d-map-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.nbf-d .nbf-d-map-actions .nbf-d-btn { flex: 1 1 140px; min-height: 48px; padding-left: .75rem !important; padding-right: .75rem !important; white-space: nowrap; }
.nbf-d .back-section .btn-back { width: 100%; box-sizing: border-box; }
.nbf-d .nbf-d-contact { margin: 0 !important; padding: 0 !important; list-style: none !important; }
.nbf-d .nbf-d-contact li { margin: 0 !important; padding: 0 !important; border-bottom: 1px solid #d5dde5; }
.nbf-d .nbf-d-contact li:last-child { border-bottom: 0; }
.nbf-d .nbf-d-contact li::before { content: none !important; }
.nbf-d .nbf-d-contact__link,
[class*="elementor-kit"] .nbf-d .nbf-d-contact__link { display: flex; align-items: center; gap: 12px; min-height: 56px; padding: 8px 4px; text-decoration: none !important; color: #00264d !important; }
.nbf-d .nbf-d-contact__link:hover .nbf-d-contact__main { text-decoration: underline; }
.nbf-d .nbf-d-contact__icon { flex: 0 0 40px; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: #e6f2f2; color: #006564; }
.nbf-d .nbf-d-contact__text { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.nbf-d .nbf-d-contact__main { color: #00264d; font-size: 15px; font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.nbf-d .nbf-d-contact__sub { color: #4a5b6b; font-size: 13px; line-height: 1.3; }
.nbf-d .nbf-d-ext { flex: 0 0 auto; color: #4a5b6b; }
.nbf-d .nbf-d-muted { color: #4a5b6b; font-size: .875rem; }
/* Minikarte: Tropfen Navy mit weißem Ring (wie Inselkarte 2.7.21) */
.nbf-d .nbf-mini-pin { background: transparent !important; border: 0 !important; }
.nbf-d .nbf-mini-pin .nbf-custom-marker { position: relative; width: 44px !important; height: 50px; display: block !important; filter: drop-shadow(0 2px 4px rgba(0,38,77,.35)); }
.nbf-d .nbf-mini-pin .nbf-custom-marker__circle {
  position: absolute; left: 4px; top: 4px; width: 36px !important; height: 36px !important; min-width: 36px !important; min-height: 36px !important;
  border-radius: 50% 50% 50% 0 !important; transform: rotate(-45deg); background: #00264d !important; border: 3px solid #fff !important; box-shadow: none !important;
  display: flex !important; align-items: center; justify-content: center;
}
.nbf-d .nbf-mini-pin .nbf-custom-marker__circle svg { width: 17px !important; height: 17px !important; min-width: 17px !important; min-height: 17px !important; transform: rotate(45deg); stroke: #fff !important; }
.nbf-d .nbf-mini-pin .nbf-custom-marker__tip { display: none !important; }

/* Tablet/kleiner Laptop ≤ 1279: Seitenleiste unter dem Inhalt */
@media (max-width: 1279px) {
  .nbf-d .content-grid { display: flex !important; flex-direction: column; align-items: stretch !important; gap: 2rem; }
  .nbf-d .main-column { order: 1; min-width: 0; }
  .nbf-d .sidebar.nbf-d-side { order: 2; width: 100% !important; max-width: none !important; align-items: start; position: static !important; display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; padding: 0; }
  .nbf-d .sidebar.nbf-d-side .back-section { grid-column: 1 / -1; }
}
/* ≤ 1024: Aktionen unter die Angaben */
@media (max-width: 1024px) {
  .nbf-d .nbf-d-hero { grid-template-columns: 120px minmax(0, 1fr); }
  .nbf-d .nbf-d-hero__actions { grid-column: 2; flex-direction: row; flex-wrap: wrap; min-width: 0; }
  .nbf-d .nbf-d-hero__actions .nbf-d-btn { flex: 1 1 160px; }
}
/* Smartphone ≤ 768 */
@media (max-width: 768px) {
  .nbf-d .nbf-d-head { padding: 8px 1rem 0; }
  .nbf-d .nbf-d-hero { grid-template-columns: 64px minmax(0, 1fr); column-gap: 14px; row-gap: 6px; align-items: center; padding: 16px; border-radius: 18px; }
  .nbf-d .nbf-d-hero__media { grid-column: 1; grid-row: 1 / span 2; width: 64px; height: 64px; align-self: center; }
  .nbf-d .nbf-d-hero__img, .nbf-d .nbf-d-hero__tile { width: 64px; height: 64px; border-radius: 18px; }
  .nbf-d .nbf-d-hero__tile svg { width: 32px !important; height: 32px !important; }
  .nbf-d .nbf-d-hero__info { display: contents; }
  .nbf-d .nbf-d-hero__cat { grid-column: 2; grid-row: 1; align-self: end; font-size: 14px; }
  .nbf-d .nbf-d-hero__title,
  [class*="elementor-kit"] .nbf-d .nbf-d-hero__title { grid-column: 2; grid-row: 2; align-self: start; font-size: 24px !important; }
  .nbf-d .nbf-d-hero__address { grid-column: 1 / -1; grid-row: 3; margin-top: 6px; }
  .nbf-d .nbf-d-ampel { grid-column: 1 / -1; grid-row: 4; }
  .nbf-d .nbf-d-hero__actions { display: none; }
  .nbf-d .nbf-d-quick { grid-column: 1 / -1; grid-row: 5; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 8px; margin-top: 10px; }
  .nbf-d .nbf-d-quick__btn,
  [class*="elementor-kit"] .nbf-d .nbf-d-quick__btn {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 64px; margin: 0; padding: 8px 4px !important;
    background: #fff !important; border: 1.5px solid #83919e !important; border-radius: 14px !important; box-shadow: none !important;
    color: #00264d !important; font-family: inherit; font-size: 14px !important; font-weight: 700 !important; line-height: 1.2; text-decoration: none !important; text-align: center; cursor: pointer;
  }
  .nbf-d .nbf-d-quick__btn--primary,
  [class*="elementor-kit"] .nbf-d .nbf-d-quick__btn--primary { background: #006564 !important; border-color: #006564 !important; color: #fff !important; }
  .nbf-d .page-content { padding-top: 1.5rem !important; }
  .nbf-d .nbf-d-h2,
  [class*="elementor-kit"] .nbf-d h2.nbf-d-h2 { font-size: 1.375rem !important; }
  /* Überblick 2 × 2 kompakt: Symbol oben, Titel kurz, Status */
  .nbf-d .nbf-d-overview { gap: 10px; }
  .nbf-d .nbf-d-ov { flex-direction: column; gap: 10px; padding: 14px; }
  .nbf-d .nbf-d-ov__tile { flex-basis: auto; width: 48px; height: 48px; }
  .nbf-d .nbf-d-ov__long { display: none; }
  .nbf-d .nbf-d-ov__short { display: inline; }
  .nbf-d .nbf-d-ov__title,
  [class*="elementor-kit"] .nbf-d h3.nbf-d-ov__title { font-size: 15px !important; }
  /* Akkordeon: Pille unter dem Titel */
  .nbf-d .nbf-d-acc__btn,
  [class*="elementor-kit"] .nbf-d .nbf-d-acc__btn { grid-template-columns: 44px minmax(0, 1fr) 20px; grid-template-areas: "icon title chev" "icon pill chev"; row-gap: 6px; padding: 14px !important; }
  .nbf-d .nbf-d-acc__icon { grid-area: icon; }
  .nbf-d .nbf-d-acc__title { grid-area: title; font-size: 17px; }
  .nbf-d .nbf-d-pill { grid-area: pill; justify-self: start; white-space: normal; }
  .nbf-d .nbf-d-acc__chevron { grid-area: chev; }
  .nbf-d .nbf-d-acc__body { padding: 2px 16px 18px !important; }
  .nbf-d .nbf-d-crit { grid-template-columns: minmax(0, 1fr); }
  .nbf-d .nbf-d-cta { grid-template-columns: minmax(0, 1fr); }
  .nbf-d .sidebar.nbf-d-side { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
  .nbf-d .nbf-d-acc__chevron { transition: none; }
}
@media (forced-colors: active) {
  .nbf-d .nbf-d-dot, .nbf-d .nbf-d-ampel__icon, .nbf-d .nbf-d-ov__tile, .nbf-d .nbf-d-pill .nbf-status, .nbf-d .nbf-status,
  .nbf-d .nbf-mini-pin .nbf-custom-marker { forced-color-adjust: none; }
  .nbf-d .nbf-d-hero, .nbf-d .nbf-d-ov, .nbf-d .nbf-d-acc, .nbf-d .nbf-d-cta__card { border: 1px solid CanvasText !important; }
  .nbf-d .nbf-d-pill { border: 1px solid CanvasText; }
  .nbf-d .nbf-d-btn, .nbf-d .nbf-d-quick__btn { border: 2px solid ButtonText !important; }
}

/* 2.7.24 T-114: Inselkarte Smartphone – Ally im Bottom-Sheet, Quellenangabe nicht unter Ally (200 %) */
@media (max-width: 768px) {
  body.nbf-mapview .app-container .nbf-place-sheet.nbf-sheet--ally-pad .nbf-place-sheet__actions { padding-right: 88px; } /* Ally nicht erkannt: 72 × 72 + 16 */
  body.nbf-mapview .app-container .leaflet-bottom.leaflet-left .leaflet-control-attribution { max-width: calc(100vw - var(--nbf-ally-w, 88px) - 12px); white-space: normal; }
}

/* 2.7.25 T-118 (E-79, E-80): Fixes Ortsseite nach 2.7.24 + Suchfeld leeren */
/* 1 · Löschen-Button „×“ in den Suchfeldern: Trefferfläche 44 × 44, sichtbar 28 px, links vom Mikrofon; nur mit Text */
.nbf-search-clear,
[class*="elementor-kit"] .nbf-search-clear {
  position: absolute !important; top: 50% !important; right: var(--nbf-clear-r, 4px) !important; transform: translateY(-50%) !important; z-index: 3;
  display: none; place-items: center; width: 44px !important; height: 44px !important; min-width: 44px; margin: 0 !important; padding: 0 !important;
  background: transparent !important; border: 0 !important; border-radius: 50% !important; box-shadow: none !important; color: #00264d !important; cursor: pointer;
}
.nbf-search-clear::before { content: ''; position: absolute; inset: 8px; border-radius: 50%; background: transparent; transition: background-color .15s; }
.nbf-search-clear:hover::before { background: #e6f2f2; }
.nbf-search-clear svg { position: relative; width: 18px !important; height: 18px !important; max-width: none !important; stroke: currentColor !important; }
.nbf-search-clear:focus-visible { outline: 3px solid #00264d !important; outline-offset: -3px !important; }
.search-input-wrapper:has(> input:not(:placeholder-shown)) > .nbf-search-clear,
.hhs-sw:has(> input:not(:placeholder-shown)) > .nbf-search-clear { display: grid; }
/* Lage: neben dem Mikrofon (falls vorhanden) */
.search-input-wrapper:has(> .voice-search-btn:not([hidden])) { --nbf-clear-r: 40px; }
.hhs-sw { --nbf-clear-r: 6px; }
.hhs-sw:has(> .hhs-vbtn:not([hidden])) { --nbf-clear-r: 52px; }
/* Platzhalter/Text nie unter dem Button: rechter Innenabstand nur, solange Text da ist */
.search-input-wrapper > input.search-input:not(:placeholder-shown),
[class*="elementor-kit"] .app-container .search-input-wrapper > input.search-input:not(:placeholder-shown) { padding-right: calc(var(--nbf-clear-r, 4px) + 48px) !important; }
#nbf-search:not(:placeholder-shown), #nbf-search-mobile:not(:placeholder-shown),
.app-container .filter-sidebar .search-input-wrapper input#nbf-search[type="search"]:not(:placeholder-shown) { padding-right: calc(var(--nbf-clear-r, 4px) + 48px) !important; } /* ID: gegen ältere Regeln */
.nbf-home-search-wrap .home-hero-search .hhs-sw > input[type=text]:not(:placeholder-shown) { padding-right: calc(var(--nbf-clear-r, 6px) + 48px) !important; }
#hhs-search-input:not(:placeholder-shown) { padding-right: calc(var(--nbf-clear-r, 6px) + 48px) !important; }
/* native Browser-Kreuze aus (sonst doppelt) */
#nbf-search::-webkit-search-cancel-button,
.nbf-mobile-search::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; display: none; }
@media (forced-colors: active) { .nbf-search-clear { color: ButtonText !important; } .nbf-search-clear:hover::before { background: Highlight; } }
@media (prefers-reduced-motion: reduce) { .nbf-search-clear::before { transition: none; } }

/* 1 · „Auf Inselkarte“: zugehörige Ergebniskarte 2 s hervorheben (Rahmen Teal) */
.app-container #nbf-results .poi-card.nbf-card-flash { border-color: #006564 !important; box-shadow: 0 0 0 3px #006564 !important; }
@media (prefers-reduced-motion: no-preference) {
  .app-container #nbf-results .poi-card { transition: border-color .3s, box-shadow .3s; }
}

/* 2 · Merkmal-Listen: kein Einzug unter der Icon-Spalte, Trennlinie, Panel transparent, Freitext als Definitionszeile */
.nbf-d .nbf-d-acc__body,
.nbf-d .accordion .nbf-d-acc__body { margin: 0 18px !important; padding: 14px 0 18px !important; border-top: 1px solid #e1e7ec !important; background: transparent !important; box-shadow: none !important; }
.nbf-d .nbf-d-crit { gap: 10px 28px; }
.nbf-d .nbf-d-crit__item { font-size: 15px; line-height: 1.45; }
.nbf-d .nbf-d-acc__body .explanation-box { border: 0 !important; border-left: 0 !important; box-shadow: none !important; }
.nbf-d .nbf-d-acc__body .nbf-d-note { margin: 14px 0 0 !important; padding: 12px 16px !important; background: #f5f8fa !important; border: 0 !important; border-radius: 12px !important; }
.nbf-d .nbf-d-acc__body .nbf-d-note .explanation-title { margin: 0 0 2px !important; color: #4a5b6b !important; font-size: 13px !important; font-weight: 600 !important; line-height: 1.4; }
.nbf-d .nbf-d-acc__body .nbf-d-note .nbf-d-note__text { color: #00264d !important; font-size: 15px !important; line-height: 1.45; }

/* 3 · Lange Wörter umbrechen (Seite lang="de") – Titel, Labels, Kontakt, Kacheln, Karten, Sheet, Ergebniskarten */
.nbf-d .nbf-d-acc__btn,
[class*="elementor-kit"] .nbf-d .nbf-d-acc__btn { grid-template-columns: 44px minmax(0, 1fr) auto 20px; white-space: normal !important; }
.nbf-d .nbf-d-acc__title,
.nbf-d .nbf-d-hero__cat, .nbf-d .nbf-d-hero__title, .nbf-d .nbf-d-hero__address,
.nbf-d .nbf-d-ov__title, .nbf-d .nbf-d-ov__status, .nbf-d .nbf-d-ov__hint,
.nbf-d .nbf-d-crit__item, .nbf-d .sub-headline, .nbf-d .explanation-box, .nbf-d .nbf-d-note__text,
.nbf-d .report-title, .nbf-d .report-text, .nbf-d .nbf-d-btn, .nbf-d .nbf-d-quick__btn,
.nbf-d .nbf-d-contact__main, .nbf-d .nbf-d-contact__sub, .nbf-d .sidebar-card-title,
.app-container .nbf-place-sheet .map-popup-title, .app-container .nbf-place-sheet .map-popup-cat, .app-container .nbf-place-sheet .map-popup-address,
.app-container #nbf-results .poi-card-title, .app-container #nbf-results .poi-card-category, .app-container #nbf-results .poi-card-address {
  min-width: 0; overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto; white-space: normal !important;
}
.nbf-d .nbf-d-ov__text, .nbf-d .nbf-d-contact__text, .nbf-d .report-content, .nbf-d .nbf-d-hero__info { min-width: 0; }
.nbf-d .nbf-d-pill { max-width: 100%; white-space: normal; }
@media (max-width: 768px) {
  .nbf-d .nbf-d-acc__btn,
  [class*="elementor-kit"] .nbf-d .nbf-d-acc__btn { grid-template-columns: 44px minmax(0, 1fr) 20px; }
  .nbf-d .nbf-d-acc__body,
  .nbf-d .accordion .nbf-d-acc__body { margin: 0 14px !important; padding: 12px 0 16px !important; }
}

/* 2.7.28 T-121 (E-83): Ortsseite – Navy-Anker „Überblick“ (Variante B), Teal-Kante am Kopf, Navy-Kartenköpfe.
   Nur CSS; Navy #00264d, Teal #006564, Tint #e6f2f2, Akzentstrich #4fb3b1 (nur Deko). Ampel unverändert. */
/* 1 · Kopfkarte: linke Kante 6 px Teal innerhalb des Radius */
.nbf-d .nbf-d-hero { box-shadow: inset 6px 0 0 #006564; }
/* 2 · „Zugänglichkeit im Überblick“ als Navy-Karte */
.nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] { padding: 24px; background: #00264d; border: 1px solid #00264d; border-radius: 20px; }
.nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-h2,
[class*="elementor-kit"] .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] h2.nbf-d-h2 { color: #fff !important; }
.nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-h2::after {
  content: ''; display: block; width: 40px; height: 4px; margin-top: 8px; border-radius: 2px; background: #4fb3b1;
}
.nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-ov { background: #fff; border: 0; border-radius: 14px; box-shadow: 0 2px 0 rgba(0,0,0,.15); }
.nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] :focus-visible { outline: 3px solid #fff !important; outline-offset: 2px !important; box-shadow: 0 0 0 7px #00264d !important; }
/* 3 · Seitenleiste: Kartenköpfe als Navy-Balken (Überschrift bleibt h3) */
.nbf-d .nbf-d-side .sidebar-card { overflow: hidden; }
.nbf-d .nbf-d-side .sidebar-card-header { padding: 12px 16px !important; background: #00264d; border-bottom: 0 !important; }
.nbf-d .nbf-d-side .sidebar-card-title,
[class*="elementor-kit"] .nbf-d .nbf-d-side h3.sidebar-card-title { margin: 0 !important; color: #fff !important; font-size: 16px !important; font-weight: 700 !important; }
.nbf-d .nbf-d-side .sidebar-card-title svg,
[class*="elementor-kit"] .nbf-d .nbf-d-side .sidebar-card-title svg { color: #fff !important; stroke: currentColor; }
.nbf-d .nbf-d-side .sidebar-card-body { padding-top: 12px !important; }
/* 4 · Akkordeons: Icon-Kachel des geöffneten Bereichs Navy mit weißem Icon */
.nbf-d .nbf-d-acc__icon { transition: background-color .15s, color .15s; }
.nbf-d .nbf-d-acc__btn[aria-expanded="true"] .nbf-d-acc__icon { background: #00264d; color: #fff; }
@media (prefers-reduced-motion: reduce) { .nbf-d .nbf-d-acc__icon { transition: none; } }
/* 5 · Inhaber-Karte in Tint (Button bleibt Rahmen-Button weiß/#83919e), Melden-Karte unverändert */
.nbf-d .nbf-d-cta .report-section.nbf-d-cta__card--owner { background: #e6f2f2 !important; border: 1.5px solid #e6f2f2 !important; }
.nbf-d .nbf-d-cta .nbf-d-cta__card--owner .nbf-d-cta__icon { background: #fff; }
/* ≤ 768: Überblick-Kacheln als Spalte, nichts läuft über */
@media (max-width: 768px) {
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] { padding: 16px; }
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-ov { flex-direction: column; min-width: 0; }
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-ov__text,
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-ov__title,
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-ov__status { min-width: 0; overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto; }
}
@media (forced-colors: active) {
  .nbf-d .nbf-d-hero { box-shadow: none; border-left: 6px solid CanvasText !important; }
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"],
  .nbf-d .nbf-d-side .sidebar-card-header { background: Canvas; color: CanvasText; border: 1px solid CanvasText !important; }
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-h2,
  .nbf-d .nbf-d-side .sidebar-card-title, .nbf-d .nbf-d-side .sidebar-card-title svg { color: CanvasText !important; }
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-ov { border: 1px solid CanvasText; }
  .nbf-d .nbf-d-acc__btn[aria-expanded="true"] .nbf-d-acc__icon { background: Canvas; color: CanvasText; outline: 1px solid CanvasText; }
}
@media print {
  /* Toner sparen: Navy-Flächen weiß mit Rahmen, Text schwarz */
  .nbf-d .nbf-d-hero { box-shadow: none; border-left: 3px solid #000; }
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] { background: #fff !important; border: 1px solid #000; }
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-h2,
  [class*="elementor-kit"] .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] h2.nbf-d-h2 { color: #000 !important; }
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-h2::after { background: #000; }
  .nbf-d .nbf-d-section[aria-labelledby="nbf-overview-title"] .nbf-d-ov { border: 1px solid #000; box-shadow: none; }
  .nbf-d .nbf-d-side .sidebar-card-header { background: #fff !important; border-bottom: 1px solid #000 !important; }
  .nbf-d .nbf-d-side .sidebar-card-title, .nbf-d .nbf-d-side .sidebar-card-title svg,
  [class*="elementor-kit"] .nbf-d .nbf-d-side h3.sidebar-card-title { color: #000 !important; }
  .nbf-d .nbf-d-acc__btn[aria-expanded="true"] .nbf-d-acc__icon { background: #fff; color: #000; border: 1px solid #000; }
  .nbf-d .nbf-d-cta .report-section.nbf-d-cta__card--owner { background: #fff !important; border: 1px solid #000 !important; }
}
