/* Veranstaltungssuche – Radius, Badge, Schnellfilter */

.veranstaltungen-schnellfilter {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.veranstaltungen-schnellfilter .btn {
    flex: 1 1 auto;
    min-width: 5rem;
}

.veranstaltungen-treffer-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    background: #e7f1ff;
    color: #0a58ca;
    font-size: 0.875rem;
    font-weight: 600;
}

/* WW CMS: Suchmaske – gemeinsame Farbe mit Kategorien (.kat-wahl) */
.bg_veranstaltung,
.veranstaltungen-suchmaske {
    background: linear-gradient(180deg, #fbf8f4 0%, #efe6da 100%);
    border-radius: 20px;
    border: 1px solid rgba(80, 60, 40, 0.1);
    box-shadow: 0 8px 22px rgba(60, 40, 20, 0.06);
}

.veranstaltungen-treffer-badge.is-loading .veranstaltungen-treffer-spinner {
    display: inline-block;
}

.veranstaltungen-treffer-badge:not(.is-loading) .veranstaltungen-treffer-spinner {
    display: none;
}

.veranstaltungen-treffer-spinner {
    width: 1rem;
    height: 1rem;
    border: 2px solid rgba(10, 88, 202, 0.25);
    border-top-color: #0a58ca;
    border-radius: 50%;
    animation: veranstaltungen-spin 0.7s linear infinite;
}

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

/* Veranstaltungsliste: geschlossene Zeilen (1/2/3 Karten) */
.veranstaltungen-liste-container {
    width: 100%;
}

.veranstaltungen-zeile {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
}

.veranstaltungen-zeile > [class*="col-"] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.veranstaltungen-zeile > [class*="col-"] > .card,
.veranstaltungen-zeile > [class*="col-"] > article,
.veranstaltungen-zeile > [class*="col-"] > .veranstaltung-karte-raster > .card,
.veranstaltungen-zeile > [class*="col-"] > .veranstaltung-karte-raster > article {
    flex: 1 1 auto;
    width: 100%;
}

.veranstaltungen-zeile-einzel > [class*="col-"] {
    width: 100%;
    max-width: 100%;
}

.veranstaltung-karte-einzel-bild {
    min-height: 200px;
    overflow: hidden;
    background-color: #e9ecef;
}

.veranstaltung-karte-einzel-bild .such-karte-klein-bild {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 200px;
}

.veranstaltung-karte-einzel-bild .such-karte-klein-img {
    min-height: 200px;
    height: 100%;
}

@media (min-width: 768px) {
    .veranstaltung-karte-einzel-bild {
        min-height: 220px;
    }

    .veranstaltung-karte-einzel-bild .such-karte-klein-bild,
    .veranstaltung-karte-einzel-bild .such-karte-klein-img {
        min-height: 220px;
    }

    .veranstaltungen-zeile-einzel .such-karte-einzel-zeile > .row > .col-md-8 .card-body {
        flex: 1 1 auto;
    }

    .veranstaltungen-zeile-einzel .such-karte-einzel-zeile .mt-auto.text-center {
        display: flex;
        flex-wrap: wrap;
        justify-content: flex-end;
        align-items: center;
        gap: 0.5rem;
        text-align: right;
    }
}

.veranstaltung-karte-raster {
    display: flex;
    flex-direction: column;
    width: 100%;
}

.veranstaltung-karte-komm {
    border: 2px solid #9ec5fe !important;
    box-shadow: 0 2px 10px rgba(13, 110, 253, 0.12);
}

.veranstaltung-karte-komm .card-title,
.veranstaltung-komm-titel {
    color: #0a58ca;
}

.veranstaltung-karte-komm > .row {
    align-items: stretch !important;
}

.veranstaltung-komm-bild {
    min-height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    align-self: stretch;
    background-color: #f5f5f5;
    padding: 12px;
    overflow: hidden;
}

@media (min-width: 768px) {
    .veranstaltung-komm-bild {
        min-height: 100%;
        height: auto;
    }
}

.veranstaltung-komm-bild-link,
.veranstaltung-komm-bild > a {
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    min-height: 196px;
    text-align: center;
}

.such-bild-komm,
.veranstaltung-komm-bild img {
    object-fit: contain !important;
    display: block;
    width: auto !important;
    max-width: 100%;
    height: auto !important;
    max-height: calc(320px - 24px);
    /* min-height > 0: sonst loading=lazy + width/height:auto = 0x0-Box,
       IntersectionObserver feuert nie -> Alt-Text (Firmenname) statt Preview */
    min-height: 120px !important;
    min-width: 80px;
    margin: auto;
}

.veranstaltung-komm-text {
    /* OpenSans_Condensed braucht etwas mehr Fuehrung als Arial-Fallback */
    line-height: 1.55;
}
.veranstaltung-karte-komm .card-text,
.veranstaltung-karte-komm .card-title {
    line-height: 1.35;
}
.veranstaltung-karte-komm .card-text small {
    line-height: 1.45;
}

.veranstaltungen-liste-werbung {
    min-height: 0;
}

.veranstaltungen-ad-slot {
    min-height: 0;
    margin: 1rem 0 1.25rem;
    padding: 0.25rem 0;
    overflow: hidden;
    clear: both;
}

.veranstaltungen-ad-label {
    font-size: 0.6875rem;
    color: #888;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin: 0 0 0.25rem;
    line-height: 1.2;
}

.veranstaltungen-ad-slot ins.adsbygoogle {
    min-height: 0;
    display: block;
}

.veranstaltungen-ad-slot ins.adsbygoogle[data-ad-status="unfilled"] {
    display: none !important;
    min-height: 0 !important;
    height: 0 !important;
}

/* Orphan-Label „Anzeige“ vermeiden, wenn Google den Slot als unfilled markiert */
.veranstaltungen-ad-slot:has(ins.adsbygoogle[data-ad-status="unfilled"]),
.veranstaltungen-zeile-werbung:has(ins.adsbygoogle[data-ad-status="unfilled"]),
.veranstaltungen-luecke-werbung:has(ins.adsbygoogle[data-ad-status="unfilled"]) {
    display: none !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
}

.veranstaltungen-ad-slot.is-unfilled,
.veranstaltungen-zeile-werbung.is-unfilled,
.veranstaltungen-such-werbung.is-unfilled,
.veranstaltungen-luecke-werbung.is-unfilled {
    display: none !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
}

.veranstaltungen-luecke-werbung .veranstaltungen-ad-slot {
    margin: 0;
    padding: 0.5rem 0.5rem 0.75rem;
    clear: none;
    background: transparent;
    border: 1px dashed #c5c0b6;
    border-radius: 6px;
    box-shadow: none;
    min-height: 280px;
    text-align: center;
}

.veranstaltungen-luecke-werbung .veranstaltungen-ad-label {
    text-align: left;
}

.veranstaltungen-luecke-werbung ins.adsbygoogle {
    max-width: 100%;
    width: 300px;
    height: 250px;
    min-height: 250px;
}

/* 1 Karte + 2 freie Spalten: eine 2/3-breite Responsive-Ad statt zwei 300x250 */
.veranstaltungen-luecke-werbung-wide .veranstaltungen-ad-slot,
.veranstaltungen-ad-slot-luecke-wide {
    min-height: 120px;
    text-align: left;
}

.veranstaltungen-luecke-werbung-wide ins.adsbygoogle {
    width: 100% !important;
    max-width: 100%;
    height: auto;
    min-height: 90px;
}

/* Kopf-Werbung immer volle Zeile – Label nicht optisch neben Komm-Karten */
.veranstaltungen-zeile-werbung,
.veranstaltungen-zeile-werbung-kopf {
    width: 100%;
    max-width: 100%;
    flex: 0 0 100%;
    clear: both;
}

.veranstaltungen-ad-slot-vertical {
    min-height: 0;
}

.veranstaltungen-such-zeile {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
}

.veranstaltungen-such-spalte,
.veranstaltungen-such-werbung {
    min-width: 0;
}

.veranstaltungen-such-spalte .veranstaltungen-suchmaske,
.veranstaltungen-such-spalte .bg_veranstaltung {
    max-width: 100%;
}

.veranstaltungen-such-werbung {
    min-height: 0;
    padding-top: 0.25rem;
}

.veranstaltungen-such-werbung .veranstaltungen-ad-slot {
    clear: none;
    margin-top: 0;
}

.veranstaltungen-such-werbung .veranstaltungen-ad-slot,
.veranstaltungen-such-werbung ins.adsbygoogle {
    max-width: 100%;
}

@media (min-width: 576px) {
    .veranstaltungen-such-zeile.flex-sm-nowrap {
        flex-wrap: nowrap;
    }

    .veranstaltungen-such-zeile > .veranstaltungen-such-spalte,
    .veranstaltungen-such-zeile > [class*="col-sm-9"],
    .veranstaltungen-such-zeile > [class*="col-lg-9"] {
        flex: 0 0 75%;
        max-width: 75%;
    }

    .veranstaltungen-such-zeile > .veranstaltungen-such-werbung,
    .veranstaltungen-such-zeile > [class*="col-sm-3"],
    .veranstaltungen-such-zeile > [class*="col-lg-3"] {
        flex: 0 0 25%;
        max-width: 25%;
    }

    .veranstaltungen-such-werbung {
        position: sticky;
        top: 0.75rem;
        align-self: flex-start;
    }
}

.veranstaltungen-such-werbung:empty {
    display: none !important;
}

.veranstaltungen-such-kopf {
    width: 100%;
    padding: 0.25rem 0 0.75rem;
}

.veranstaltungen-such-kopf h2 {
    font-size: 1.125rem;
    font-weight: 700;
    margin: 0;
    text-align: left;
}

.veranstaltungen-ergebnis-kopf {
    text-align: center;
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
}

.veranstaltungen-zeile-werbung-kopf {
    margin-top: 0.25rem;
    margin-bottom: 0.75rem;
}

#veranstaltungenKopfWerbung {
    width: 100%;
    max-width: 100%;
    clear: both;
}

