/* Startseite: inline Sprachauswahl unter dem Hero ausblenden */
.inline-language-menu { display: none !important; }
/* Hero-Cards: eigener weisser Hintergrund */
.multimedia-header .header-teaser { background: #fff; }
/* Blauer Container: verschachtelte Gradient-Kaesten der Kind-Elemente vermeiden */
.bg--blue .frame.bg { background: transparent !important; }
/* Entdecken Sie die Vielfalt: Cards in 2er-Grid (erst ab Tablet, mobil 1 Spalte) */
@media (min-width: 768px) {
  #c-teaser-layout-10-c15826 .teaser__block { grid-template-columns: repeat(2, 1fr) !important; }
}
/* Footer: Breadcrumb-Trennlinie genauso lang wie die Linie unter den Social-Icons (80rem statt 40rem) */
.footer .footer__breadcrumb { width: 80rem; }
/* Hero-Cards: alle Bilder gleiche Hoehe -> Bildunterkante auf einer Linie */
.multimedia-header__teaser .header-teaser__image { aspect-ratio: 3 / 2; height: auto; object-fit: cover; }
/* Hero-Bild-Slider: ueberblendende Hintergrundebenen */
.multimedia-header__media .hero-slideshow { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.multimedia-header__media .hero-slide { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; transition: opacity 1.4s ease-in-out; }
.multimedia-header__media .hero-slide.is-active { opacity: 1; }
/* Hauptmenue: Full-Width-Mega-Menue auf Desktop (wie altes Template, neues Design) */
@media (min-width: 993px) {
  /* Toolbar darf das Mega-Panel nach unten ueberlaufen lassen */
  .toolbar__wrap { overflow: visible; }
  /* Item statisch -> das absolute Panel verankert an .toolbar__wrap (fixed) = volle Breite */
  .main-menu__item--has-sub { position: static; }

  .main-menu__sub {
    position: absolute; top: 100%; left: 0; right: 0;
    background: #fff;
    border-top: 1px solid rgba(0,0,0,.08);
    box-shadow: 0 .9rem 1.75rem rgba(0,0,0,.16);
    opacity: 0; visibility: hidden; transform: translateY(.3rem);
    transition: opacity .18s ease, transform .18s ease, visibility .18s ease;
    z-index: 200;
  }
  /* unsichtbare Bruecke ueberbrueckt den Spalt zwischen Item und Panel (Hover bleibt) */
  .main-menu__sub::before {
    content: ""; position: absolute; left: 0; right: 0; top: -2.5rem; height: 2.5rem;
  }
  .main-menu__item--has-sub:hover > .main-menu__sub,
  .main-menu__item--has-sub:focus-within > .main-menu__sub,
  .main-menu__sub:hover {
    opacity: 1; visibility: visible; transform: translateY(0);
  }

  /* Inhalt auf Content-Breite (1280px) zentriert, Zeitungsspalten-Fluss
     (wie altes Template): Kategorien fliessen kompakt untereinander, keine Zeilen-Luecken */
  .main-menu__mega {
    max-width: 80rem; margin: 0 auto; padding: 1.75rem 2rem 2rem;
    column-width: 12.5rem; column-gap: 2rem;
  }
  .main-menu__col {
    break-inside: avoid; -webkit-column-break-inside: avoid; page-break-inside: avoid;
    margin-bottom: 1.5rem;
  }
  .main-menu__col-title {
    display: block; padding: .35rem 0; margin-bottom: .35rem;
    border-bottom: 1px solid rgba(0,0,0,.12);
    color: #4d4d4d; text-decoration: none; line-height: 1.25;
    font-size: .95rem; font-weight: 700;
  }
  /* Hover: Schrift NICHT rot -> nur blaue Linie unter dem Text (wie altes Template) */
  .main-menu__col-title:hover,
  .main-menu__col-title:focus,
  .main-menu__col-title--active {
    text-decoration: underline; text-decoration-color: var(--col-blue, #2276d0);
    text-decoration-thickness: 2px; text-underline-offset: .25em;
  }
  .main-menu__col-list { margin: 0; padding: 0; list-style: none; }
  .main-menu__sub-item { margin: 0; }
  .main-menu__sub-link {
    display: block; padding: .3rem 0; white-space: normal;
    color: #1a1a1a; text-decoration: none; line-height: 1.3;
    font-size: .9rem;
  }
  .main-menu__sub-link:hover,
  .main-menu__sub-link:focus,
  .main-menu__sub-link--active {
    color: #1a1a1a;
    text-decoration: underline; text-decoration-color: var(--col-blue, #2276d0);
    text-decoration-thickness: 2px; text-underline-offset: .2em;
  }
}
/* Mobile/Tablet: keine Hover-Dropdowns -> Sub-Menues ausblenden, neues Mobile-Nav bleibt unveraendert */
@media (max-width: 992px) {
  .main-menu__sub { display: none; }
}

/* ── Themen-Dropdown auf Unterseiten entfernen (2026-06-16) ──
   Die Haupt-Navigation (Mega-Menue Desktop / Drill-Down Mobil) deckt die
   Unterseiten-Navigation komplett ab -> der separate Themen-Dropdown oben auf
   Unterseiten (.sub-menu__bar / .sub-menu__nav-wrap) ist redundant. Nur
   ausgeblendet -> das Scroll-Verhalten der Toolbar (submenu.js) bleibt aktiv,
   voll reversibel. */
.sub-menu__bar,
.sub-menu__nav-wrap { display: none !important; }

/* ── Mobile Drill-Down-Navigation im Hamburger-Drawer (2026-06-16) ──
   Ersetzt auf Mobil die flache Top-Level-Liste durch eine Ebenen-Navigation
   (wie der entfernte Themen-Dropdown): direkt aus dem Burger in die
   Unterpunkte, ohne erst eine Seite zu oeffnen. DOM per dresden.js
   (ddBuildMobileNav) aus dem vorhandenen Menuebaum erzeugt. */
.dd-mnav { display: none; }
@media (max-width: 992px) {
  /* flache Original-Liste im Drawer verstecken, Drill-Down zeigen */
  .main-menu__wrap .main-menu { display: none; }
  .dd-mnav { display: block; }
  /* Suchleiste IMMER oben halten: das Template haengt .global-search UND
     .main-menu per JS bei JEDEM resize ans Ende des Drawers (auf Mobil feuert
     schon das Ein-/Ausblenden der Browser-URL-Leiste ein resize) -> ohne feste
     Reihenfolge rutscht die Suche unter die Menuelinks. Flexbox + order
     erzwingt die visuelle Reihenfolge unabhaengig von der DOM-Reihenfolge. */
  /* !important + --open: schlaegt das inline display:block, das menu.js beim
     Oeffnen setzt; nur im offenen Zustand, damit das Schliessen (display:none)
     weiter funktioniert. */
  .main-menu__wrap--open { display: flex !important; flex-direction: column; }
  .main-menu__wrap { padding-top: .75rem; }
  .main-menu__wrap .global-search { order: 0; margin-bottom: 1.25rem; }
  .main-menu__wrap .dd-mnav { order: 1; }
}
.dd-mnav__viewport {
  position: relative;
  overflow: hidden;
  transition: height .3s ease;
}
/* Panels schieben horizontal. Wichtig: deckender Hintergrund, sonst scheint
   das darunterliegende Eltern-Panel durch (Text-Overlap). */
.dd-mnav__panel {
  position: absolute; top: 0; left: 0; width: 100%;
  margin: 0; padding: 0; list-style: none;
  background: var(--col-black-05, #f4f4f4);
  transform: translateX(100%);
  transition: transform .3s ease;
}
.dd-mnav__panel.is-active { transform: translateX(0); }
.dd-mnav__panel.is-left { transform: translateX(-100%); }
.dd-mnav__item {
  list-style: none; margin: 0;
  border-bottom: 1px solid var(--col-black-20, rgba(0,0,0,.12));
}
.dd-mnav__item--back { border-bottom: 0; }
/* Eine Zeile: Label nimmt den Platz, Chevron sitzt rechts (kein Overlap) */
.dd-mnav__entry {
  display: flex; align-items: center; justify-content: space-between; gap: .75rem;
  width: 100%; padding: 1rem; box-sizing: border-box;
  border: 0; background: transparent; cursor: pointer;
  font-family: inherit; font-size: 1rem; font-weight: 700; line-height: 1.25;
  text-align: left; text-decoration: none; color: var(--col-text, #1a1a1a);
}
.dd-mnav__label { flex: 1 1 auto; min-width: 0; }
.dd-mnav__entry--drill > svg { flex: 0 0 auto; width: 9px; height: 13px; }
.dd-mnav__entry.dd-mnav__link--active { color: var(--col-blue, #2276d0); }
.dd-mnav__back {
  display: flex; align-items: center; gap: .55rem; width: 100%;
  padding: .85rem 1rem; border: 0; background: var(--col-black-10, #ececec);
  color: #4d4d4d; font-weight: 600; font-size: .95rem; cursor: pointer;
  font-family: inherit;
}
.dd-mnav__back svg { width: 9px; height: 13px; transform: rotate(180deg); }

/* Lange URLs/Woerter im RTE-/Textmedia-Text umbrechen. Migrierte Inhalte haben
   Links deren sichtbarer Text die volle URL ist (z.B. https://www.radeberg.de/inhalte/...)
   -> ohne Umbruch sprengen sie auf Mobil die Seitenbreite (horizontaler Scroll). */
.o-cms-content__body,
.textmedia__text,
.ce-bodytext,
.rte-content,
.o-cms-content__body a,
.textmedia__text a,
.ce-bodytext a { overflow-wrap: break-word; word-break: break-word; }

/* RTE-Headlines (.o-cms-content__headline): hatten margin-top:0 + margin-bottom:1em
   -> Headline klebte am vorherigen Block und stand riesig weit ueber ihrem eigenen
   Text. Wie alte Seite: etwas Luft nach oben, eng an den folgenden Text. */
.o-cms-content__headline {
  margin-top: 1.6rem;
  margin-bottom: 0.4em;
  line-height: 1.2;
}
/* erste Headline direkt unter der Seiten-H1 / oben im Inhaltsbereich nicht extra einruecken */
.o-cms-content__body > .frame:first-child .o-cms-content__headline:first-child {
  margin-top: 0;
}

/* ============================================================================
   Ansprechpartner-Cards (einheitlich, eine Card pro Person)
   Struktur wird per dresden.js (initContactCards) aus den getippten
   Kontaktbloecken erzeugt: Foto-Placeholder + Name/Funktion/Telefon/E-Mail.
   Rein praesentativ, voll reversibel. */
.dd-cp-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 1.4rem;
  margin: 1.4rem 0 2rem;
  align-items: stretch;
}
/* Eine Card: Foto fuellt linke Spalte ueber die volle Hoehe (Stil Freiberg) */
.dd-cp,
.frame.dd-cp {
  background: #fff;
  border: 1px solid #e7e7e7;
  border-radius: 12px;
  box-shadow: 0 3px 14px rgba(0, 0, 0, .09);
  padding: 0;
  margin: 0;
  overflow: hidden;
}
.dd-cp__body {
  display: flex;
  align-items: stretch;
  gap: 0;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
/* Foto / Placeholder: linke Spalte, volle Kartenhoehe, mittig beschnitten */
.dd-cp__photo {
  flex: 0 0 38%;
  max-width: 38%;
  align-self: stretch;
  background: #d9d9d9;
  overflow: hidden;
}
.dd-cp__photo img {
  width: 100%;
  height: 100%;
  min-height: 100%;
  object-fit: cover;
  object-position: center 25%;
  display: block;
}
.dd-cp__photo--ph {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 120px;
}
.dd-cp__photo--ph svg {
  width: 46%;
  max-width: 72px;
  height: auto;
  fill: none;
  stroke: #8a8a8a;
  stroke-width: 4;
  stroke-linecap: round;
}
/* Mehrere Personen aus EINEM Textblock: untereinander, volle Breite */
.dd-cp-stack { grid-template-columns: 1fr; }
/* Abstand zwischen Namens-/Funktionsgruppe und den Kontaktzeilen */
.dd-cp__sep { display: block; height: .85rem; }
/* Info-Spalte (rechts) mit Innenabstand; kleinerer, luftiger Text */
.dd-cp__info {
  flex: 1 1 auto;
  min-width: 0;
  font-size: .9rem;
  line-height: 1.7;
  padding: 1.3rem 1.5rem;
}
.dd-cp__info > .o-cms-content__headline,
.dd-cp__info > h2,
.dd-cp__info > h3,
.dd-cp__info > h4 {
  margin: 0 0 .45rem;
  font-size: 1.05rem;
  line-height: 1.2;
  color: var(--col-red, #e60005);
}
.dd-cp__info p { margin: 0 0 .35rem; }
.dd-cp__info p:last-child { margin-bottom: 0; }
.dd-cp__info b,
.dd-cp__info strong { font-weight: 600; }
.dd-cp__info a { word-break: break-word; }
/* Inline-Cards (mehrere Personen aus EINEM Textblock) tragen das <p> direkt */
.dd-cp--inline .dd-cp__info > p { margin: 0; }

/* "E-Mail schreiben"-Button (aus E-Mail-Adresse erzeugt) */
.dd-cp .dd-cp-mail {
  display: inline-block;
  margin: .55rem 0 0;
  padding: .45rem 1.05rem;
  font-size: .9rem;
  line-height: 1.2;
  white-space: nowrap;
  word-break: normal;
}

/* calltoaction-Kontakt-Card: einzelne, mittig im Inhalt ausgerichtete Card
   (nicht mehr am Seitenrand klebend). */
.dd-cp--cta {
  max-width: 40rem;
  margin: 1.4rem auto 2rem;
}

@media (max-width: 560px) {
  /* schmal: Foto oben, Text darunter (wie Freiberg mobil) */
  .dd-cp__body { flex-direction: column; }
  /* 4/3 statt 16/9: mehr Hoehe -> Portraet-Gesichter werden nicht so stark
     oben/unten beschnitten. */
  .dd-cp__photo { flex-basis: auto; max-width: none; width: 100%; aspect-ratio: 4 / 3; }
  .dd-cp__photo--ph { min-height: 140px; }
  /* ganz kleiner seitlicher Abstand, damit die Card mobil nicht am Rand klebt */
  .dd-cp { margin-inline: .6rem; }
}

/* Mobile: Card-Slider (menu_sitemap layout 10) mit gleichem Rand-Spacing wie "Aktuelles" (32px) */
@media (max-width: 767px) {
  .teaser__slider .swiper__teaser { padding-inline: 2rem; }
  .teaser__slider .swiper-slide { max-width: 310px; width: 100%; }
  /* blaue Section: doppeltes Innen-Padding der gridelements-Box fuer den Slider aufheben */
  .frame.bg--blue .teaser__wrapper { margin-inline: -2rem; }
}

/* ----------------------------------------------------------------------------
   Inhalts-Tabellen mobil-optimiert (wie alte Seite drk_template2016 .c-table)
   Das neue Template wrappt RTE-Tabellen per JS in .contenttable__wrap, liefert
   aber KEIN responsives CSS dazu -> breite Tabellen laufen ueber den Rand und
   erzeugen horizontalen Seiten-Scroll. Alte Seite stapelte die Zellen unter
   45em. Hier nachgebaut: unter 768px wird jede Zeile/Zelle zum Block (Label
   ueber Wert), Kopfzeile ausgeblendet -> kein Overflow, lesbar wie frueher. */
@media (max-width: 767px) {
  .contenttable__wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .contenttable,
  .contenttable tbody,
  .contenttable tr,
  .contenttable td,
  .contenttable th {
    display: block;
    width: 100% !important;
    box-sizing: border-box;
  }
  .contenttable thead { display: none; }
  .contenttable td,
  .contenttable th {
    text-align: left;
    padding: .35rem .5rem;
  }
  /* dezente Trennlinie zwischen den (jetzt gestapelten) Zeilen */
  .contenttable tr { border-bottom: 1px solid rgba(0,0,0,.1); padding: .25rem 0; }
  .contenttable tr:last-child { border-bottom: 0; }
  /* lange, nicht umbrechbare Inhalte (Mails/Links) sauf Mobil umbrechen */
  .contenttable td, .contenttable th { overflow-wrap: anywhere; word-break: break-word; }

  /* Adress-Tabelle (drk-addresses, .c-addresses__table): nutzt intern Floats +
     feste 50%-Spalten mit nicht umbrechenden Header-Boxen -> laeuft mobil ueber.
     Daher mobil komplett stapeln (Block), Floats aufheben -> passt in Viewport. */
  .c-addresses__table,
  .c-addresses__table tbody,
  .c-addresses__table tr,
  .c-addresses__table td,
  .c-addresses__table th {
    display: block;
    width: 100% !important;
    box-sizing: border-box;
    float: none !important;
  }
  .c-addresses__table td,
  .c-addresses__table th { padding: .35rem 0; vertical-align: top; }
  .c-addresses__table tr { border-bottom: 1px solid rgba(0,0,0,.1); padding: .5rem 0; }
  .c-addresses__table tr:last-child { border-bottom: 0; }
  .c-addresses__table .header,
  .c-addresses__table h4 { width: auto !important; }
  .c-addresses__table td *,
  .c-addresses__table th * { max-width: 100%; overflow-wrap: anywhere; word-break: break-word; }
}

/* ── Absatz- & Listen-Abstände an die alte Seite angleichen (2026-06-09) ──
   Aufeinanderfolgende Text-Absätze sind je ein eigenes .frame mit margin-block
   4rem (64px Desktop) -> Absatzabstand viel größer als früher (~1 Leerzeile).
   Nur den Abstand ZWISCHEN zwei Text-Elementen verkleinern; Abstand zu Bildern/
   Teasern/Slidern bleibt unverändert (4rem). margin-block:577px-Regel des
   Templates -> hier ab 577px überschreiben. Beide Seiten setzen, sonst greift
   margin-collapse den größeren (4rem) Wert. */
@media (min-width: 577px) {
  .frame-type-textmedia:has(+ .frame-type-textmedia),
  .frame-type-text:has(+ .frame-type-text) {
    margin-block-end: 1.6rem;
  }
  .frame-type-textmedia + .frame-type-textmedia,
  .frame-type-text + .frame-type-text {
    margin-block-start: 1.6rem;
  }
}

/* RTE-Listen (.list) liefen mit .3em/.3em Polster pro <li> sehr luftig (Item 42px
   statt ~30px) -> enger wie früher: alte Seite hat 0 Polster, Bullets nur über
   line-height verteilt. Horizontale Polster (Bullet-Einzug) bleiben. */
.textmedia__text .list > li,
.csc-textpic-text .list > li {
  padding-top: 0;
  padding-bottom: 0;
}

/* RTE-Listen klebten ohne Abstand am umgebenden Text (margin oben/unten = 0px).
   Alte Seite: ~17px oben / ~17–25px unten. -> Abstand zwischen Text und Liste
   und zwischen Liste und Folgetext wiederherstellen. Universell für alle Seiten,
   da alle Inhalts-Listen die Klasse .list tragen (im .textmedia__text/.csc-Text). */
.textmedia__text ul.list,
.textmedia__text ol.list,
.csc-textpic-text ul.list,
.csc-textpic-text ol.list {
  margin-block: 1.1rem;
}

/* ── Hero-/Stage-Bilder: einheitliche, kleinere Höhe (2026-06-10) ──
   Bisher = volle Bildhöhe (Breite × natürliches Seitenverhältnis) -> bis 797px,
   pro Seite unterschiedlich je nach Bild. Feste Höhe + object-fit:cover macht
   alle Seiten-Heros gleich hoch und deutlich kompakter. */
.frame-type-drk_template_stage .stage-image img {
  width: 100%;
  height: 560px;
  object-fit: cover;
  object-position: center;
  display: block;
}
@media (max-width: 767px) {
  .frame-type-drk_template_stage .stage-image img {
    height: 300px;
  }
}

/* ── Inhaltsbilder „neben Text" (beside) verkleinern (2026-06-10) ──
   Migration verlor die imagewidth (alle 0); neues Template teilt beside 50/50
   -> Bildspalte 640px (riesig). Alte Seite zeigte diese Bilder klein (~271px)
   neben dem Text. -> Bildspalte deckeln, Text bekommt den Rest. Nur beside-
   Layout (oben/unten-Bilder bleiben unverändert). Erst ab Tablet (>=768px);
   darunter stapelt das Template ohnehin (Bild voll). */
@media (min-width: 768px) {
  .textmedia--orientation-beside .textmedia__figure {
    flex: 0 0 auto;
    width: 320px;
    max-width: 38%;
  }
  .textmedia--orientation-beside .textmedia__figure img {
    width: 100%;
    height: auto;
  }
}

/* ── Doppelte Kurslisten-Überschrift entfernen (2026-06-10) ──
   Die Extension drk/courseview rendert in ihrem Fluid-Template eine fest
   eingebaute Überschrift <header class="header"><h3>Kurse & Termine</h3>,
   ZUSÄTZLICH zur Element-Überschrift (Feld header, z.B. „Aktuelle
   Kurstermine"). Das alte smediacourse-Plugin hatte diese Zeile nicht ->
   doppelte Headline. Plugin-interne Überschrift ausblenden (Element-
   Überschrift bleibt, vom Redakteur steuerbar). */
.tx-drk-courseview > header.header {
  display: none;
}

/* ── ke_search: schönere „Keine Ergebnisse"-Anzeige (2026-06-11) ──
   Standard war das nackte englische Label „No results found". Text jetzt
   deutsch + freundlich (im Plugin-Flexform noResultsText), hier als ruhige
   Info-Box mit DRK-rotem Akzent. */
.ke-no-results {
  max-width: 640px;
  margin: 1.5rem 0 2.5rem;
  padding: 1.4rem 1.75rem;
  background: #f7f7f7;
  border: 1px solid #e6e6e6;
  border-left: 4px solid var(--col-red, #e60005);
  border-radius: 6px;
}
.ke-no-results__title {
  margin: 0 0 0.35rem;
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--col-red, #e60005);
}
.ke-no-results__hint {
  margin: 0;
  color: #555;
  line-height: 1.55;
}

/* ═══════════════════════════════════════════════════════════════════════
   Sammel-Fixes 2026-06-15 (Seiten-Review)
   ═══════════════════════════════════════════════════════════════════════ */

/* C2 — Formular-Select „Am Besten erreichbar…": doppelte Beschriftung.
   Bei <select>-Feldern wird die Frage SOWOHL als verschachtelter Klartext-Block
   ALS AUCH als absolutes Floating-Label gerendert (gleicher Text) → sie
   überlappen sich. Den redundanten Klartext-Block ausblenden; das Floating-
   Label (konsistent zu allen anderen Feldern) bleibt sichtbar. Zielgenau via
   :has() nur in Spalten, die direkt ein <select> enthalten. */
.o-form__item:has(> select.o-form__field--select) > .o-form__item {
  display: none;
}

/* D1 — Stellenbörse: Job-Einträge als Karten statt nackter „fetter" Textlinks. */
.tx-drk-jobboard .c-teaser-list__item {
  list-style: none;
  margin: 0 0 1rem;
  padding: 1.25rem 1.6rem;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, .1);
  border-radius: 12px;
  box-shadow: 0 3px 14px rgba(0, 0, 0, .07);
  transition: box-shadow .15s ease;
}
.tx-drk-jobboard .c-teaser-list__item:hover {
  box-shadow: 0 6px 20px rgba(0, 0, 0, .12);
}
.tx-drk-jobboard .c-teaser-list__item .c-teaser__title {
  margin-top: 0;
}
/* Bullets in Job-Beschreibungen wiederherstellen (globaler Reset
   ol,ul{list-style:none} entfernt sie; Plugin-<ul> tragen keine .list-Klasse). */
.tx-drk-jobboard ul:not([class]) {
  list-style: disc;
  margin: .4em 0 .8em;
  padding-left: 1.4em;
}
.tx-drk-jobboard ul:not([class]) > li {
  list-style: disc;
  margin-left: .2em;
}

/* B2 — DRK-vor-Ort Suchergebnisse: Treffer als einheitliche Karten. */
ul.tx-supplyfinder-search__result-list {
  list-style: none;
  margin: 1.5rem 0;
  padding: 0;
  display: grid;
  gap: 1rem;
}
.tx-supplyfinder-search__result-list .drk-supply-search__result-item,
.tx-supplyfinder-search__result-list .drk-supply-search-search__result-item {
  list-style: none;
  margin: 0;
  padding: 1.1rem 1.35rem;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, .1);
  border-radius: 12px;
  box-shadow: 0 3px 14px rgba(0, 0, 0, .07);
}
.tx-supplyfinder-search__result-list .drk-supply-search_distance {
  margin-bottom: .6rem;
}

/* ------------------------------------------------------------------ *
 * A — Unterseiten: Content-Breite vergroessern (wie altes Template).
 * Das neue Template zentriert Text/Inhalt sehr schmal: Textspalte 640px
 * (.textmedia__text), Block 960px (.textmedia), generische Frames 640px
 * (main > :where(*)) -> viel leerer Rand. Auf Unterseiten wieder breiter,
 * naeher an der alten Seite (~1200px Wrapper). Nur `width` wird gesetzt;
 * die vom Template gesetzte `max-width: calc(client-vw - 2*pad)` deckelt
 * weiterhin auf schmalen Screens -> selbstbegrenzend, kein Overflow.
 * Scope ueber :has(.breadcrumb): nur echte Unterseiten, NICHT die Startseite
 * (gleiche body-/pagets-Klassen, aber Start hat keine Breadcrumb).
 * Tuning an EINER Stelle ueber die beiden Variablen.
 * ------------------------------------------------------------------ */
:root {
  --dd-sub-text: 48rem;  /* 768px — Lesetext (alt ~677px), war 640px */
  --dd-sub-wide: 66rem;  /* 1056px — Bloecke/Tabellen/Kursliste, war 960/640px */
}
@media (min-width: 64em) {
  /* Textmedia-Block: 960 -> wide */
  .body__wrapper:has(.breadcrumb) .textmedia { width: var(--dd-sub-wide); }
  /* Lesetext + Ueberschriften + Bildunterschrift: 640 -> text */
  .body__wrapper:has(.breadcrumb) .textmedia__text,
  .body__wrapper:has(.breadcrumb) .textmedia--orientation-above .textmedia__caption,
  .body__wrapper:has(.breadcrumb) .textmedia--orientation-below .textmedia__caption { width: var(--dd-sub-text); }
  /* Schmale Inhalts-Plugins (z.B. Kurstermin-Liste, die per Default nur 640px
     breit ist) auf Content-Breite ziehen. WICHTIG: gezielt nur diese Frames –
     NICHT der generische `main > *`-Selektor, der sonst auch Full-Bleed-Frames
     (Hero/Stage, CallToAction) auf 1056px zusammenstaucht. */
  .body__wrapper:has(.breadcrumb) .frame-type-drkcourseview_courseview { width: var(--dd-sub-wide); margin-inline: auto; }
}

/* Mobil: kleineres seitliches Content-Padding. Das Template setzt ueber
   $side-padding (32px) auf jeder Seite -> auf schmalen Screens verschenkt der
   Lesetext viel Breite. Hier auf ~16px/Seite reduziert. Nur Content
   (Unterseiten via :has(.breadcrumb), Textmedia) -> Full-Bleed-Elemente wie
   CallToAction bleiben unberuehrt. Greift nur, solange das calc() bindet
   (Viewport < ~700px), darueber ist die Regel ohne Wirkung. */
@media (max-width: 767px) {
  .body__wrapper:has(.breadcrumb) .textmedia,
  .body__wrapper:has(.breadcrumb) .textmedia__text {
    max-width: calc(var(--client-vw, 100vw) - 2rem); /* 16px je Seite statt 32px */
  }
}

/* -------------------------------------------------------------------------
   Gridelements-Container (frame-type-container_page_layout_100) rendern ihre
   Ueberschrift als blanke <header><h2 class=""> OHNE die Theme-Klasse .header.
   Regulaere Element-Ueberschriften (.header) sind zentriert, diese fielen auf
   browser-default linksbuendig zurueck und passten nicht ins Layout
   (geschichte, seg-sanitaet, pflegedienst-langebrueck/-hellerau u.a.).
   Hier wie die regulaeren Ueberschriften zentrieren. Scoped auf den
   Container-Frame-Typ, damit nur diese Header betroffen sind.
   ------------------------------------------------------------------------- */
.frame-type-container_page_layout_100 > header { text-align: center; }

/* -------------------------------------------------------------------------
   RTE-Inline-Ueberschriften (.o-cms-content__headline) aus migriertem Content.
   Das alte Theme gab ihnen margin-bottom:1.47rem; das neue Theme nullt per
   Reset alle heading-margins (h1..h6{margin:0}) und stylt diese Legacy-Klasse
   nicht -> Ueberschrift und Folgetext kleben zusammen ("keine Absaetze",
   z.B. schulsanitaetsdienst, seg-*). Abstand wie im alten Theme wiederherstellen.
   ------------------------------------------------------------------------- */
.o-cms-content__headline { margin-top: 0; margin-bottom: 1.47rem; }

/* -------------------------------------------------------------------------
   Karten-Scans in Akkordeons (o-accordion, z.B. registrierkarten) rendern
   sonst in voller Spaltenbreite (bis ~2000px hoch) -> man muss endlos scrollen.
   Auf sinnvolle Hoehe begrenzen; bleiben lesbar & anklickbar. NUR Einzel-Scans
   (kein Bilderkarussell/Swiper) -> Galerien (z.B. kita-radeberg) unberuehrt. */
details .o-accordion__content .textmedia:not(:has(.textmedia__gallery)) .textmedia__image { max-height: 70vh; width: auto; }

/* -------------------------------------------------------------------------
   Akkordeon-Inhalt: NICHT auf die festen Unterseiten-Content-Breiten zwingen.
   Die Breiten-Regel oben (.body__wrapper:has(.breadcrumb) .textmedia -> 1056px,
   .textmedia__text -> 768px) greift sonst auch INNERHALB von <details>, wo der
   o-accordion__content-Kasten nur ~640px breit ist -> Text/Textmedia laufen
   rechts ueber den Rahmen hinaus (kita-radeberg, registrierkarten u.a.).
   Hier hoehere Spezifitaet -> zurueck auf auto, passt sich dem Kasten an.
   ------------------------------------------------------------------------- */
.body__wrapper:has(.breadcrumb) details .o-accordion__content .textmedia,
.body__wrapper:has(.breadcrumb) details .o-accordion__content .textmedia__text {
  width: auto;
}