#veranstaltungenKopfWerbung .veranstaltungen-ad-slot-horizontal {
    min-height: 90px;
}

.veranstaltungen-zeile-werbung-kopf.is-unfilled {
    display: none !important;
    margin: 0 !important;
}

#veranstaltungenPortalRoot #ajaxVeranstaltungen .veranstaltungen-zeile-werbung-kopf {
    width: 100%;
    max-width: 100%;
    flex: 0 0 100%;
    clear: both;
}

.suchergebnis-liste {
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 100%;
}

.suchergebnis-liste > .col-12.mb-4 {
    width: 100%;
    max-width: 100%;
}

.suchergebnis-raster {
    width: 100%;
    max-width: 100%;
}

.suchergebnis-raster > .col-12.mb-4 {
    width: 100%;
}

.such-karte-klein {
    display: flex;
    flex-direction: column;
    background-color: rgba(255, 255, 255, 0.92);
}

.such-karte-klein .card-body {
    min-height: 0;
    flex: 1 1 auto;
}

.such-karte-klein-bild {
    display: block;
    width: 100%;
    height: 150px;
    overflow: hidden;
    line-height: 0;
    background-color: #e9ecef;
    flex-shrink: 0;
}

.such-karte-klein-bild a {
    display: block;
    width: 100%;
    height: 100%;
}

.such-karte-klein-bild img,
.such-karte-klein-img {
    display: block;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    max-height: none !important;
    min-height: 0 !important;
    object-fit: cover !important;
    object-position: center center;
}

/* Alias: Veranstaltungsliste (Radius/Ajax) */
.such-bild-banner {
    display: block;
    width: 100%;
    height: 150px;
    overflow: hidden;
    line-height: 0;
    background-color: #e9ecef;
    flex-shrink: 0;
    padding: 0;
}

.such-bild-banner a {
    display: block;
    width: 100%;
    height: 100%;
}

.such-bild-banner img {
    display: block;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    max-height: none !important;
    min-height: 0 !important;
    object-fit: cover !important;
    object-position: center center;
}

.veranstaltung-karte-raster > article,
.veranstaltung-karte-raster > .card,
[class*="col-"] > article.card.h-100 {
    display: flex;
    flex-direction: column;
}

.veranstaltung-karte-komm .veranstaltung-komm-titel,
.such-karte-klein .card-title {
    overflow: visible;
    text-overflow: unset;
    white-space: normal;
    word-break: break-word;
}

/* Suchergebnis: Leaflet-Karte braucht feste Höhe */
#map.suchergebnis-karte,
.suchergebnis-karte#map,
div#map {
    width: 100%;
    height: 280px;
    margin: 0.5rem 0 1rem;
    border-radius: 8px;
    overflow: hidden;
    z-index: 0;
    background: #e9ecef;
}

.suchergebnis-ortssprung {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 0.25rem 0 0.75rem;
}

.suchergebnis-ortssprung > [class*="col-"] {
    flex: 0 0 auto;
    width: auto;
    max-width: none;
    padding: 0;
    margin: 0;
}

.suchergebnis-ortssprung a {
    display: inline-block;
    padding: 0.3rem 0.7rem;
    background: #eef4ff;
    color: #0a58ca;
    border-radius: 999px;
    font-size: 0.875rem;
    text-decoration: none;
    white-space: nowrap;
}

.suchergebnis-ortssprung a:hover {
    background: #dbe7ff;
    text-decoration: none;
}

/* Stil für den gesamten Range-Slider */
input[type="range"].form-range {
    width: 100%;
    height: 8px;
    background: #007bff;
    border-radius: 10px;
    outline: none;
    opacity: 0.9;
    transition: opacity 0.2s ease, background 0.3s ease;
}

input[type="range"].form-range::-webkit-slider-thumb {
    appearance: none;
    width: 24px;
    height: 24px;
    background: #ffffff;
    border: 2px solid #007bff;
    border-radius: 50%;
    cursor: pointer;
    transition: background 0.3s ease, transform 0.2s ease;
}

input[type="range"].form-range::-webkit-slider-thumb:hover {
    background: #007bff;
    transform: scale(1.1);
}

input[type="range"].form-range::-moz-range-thumb {
    width: 24px;
    height: 24px;
    background: #ffffff;
    border: 2px solid #007bff;
    border-radius: 50%;
    cursor: pointer;
    transition: background 0.3s ease, transform 0.2s ease;
}

input[type="range"].form-range::-moz-range-thumb:hover {
    background: #007bff;
    transform: scale(1.1);
}

input[type="range"].form-range:focus {
    outline: none;
    opacity: 1;
}

input[type="range"].form-range:focus::-webkit-slider-thumb {
    box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);
}

input[type="range"].form-range:focus::-moz-range-thumb {
    box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);
}

/* Responsive: Veranstaltungsliste & Karten */
@media (max-width: 575.98px) {
    .veranstaltungen-zeile:not(.veranstaltungen-zeile-komm):not(.veranstaltungen-zeile-einzel) > [class*="col-"] {
        flex: 0 0 100%;
        max-width: 100%;
    }

    .such-karte-klein .card-body {
        padding: 0.75rem !important;
    }

    .such-karte-klein-bild,
    .such-bild-banner {
        height: 140px;
    }
}

@media (max-width: 767.98px) {
    div#map {
        height: 200px;
        margin-bottom: 0.75rem;
    }

    .veranstaltungen-schnellfilter .btn {
        flex: 1 1 calc(50% - 0.5rem);
        min-width: 0;
    }

    .veranstaltungen-zeile-komm > [class*="col-"] {
        padding-left: 0;
        padding-right: 0;
    }

    .veranstaltung-komm-bild {
        min-height: 0;
        height: 220px;
        max-height: 220px;
        padding: 8px;
    }

    .veranstaltung-komm-bild-link,
    .veranstaltung-komm-bild > a {
        min-height: 0;
        height: 100%;
    }

    .such-bild-komm,
    .veranstaltung-komm-bild img {
        max-height: 100% !important;
        width: auto !important;
        max-width: 100%;
    }

    .veranstaltung-karte-komm .card-body {
        padding: 1rem !important;
    }

    .veranstaltung-karte-komm .card-title {
        font-size: 1.05rem !important;
    }

    .veranstaltung-karte-komm footer {
        flex-direction: column;
        align-items: stretch !important;
        gap: 0.75rem;
    }

    .veranstaltung-karte-komm footer .btn {
        width: 100%;
        text-align: center;
    }

    /* Suchergebnis-Adressen (kommerziell): Bild oben vollbreit, Text darunter – Logos lesbar */
    .suchergebnis-liste .veranstaltung-karte-komm > .row,
    .suchergebnis-liste .such-karte-komm-zeile {
        flex-direction: column !important;
        align-items: stretch !important;
    }

    .suchergebnis-liste .veranstaltung-komm-bild,
    .suchergebnis-liste .veranstaltung-komm-bild.col-4,
    .suchergebnis-liste .veranstaltung-komm-bild.col-12 {
        flex: 0 0 auto !important;
        max-width: 100% !important;
        width: 100% !important;
        height: auto;
        min-height: 160px;
        max-height: 280px;
        padding: 10px;
    }

    .suchergebnis-liste .veranstaltung-karte-komm > .row > .col-8,
    .suchergebnis-liste .veranstaltung-karte-komm > .row > .col-4,
    .suchergebnis-liste .veranstaltung-karte-komm > .row > [class*="col-md-8"],
    .suchergebnis-liste .veranstaltung-karte-komm > .row > [class*="col-md-4"],
    .suchergebnis-liste .veranstaltung-karte-komm > .row > .col-12.d-flex {
        flex: 0 0 auto !important;
        max-width: 100% !important;
        width: 100% !important;
    }

    .suchergebnis-liste .veranstaltung-komm-bild-link,
    .suchergebnis-liste .veranstaltung-komm-bild > a {
        height: auto;
        min-height: 140px;
        max-height: 260px;
    }

    .suchergebnis-liste .such-bild-komm,
    .suchergebnis-liste .veranstaltung-komm-bild img {
        width: auto !important;
        max-width: 100% !important;
        height: auto !important;
        max-height: 240px !important;
        object-fit: contain !important;
    }

    .suchergebnis-liste .veranstaltung-karte-komm .card-body {
        padding: 0.85rem 1rem !important;
    }

    .suchergebnis-liste .veranstaltung-karte-komm .card-title {
        font-size: 1.05rem !important;
        margin-bottom: 0.35rem !important;
    }

    .suchergebnis-liste .veranstaltung-komm-text {
        font-size: 0.875rem !important;
        line-height: 1.4 !important;
        max-height: none;
        overflow: visible;
        margin-bottom: 0.5rem !important;
        display: block;
        -webkit-line-clamp: unset;
    }

    .suchergebnis-liste .veranstaltung-karte-komm footer {
        flex-direction: row !important;
        align-items: center !important;
        gap: 0.35rem;
    }

    .suchergebnis-liste .veranstaltung-karte-komm footer .btn {
        width: auto;
        flex: 0 0 auto;
        padding: 0.2rem 0.55rem;
        font-size: 0.75rem;
    }

    .suchergebnis-raster > [class*="col-"] {
        flex: 0 0 100%;
        max-width: 100%;
    }

    /* Einzelkarte: Bild links, Text rechts – auch auf dem Handy */
    .veranstaltungen-zeile-einzel .such-karte-einzel-zeile > .row {
        flex-direction: row !important;
    }

    .veranstaltungen-zeile-einzel .veranstaltung-karte-einzel-bild {
        flex: 0 0 38%;
        max-width: 38%;
        min-height: 0;
    }

    .veranstaltungen-zeile-einzel .veranstaltung-karte-einzel-bild .such-karte-klein-bild,
    .veranstaltungen-zeile-einzel .veranstaltung-karte-einzel-bild .such-karte-klein-img {
        min-height: 130px;
        height: 130px;
    }

    .veranstaltungen-zeile-einzel .such-karte-einzel-zeile > .row > .col-md-8 {
        flex: 1 1 auto;
        max-width: 62%;
    }

    .veranstaltungen-zeile-einzel .such-karte-einzel-zeile .card-body {
        padding: 0.65rem !important;
    }

    .veranstaltungen-zeile-einzel .such-karte-einzel-zeile .card-title {
        font-size: 0.875rem !important;
    }

    .veranstaltungen-zeile-einzel .such-karte-einzel-zeile .mt-auto.text-center {
        text-align: left !important;
    }

    .veranstaltungen-zeile-einzel .such-karte-einzel-zeile .btn {
        width: 100%;
    }
}

/* Wochenmarkt-Sammelkarte (Sortierung nach Datum) */
.veranstaltungen-zeile-wochenmarkt {
    width: 100%;
}

.veranstaltung-karte-wochenmarkt {
    border: 2px solid #e8c07a !important;
    box-shadow: 0 2px 12px rgba(180, 120, 40, 0.14);
    border-radius: 15px;
    overflow: hidden;
}

.veranstaltung-wochenmarkt-titel {
    color: #8a5a12;
    font-size: 1.1rem;
    line-height: 1.35;
}

.wochenmarkt-sammel-kopf {
    padding: 0.85rem 1.1rem 0.35rem;
}

.wochenmarkt-sammel-sub {
    font-size: 0.8125rem;
}

.wochenmarkt-hero {
    position: relative;
    width: 100%;
    height: 220px;
    overflow: hidden;
    background: #c9b896;
}

.wochenmarkt-hero-img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 40%;
}

.wochenmarkt-hero-overlays {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    top: 0;
    pointer-events: none;
}

.wochenmarkt-hero-card {
    position: absolute;
    left: 12px;
    right: 12px;
    bottom: 12px;
    pointer-events: auto;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.25rem 0.6rem;
    padding: 0.55rem 0.8rem;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12);
    text-decoration: none;
    color: #212529;
    opacity: 0;
    z-index: 0;
}

.wochenmarkt-hero-card.is-active {
    z-index: 1;
    opacity: 1;
}

.wochenmarkt-hero-card:hover {
    background: #fff;
    text-decoration: none;
    color: #212529;
}

.wochenmarkt-hero-name {
    font-weight: 700;
    font-size: 0.95rem;
    line-height: 1.25;
}

.wochenmarkt-hero-meta {
    font-size: 0.8rem;
    color: #5a5a5a;
}

.wochenmarkt-hero-link {
    margin-left: auto;
    font-size: 0.75rem;
    font-weight: 600;
    color: #0a58ca;
}

.wochenmarkt-hero-card .wochenmarkt-badge-jetzt {
    margin-left: 0;
}

.wochenmarkt-sammel-content {
    background: #fff;
}

/* CSS Grid: gleiche Zeilenhoehe (keine Masonry-Versaetze), dezentes gap */
.wochenmarkt-liste,
.wochenmarkt-stadt-liste {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.65rem;
    align-items: stretch;
}

@media (min-width: 768px) {
    .wochenmarkt-liste,
    .wochenmarkt-stadt-liste {
        grid-template-columns: 1fr 1fr;
    }
}

.wochenmarkt-liste {
    padding: 0.2rem 0.75rem 1rem;
}

.wochenmarkt-liste-item {
    display: flex;
    min-width: 0;
    width: 100%;
}

.wochenmarkt-liste-zeile {
    position: relative;
    display: flex;
    gap: 0.75rem;
    align-items: center;
    padding: 0.55rem 0.6rem;
    border-radius: 10px;
    width: 100%;
    min-height: 104px;
    height: 100%;
    text-decoration: none;
    color: inherit;
    box-sizing: border-box;
    box-shadow: inset 0 0 0 1px #e4ddd0;
    background: #fff;
}

.wochenmarkt-liste-zeile:hover {
    background: #faf6ee;
    text-decoration: none;
    color: inherit;
    box-shadow: inset 0 0 0 1px #d9cfbd;
}

.wochenmarkt-liste-bild,
.wochenmarkt-liste-bild-leer {
    flex: 0 0 80px;
    width: 80px;
    height: 80px;
    border-radius: 10px;
    overflow: hidden;
    background: #f3eee4;
    border: 1px solid #e0d6c4;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
    display: block;
    box-sizing: border-box;
}

.wochenmarkt-liste-bild img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.wochenmarkt-liste-text {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-right: 0.15rem;
}

.wochenmarkt-liste-name {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-weight: 700;
    font-size: 0.9rem;
    color: #212529;
    text-decoration: none;
    line-height: 1.3;
    max-height: 2.6em;
}

.wochenmarkt-liste-zeile.is-open .wochenmarkt-liste-name {
    padding-right: 5.2rem;
}

.wochenmarkt-liste-zeile:hover .wochenmarkt-liste-name {
    color: #8a5a12;
}

.wochenmarkt-liste-info {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: 0.78rem;
    line-height: 1.35;
    color: #5a5a5a;
    margin-top: 0.18rem;
    max-height: 2.7em;
}

.wochenmarkt-liste-meta {
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: 0.75rem;
    color: #6c757d;
    margin-top: 0.28rem;
    line-height: 1.4;
    max-height: 1.4em;
}

.wochenmarkt-liste-zeile.is-open {
    background: #eef8ee;
    box-shadow: inset 0 0 0 1px #b7dfb9;
}

.wochenmarkt-liste-zeile.is-open:hover {
    background: #e4f3e5;
}

.wochenmarkt-liste-zeile > .wochenmarkt-badge-jetzt {
    position: absolute;
    top: 0.35rem;
    right: 0.4rem;
    z-index: 2;
    margin: 0;
}

.wochenmarkt-badge-jetzt {
    display: inline-block;
    margin-left: 0;
    padding: 0.12rem 0.45rem;
    border-radius: 999px;
    background: #198754;
    color: #fff !important;
    font-size: 0.65rem;
    font-weight: 700;
    vertical-align: middle;
    white-space: nowrap;
    line-height: 1.2;
}

.wochenmarkt-stadt-wrap {
    width: 100%;
    grid-column: 1 / -1;
}

.wochenmarkt-stadt {
    width: 100%;
    background: #fbf8f2;
    border: 1px solid #ead9b8;
    border-radius: 10px;
    padding: 0.2rem 0.55rem 0.45rem;
    margin: 0;
    box-sizing: border-box;
}

.wochenmarkt-stadt-kopf {
    font-weight: 700;
    color: #8a5a12;
    font-size: 0.95rem;
    padding: 0.45rem 0.25rem;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.25rem 0.55rem;
    cursor: pointer;
    list-style: none;
    user-select: none;
}

.wochenmarkt-stadt-kopf::-webkit-details-marker {
    display: none;
}

.wochenmarkt-stadt-kopf::marker {
    content: '';
}

.wochenmarkt-stadt-toggle {
    display: inline-block;
    flex: 0 0 auto;
    width: 0.9em;
    font-weight: 700;
    color: #8a5a12;
    line-height: 1;
}

.wochenmarkt-stadt-toggle::before {
    content: '\25B8'; /* ▸ */
}

.wochenmarkt-stadt[open] .wochenmarkt-stadt-toggle::before {
    content: '\25BE'; /* ▾ */
}

.wochenmarkt-stadt-kopf:hover {
    color: #6d470e;
}

.wochenmarkt-stadt-name {
    font-weight: 700;
}

.wochenmarkt-stadt-anz {
    font-weight: 600;
    font-size: 0.78rem;
    color: #6c757d;
    line-height: 1.35;
}

.wochenmarkt-stadt-liste {
    margin: 0;
    padding: 0 0 0.25rem;
}

.wochenmarkt-stadt:not([open]) .wochenmarkt-stadt-liste {
    display: none;
}

.veranstaltung-karte-wochenmarkt.is-heute {
    border-color: #d4a017 !important;
}

@media (max-width: 767.98px) {
    .wochenmarkt-hero {
        height: 168px;
    }

    .veranstaltung-wochenmarkt-titel {
        font-size: 1rem;
    }
}

/* Weihnachtsmarkt-Sammelkarte: Layout der Wochenmarkt-Klassen, eigene Farben */
.veranstaltungen-zeile-weihnachtsmarkt {
    width: 100%;
}

.veranstaltung-karte-weihnachtsmarkt {
    border: 2px solid #b54747 !important;
    box-shadow: 0 2px 12px rgba(120, 30, 40, 0.16);
}

.veranstaltung-karte-weihnachtsmarkt .veranstaltung-wochenmarkt-titel,
.veranstaltung-weihnachtsmarkt-titel {
    color: #7a1f2b;
}

.veranstaltung-karte-weihnachtsmarkt .wochenmarkt-hero {
    background: #2a1818;
}

.veranstaltung-karte-weihnachtsmarkt .wochenmarkt-liste-zeile {
    box-shadow: inset 0 0 0 1px #e4d0d0;
}

.veranstaltung-karte-weihnachtsmarkt .wochenmarkt-liste-zeile:hover {
    background: #faf4f4;
    box-shadow: inset 0 0 0 1px #d9c0c0;
}

.veranstaltung-karte-weihnachtsmarkt .wochenmarkt-liste-zeile:hover .wochenmarkt-liste-name {
    color: #7a1f2b;
}

.veranstaltung-karte-weihnachtsmarkt .wochenmarkt-liste-bild,
.veranstaltung-karte-weihnachtsmarkt .wochenmarkt-liste-bild-leer {
    background: #f3e8e8;
    border-color: #e0c8c8;
}

.veranstaltung-karte-weihnachtsmarkt .wochenmarkt-stadt {
    background: #f8f2f2;
    border-color: #e4c8c8;
}

.veranstaltung-karte-weihnachtsmarkt .wochenmarkt-stadt-kopf,
.veranstaltung-karte-weihnachtsmarkt .wochenmarkt-stadt-toggle {
    color: #7a1f2b;
}

.veranstaltung-karte-weihnachtsmarkt .wochenmarkt-stadt-kopf:hover {
    color: #5c161f;
}

.veranstaltung-karte-weihnachtsmarkt.is-heute {
    border-color: #c9a227 !important;
}

/* Portal FH/HG (#veranstaltungenPortalRoot) – optisch wie my-events24/WW */
#veranstaltungenPortalRoot .treffer-spinner,
#veranstaltungenPortalRoot .veranstaltungen-treffer-spinner {
    width: 1rem;
    height: 1rem;
    border: 2px solid rgba(10, 88, 202, 0.25);
    border-top-color: #0a58ca;
    border-radius: 50%;
    animation: veranstaltungen-spin 0.7s linear infinite;
    display: inline-block;
}

#veranstaltungenPortalRoot .veranstaltungen-treffer-badge {
    background: #e7f1ff !important;
    color: #0a58ca !important;
}

#veranstaltungenPortalRoot .veranstaltungen-treffer-badge.is-loading .treffer-spinner,
#veranstaltungenPortalRoot .veranstaltungen-treffer-badge.is-loading .veranstaltungen-treffer-spinner {
    display: inline-block;
}

#veranstaltungenPortalRoot .veranstaltungen-treffer-badge:not(.is-loading) .treffer-spinner,
#veranstaltungenPortalRoot .veranstaltungen-treffer-badge:not(.is-loading) .veranstaltungen-treffer-spinner {
    display: none;
}

#veranstaltungenPortalRoot .veranstaltungen-schnellfilter .schnellfilter-btn {
    background: #fff;
    border: 1px solid #ced4da;
    color: #212529;
}

#veranstaltungenPortalRoot .veranstaltungen-schnellfilter .schnellfilter-btn.active,
#veranstaltungenPortalRoot .veranstaltungen-schnellfilter .schnellfilter-btn:hover {
    background: #0a58ca;
    border-color: #0a58ca;
    color: #fff;
}

#veranstaltungenPortalRoot .btn-primary {
    color: #222222 !important;
    background-color: #dddddd !important;
    border: 1px solid #aaaaaa !important;
}

#veranstaltungenPortalRoot .btn-outline-primary {
    color: #222222 !important;
    background-color: transparent !important;
    border: 1px solid #aaaaaa !important;
}

#veranstaltungenPortalRoot .bg_veranstaltung,
#veranstaltungenPortalRoot .veranstaltungen-suchmaske {
    background: linear-gradient(180deg, #fbf8f4 0%, #efe6da 100%) !important;
    border-radius: 20px;
    border: 1px solid rgba(80, 60, 40, 0.1);
    box-shadow: 0 8px 22px rgba(60, 40, 20, 0.06);
}

#veranstaltungenPortalRoot .veranstaltungen-suchmaske .input-group-text {
    background: #fff;
    color: #495057;
    border-color: #ced4da;
}

#veranstaltungenPortalRoot .radius-slider-wrap {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

#veranstaltungenPortalRoot .radius-slider-wrap .form-range {
    flex: 1;
}

#veranstaltungenPortalRoot #map {
    height: 500px;
    width: 100%;
    border-radius: 8px;
    margin-top: 1rem;
}

/* Portal FH/HG: volle Breite fuer Karte + Ajax unter der Suchzeile */
#veranstaltungenPortalRoot {
    display: block;
    width: 100%;
    max-width: 100%;
}

#veranstaltungenPortalRoot .veranstaltungen-portal-haupt,
#veranstaltungenPortalRoot .veranstaltungen-such-zeile {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    width: 100%;
    max-width: 100%;
}

#veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-portal-inhalt,
#veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-such-spalte,
#veranstaltungenPortalRoot .veranstaltungen-such-zeile > .veranstaltungen-such-spalte,
#veranstaltungenPortalRoot .veranstaltungen-such-zeile > [class*="col-sm-9"],
#veranstaltungenPortalRoot .veranstaltungen-such-zeile > [class*="col-lg-9"] {
    order: 1;
    min-width: 0;
}

#veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-portal-sidebar,
#veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-such-werbung,
#veranstaltungenPortalRoot .veranstaltungen-such-zeile > .veranstaltungen-such-werbung,
#veranstaltungenPortalRoot .veranstaltungen-such-zeile > [class*="col-sm-3"],
#veranstaltungenPortalRoot .veranstaltungen-such-zeile > [class*="col-lg-3"] {
    order: 2;
    min-width: 0;
}

#veranstaltungenPortalRoot .veranstaltungen-such-zeile > .veranstaltungen-such-spalte:only-child {
    flex: 0 0 100%;
    max-width: 100%;
}

#veranstaltungenPortalRoot #ajaxVeranstaltungen,
#veranstaltungenPortalRoot #map {
    display: block;
    width: 100%;
    max-width: 100%;
    clear: both;
    flex: none;
}

#veranstaltungenPortalRoot #ajaxVeranstaltungen {
    min-width: 0;
}

#veranstaltungenPortalRoot #ajaxVeranstaltungen .veranstaltungen-ajax-inhalt,
#veranstaltungenPortalRoot #ajaxVeranstaltungen > .row {
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
}

#veranstaltungenPortalRoot #ajaxVeranstaltungen .veranstaltungen-ajax-inhalt > [class*="col-"],
#veranstaltungenPortalRoot #ajaxVeranstaltungen > .row > [class*="col-"],
#veranstaltungenPortalRoot #ajaxVeranstaltungen > [class*="col-"] {
    width: 100%;
    max-width: 100%;
    flex: 0 0 100%;
    min-width: 0;
}

#veranstaltungenPortalRoot #ajaxVeranstaltungen .veranstaltungen-liste-container {
    width: 100%;
    max-width: 100%;
    padding-left: 0;
    padding-right: 0;
}

#veranstaltungenPortalRoot #ajaxVeranstaltungen .veranstaltungen-zeile {
    display: flex;
    flex-wrap: wrap;
    width: 100%;
    max-width: 100%;
}

#veranstaltungenPortalRoot #ajaxVeranstaltungen .veranstaltungen-zeile > [class*="col-"] {
    min-width: 0;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

@media (min-width: 576px) {
    #veranstaltungenPortalRoot .veranstaltungen-portal-haupt.flex-sm-nowrap,
    #veranstaltungenPortalRoot .veranstaltungen-such-zeile.flex-sm-nowrap {
        flex-wrap: nowrap;
    }

    #veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-portal-inhalt,
    #veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-such-spalte,
    #veranstaltungenPortalRoot .veranstaltungen-such-zeile > .veranstaltungen-such-spalte,
    #veranstaltungenPortalRoot .veranstaltungen-such-zeile > [class*="col-sm-9"],
    #veranstaltungenPortalRoot .veranstaltungen-such-zeile > [class*="col-lg-9"] {
        flex: 0 0 75%;
        max-width: 75%;
    }

    #veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-portal-sidebar,
    #veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-such-werbung,
    #veranstaltungenPortalRoot .veranstaltungen-such-zeile > .veranstaltungen-such-werbung,
    #veranstaltungenPortalRoot .veranstaltungen-such-zeile > [class*="col-sm-3"],
    #veranstaltungenPortalRoot .veranstaltungen-such-zeile > [class*="col-lg-3"] {
        flex: 0 0 25%;
        max-width: 25%;
    }
}

@media (min-width: 768px) {
    #veranstaltungenPortalRoot #ajaxVeranstaltungen .veranstaltungen-zeile > .col-md-4,
    #veranstaltungenPortalRoot #ajaxVeranstaltungen .veranstaltungen-zeile > [class*="col-md-4"] {
        flex: 0 0 33.333333%;
        max-width: 33.333333%;
    }
}

@media (max-width: 575.98px) {
    #veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-portal-inhalt,
    #veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-such-spalte,
    #veranstaltungenPortalRoot .veranstaltungen-such-zeile > .veranstaltungen-such-spalte,
    #veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-portal-sidebar,
    #veranstaltungenPortalRoot .veranstaltungen-portal-haupt > .veranstaltungen-such-werbung,
    #veranstaltungenPortalRoot .veranstaltungen-such-zeile > .veranstaltungen-such-werbung {
        flex: 0 0 100%;
        max-width: 100%;
    }
}

/* my-events Suchmaske: ruhiger Karten-Look, alle Felder bleiben. */
.veranstaltungen-suchmaske.bg_veranstaltung,
#veranstaltungenPortalRoot .veranstaltungen-suchmaske {
    padding: 1.2rem 1.25rem 1rem !important;
}

.veranstaltungen-suchmaske .form-label {
    color: #5c5348;
    font-weight: 600;
    font-size: 0.92rem;
    margin-bottom: 0.4rem;
    letter-spacing: 0.01em;
}

.veranstaltungen-suchmaske .veranstaltungen-treffer-badge {
    margin: 0 0 0.95rem;
}

.veranstaltungen-suchmaske .veranstaltungen-schnellfilter {
    gap: 0.55rem 0.7rem;
    margin-bottom: 1.25rem;
    padding-bottom: 1.15rem;
    border-bottom: 1px solid rgba(80, 60, 40, 0.1);
}

.veranstaltungen-suchmaske .veranstaltungen-schnellfilter .schnellfilter-btn,
#veranstaltungenPortalRoot .veranstaltungen-suchmaske .veranstaltungen-schnellfilter .schnellfilter-btn {
    flex: 0 1 auto;
    border-radius: 999px;
    background: #fff;
    border: 1px solid #e0d6c8;
    color: #3d3428;
    font-weight: 600;
    padding: 0.4rem 1rem;
}

.veranstaltungen-suchmaske .veranstaltungen-schnellfilter .schnellfilter-btn.active,
.veranstaltungen-suchmaske .veranstaltungen-schnellfilter .schnellfilter-btn:hover,
#veranstaltungenPortalRoot .veranstaltungen-suchmaske .veranstaltungen-schnellfilter .schnellfilter-btn.active,
#veranstaltungenPortalRoot .veranstaltungen-suchmaske .veranstaltungen-schnellfilter .schnellfilter-btn:hover {
    background: #0a58ca;
    border-color: #0a58ca;
    color: #fff;
}

.veranstaltungen-suchmaske .row {
    row-gap: 0.15rem;
}

.veranstaltungen-suchmaske .mb-3 {
    margin-bottom: 1.15rem !important;
}

.veranstaltungen-suchmaske .form-control,
.veranstaltungen-suchmaske select.form-control {
    background: #fff;
    border: 1px solid #e0d6c8;
    border-radius: 10px;
    min-height: 2.7rem;
    box-shadow: none;
}

.veranstaltungen-suchmaske .input-group {
    flex-wrap: nowrap;
    align-items: stretch;
}

.veranstaltungen-suchmaske .input-group-prepend,
.veranstaltungen-suchmaske .input-group-text {
    display: flex;
    align-items: center;
}

.veranstaltungen-suchmaske .input-group-text {
    background: #fbf8f4;
    border: 1px solid #e0d6c8;
    border-right: 0;
    color: #6b5e50;
    border-radius: 10px 0 0 10px;
    min-height: 2.7rem;
    padding-left: 0.85rem;
    padding-right: 0.75rem;
}

.veranstaltungen-suchmaske .input-group .form-control {
    border-radius: 0 10px 10px 0;
    border-left: 0;
}

.veranstaltungen-suchmaske .input-group:has(input[type="date"]) .input-group-prepend,
.veranstaltungen-suchmaske .input-group:not(:has(.form-control)) .input-group-prepend {
    display: none;
}

.veranstaltungen-suchmaske input[type="date"].form-control {
    border: 1px solid #e0d6c8;
    border-radius: 10px;
}

.veranstaltungen-suchmaske .input-group:not(:has(.form-control)) {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.5rem;
}

.veranstaltungen-suchmaske .btn-secondary,
#veranstaltungenPortalRoot .veranstaltungen-suchmaske .btn-secondary {
    width: 100%;
    margin: 0 !important;
    min-height: 2.55rem;
    border-radius: 10px;
    background: #fff;
    color: #3d3428;
    border: 1px solid #e0d6c8;
    font-weight: 600;
}

.veranstaltungen-suchmaske .radius-slider-wrap {
    background: #fff;
    border: 1px solid #e0d6c8;
    border-radius: 10px;
    min-height: 5.6rem;
    padding: 0.85rem 0.9rem;
    display: flex;
    align-items: center;
}

.veranstaltungen-suchmaske button.btn-primary,
#veranstaltungenPortalRoot .veranstaltungen-suchmaske button.btn-primary,
.veranstaltungen-suchmaske a.btn-primary,
#veranstaltungenPortalRoot .veranstaltungen-suchmaske a.btn-primary {
    min-height: 2.75rem;
    border-radius: 10px !important;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
}

.veranstaltungen-suchmaske button.btn-primary,
#veranstaltungenPortalRoot .veranstaltungen-suchmaske button.btn-primary {
    background: #0a58ca !important;
    color: #fff !important;
    border: 0 !important;
}

.veranstaltungen-suchmaske a.btn-primary,
#veranstaltungenPortalRoot .veranstaltungen-suchmaske a.btn-primary {
    background: #fff !important;
    color: #3d3428 !important;
    border: 1px solid #e0d6c8 !important;
    white-space: nowrap;
    font-size: 0.95rem;
}

/* Zusatzkommentare Detail (Unternehmenspraesentation) – gleicher Blocksatz wie Beschreibung */
.portal-detail-hinweis {
    text-align: justify;
    font-size: 0.85em;
    color: #6c6c6c;
    line-height: 1.55;
}
@media (min-width: 576px) {
    .portal-detail-hinweis {
        -webkit-hyphens: auto;
        -ms-hyphens: auto;
        hyphens: auto;
    }
}
