/* ==========================================================================
   CORE FRONTEND STYLES (Precision Alignment & Layout)
   ========================================================================== */

:root {
    /* Colors injected via PHP */
}

.eem-app-wrapper {
    width: 100%;
    box-sizing: border-box;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
}

/* Visibility Utilities (Plugin-Scoped to avoid conflicts) */
.eem-app-wrapper .eem-only-mobile { display: none; }
.eem-app-wrapper .eem-only-desktop { display: table-cell; }
@media (max-width: 799px) {
    .eem-app-wrapper .eem-only-mobile { display: block; }
    .eem-app-wrapper .eem-only-desktop { display: none; }
}
body.eem-modal-closing, 
body.eem-modal-closing * { 
    pointer-events: none; 
}

.eem-app-wrapper[data-grid-mode="fixed"] {
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
}

/* 1. Filter Bar (Desktop Base) */
.eem-filter-bar {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    background-color: var(--eem-bg-light);
    padding: 12px 20px;
    border-radius: 12px;
    border: 1px solid var(--eem-border);
    gap: 12px;
    margin-bottom: 30px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.05);
}

/* Top Row: Search + Filter-Toggle + Reset — auf Desktop immer eine Zeile.
   Mobil darf ausschliesslich der Reset-Button umbrechen (siehe unten). */
.eem-filter-top-row {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    gap: 10px;
    width: 100%;
}

/* Desktop "Filter zurücksetzen" Button (dynamic, shown by JS when filters are active)
   Farbgebung wie im Veranstaltungskalender (#ec-reset-filter): bewusst NEUTRAL
   in Grau statt in der Primaerfarbe - der Button raeumt auf, er ist keine
   Hauptaktion wie Favoriten oder Ansicht. Erst beim Hover laeuft er in der
   Primaerfarbe voll.
   Auch die Rahmenstaerke ist die des Kalenders: 1px, nicht die 2px der
   farbigen Nachbar-Buttons - ein 2px-Graurahmen wirkt deutlich schwerer.
   Die Hoehe bleibt bei den 44px der Leiste (der Kalender nutzt 42px), und
   box-sizing haelt sie unabhaengig vom Theme exakt: Ohne border-box zaehlen
   Rahmen zur Hoehe dazu, und der Button stuende neben "Favoriten" aus der
   Flucht - genau deshalb steht es unten auch bei .eem-btn-action. */
.eem-app-wrapper .eem-reset-desktop-btn {
    display: none; /* controlled by JS */
    box-sizing: border-box;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 0 18px;
    height: 44px;
    border: 1px solid #ccc;
    background: #fff;
    color: #555;
    border-radius: 4px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.2s;
    flex-shrink: 0;
}
.eem-app-wrapper .eem-reset-desktop-btn .eem-icon-svg {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.eem-app-wrapper .eem-reset-desktop-btn:hover {
    background: var(--eem-primary, #f76b15);
    border-color: var(--eem-primary, #f76b15);
    color: #ffffff;
}
.eem-app-wrapper .eem-reset-desktop-btn:hover svg {
    stroke: #ffffff;
}
/* Mobil bekommt der Button eine eigene Zeile.
   Ohne schwebende Suchleiste blendet JS ihn genau dann ein, wenn ein Filter
   aktiv ist - und zwar per Inline-Style. Eine display:none-Regel im
   Stylesheet konnte das noch nie verhindern (Inline schlaegt Stylesheet), hier
   stand deshalb bisher eine wirkungslose "Sicherheitsnetz"-Regel.
   In der Kopfzeile nahm der Button neben Suchfeld und Filter-Icon so viel
   Platz weg, dass die Sucheingabe auf kleinen Displays winzig wurde. Mit
   flex-basis 100% rutscht er in die naechste Zeile; das gap der Kopfzeile
   sorgt fuer den Abstand. Ist kein Filter gesetzt, ist der Button
   display:none, erzeugt keine Box - die Kopfzeile bleibt unveraendert. */
@media (max-width: 799px) {
    .eem-filter-top-row {
        flex-wrap: wrap;
    }

    .eem-app-wrapper .eem-reset-desktop-btn {
        flex: 0 0 100%;
        width: 100%;
        /* Als Flex-Kind ist der Button blockifiziert, justify-content greift
           deshalb nicht - die Beschriftung wird per text-align zentriert. */
        text-align: center;
        justify-content: center;
    }
}

/* Search Group — stretches to fill top row */
.eem-filter-search-group {
    display: flex;
    align-items: center;
    flex: 1 1 0%;
    min-width: 0;
    position: relative;
    height: 44px;
}

.eem-app-wrapper .eem-search-input {
    width: 100%;
    height: 44px;
    padding: 0 45px 0 40px;
    border-radius: 4px;
    border: 1px solid #ccc;
    background: #fff;
    font-size: 14px;
    margin: 0;
    line-height: 44px;
}

/* Fixed Lupe Alignment */
.eem-filter-search-group::before {
    content: "\f179";
    font-family: dashicons;
    position: absolute;
    left: 12px;
    top: 50%;
    margin-top: -10px; /* Offset to center 20px icon in 44px container */
    font-size: 20px;
    color: #888;
    z-index: 10;
}

.eem-search-clear {
    position: absolute;
    right: 12px;
    top: 50%;
    height: 20px;
    width: 20px;
    margin-top: -10px; /* Exact same as Lupe */
    display: none;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    color: #bbb;
    cursor: pointer;
    z-index: 10;
}

/* Collapsible Section */
.eem-filter-collapsible {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 15px;
    width: 100%;
}

/* Umbruch statt Ueberlauf: Die Leiste war auf drei Dropdowns ausgelegt
   (nowrap + min-width 180px). Mit den optionalen Filtern (Produkte, Land,
   Verkauf am Stand, Veranstaltungen) koennen es bis zu sieben sein - dann passte die Zeile nicht
   mehr in den Container und ragte rechts ueber den Rand hinaus, weil eine
   min-width Flex-Elemente am Schrumpfen hindert.
   Jetzt umbrechen die Dropdowns in eine zweite Zeile und bleiben buendig
   innerhalb der Filterleiste - links auf einer Kante mit dem Suchfeld. */
.eem-filter-select-group {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    flex: 1 1 auto;
    min-width: 0;
}

/* Custom Multi-Select UI */
.eem-custom-select {
    position: relative;
    width: auto;
    height: 44px;
    /* 180px ist die Wunschbreite (flex-basis), nicht mehr die Mindestbreite:
       Passen mehrere Dropdowns nicht nebeneinander, umbrechen sie; wird der
       Container selbst schmaler (Theme-Sidebar), schrumpfen sie mit. */
    flex: 1 1 180px;
    min-width: 0;
}

.eem-select-trigger {
    height: 100%;
    width: 100%;
    padding: 0 35px 0 15px;
    background: #fff;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 14px;
    line-height: 42px;
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    position: relative;
    box-sizing: border-box;
}

.eem-select-trigger::after {
    content: "";
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    width: 16px;
    height: 16px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E") no-repeat center;
}

.eem-select-options {
    display: none;
    position: absolute;
    top: calc(100% + 5px);
    left: 0;
    width: 100%;
    min-width: 200px;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-shadow: 0 10px 25px rgba(0,0,0,0.1);
    z-index: 1000;
    max-height: 350px;
    overflow-y: auto;
    padding: 0 0 10px 0;
}

/* Das aufgeklappte Panel ist mindestens 200px breit und damit potenziell
   breiter als sein Dropdown. Beim letzten Dropdown der Gruppe wuerde es
   dadurch rechts aus der Filterleiste herauslaufen - dort oeffnet es deshalb
   nach links. */
.eem-filter-select-group .eem-custom-select:last-child .eem-select-options {
    left: auto;
    right: 0;
}

.eem-custom-select-search {
    padding: 10px 15px 5px 15px;
    border-bottom: 1px solid #eee;
    margin-bottom: 0;
    position: sticky;
    top: 0;
    background: #fff;
    z-index: 10;
}

.eem-custom-select-search-inner {
    position: relative;
    width: 100%;
}

.eem-custom-select-search input {
    width: 100%;
    margin: 0;
    padding: 6px 30px 6px 12px;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 13px;
    box-sizing: border-box;
    /* Das Feld ist type="search"; ohne diesen Reset weicht die Darstellung in
       WebKit vom uebrigen Formular ab (eigene Rundung/Innenabstaende). */
    -webkit-appearance: none;
    appearance: none;
}

.eem-custom-select-search input:focus {
    outline: none;
    border-color: var(--eem-primary);
}

.eem-custom-search-clear {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    color: #999;
    cursor: pointer;
    font-size: 16px;
    width: 16px;
    height: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.eem-custom-search-clear:hover {
    color: var(--eem-primary);
}

.eem-custom-select-reset {
    margin-top: 6px;
    text-align: left;
}

.eem-reset-filter-link {
    font-size: 12px;
    color: var(--eem-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.eem-reset-filter-link .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

.eem-reset-filter-link:hover {
    text-decoration: underline;
}

.eem-custom-select.active .eem-select-options {
    display: block;
    animation: eemFadeInDown 0.2s ease forwards;
}

.eem-select-option {
    padding: 8px 15px;
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    transition: background 0.2s;
    font-size: 14px;
    color: #444;
}

.eem-select-option:hover {
    background: #f9f9f9;
}

.eem-select-option input {
    margin: 0;
    width: 16px;
    height: 16px;
    accent-color: var(--eem-primary);
}

/* --- Hierarchische Filterliste (Produkte) ---------------------------------
   Die Zeilen sind flache Geschwister; die Ebene macht allein der linke
   Einzug sichtbar. Vier Stufen reichen - tiefere Ebenen bleiben auf Stufe 4,
   damit die Beschriftung nicht an den rechten Rand wandert. */
.eem-select-depth-1 { padding-left: 33px; }
.eem-select-depth-2 { padding-left: 51px; }
.eem-select-depth-3 { padding-left: 69px; }
.eem-select-depth-4 { padding-left: 87px; }

/* Aufklapp-Pfeil vor Oberkategorien. Der Platzhalter daneben ist gleich breit,
   damit Eintraege ohne Unterebene buendig mit ihren Geschwistern stehen. */
.eem-select-branch-toggle,
.eem-select-branch-spacer {
    display: inline-block;
    width: 14px;
    height: 14px;
    flex-shrink: 0;
}

.eem-select-branch-toggle {
    cursor: pointer;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23666666' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E") no-repeat center;
    transition: transform 0.15s ease;
}

/* Offener Zweig: derselbe Pfeil, nach unten gedreht. */
.eem-select-option.eem-branch-open > .eem-select-branch-toggle {
    transform: rotate(90deg);
}

.eem-select-option.all-option {
    border-bottom: 1px solid #eee;
    margin-bottom: 5px;
    font-weight: 700;
}

/* Farbkachel der Typ-Filter (Term-Meta "term_color").
   Masse 1:1 wie .ec-venue-color-square im Event-Kalender, damit beide
   Plugins nebeneinander gleich aussehen.
   Kein margin-right: In .eem-select-option regelt gap: 10px den Abstand.
   vertical-align wird dort ignoriert (Flex-Kind) und greift nur im
   geschlossenen Trigger, der eine reine Textzeile ist. */
.eem-select-color-square {
    display: inline-block;
    width: 14px;
    height: 14px;
    border-radius: 2px;
    border: 1px solid rgba(0, 0, 0, 0.1);
    flex-shrink: 0;
    vertical-align: middle;
}

/* Im geschlossenen Feld steht die Kachel inline vor dem Namen und braucht
   den Abstand selbst - dort gibt es kein Flex-Gap. */
.eem-select-trigger .eem-select-color-square {
    margin-right: 8px;
    position: relative;
    top: -1px;
}

/* Landesflagge im Laenderfilter: Gegenstueck zur Farbkachel, aber bewusst am
   ZEILENENDE. margin-left:auto schiebt sie im Flex-Container ganz nach rechts,
   sodass alle Namen linksbuendig untereinander stehen und die Flaggen eine
   saubere rechte Kante bilden. */
.eem-select-flag {
    width: 20px;
    height: 15px;
    object-fit: cover;
    border-radius: 2px;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);
    flex-shrink: 0;
    margin-left: auto;
}

/* Fallback ohne mitgeliefertes Flaggen-SVG: das ISO-Kuerzel als Badge. */
.eem-select-flag-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-width: 20px;
    padding: 0 4px;
    font-size: 10px;
    font-weight: 700;
    line-height: 1;
    color: #555;
    background: #f0f0f1;
    border: 1px solid #ddd;
    box-shadow: none;
}

.eem-select-flag-empty {
    box-shadow: none;
    background: transparent;
}

/* Der geschlossene Trigger ist eine Textzeile ohne Flex - dort haengt die
   Flagge mit festem Abstand hinter dem Namen. */
.eem-select-trigger .eem-select-flag {
    display: inline-block;
    margin-left: 8px;
    position: relative;
    top: 2px;
}

/* Damit margin-left:auto greift, muss die Option ein Flex-Container mit
   voller Breite sein - das ist sie bereits (.eem-select-option). Das Label
   darf dabei nicht schrumpfen, sonst rutscht die Flagge an den Text heran. */
.eem-select-option .eem-select-option-label {
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Sprechblase am geschlossenen Feld: Ab zwei gewaehlten Eintraegen steht im
   Feld nur die Anzahl ("3 ausgewaehlt"), beim Ueberfahren zeigt die Blase,
   welche es sind - mit Farbkachel bzw. Flagge wie in der Liste.
   Gegenstueck zu .ec-multi-select-tip im Event-Kalender (Stil wie dessen
   Sprechblase am Rollennamen); Aenderungen in beiden Plugins nachziehen.
   Nur mit Maus: Beim Antippen oeffnet sich ohnehin die Liste mit den
   Haekchen. Bei offener Liste bleibt die Blase aus. */
.eem-select-tip {
    position: absolute;
    left: 0;
    top: calc(100% + 10px);
    z-index: 1001;
    width: max-content;
    min-width: 160px;
    max-width: min(300px, 80vw);
    padding: 8px 12px;
    background: #fff;
    border: 1px solid var(--eem-primary);
    border-radius: 6px;
    box-shadow: 0 10px 28px rgba(0, 0, 0, .16);
    font-size: 13px;
    line-height: 1.4;
    color: #444;
    text-align: left;
    box-sizing: border-box;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    transition: opacity .15s ease, transform .15s ease, visibility 0s linear .15s;
    pointer-events: none;
}

/* Die Spitze zeigt auf das Feld; sichtbar bleibt nur die obere Haelfte mit
   dem Rahmen. */
.eem-select-tip::before {
    content: "";
    position: absolute;
    top: -6px;
    left: 22px;
    width: 12px;
    height: 12px;
    background: #fff;
    border-top: 1px solid var(--eem-primary);
    border-left: 1px solid var(--eem-primary);
    transform: rotate(45deg);
}

/* Wie die Liste oeffnet die Blase beim letzten Dropdown der Gruppe nach
   links, sonst liefe sie rechts aus der Filterleiste. */
.eem-filter-select-group .eem-custom-select:last-child .eem-select-tip {
    left: auto;
    right: 0;
}

.eem-filter-select-group .eem-custom-select:last-child .eem-select-tip::before {
    left: auto;
    right: 22px;
}

.eem-select-tip-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 2px 0;
}

@media (hover: hover) {
    .eem-custom-select.eem-has-tip:not(.active):hover .eem-select-tip {
        opacity: 1;
        visibility: visible;
        transform: none;
        transition: opacity .15s ease, transform .15s ease, visibility 0s;
    }
}

@media (prefers-reduced-motion: reduce) {
    .eem-select-tip {
        transform: none;
        transition: none;
    }
}

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

/* Actions Group */
.eem-filter-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    flex: 0 1 auto;
    margin-left: auto;
}

/* Desktop: Aktionen (Grid/Liste, Favoriten, Teilen) teilen sich die Zeile mit
   den Filtern, statt eine eigene Zeile zu belegen.
   display: contents loest die Zwischenbox .eem-filter-select-group im Layout
   auf - ihre Dropdowns werden dadurch zu Flex-Elementen derselben
   umbrechenden Zeile wie .eem-filter-actions und fuellen die Breite
   gemeinsam. Das Markup bleibt unveraendert, die mobile Spalten-Anordnung
   der Gruppe ebenfalls.
   Ausgenommen ist das Filter-Sheet (.eem-filters-expanded): Es ordnet die
   Gruppe bewusst als eigene Spalte an und kann im App-Modus (PWA) auch
   oberhalb von 800px aktiv sein. */
@media (min-width: 800px) {
    .eem-filter-bar:not(.eem-filters-expanded) .eem-filter-select-group {
        display: contents;
    }

    /* Kleinere flex-basis, damit eine Zeile mehr Elemente aufnimmt - die
       Dropdowns werden dadurch NICHT schmaler: flex-grow verteilt den Rest
       der Zeile wieder auf sie. Erst wenn auch das nicht mehr reicht, rutschen
       einzelne Elemente in die naechste Zeile. */
    .eem-filter-bar:not(.eem-filters-expanded) .eem-filter-select-group > .eem-custom-select {
        flex: 1 1 155px;
    }

    /* Gleicher Abstand wie in der Suchzeile darueber (10px statt 15px), damit
       Filter und Buttons als eine Leiste wirken. */
    .eem-filter-bar:not(.eem-filters-expanded) .eem-filter-collapsible {
        gap: 10px;
    }
}

.eem-btn-action {
    height: 44px;
    /* Rahmen zaehlt zur Hoehe: Nur so sind dieser Button und der schmaler
       umrandete "Filter zuruecksetzen" exakt gleich hoch, egal welches
       Box-Modell das Theme vorgibt. */
    box-sizing: border-box;
    padding: 0 18px;
    background: #fff;
    border: 2px solid var(--eem-primary);
    border-radius: 4px;
    color: var(--eem-primary);
    font-weight: 700;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    transition: all 0.2s;
    font-size: 14px;
}

.eem-btn-action:hover, .eem-btn-action.eem-active {
    background: var(--eem-primary);
    color: #fff;
}

/* Favoriten-Icons als wiederverwendbare CSS-Masken (assets/icons/, wie im
   Veranstaltungskalender) - genutzt in Filterleiste, Kacheln, Tabelle,
   Detailseite, Detail-Modal und Kartenblatt.
   Als Maske folgt das Motiv immer der Textfarbe: grau im Ruhezustand, orange
   sobald der Eintrag ein Favorit ist, weiss in einem gefuellten Button. Ein
   Icon-Font wird dafuer nicht mehr gebraucht.
   Die 20 x 18px sind das Grundmass; Kontexte mit anderer Groesse (Kachel,
   Tabelle) ueberschreiben width/height. */
.eem-icon-heart,
.eem-icon-fav-error,
.eem-icon-check {
    display: inline-block;
    vertical-align: middle;
    width: 20px;
    height: 18px;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

.eem-icon-heart {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg version=%221.1%22 id=%22Layer_1%22 xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 x=%220px%22 y=%220px%22 viewBox=%220 0 122.88 107.41%22 style=%22enable-background:new 0 0 122.88 107.41%22 xml:space=%22preserve%22%3E%3Cg%3E%3Cpath class=%22st0%22 d=%22M60.83,17.19C68.84,8.84,74.45,1.62,86.79,0.21c23.17-2.66,44.48,21.06,32.78,44.41 c-3.33,6.65-10.11,14.56-17.61,22.32c-8.23,8.52-17.34,16.87-23.72,23.2l-17.4,17.26L46.46,93.56C29.16,76.9,0.95,55.93,0.02,29.95 C-0.63,11.75,13.73,0.09,30.25,0.3C45.01,0.5,51.22,7.84,60.83,17.19L60.83,17.19L60.83,17.19z%22 fill-rule=%22evenodd%22 clip-rule=%22evenodd%22/%3E%3C/g%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg version=%221.1%22 id=%22Layer_1%22 xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 x=%220px%22 y=%220px%22 viewBox=%220 0 122.88 107.41%22 style=%22enable-background:new 0 0 122.88 107.41%22 xml:space=%22preserve%22%3E%3Cg%3E%3Cpath class=%22st0%22 d=%22M60.83,17.19C68.84,8.84,74.45,1.62,86.79,0.21c23.17-2.66,44.48,21.06,32.78,44.41 c-3.33,6.65-10.11,14.56-17.61,22.32c-8.23,8.52-17.34,16.87-23.72,23.2l-17.4,17.26L46.46,93.56C29.16,76.9,0.95,55.93,0.02,29.95 C-0.63,11.75,13.73,0.09,30.25,0.3C45.01,0.5,51.22,7.84,60.83,17.19L60.83,17.19L60.83,17.19z%22 fill-rule=%22evenodd%22 clip-rule=%22evenodd%22/%3E%3C/g%3E%3C/svg%3E");
}

.eem-icon-fav-error {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg id=%22Layer_1%22 data-name=%22Layer 1%22 xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 122.88 109.57%22%3E%3Ctitle%3Edelete-from-wishlist%3C/title%3E%3Cpath class=%22cls-1%22 d=%22M94.26,44.46A26.88,26.88,0,1,1,67.38,71.34,26.88,26.88,0,0,1,94.26,44.46ZM82.69,65.69a3.89,3.89,0,0,1-.86-1.29l0-.06a3.91,3.91,0,0,1-.29-1.45,4,4,0,0,1,.3-1.5,4.07,4.07,0,0,1,.85-1.29l0,0A3.92,3.92,0,0,1,84,59.22a4,4,0,0,1,1.52-.3,3.79,3.79,0,0,1,1.51.29l.07,0a4,4,0,0,1,1.21.82l5.62,5.62,5.61-5.61a3.87,3.87,0,0,1,1.28-.85,4,4,0,0,1,1.52-.31,4,4,0,0,1,1.5.3l.07,0A4.27,4.27,0,0,1,105,60l.12.11a3.89,3.89,0,0,1,.8,1.23,4,4,0,0,1,0,3l0,.07a4.14,4.14,0,0,1-.81,1.21l-5.62,5.62,5.6,5.61a3.92,3.92,0,0,1,1.16,2.8v.1a3.94,3.94,0,0,1-.29,1.4l0,.07a4,4,0,0,1-.81,1.21l0,0a4.09,4.09,0,0,1-1.28.85,3.86,3.86,0,0,1-1.52.31,3.94,3.94,0,0,1-1.5-.3,3.89,3.89,0,0,1-1.28-.84L93.9,76.9l-5.6,5.6a4.22,4.22,0,0,1-1.29.86l-.06,0a3.89,3.89,0,0,1-1.45.28,4,4,0,0,1-1.51-.3l-.07,0a4.14,4.14,0,0,1-1.21-.81l0,0a4.12,4.12,0,0,1-.86-1.28,4,4,0,0,1-.31-1.52,4,4,0,0,1,.3-1.5,3.92,3.92,0,0,1,.85-1.28l5.62-5.63-5.6-5.6ZM65.45,19.57l-4.52,4.74-4.52-4.43C49,12.58,43.4,7.08,31.89,6.93L30.46,7A25.75,25.75,0,0,0,13.74,13.6,22.58,22.58,0,0,0,6.63,30.17l0,1.37c.69,19.27,19.13,36.08,34.42,50,3,2.69,5.78,5.27,8.49,7.88l11.27,10.85,5.91-5.87c.68.8,1.39,1.58,2.13,2.32l0,0c.82.83,1.69,1.61,2.59,2.36l-10.59,10.5L45,94.22c-2.49-2.39-5.37-5-8.37-7.75C20.37,71.68.81,53.85,0,31.77l0-1.68A29.12,29.12,0,0,1,9.21,8.73a32.42,32.42,0,0,1,21-8.42H32c14,.18,20.45,6.34,28.8,14.55C67.66,7.54,73.39,1.55,85,.21a33.88,33.88,0,0,1,19,3.45,35.14,35.14,0,0,1,12.51,10.48,31.53,31.53,0,0,1,6.1,15.18,31,31,0,0,1-2.86,16.81l-.17-.18a36.18,36.18,0,0,0-5.14-4.27,24.26,24.26,0,0,0,1.57-11.6,25,25,0,0,0-4.83-12,28.62,28.62,0,0,0-10.14-8.5A27.27,27.27,0,0,0,85.79,6.82C76.47,7.89,71.5,13.17,65.45,19.57Z%22 fill-rule=%22evenodd%22/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg id=%22Layer_1%22 data-name=%22Layer 1%22 xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 122.88 109.57%22%3E%3Ctitle%3Edelete-from-wishlist%3C/title%3E%3Cpath class=%22cls-1%22 d=%22M94.26,44.46A26.88,26.88,0,1,1,67.38,71.34,26.88,26.88,0,0,1,94.26,44.46ZM82.69,65.69a3.89,3.89,0,0,1-.86-1.29l0-.06a3.91,3.91,0,0,1-.29-1.45,4,4,0,0,1,.3-1.5,4.07,4.07,0,0,1,.85-1.29l0,0A3.92,3.92,0,0,1,84,59.22a4,4,0,0,1,1.52-.3,3.79,3.79,0,0,1,1.51.29l.07,0a4,4,0,0,1,1.21.82l5.62,5.62,5.61-5.61a3.87,3.87,0,0,1,1.28-.85,4,4,0,0,1,1.52-.31,4,4,0,0,1,1.5.3l.07,0A4.27,4.27,0,0,1,105,60l.12.11a3.89,3.89,0,0,1,.8,1.23,4,4,0,0,1,0,3l0,.07a4.14,4.14,0,0,1-.81,1.21l-5.62,5.62,5.6,5.61a3.92,3.92,0,0,1,1.16,2.8v.1a3.94,3.94,0,0,1-.29,1.4l0,.07a4,4,0,0,1-.81,1.21l0,0a4.09,4.09,0,0,1-1.28.85,3.86,3.86,0,0,1-1.52.31,3.94,3.94,0,0,1-1.5-.3,3.89,3.89,0,0,1-1.28-.84L93.9,76.9l-5.6,5.6a4.22,4.22,0,0,1-1.29.86l-.06,0a3.89,3.89,0,0,1-1.45.28,4,4,0,0,1-1.51-.3l-.07,0a4.14,4.14,0,0,1-1.21-.81l0,0a4.12,4.12,0,0,1-.86-1.28,4,4,0,0,1-.31-1.52,4,4,0,0,1,.3-1.5,3.92,3.92,0,0,1,.85-1.28l5.62-5.63-5.6-5.6ZM65.45,19.57l-4.52,4.74-4.52-4.43C49,12.58,43.4,7.08,31.89,6.93L30.46,7A25.75,25.75,0,0,0,13.74,13.6,22.58,22.58,0,0,0,6.63,30.17l0,1.37c.69,19.27,19.13,36.08,34.42,50,3,2.69,5.78,5.27,8.49,7.88l11.27,10.85,5.91-5.87c.68.8,1.39,1.58,2.13,2.32l0,0c.82.83,1.69,1.61,2.59,2.36l-10.59,10.5L45,94.22c-2.49-2.39-5.37-5-8.37-7.75C20.37,71.68.81,53.85,0,31.77l0-1.68A29.12,29.12,0,0,1,9.21,8.73a32.42,32.42,0,0,1,21-8.42H32c14,.18,20.45,6.34,28.8,14.55C67.66,7.54,73.39,1.55,85,.21a33.88,33.88,0,0,1,19,3.45,35.14,35.14,0,0,1,12.51,10.48,31.53,31.53,0,0,1,6.1,15.18,31,31,0,0,1-2.86,16.81l-.17-.18a36.18,36.18,0,0,0-5.14-4.27,24.26,24.26,0,0,0,1.57-11.6,25,25,0,0,0-4.83-12,28.62,28.62,0,0,0-10.14-8.5A27.27,27.27,0,0,0,85.79,6.82C76.47,7.89,71.5,13.17,65.45,19.57Z%22 fill-rule=%22evenodd%22/%3E%3C/svg%3E");
}

.eem-icon-check {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg version=%221.1%22 id=%22Layer_1%22 xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 x=%220px%22 y=%220px%22 width=%22122.877px%22 height=%22101.052px%22 viewBox=%220 0 122.877 101.052%22 enable-background=%22new 0 0 122.877 101.052%22 xml:space=%22preserve%22%3E%3Cg%3E%3Cpath d=%22M4.43,63.63c-2.869-2.755-4.352-6.42-4.427-10.11c-0.074-3.689,1.261-7.412,4.015-10.281 c2.752-2.867,6.417-4.351,10.106-4.425c3.691-0.076,7.412,1.255,10.283,4.012l24.787,23.851L98.543,3.989l1.768,1.349l-1.77-1.355 c0.141-0.183,0.301-0.339,0.479-0.466c2.936-2.543,6.621-3.691,10.223-3.495V0.018l0.176,0.016c3.623,0.24,7.162,1.85,9.775,4.766 c2.658,2.965,3.863,6.731,3.662,10.412h0.004l-0.016,0.176c-0.236,3.558-1.791,7.035-4.609,9.632l-59.224,72.09l0.004,0.004 c-0.111,0.141-0.236,0.262-0.372,0.368c-2.773,2.435-6.275,3.629-9.757,3.569c-3.511-0.061-7.015-1.396-9.741-4.016L4.43,63.63 L4.43,63.63z%22/%3E%3C/g%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg version=%221.1%22 id=%22Layer_1%22 xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 x=%220px%22 y=%220px%22 width=%22122.877px%22 height=%22101.052px%22 viewBox=%220 0 122.877 101.052%22 enable-background=%22new 0 0 122.877 101.052%22 xml:space=%22preserve%22%3E%3Cg%3E%3Cpath d=%22M4.43,63.63c-2.869-2.755-4.352-6.42-4.427-10.11c-0.074-3.689,1.261-7.412,4.015-10.281 c2.752-2.867,6.417-4.351,10.106-4.425c3.691-0.076,7.412,1.255,10.283,4.012l24.787,23.851L98.543,3.989l1.768,1.349l-1.77-1.355 c0.141-0.183,0.301-0.339,0.479-0.466c2.936-2.543,6.621-3.691,10.223-3.495V0.018l0.176,0.016c3.623,0.24,7.162,1.85,9.775,4.766 c2.658,2.965,3.863,6.731,3.662,10.412h0.004l-0.016,0.176c-0.236,3.558-1.791,7.035-4.609,9.632l-59.224,72.09l0.004,0.004 c-0.111,0.141-0.236,0.262-0.372,0.368c-2.773,2.435-6.275,3.629-9.757,3.569c-3.511-0.061-7.015-1.396-9.741-4.016L4.43,63.63 L4.43,63.63z%22/%3E%3C/g%3E%3C/svg%3E");
}

/* Favoriten-Button auf Detailseite und im Detail-Modal: Herz, solange nicht
   gespeichert - danach ein Haekchen als Bestaetigung.
   Bewusst ueber .eem-single-btn eingegrenzt: Die Klasse .eem-fav-toggle tragen
   auch die Herzen in Kacheln, Tabelle und Kartenblatt, die im aktiven Zustand
   ein Herz bleiben (dort zeigt die Farbe den Status). */
.eem-single-btn.eem-fav-toggle .eem-icon-check {
    display: none;
}

.eem-single-btn.eem-fav-toggle.active .eem-icon-heart {
    display: none;
}

.eem-single-btn.eem-fav-toggle.active .eem-icon-check {
    display: inline-block;
}

/* Favoriten-Button der Filterleiste: Herz im Normalzustand, das
   "Alle anzeigen"-Motiv sobald der Favoritenfilter aktiv ist. */
.eem-filter-fav-btn .eem-icon-fav-error {
    display: none;
}

.eem-filter-fav-btn.eem-active .eem-icon-heart {
    display: none;
}

.eem-filter-fav-btn.eem-active .eem-icon-fav-error {
    display: inline-block;
}

/* Share Button (Square variant if needed, but here standard) */
.eem-share-fav-btn {
    padding: 0;
    width: 44px;
    /* Neutral wie "Filter zuruecksetzen" und der Share-Button im
       Veranstaltungskalender (.ec-btn-share): Teilen ist eine Nebenaktion und
       konkurriert nicht mit dem Favoriten-Button daneben. Erst beim Hover
       laeuft er in der Primaerfarbe voll. */
    border: 1px solid #ccc;
    color: #555;
}

.eem-share-fav-btn:hover {
    border-color: var(--eem-primary);
}

.eem-share-fav-btn .eem-icon-svg {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    pointer-events: none;
}

.eem-share-fav-btn svg {
    width: 18px;
    height: 18px;
    display: block;
    fill: currentColor;
    pointer-events: none;
}

.eem-app-wrapper .eem-filter-bar .eem-view-toggles {
    display: flex;
    background: #fff;
    border: 1px solid var(--eem-border);
    border-radius: 10px;
    padding: 2px;
    gap: 0;
    overflow: visible;
}

.eem-app-wrapper .eem-filter-bar .eem-btn-view {
    height: 38px; 
    width: 44px;
    display: flex; 
    align-items: center; 
    justify-content: center;
    background: transparent; 
    border: none; 
    cursor: pointer; 
    color: #666;
    transition: all 0.2s ease;
    margin: 0;
    padding: 0;
}

.eem-app-wrapper .eem-filter-bar .eem-btn-view[data-view="grid"] {
    border-radius: 8px 0 0 8px;
}

.eem-app-wrapper .eem-filter-bar .eem-btn-view[data-view="table"] {
    border-radius: 0 8px 8px 0;
}

.eem-app-wrapper .eem-filter-bar .eem-btn-view.eem-active {
    background: var(--eem-primary); 
    color: #fff;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.eem-app-wrapper .eem-filter-bar .eem-btn-view:not(.eem-active):hover {
    background: var(--eem-secondary);
    color: var(--eem-primary);
}

/* 2. Mobile Specific (Strict Parity) */
.eem-filter-toggle-btn {
    display: none;
    width: 44px;
    height: 44px;
    padding: 0;
    justify-content: center;
    /* Neutral wie im Veranstaltungskalender und wie der Teilen-Button: Der
       Filter-Button ist ein Werkzeug neben der Suche, keine Hauptaktion - der
       2px-Rahmen in der Primaerfarbe aus .eem-btn-action zog zu viel
       Aufmerksamkeit. Der 1px-Rahmen passt zum Suchfeld daneben.
       Farbe/Hintergrund fuer Hover und den geoeffneten Zustand kommen weiterhin
       aus .eem-btn-action:hover bzw. .eem-btn-action.eem-active - die sind mit
       zwei Klassen spezifischer und gewinnen. */
    box-sizing: border-box;
    border: 1px solid #ccc;
    color: #555;
}

/* Nur die Rahmenfarbe nachziehen: Beim Hover und im geoeffneten Zustand ist die
   Flaeche orange, ein grauer Rahmen wuerde darauf wie ein Rand wirken. */
.eem-filter-toggle-btn:hover,
.eem-filter-toggle-btn.eem-active {
    border-color: var(--eem-primary);
}

@media (max-width: 799px) {
    .eem-filter-bar {
        flex-wrap: wrap;
        padding: 10px;
        gap: 8px;
    }

    /* Filter button next to search, perfect square */
    .eem-app-wrapper .eem-filter-toggle-btn {
        display: flex;
        flex: 0 0 44px;
        width: 44px;
        min-width: 44px;
        max-width: 44px;
        height: 44px;
        padding: 0;
        box-sizing: border-box;
        align-items: center;
        justify-content: center;
    }

    /* Override the desktop min-width and flex-basis with 0 so the search field
       never triggers flex line-wrapping before shrinking, always sharing the row
       with the filter button even on very narrow screens. */
    .eem-app-wrapper .eem-filter-search-group {
        flex: 1 1 0;
        min-width: 0;
        width: auto;
        box-sizing: border-box;
    }

    .eem-app-wrapper .eem-filter-search-group .eem-search-input,
    .eem-app-wrapper .eem-search-input {
        min-width: 0;
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
        padding-left: 34px;
        padding-right: 34px;
    }

    .eem-app-wrapper .eem-filter-bar .eem-view-toggles,
    .eem-app-wrapper .eem-view-toggles {
        display: none;
    }

    .eem-filter-collapsible {
        display: none;
        width: 100%;
        flex-basis: 100%; /* Force to new line below search/toggle */
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
        margin-top: 15px;
        order: 99; /* Ensure it stays below */
    }

    .eem-filter-collapsible.active {
        display: flex;
    }

    .eem-filter-select-group {
        flex-direction: column;
        width: 100%;
    }

    .eem-app-wrapper .eem-filter-select-group select {
        width: 100%;
        flex: none;
    }

    .eem-filter-actions {
        width: 100%;
        display: flex;
        flex-direction: row;
        gap: 10px;
    }

    /* Favoriten button flexible, Share button square on mobile */
    .eem-filter-fav-btn {
        flex: 1;
    }
}

/* Animations & Modals */
@keyframes eemBounce {
    0% { transform: scale(1); }
    30% { transform: scale(1.6); }
    50% { transform: scale(0.8); }
    100% { transform: scale(1.2); }
}
.eem-animate-bounce { animation: eemBounce 0.4s ease forwards; }

/* =========================================
   LOADER (Spinner + Text)
   Aufbau 1:1 wie .ec-loader-container / .ec-loader-spinner im Event-Kalender
   (ec-core.css, Abschnitt "7. LOADERS & STATUS MESSAGES").
   ========================================= */
.eem-app-wrapper .eem-loader {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 80px 20px;
    width: 100%;
    color: #999;
    font-style: italic;
    font-size: 1.1rem;
    box-sizing: border-box;
}

.eem-app-wrapper .eem-loader p {
    margin: 0;
}

.eem-app-wrapper .eem-loader-spinner {
    width: 50px;
    height: 50px;
    margin-bottom: 20px;
    border: 5px solid #f3f3f3;
    /* Fallback-Farbe, falls die Variable nicht geladen ist */
    border-top: 5px solid var(--eem-primary, #f76b15);
    border-radius: 50%;
    animation: eem-spin-loader 0.8s linear infinite;
    /* Sicherstellen, dass das Box-Modell nicht vom Theme ueberschrieben wird */
    box-sizing: border-box;
    flex-shrink: 0;
}

@keyframes eem-spin-loader {
    0%   { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Body Scroll Lock for Modals */
body.eem-modal-open,
html.eem-modal-open {
    overflow: hidden;
}

.eem-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.65);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    z-index: 2147483647;
    align-items: center;
    justify-content: center;
    padding: 16px;
    box-sizing: border-box;
}
html body .eem-modal.active {
    display: flex;
}

html body .eem-modal .eem-modal-content {
    background: #ffffff;
    padding: 32px 24px 24px 24px;
    border-radius: 24px;
    max-width: 420px;
    width: 100%;
    position: relative;
    text-align: center;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
    box-sizing: border-box;
    margin: auto;
}

html body .eem-modal .eem-modal-close {
    position: absolute;
    top: 14px;
    right: 18px;
    font-size: 26px;
    font-weight: 300;
    color: #888888;
    cursor: pointer;
    z-index: 10;
    line-height: 1;
    transition: color 0.15s ease;
}
html body .eem-modal .eem-modal-close:hover {
    color: #222222;
}

html body .eem-modal-title,
#eem-share-modal .eem-modal-title {
    margin: 0 0 16px 0;
    font-size: 1.75rem;
    line-height: 1.25;
    font-weight: 700;
    color: #03235a;
    font-family: inherit;
    text-align: center;
}

html body .eem-modal .eem-qr-container {
    margin: 0 0 16px 0;
    display: flex;
    justify-content: center;
    align-items: center;
}

#eem-share-qr-canvas {
    width: 200px;
    height: 200px;
    display: block;
    margin: 0 auto;
}

html body .eem-modal-hint,
#eem-share-modal .eem-modal-hint {
    font-size: 16px;
    line-height: 1.5;
    color: #444444;
    margin: 0 0 14px 0;
    font-weight: 400;
    text-align: center;
}

#eem-share-url {
    width: 100%;
    height: 42px;
    padding: 0 12px;
    margin: 0 0 16px 0;
    border: 1px solid #dcdcdc;
    border-radius: 10px;
    font-size: 13px;
    color: #333333;
    background: #f9f9f9;
    text-align: center;
    box-sizing: border-box;
    outline: none;
}

html body .eem-modal .eem-modal-btn-full {
    width: 100%;
    height: 46px;
    min-height: 46px;
    border-radius: 12px;
    border: 2px solid var(--eem-primary, #f76b15);
    background: transparent;
    color: var(--eem-primary, #f76b15);
    font-size: 15px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    cursor: pointer;
    transition: all 0.2s ease;
    margin: 0;
    box-sizing: border-box;
}

.eem-modal-btn-full svg {
    width: 18px;
    height: 18px;
    stroke: var(--eem-primary, #f76b15);
}

html body .eem-modal .eem-modal-btn-full:hover {
    background: var(--eem-primary, #f76b15);
    color: #ffffff;
}
.eem-modal-btn-full:hover svg {
    stroke: #ffffff;
}

.eem-modal-btn-full.copied {
    background: #2e7d32;
    border-color: #2e7d32;
    color: #ffffff;
}
.eem-modal-btn-full.copied svg {
    stroke: #ffffff;
}

/* Heart & Map Icon Style (Centralized) */
html body .eem-app-wrapper .eem-table-pin,
html body .eem-app-wrapper a.eem-table-pin,
html body .eem-app-wrapper .eem-table-pin:hover,
html body .eem-app-wrapper a.eem-table-pin:hover,
html body .eem-app-wrapper .eem-table-pin:focus,
html body .eem-app-wrapper a.eem-table-pin:focus,
html body .eem-app-wrapper .eem-table-pin::before,
html body .eem-app-wrapper .eem-table-pin:hover::before,
html body .eem-app-wrapper .eem-table-heart,
html body .eem-app-wrapper .eem-table-heart:hover,
html body .eem-app-wrapper .eem-table-heart:focus {
    text-decoration: none !important;
    text-decoration-line: none !important;
    border-bottom: none !important;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
}

/* Grid View Map Button (.eem-btn-icon.eem-action-map) */
html body .eem-app-wrapper .eem-btn-icon.eem-action-map,
html body .eem-app-wrapper a.eem-btn-icon.eem-action-map {
    text-decoration: none !important;
    text-decoration-line: none !important;
    border-bottom: none !important;
    color: var(--eem-primary, #f76b15) !important;
    font-size: 28px !important;
    transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275), background 0.2s ease, color 0.2s ease !important;
}

html body .eem-app-wrapper .eem-btn-icon.eem-action-map .dashicons,
html body .eem-app-wrapper a.eem-btn-icon.eem-action-map .dashicons {
    font-size: 28px !important;
    width: 28px !important;
    height: 28px !important;
    line-height: 28px !important;
}

html body .eem-app-wrapper .eem-btn-icon.eem-action-map:hover,
html body .eem-app-wrapper a.eem-btn-icon.eem-action-map:hover {
    text-decoration: none !important;
    text-decoration-line: none !important;
    border-bottom: none !important;
    background: var(--eem-primary, #f76b15) !important;
    color: #ffffff !important;
    transform: scale(1.18) !important;
}

/* Detail Modal & Single Page Buttons (.eem-single-btn) */
html body .eem-app-wrapper .eem-single-btn,
html body .eem-app-wrapper a.eem-single-btn,
html body .eem-app-wrapper .eem-single-btn:hover,
html body .eem-app-wrapper a.eem-single-btn:hover,
html body .eem-app-wrapper .eem-single-btn .dashicons,
html body .eem-app-wrapper .eem-single-btn:hover .dashicons,
html body .eem-modal .eem-single-btn,
html body .eem-modal a.eem-single-btn,
html body .eem-modal .eem-single-btn:hover,
html body .eem-modal a.eem-single-btn:hover,
html body .eem-modal .eem-single-btn .dashicons,
html body .eem-modal .eem-single-btn:hover .dashicons {
    text-decoration: none !important;
    text-decoration-line: none !important;
}

/* Contact & Social Links in Detail Modal (.eem-social-link) */
html body .eem-app-wrapper .eem-social-link,
html body .eem-app-wrapper a.eem-social-link,
html body .eem-app-wrapper .eem-social-link:hover,
html body .eem-app-wrapper a.eem-social-link:hover,
html body .eem-app-wrapper .eem-social-link .dashicons,
html body .eem-app-wrapper .eem-social-link:hover .dashicons,
html body .eem-modal .eem-social-link,
html body .eem-modal a.eem-social-link,
html body .eem-modal .eem-social-link:hover,
html body .eem-modal a.eem-social-link:hover,
html body .eem-modal .eem-social-link .dashicons,
html body .eem-modal .eem-social-link:hover .dashicons {
    text-decoration: none !important;
    text-decoration-line: none !important;
    border-bottom: none !important;
}

/* Link-Plattformen ohne Dashicon - als Maske aus assets/icons (Simple Icons,
   CC0), in der Textfarbe des Links. Welche Plattform welches Symbol nutzt,
   steht in eem_get_social_platforms(). Größe wie ein Dashicon (20px Feld). */
html body .eem-mask-icon {
    display: inline-block;
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    margin: 1px;
    vertical-align: middle;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
}

html body .eem-icon-tiktok     { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 width=%22240%22 height=%22240%22%3E %3Ctitle%3ETikTok%3C/title%3E %3Cpath fill=%22currentColor%22 d=%22M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z%22/%3E %3C/svg%3E");     mask-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 width=%22240%22 height=%22240%22%3E %3Ctitle%3ETikTok%3C/title%3E %3Cpath fill=%22currentColor%22 d=%22M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z%22/%3E %3C/svg%3E"); }
html body .eem-icon-x          { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EX%3C/title%3E%3Cpath d=%22M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z%22/%3E%3C/svg%3E");          mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EX%3C/title%3E%3Cpath d=%22M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z%22/%3E%3C/svg%3E"); }
html body .eem-icon-etsy       { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EEtsy%3C/title%3E%3Cpath d=%22M8.559 2.445c0-.325.033-.52.59-.52h7.465c1.3 0 2.02 1.11 2.54 3.193l.42 1.666h1.27c.23-4.728.43-6.784.43-6.784s-3.196.36-5.09.36H6.635L1.521.196v1.37l1.725.326c1.21.24 1.5.496 1.6 1.606 0 0 .11 3.27.11 8.64 0 5.385-.09 8.61-.09 8.61 0 .973-.39 1.333-1.59 1.573l-1.722.33V24l5.13-.165h8.55c1.935 0 6.39.165 6.39.165.105-1.17.75-6.48.855-7.064h-1.2l-1.284 2.91c-1.005 2.28-2.476 2.445-4.11 2.445h-4.906c-1.63 0-2.415-.64-2.415-2.05V12.8s3.62 0 4.79.096c.912.064 1.463.325 1.76 1.598l.39 1.695h1.41l-.09-4.278.192-4.305h-1.391l-.45 1.89c-.283 1.244-.48 1.47-1.754 1.6-1.666.17-4.815.14-4.815.14V2.45h-.05z%22/%3E%3C/svg%3E");       mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EEtsy%3C/title%3E%3Cpath d=%22M8.559 2.445c0-.325.033-.52.59-.52h7.465c1.3 0 2.02 1.11 2.54 3.193l.42 1.666h1.27c.23-4.728.43-6.784.43-6.784s-3.196.36-5.09.36H6.635L1.521.196v1.37l1.725.326c1.21.24 1.5.496 1.6 1.606 0 0 .11 3.27.11 8.64 0 5.385-.09 8.61-.09 8.61 0 .973-.39 1.333-1.59 1.573l-1.722.33V24l5.13-.165h8.55c1.935 0 6.39.165 6.39.165.105-1.17.75-6.48.855-7.064h-1.2l-1.284 2.91c-1.005 2.28-2.476 2.445-4.11 2.445h-4.906c-1.63 0-2.415-.64-2.415-2.05V12.8s3.62 0 4.79.096c.912.064 1.463.325 1.76 1.598l.39 1.695h1.41l-.09-4.278.192-4.305h-1.391l-.45 1.89c-.283 1.244-.48 1.47-1.754 1.6-1.666.17-4.815.14-4.815.14V2.45h-.05z%22/%3E%3C/svg%3E"); }
html body .eem-icon-bluesky    { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EBluesky%3C/title%3E%3Cpath d=%22M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364.136-.02.275-.039.415-.056-.138.022-.276.04-.415.056-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a8.741 8.741 0 0 1-.415-.056c.14.017.279.036.415.056 2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8Z%22/%3E%3C/svg%3E");    mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EBluesky%3C/title%3E%3Cpath d=%22M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364.136-.02.275-.039.415-.056-.138.022-.276.04-.415.056-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a8.741 8.741 0 0 1-.415-.056c.14.017.279.036.415.056 2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8Z%22/%3E%3C/svg%3E"); }
html body .eem-icon-threads    { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EThreads%3C/title%3E%3Cpath d=%22M12.186 24h-.007c-3.581-.024-6.334-1.205-8.184-3.509C2.35 18.44 1.5 15.586 1.472 12.01v-.017c.03-3.579.879-6.43 2.525-8.482C5.845 1.205 8.6.024 12.18 0h.014c2.746.02 5.043.725 6.826 2.098 1.677 1.29 2.858 3.13 3.509 5.467l-2.04.569c-1.104-3.96-3.898-5.984-8.304-6.015-2.91.022-5.11.936-6.54 2.717C4.307 6.504 3.616 8.914 3.589 12c.027 3.086.718 5.496 2.057 7.164 1.43 1.783 3.631 2.698 6.54 2.717 2.623-.02 4.358-.631 5.8-2.045 1.647-1.613 1.618-3.593 1.09-4.798-.31-.71-.873-1.3-1.634-1.75-.192 1.352-.622 2.446-1.284 3.272-.886 1.102-2.14 1.704-3.73 1.79-1.202.065-2.361-.218-3.259-.801-1.063-.689-1.685-1.74-1.752-2.964-.065-1.19.408-2.285 1.33-3.082.88-.76 2.119-1.207 3.583-1.291a13.853 13.853 0 0 1 3.02.142c-.126-.742-.375-1.332-.75-1.757-.513-.586-1.308-.883-2.359-.89h-.029c-.844 0-1.992.232-2.721 1.32L7.734 7.847c.98-1.454 2.568-2.256 4.478-2.256h.044c3.194.02 5.097 1.975 5.287 5.388.108.046.216.094.321.142 1.49.7 2.58 1.761 3.154 3.07.797 1.82.871 4.79-1.548 7.158-1.85 1.81-4.094 2.628-7.277 2.65Zm1.003-11.69c-.242 0-.487.007-.739.021-1.836.103-2.98.946-2.916 2.143.067 1.256 1.452 1.839 2.784 1.767 1.224-.065 2.818-.543 3.086-3.71a10.5 10.5 0 0 0-2.215-.221z%22/%3E%3C/svg%3E");    mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EThreads%3C/title%3E%3Cpath d=%22M12.186 24h-.007c-3.581-.024-6.334-1.205-8.184-3.509C2.35 18.44 1.5 15.586 1.472 12.01v-.017c.03-3.579.879-6.43 2.525-8.482C5.845 1.205 8.6.024 12.18 0h.014c2.746.02 5.043.725 6.826 2.098 1.677 1.29 2.858 3.13 3.509 5.467l-2.04.569c-1.104-3.96-3.898-5.984-8.304-6.015-2.91.022-5.11.936-6.54 2.717C4.307 6.504 3.616 8.914 3.589 12c.027 3.086.718 5.496 2.057 7.164 1.43 1.783 3.631 2.698 6.54 2.717 2.623-.02 4.358-.631 5.8-2.045 1.647-1.613 1.618-3.593 1.09-4.798-.31-.71-.873-1.3-1.634-1.75-.192 1.352-.622 2.446-1.284 3.272-.886 1.102-2.14 1.704-3.73 1.79-1.202.065-2.361-.218-3.259-.801-1.063-.689-1.685-1.74-1.752-2.964-.065-1.19.408-2.285 1.33-3.082.88-.76 2.119-1.207 3.583-1.291a13.853 13.853 0 0 1 3.02.142c-.126-.742-.375-1.332-.75-1.757-.513-.586-1.308-.883-2.359-.89h-.029c-.844 0-1.992.232-2.721 1.32L7.734 7.847c.98-1.454 2.568-2.256 4.478-2.256h.044c3.194.02 5.097 1.975 5.287 5.388.108.046.216.094.321.142 1.49.7 2.58 1.761 3.154 3.07.797 1.82.871 4.79-1.548 7.158-1.85 1.81-4.094 2.628-7.277 2.65Zm1.003-11.69c-.242 0-.487.007-.739.021-1.836.103-2.98.946-2.916 2.143.067 1.256 1.452 1.839 2.784 1.767 1.224-.065 2.818-.543 3.086-3.71a10.5 10.5 0 0 0-2.215-.221z%22/%3E%3C/svg%3E"); }
html body .eem-icon-mastodon   { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EMastodon%3C/title%3E%3Cpath d=%22M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z%22/%3E%3C/svg%3E");   mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EMastodon%3C/title%3E%3Cpath d=%22M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z%22/%3E%3C/svg%3E"); }
html body .eem-icon-bandcamp   { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EBandcamp%3C/title%3E%3Cpath d=%22M0 18.75l7.437-13.5H24l-7.438 13.5H0z%22/%3E%3C/svg%3E");   mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EBandcamp%3C/title%3E%3Cpath d=%22M0 18.75l7.437-13.5H24l-7.438 13.5H0z%22/%3E%3C/svg%3E"); }
html body .eem-icon-discord    { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EDiscord%3C/title%3E%3Cpath d=%22M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z%22/%3E%3C/svg%3E");    mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EDiscord%3C/title%3E%3Cpath d=%22M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z%22/%3E%3C/svg%3E"); }
html body .eem-icon-telegram   { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3ETelegram%3C/title%3E%3Cpath d=%22M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z%22/%3E%3C/svg%3E");   mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3ETelegram%3C/title%3E%3Cpath d=%22M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z%22/%3E%3C/svg%3E"); }
html body .eem-icon-patreon    { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EPatreon%3C/title%3E%3Cpath d=%22M22.957 7.21c-.004-3.064-2.391-5.576-5.191-6.482-3.478-1.125-8.064-.962-11.384.604C2.357 3.231 1.093 7.391 1.046 11.54c-.039 3.411.302 12.396 5.369 12.46 3.765.047 4.326-4.804 6.068-7.141 1.24-1.662 2.836-2.132 4.801-2.618 3.376-.836 5.678-3.501 5.673-7.031Z%22/%3E%3C/svg%3E");    mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EPatreon%3C/title%3E%3Cpath d=%22M22.957 7.21c-.004-3.064-2.391-5.576-5.191-6.482-3.478-1.125-8.064-.962-11.384.604C2.357 3.231 1.093 7.391 1.046 11.54c-.039 3.411.302 12.396 5.369 12.46 3.765.047 4.326-4.804 6.068-7.141 1.24-1.662 2.836-2.132 4.801-2.618 3.376-.836 5.678-3.501 5.673-7.031Z%22/%3E%3C/svg%3E"); }
html body .eem-icon-kofi       { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EKo-fi%3C/title%3E%3Cpath d=%22M11.351 2.715c-2.7 0-4.986.025-6.83.26C2.078 3.285 0 5.154 0 8.61c0 3.506.182 6.13 1.585 8.493 1.584 2.701 4.233 4.182 7.662 4.182h.83c4.209 0 6.494-2.234 7.637-4a9.5 9.5 0 0 0 1.091-2.338C21.792 14.688 24 12.22 24 9.208v-.415c0-3.247-2.13-5.507-5.792-5.87-1.558-.156-2.65-.208-6.857-.208m0 1.947c4.208 0 5.09.052 6.571.182 2.624.311 4.13 1.584 4.13 4v.39c0 2.156-1.792 3.844-3.87 3.844h-.935l-.156.649c-.208 1.013-.597 1.818-1.039 2.546-.909 1.428-2.545 3.064-5.922 3.064h-.805c-2.571 0-4.831-.883-6.078-3.195-1.09-2-1.298-4.155-1.298-7.506 0-2.181.857-3.402 3.012-3.714 1.533-.233 3.559-.26 6.39-.26m6.547 2.287c-.416 0-.65.234-.65.546v2.935c0 .311.234.545.65.545 1.324 0 2.051-.754 2.051-2s-.727-2.026-2.052-2.026m-10.39.182c-1.818 0-3.013 1.48-3.013 3.142 0 1.533.858 2.857 1.949 3.897.727.701 1.87 1.429 2.649 1.896a1.47 1.47 0 0 0 1.507 0c.78-.467 1.922-1.195 2.623-1.896 1.117-1.039 1.974-2.364 1.974-3.897 0-1.662-1.247-3.142-3.039-3.142-1.065 0-1.792.545-2.338 1.298-.493-.753-1.246-1.298-2.312-1.298%22/%3E%3C/svg%3E");       mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EKo-fi%3C/title%3E%3Cpath d=%22M11.351 2.715c-2.7 0-4.986.025-6.83.26C2.078 3.285 0 5.154 0 8.61c0 3.506.182 6.13 1.585 8.493 1.584 2.701 4.233 4.182 7.662 4.182h.83c4.209 0 6.494-2.234 7.637-4a9.5 9.5 0 0 0 1.091-2.338C21.792 14.688 24 12.22 24 9.208v-.415c0-3.247-2.13-5.507-5.792-5.87-1.558-.156-2.65-.208-6.857-.208m0 1.947c4.208 0 5.09.052 6.571.182 2.624.311 4.13 1.584 4.13 4v.39c0 2.156-1.792 3.844-3.87 3.844h-.935l-.156.649c-.208 1.013-.597 1.818-1.039 2.546-.909 1.428-2.545 3.064-5.922 3.064h-.805c-2.571 0-4.831-.883-6.078-3.195-1.09-2-1.298-4.155-1.298-7.506 0-2.181.857-3.402 3.012-3.714 1.533-.233 3.559-.26 6.39-.26m6.547 2.287c-.416 0-.65.234-.65.546v2.935c0 .311.234.545.65.545 1.324 0 2.051-.754 2.051-2s-.727-2.026-2.052-2.026m-10.39.182c-1.818 0-3.013 1.48-3.013 3.142 0 1.533.858 2.857 1.949 3.897.727.701 1.87 1.429 2.649 1.896a1.47 1.47 0 0 0 1.507 0c.78-.467 1.922-1.195 2.623-1.896 1.117-1.039 1.974-2.364 1.974-3.897 0-1.662-1.247-3.142-3.039-3.142-1.065 0-1.792.545-2.338 1.298-.493-.753-1.246-1.298-2.312-1.298%22/%3E%3C/svg%3E"); }
html body .eem-icon-artstation { -webkit-mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EArtStation%3C/title%3E%3Cpath d=%22M0 17.723l2.027 3.505h.001a2.424 2.424 0 0 0 2.164 1.333h13.457l-2.792-4.838H0zm24 .025c0-.484-.143-.935-.388-1.314L15.728 2.728a2.424 2.424 0 0 0-2.142-1.289H9.419L21.598 22.54l1.92-3.325c.378-.637.482-.919.482-1.467zm-11.129-3.462L7.428 4.858l-5.444 9.428h10.887z%22/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg role=%22img%22 viewBox=%220 0 24 24%22 xmlns=%22http://www.w3.org/2000/svg%22%3E%3Ctitle%3EArtStation%3C/title%3E%3Cpath d=%22M0 17.723l2.027 3.505h.001a2.424 2.424 0 0 0 2.164 1.333h13.457l-2.792-4.838H0zm24 .025c0-.484-.143-.935-.388-1.314L15.728 2.728a2.424 2.424 0 0 0-2.142-1.289H9.419L21.598 22.54l1.92-3.325c.378-.637.482-.919.482-1.467zm-11.129-3.462L7.428 4.858l-5.444 9.428h10.887z%22/%3E%3C/svg%3E"); }

.eem-table-pin, .eem-table-heart {
    transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    pointer-events: auto;
}

.eem-table-pin:hover, .eem-table-heart:hover {
    transform: scale(1.25);
}

.eem-table-heart {
    font-size: 30px; /* Large like Grid View */
    color: #5a5a5a; /* Standardized darker gray */
    opacity: 1;
    user-select: none;
    line-height: 1;
    width: 40px;
    height: 40px;
}

.eem-table-heart.active, .eem-table-heart:hover {
    opacity: 1;
    color: var(--eem-primary);
}

.eem-table-pin::before {
    content: "\f230";
    font-family: dashicons;
    /* 32px statt 28px: Das Glyph zeichnet mit Innenabstand deutlich kleiner als
       seine Schriftgroesse - neben dem Herz daneben wirkte der Pin dadurch zu
       zierlich. Die Klasse gibt es nur in der Tabellenansicht (die Kachel nutzt
       .eem-btn-icon), Kacheln bleiben also unveraendert. */
    font-size: 32px;
    color: var(--eem-primary);
    text-decoration: none !important;
}

.eem-no-results {
    padding: 60px 20px;
    text-align: center;
    background: #fff;
    border-radius: 12px;
    border: 1px dashed var(--eem-border);
    color: #666;
    font-size: 16px;
    grid-column: 1 / -1; /* Stretch across all columns in grid mode */
}

/* Leere Favoritenliste: Icon als CSS-Maske, damit die Farbe aus dem Stylesheet
   kommt (frueher ein Dashicon-Herz mit Inline-Styles im JS). Seitenverhaeltnis
   des SVG ist 122.88 : 109.57, deshalb 54 x 48px statt eines Quadrats -
   mask-size: contain wuerde das Motiv sonst kleiner rechnen. */
.eem-empty-favs-icon {
    display: block;
    width: 54px;
    height: 48px;
    margin: 0 auto 15px auto;
    background-color: #ccc;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg id=%22Layer_1%22 data-name=%22Layer 1%22 xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 122.88 109.57%22%3E%3Ctitle%3Edelete-from-wishlist%3C/title%3E%3Cpath class=%22cls-1%22 d=%22M94.26,44.46A26.88,26.88,0,1,1,67.38,71.34,26.88,26.88,0,0,1,94.26,44.46ZM82.69,65.69a3.89,3.89,0,0,1-.86-1.29l0-.06a3.91,3.91,0,0,1-.29-1.45,4,4,0,0,1,.3-1.5,4.07,4.07,0,0,1,.85-1.29l0,0A3.92,3.92,0,0,1,84,59.22a4,4,0,0,1,1.52-.3,3.79,3.79,0,0,1,1.51.29l.07,0a4,4,0,0,1,1.21.82l5.62,5.62,5.61-5.61a3.87,3.87,0,0,1,1.28-.85,4,4,0,0,1,1.52-.31,4,4,0,0,1,1.5.3l.07,0A4.27,4.27,0,0,1,105,60l.12.11a3.89,3.89,0,0,1,.8,1.23,4,4,0,0,1,0,3l0,.07a4.14,4.14,0,0,1-.81,1.21l-5.62,5.62,5.6,5.61a3.92,3.92,0,0,1,1.16,2.8v.1a3.94,3.94,0,0,1-.29,1.4l0,.07a4,4,0,0,1-.81,1.21l0,0a4.09,4.09,0,0,1-1.28.85,3.86,3.86,0,0,1-1.52.31,3.94,3.94,0,0,1-1.5-.3,3.89,3.89,0,0,1-1.28-.84L93.9,76.9l-5.6,5.6a4.22,4.22,0,0,1-1.29.86l-.06,0a3.89,3.89,0,0,1-1.45.28,4,4,0,0,1-1.51-.3l-.07,0a4.14,4.14,0,0,1-1.21-.81l0,0a4.12,4.12,0,0,1-.86-1.28,4,4,0,0,1-.31-1.52,4,4,0,0,1,.3-1.5,3.92,3.92,0,0,1,.85-1.28l5.62-5.63-5.6-5.6ZM65.45,19.57l-4.52,4.74-4.52-4.43C49,12.58,43.4,7.08,31.89,6.93L30.46,7A25.75,25.75,0,0,0,13.74,13.6,22.58,22.58,0,0,0,6.63,30.17l0,1.37c.69,19.27,19.13,36.08,34.42,50,3,2.69,5.78,5.27,8.49,7.88l11.27,10.85,5.91-5.87c.68.8,1.39,1.58,2.13,2.32l0,0c.82.83,1.69,1.61,2.59,2.36l-10.59,10.5L45,94.22c-2.49-2.39-5.37-5-8.37-7.75C20.37,71.68.81,53.85,0,31.77l0-1.68A29.12,29.12,0,0,1,9.21,8.73a32.42,32.42,0,0,1,21-8.42H32c14,.18,20.45,6.34,28.8,14.55C67.66,7.54,73.39,1.55,85,.21a33.88,33.88,0,0,1,19,3.45,35.14,35.14,0,0,1,12.51,10.48,31.53,31.53,0,0,1,6.1,15.18,31,31,0,0,1-2.86,16.81l-.17-.18a36.18,36.18,0,0,0-5.14-4.27,24.26,24.26,0,0,0,1.57-11.6,25,25,0,0,0-4.83-12,28.62,28.62,0,0,0-10.14-8.5A27.27,27.27,0,0,0,85.79,6.82C76.47,7.89,71.5,13.17,65.45,19.57Z%22 fill-rule=%22evenodd%22/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg id=%22Layer_1%22 data-name=%22Layer 1%22 xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 122.88 109.57%22%3E%3Ctitle%3Edelete-from-wishlist%3C/title%3E%3Cpath class=%22cls-1%22 d=%22M94.26,44.46A26.88,26.88,0,1,1,67.38,71.34,26.88,26.88,0,0,1,94.26,44.46ZM82.69,65.69a3.89,3.89,0,0,1-.86-1.29l0-.06a3.91,3.91,0,0,1-.29-1.45,4,4,0,0,1,.3-1.5,4.07,4.07,0,0,1,.85-1.29l0,0A3.92,3.92,0,0,1,84,59.22a4,4,0,0,1,1.52-.3,3.79,3.79,0,0,1,1.51.29l.07,0a4,4,0,0,1,1.21.82l5.62,5.62,5.61-5.61a3.87,3.87,0,0,1,1.28-.85,4,4,0,0,1,1.52-.31,4,4,0,0,1,1.5.3l.07,0A4.27,4.27,0,0,1,105,60l.12.11a3.89,3.89,0,0,1,.8,1.23,4,4,0,0,1,0,3l0,.07a4.14,4.14,0,0,1-.81,1.21l-5.62,5.62,5.6,5.61a3.92,3.92,0,0,1,1.16,2.8v.1a3.94,3.94,0,0,1-.29,1.4l0,.07a4,4,0,0,1-.81,1.21l0,0a4.09,4.09,0,0,1-1.28.85,3.86,3.86,0,0,1-1.52.31,3.94,3.94,0,0,1-1.5-.3,3.89,3.89,0,0,1-1.28-.84L93.9,76.9l-5.6,5.6a4.22,4.22,0,0,1-1.29.86l-.06,0a3.89,3.89,0,0,1-1.45.28,4,4,0,0,1-1.51-.3l-.07,0a4.14,4.14,0,0,1-1.21-.81l0,0a4.12,4.12,0,0,1-.86-1.28,4,4,0,0,1-.31-1.52,4,4,0,0,1,.3-1.5,3.92,3.92,0,0,1,.85-1.28l5.62-5.63-5.6-5.6ZM65.45,19.57l-4.52,4.74-4.52-4.43C49,12.58,43.4,7.08,31.89,6.93L30.46,7A25.75,25.75,0,0,0,13.74,13.6,22.58,22.58,0,0,0,6.63,30.17l0,1.37c.69,19.27,19.13,36.08,34.42,50,3,2.69,5.78,5.27,8.49,7.88l11.27,10.85,5.91-5.87c.68.8,1.39,1.58,2.13,2.32l0,0c.82.83,1.69,1.61,2.59,2.36l-10.59,10.5L45,94.22c-2.49-2.39-5.37-5-8.37-7.75C20.37,71.68.81,53.85,0,31.77l0-1.68A29.12,29.12,0,0,1,9.21,8.73a32.42,32.42,0,0,1,21-8.42H32c14,.18,20.45,6.34,28.8,14.55C67.66,7.54,73.39,1.55,85,.21a33.88,33.88,0,0,1,19,3.45,35.14,35.14,0,0,1,12.51,10.48,31.53,31.53,0,0,1,6.1,15.18,31,31,0,0,1-2.86,16.81l-.17-.18a36.18,36.18,0,0,0-5.14-4.27,24.26,24.26,0,0,0,1.57-11.6,25,25,0,0,0-4.83-12,28.62,28.62,0,0,0-10.14-8.5A27.27,27.27,0,0,0,85.79,6.82C76.47,7.89,71.5,13.17,65.45,19.57Z%22 fill-rule=%22evenodd%22/%3E%3C/svg%3E");
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

/* Variante "Favoriten sind da, aber der Filter blendet sie aus": ruhiger
   Einzeiler ohne Button - der Weg heraus fuehrt ueber die Filterleiste, nicht
   ueber die Favoritenliste. */
.eem-empty-favs-filtered p {
    margin: 0;
    font-style: italic;
    color: #888;
}

/* Image Tooltip (Frontend Gallery) */
.eem-tooltip-img {
    display: none;
    position: fixed;
    z-index: 999999;
    pointer-events: none;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 10px 35px rgba(0,0,0,0.2);
    padding: 6px;
    border: 1px solid #ddd;
    overflow: hidden;
    opacity: 0;
    transform: translateY(10px) scale(0.95);
    transition: opacity 0.2s, transform 0.2s;
}

.eem-tooltip-img.active {
    display: block;
    opacity: 1;
    transform: translateY(0) scale(1);
}

.eem-tooltip-img img {
    display: block;
    max-width: 320px;
    max-height: 320px;
    border-radius: 4px;
    object-fit: contain;
}

/* 3. Pagination & Load More */
.eem-pagination-wrapper {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-top: 30px;
    padding: 20px 0;
    width: 100%;
}

/* Klassische Seitennavigation wie im Veranstaltungskalender: links das
   Dropdown "Eintraege pro Seite", rechts die Seitenbuttons, gemeinsame Unterkante. */
.eem-pagination-wrapper.eem-pagination-pagination {
    justify-content: space-between;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 20px;
}

.eem-pagination-left,
.eem-pagination-right {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
}

/* Rechter Block bleibt auch ohne Dropdown rechts */
.eem-pagination-right {
    margin-left: auto;
}

/* Optik bewusst komplett festgelegt (!important), damit Theme-Select-Stile
   nicht hineinfunken. Identisch mit .ec-pagination-select im Event Calendar -
   Aenderungen bitte in beiden Plugins gleich nachziehen. */
.eem-pagination-wrapper select.eem-pagination-select {
    box-sizing: border-box !important;
    width: 230px;
    min-width: 140px;
    max-width: 100%;
    height: 42px !important;
    margin: 0 !important;
    padding: 0 36px 0 12px !important;
    border: 1px solid var(--eem-primary, #f76b15) !important;
    border-radius: 8px !important;
    background-color: #fff !important;
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23555%22%20stroke-width%3D%222.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpolyline%20points%3D%226%209%2012%2015%2018%209%22%2F%3E%3C%2Fsvg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 16px 16px !important;
    color: #555 !important;
    font-family: inherit !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: normal !important;
    box-shadow: none !important;
    cursor: pointer;
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
}

.eem-pagination-wrapper select.eem-pagination-select:focus {
    outline: none !important;
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--eem-primary, #f76b15) 25%, transparent) !important;
}

.eem-pagination-wrapper .eem-page-number,
.eem-pagination-wrapper .eem-page-nav {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

@media (max-width: 600px) {
    .eem-pagination-wrapper.eem-pagination-pagination {
        flex-direction: column;
        align-items: stretch;
        gap: 15px;
    }
    .eem-pagination-wrapper .eem-pagination-left select.eem-pagination-select {
        width: 100%;
    }
    .eem-pagination-right {
        margin-left: 0;
        flex-wrap: wrap;
        justify-content: center;
    }
}

.eem-page-number, .eem-page-nav {
    box-sizing: border-box;
    width: 42px;
    height: 42px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    cursor: pointer;
    font-weight: 600;
    transition: all 0.2s;
    color: #333;
    padding: 0;
    line-height: 1;
}

.eem-page-nav .dashicons {
    font-size: 18px;
    width: 18px;
    height: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Theme-Button-Hover (z.B. "button:hover" mit Primaerfarbe als Hintergrund)
   ueberschreibt sonst den Hintergrund, waehrend die Schrift orange bleibt ->
   Zahl unsichtbar. Daher bewusst hohe Spezifitaet + !important, damit Zahlen
   und Pfeile denselben hellen Hover-Effekt bekommen. */
.eem-pagination-wrapper button.eem-page-number:not(.active):hover,
.eem-pagination-wrapper button.eem-page-number:not(.active):focus-visible,
.eem-pagination-wrapper button.eem-page-nav:not([disabled]):hover,
.eem-pagination-wrapper button.eem-page-nav:not([disabled]):focus-visible {
    border-color: var(--eem-primary) !important;
    color: var(--eem-primary) !important;
    background: var(--eem-bg-light, #fff8f0) !important;
}

.eem-pagination-wrapper button.eem-page-number.active,
.eem-pagination-wrapper button.eem-page-number.active:hover {
    background: var(--eem-primary) !important;
    color: #fff !important;
    border-color: var(--eem-primary) !important;
}

.eem-page-nav[disabled] {
    opacity: 0.4;
    cursor: not-allowed;
    background: #f9f9f9;
}

/* "Mehr laden" im Design des Veranstaltungskalenders (.ec-load-more-btn):
   heller Button mit 2px-Rahmen in der Primaerfarbe, der beim Hover volllaeuft.
   Frueher war es eine gefuellte Pille ohne Icon. */
.eem-btn-load-more {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 42px;
    padding: 0 25px;
    background-color: #fff;
    color: var(--eem-primary, #f76b15);
    border: 2px solid var(--eem-primary, #f76b15);
    border-radius: 4px;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    transition: all 0.2s ease;
    text-decoration: none;
    box-shadow: none;
}

/* Das Icon liegt als Maske ueber der Textfarbe, nicht als eigenes Bild:
   Dadurch wechselt es beim Hover ohne zweites SVG von Orange auf Weiss.
   Der Pfad ist relativ zu dieser Datei (assets/css/ -> assets/icons/) -
   identisch zur Loesung im Veranstaltungskalender. */
.eem-btn-load-more .eem-svg-grid {
    display: inline-block;
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%22512%22 height=%22512%22 viewBox=%220 0 512 512%22%3E%3Cpath fill=%22%23000000%22 d=%22M204 240H68a36 36 0 0 1-36-36V68a36 36 0 0 1 36-36h136a36 36 0 0 1 36 36v136a36 36 0 0 1-36 36Zm240 0H308a36 36 0 0 1-36-36V68a36 36 0 0 1 36-36h136a36 36 0 0 1 36 36v136a36 36 0 0 1-36 36ZM204 480H68a36 36 0 0 1-36-36V308a36 36 0 0 1 36-36h136a36 36 0 0 1 36 36v136a36 36 0 0 1-36 36Zm240 0H308a36 36 0 0 1-36-36V308a36 36 0 0 1 36-36h136a36 36 0 0 1 36 36v136a36 36 0 0 1-36 36Z%22/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%22512%22 height=%22512%22 viewBox=%220 0 512 512%22%3E%3Cpath fill=%22%23000000%22 d=%22M204 240H68a36 36 0 0 1-36-36V68a36 36 0 0 1 36-36h136a36 36 0 0 1 36 36v136a36 36 0 0 1-36 36Zm240 0H308a36 36 0 0 1-36-36V68a36 36 0 0 1 36-36h136a36 36 0 0 1 36 36v136a36 36 0 0 1-36 36ZM204 480H68a36 36 0 0 1-36-36V308a36 36 0 0 1 36-36h136a36 36 0 0 1 36 36v136a36 36 0 0 1-36 36Zm240 0H308a36 36 0 0 1-36-36V308a36 36 0 0 1 36-36h136a36 36 0 0 1 36 36v136a36 36 0 0 1-36 36Z%22/%3E%3C/svg%3E");
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

/* Mobil ueber die volle Breite - wie im Kalender. Dort steuert das eine
   Container-Query; hier bewusst eine Media-Query, weil die DEVELOPMENT_NOTES
   Container-Queries fuer dieses Plugin ausschliessen (sie brechen die
   position:fixed-Elemente wie Filter-Sheet und Modals). */
@media (max-width: 799px) {
    .eem-btn-load-more {
        width: 100%;
    }
}

/* Favorite Notices */
.eem-fav-notice {
    position: fixed;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%) translateY(100px);
    background: #333;
    color: #fff;
    padding: 12px 24px;
    border-radius: 50px;
    font-size: 14px;
    z-index: 99999;
    box-shadow: 0 10px 25px rgba(0,0,0,0.2);
    transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275), opacity 0.3s;
    opacity: 0;
    pointer-events: none;
}
.eem-fav-notice.active {
    transform: translateX(-50%) translateY(0);
    opacity: 1;
}

.eem-btn-load-more:hover {
    background-color: var(--eem-primary, #f76b15);
    color: #fff;
}

/* ==========================================================================
   GLOBAL PLACEHOLDER STYLES (Fallbacks)
   ========================================================================== */
.eem-card-thumb-placeholder, .eem-table-logo-placeholder {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f0f0f1;
    padding: 10px;
    text-align: center;
    box-sizing: border-box;
}

.eem-placeholder-name {
    font-size: 14px;
    font-weight: 700;
    color: #666;
    line-height: 1.2;
    text-align: center;
    width: 100%;
    word-break: break-word;
}

.eem-table-logo-placeholder .eem-placeholder-name {
    font-size: 10px;
    text-transform: uppercase;
}

/* Kachel ohne Logo: das Aussteller-Icon als dezentes Wasserzeichen hinter dem
   Namen. Maske statt Bild, damit die Farbe hier im CSS steuerbar bleibt - einen
   Hauch heller als der Platzhalter-Grund, der Name bleibt voll lesbar.
   Nur die Kachel-Variante; die kleinen Tabellen-Logos bleiben ohne Icon.
   Der Name ist ebenfalls positioniert und liegt dadurch (DOM-Reihenfolge)
   ueber dem Pseudo-Element - ohne z-index, also ohne neuen Stacking Context. */
.eem-card-thumb-placeholder {
    position: relative;
}

.eem-card-thumb-placeholder::before {
    content: "";
    position: absolute;
    inset: 12%;
    background-color: #f9f9fa;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 width=%22240%22 height=%22240%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E %3Ctitle%3EAussteller %28Messestand%29%3C/title%3E %3Cpath d=%22M3 9l1.5-5h15L21 9H3z%22/%3E %3Cpath d=%22M3 9a3 3 0 0 0 6 0a3 3 0 0 0 6 0a3 3 0 0 0 6 0%22/%3E %3Cpath d=%22M5 12v8h14v-8%22/%3E %3Cpath d=%22M10 20v-5h4v5%22/%3E %3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 width=%22240%22 height=%22240%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E %3Ctitle%3EAussteller %28Messestand%29%3C/title%3E %3Cpath d=%22M3 9l1.5-5h15L21 9H3z%22/%3E %3Cpath d=%22M3 9a3 3 0 0 0 6 0a3 3 0 0 0 6 0a3 3 0 0 0 6 0%22/%3E %3Cpath d=%22M5 12v8h14v-8%22/%3E %3Cpath d=%22M10 20v-5h4v5%22/%3E %3C/svg%3E");
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    pointer-events: none;
}

.eem-card-thumb-placeholder .eem-placeholder-name {
    position: relative;
}

@media (max-width: 799px) { 
    .eem-view-toggles { display: none; } 
    .eem-filter-select-group { flex-direction: column; width: 100%; align-items: stretch; }
    /* flex: 0 0 auto ist hier Pflicht: In der Spaltenrichtung waere die
       flex-basis der Desktop-Regel (180px) die HOEHE - jedes Dropdown waere
       180px hoch statt 44px. */
    .eem-custom-select { width: 100%; min-width: 0; flex: 0 0 auto; }
}

/* ==========================================================================
   FLOATING BOTTOM SEARCH BAR (Exact Event Calendar Parity - Mobile & Tablet)
   ========================================================================== */

/* Active Filter Banner (Top Reset Pill) */
.eem-app-wrapper .eem-active-filter-banner {
    display: none;
    justify-content: center;
    margin: 15px auto 25px auto;
    width: 100%;
    text-align: center;
}

.eem-app-wrapper .eem-active-filter-pill-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 7px 16px 7px 14px;
    background: rgba(224, 60, 49, 0.08); /* Event Kalender Red Tint */
    color: #e03c31; /* Event Kalender Red */
    border: 1px solid #e03c31;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.05);
    transition: all 0.2s ease;
}

.eem-app-wrapper .eem-active-filter-pill-btn:hover {
    background: #e03c31;
    color: #ffffff;
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.15);
}

.eem-app-wrapper .eem-active-filter-pill-btn .dashicons {
    font-size: 16px;
    width: 16px;
    height: 16px;
    line-height: 16px;
}

.eem-app-wrapper .eem-active-filter-pill-btn .dashicons-no-alt {
    font-size: 18px;
    width: 18px;
    height: 18px;
    line-height: 18px;
    margin-left: 2px;
}

/* Mobile & Tablet Styles for Floating Search */
/* Elevate ONLY the specific BeTheme section holding the shortcode above sibling sections (banners/buttons)
   without touching parent theme containers (#Content, #Wrapper) or covering the PWA bottom navigation bar */
.eem-section-elevated {
    z-index: 1000;
    position: relative;
    transform: none;
    filter: none;
    backdrop-filter: none;
    perspective: none;
}

/* When Filter Sheet Modal is OPEN: Elevate #Content and shortcode section above top sticky headers & PWA Werbeteaser banners (#Header_wrapper)
   while keeping it below the PWA bottom navigation bar (z-index: 999999) */
html.eem-filter-sheet-open,
body.eem-filter-sheet-open {
    overflow: hidden !important;
    overscroll-behavior: none !important;
    overscroll-behavior-y: none !important;
}

body.eem-filter-sheet-open #Content,
body.eem-filter-sheet-open .sections_group,
body.eem-filter-sheet-open .eem-section-elevated {
    z-index: 999990;
    position: relative;
}

.eem-app-wrapper.eem-floating-search-active {
    position: relative;
    /* Platz unter der Liste reservieren: die schwebende Suchleiste darf Karten
       und Pagination nicht verdecken, und bei wenigen Treffern bleibt so genug
       Scrollweg, um die Filter-Pille nach oben in den Sichtbereich zu holen.
       JS ueberschreibt den Wert bei PWA-Bottom-Nav (updateFloatingBottomOffset)
       - derselbe Wert steht dort noch einmal, beide zusammen aendern.
       Die Pille selbst ist 56px hoch (42px Inhalt + 2x6px Padding + 2x1px Rand)
       und sitzt 18px ueber dem unteren Rand, belegt also 74px. Die 70px sind
       bewusst etwas knapper gewaehlt; der Abstand des letzten Elements nach
       unten faengt die Differenz auf. Identisch zum Event-Kalender. */
    padding-bottom: 70px;
}

/* Show Active Filter Banner only when Floating Search is active */
.eem-app-wrapper.eem-floating-search-active .eem-active-filter-banner.is-active {
    display: flex;
}

    /* In floating mode: top-row uses display: contents so its children (search, toggle btn) become direct flex items of filter-bar */
    .eem-filter-bar.eem-filter-bar-floating .eem-filter-top-row,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar .eem-filter-top-row {
        display: contents;
    }

    /* 1. Floating Capsule Toolbar (Unexpanded State) */
    .eem-filter-bar.eem-filter-bar-floating,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar {
        position: fixed;
        bottom: var(--eem-floating-bottom-offset, 18px);
        left: 50%;
        transform: translateX(-50%);
        /* Geometrie 1:1 wie .ec-toolbar im Event-Kalender (ec-main.css, Abschnitt
           "Floating Search Bar Pill"). Bewusst identisch gehalten, damit sich
           Aenderungen zwischen beiden Plugins ohne Umrechnen uebertragen lassen.
           Hoehe = 42px Inhalt + 2x6px Padding. */
        width: 70%;
        max-width: 290px;
        min-width: 220px;
        height: 54px;
        min-height: 54px;
        max-height: 54px;
        z-index: 2147483647;
        box-sizing: border-box;
        background: rgba(255, 255, 255, 0.80);
        backdrop-filter: blur(24px) saturate(180%);
        -webkit-backdrop-filter: blur(24px) saturate(180%);
        border: 1px solid rgba(0, 0, 0, 0.16);
        box-shadow: 0 10px 28px rgba(0, 0, 0, 0.22), 0 3px 10px rgba(0, 0, 0, 0.10), inset 0 1px 0 rgba(255, 255, 255, 0.8);
        border-radius: 30px;
        padding: 6px 8px 6px 14px;
        opacity: 1;
        visibility: visible;
        transition: width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                    max-width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                    max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                    border-radius 0.3s ease,
                    padding 0.35s ease,
                    box-shadow 0.3s ease,
                    background-color 0.3s ease,
                    border-color 0.3s ease,
                    bottom 0.15s ease-out;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: center;
        justify-content: space-between;
        margin: 0;
        overflow: hidden;
    }

    /* Floating Bar Hidden (when exhibitor plugin is scrolled out of viewport) */
    .eem-filter-bar.eem-filter-bar-floating.eem-floating-hidden,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-floating-hidden {
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        transform: translate(-50%, 48px);
        transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                    opacity 0.3s ease,
                    visibility 0.35s ease;
    }

    /* Unexpanded: Hide filter collapsible contents */
    .eem-filter-bar.eem-filter-bar-floating:not(.eem-filters-expanded) .eem-filter-collapsible,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar:not(.eem-filters-expanded) .eem-filter-collapsible {
        display: none;
    }

    /* Unexpanded: Search Group */
    .eem-filter-bar.eem-filter-bar-floating:not(.eem-filters-expanded) .eem-filter-search-group,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar:not(.eem-filters-expanded) .eem-filter-search-group {
        display: flex;
        flex: 1 1 0%;
        min-width: 0;
        align-items: center;
        position: relative;
        background: transparent;
        border: none;
        box-shadow: none;
        padding: 0;
        margin: 0;
        height: 42px;
    }

    .eem-filter-bar.eem-filter-bar-floating:not(.eem-filters-expanded) .eem-search-input,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar:not(.eem-filters-expanded) .eem-search-input {
        width: 100%;
        height: 100%;
        min-height: 42px;
        max-height: 42px;
        line-height: 42px;
        border: none;
        outline: none;
        background: transparent;
        box-shadow: none;
        font-size: 0.95rem;
        color: #222222;
        /* rechts Platz fuer den 26px-Kreis des Loeschen-X (26 + 4 Rand + Luft) */
        padding: 0 36px 0 34px;
        border-radius: 0;
        box-sizing: border-box;
        margin: 0;
    }

    .eem-filter-bar.eem-filter-bar-floating:not(.eem-filters-expanded) .eem-filter-search-group::before,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar:not(.eem-filters-expanded) .eem-filter-search-group::before {
        content: "\f179";
        font-family: dashicons;
        position: absolute;
        left: 8px;
        top: 50%;
        transform: translateY(-50%);
        opacity: 0.55;
        pointer-events: none;
        font-size: 18px;
        color: #222222;
        margin: 0;
    }

    /* Loeschen-X als weicher Kreis-Button (identisch mit #ec-search-reset im
       Event-Kalender). Vorher ein nacktes Glyph ohne Flaeche - als Tap-Ziel
       auf dem Handy zu klein und optisch unscheinbar.
       Bewusst OHNE :not(.eem-filters-expanded): gilt zugeklappt wie aufgeklappt,
       damit es nur eine Stelle zu pflegen gibt. */
    .eem-filter-bar.eem-filter-bar-floating .eem-search-clear,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar .eem-search-clear {
        position: absolute;
        right: 4px;
        top: 50%;
        transform: translateY(-50%);
        width: 26px;
        height: 26px;
        min-width: 26px;
        border-radius: 50%;
        background: rgba(0, 0, 0, 0.07);
        color: #3a3a3a;
        font-size: 16px;
        line-height: 1;
        cursor: pointer;
        display: none;
        align-items: center;
        justify-content: center;
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        transition: background-color 0.2s ease, color 0.2s ease, transform 0.15s ease;
    }

    .eem-filter-bar.eem-filter-bar-floating .eem-search-clear:hover,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar .eem-search-clear:hover {
        background: rgba(0, 0, 0, 0.14);
        color: #111111;
    }

    .eem-filter-bar.eem-filter-bar-floating .eem-search-clear:active,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar .eem-search-clear:active {
        transform: translateY(-50%) scale(0.9);
        background: rgba(0, 0, 0, 0.18);
    }

    .eem-search-clear.eem-visible {
        display: flex !important;
    }

    /* Filter Toggle Button (Matching Event Calendar Exactly) */
    .eem-filter-bar.eem-filter-bar-floating .eem-filter-toggle-btn,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar .eem-filter-toggle-btn {
        flex: 0 0 38px;
        width: 38px;
        min-width: 38px;
        max-width: 38px;
        height: 38px;
        min-height: 38px;
        max-height: 38px;
        border-radius: 50%;
        background: var(--eem-primary, #f76b15);
        border: none;
        color: #ffffff;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        cursor: pointer;
        box-shadow: 0 2px 8px rgba(247, 107, 21, 0.35);
        transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
        margin: 0;
        padding: 0;
        position: relative;
    }

    .eem-filter-bar.eem-filter-bar-floating .eem-filter-toggle-btn svg,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar .eem-filter-toggle-btn svg {
        width: 18px;
        height: 18px;
        stroke: #ffffff;
        fill: none;
        stroke-width: 2.2;
        display: block;
        margin: 0 auto;
        transition: transform 0.25s ease;
    }

    .eem-filter-bar.eem-filter-bar-floating .eem-filter-toggle-btn.active,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar .eem-filter-toggle-btn.active {
        background: #2b2b2b;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
    }

    .eem-filter-bar.eem-filter-bar-floating .eem-filter-toggle-btn.active svg,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar .eem-filter-toggle-btn.active svg {
        transform: rotate(90deg);
    }

    /* Active filter dot indicator on mobile filter toggle */
    .eem-filter-bar.eem-filter-bar-floating .eem-filter-toggle-btn.has-active-filters::after,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar .eem-filter-toggle-btn.has-active-filters::after {
        content: "";
        position: absolute;
        top: -1px;
        right: -1px;
        width: 11px;
        height: 11px;
        background: #d93025;
        border: 2px solid #ffffff;
        border-radius: 50%;
        box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
        animation: eemPulseBadge 1.8s infinite;
    }

    @keyframes eemPulseBadge {
        0% { transform: scale(0.9); }
        50% { transform: scale(1.15); }
        100% { transform: scale(0.9); }
    }

    /* 2. Expanded Search State (When user focuses or types in search) */
    .eem-filter-bar.eem-filter-bar-floating.eem-search-active:not(.eem-filters-expanded),
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-search-active:not(.eem-filters-expanded) {
        width: calc(100% - 32px);
        max-width: 600px;
        background: #ffffff;
        border: 1px solid rgba(0, 0, 0, 0.14);
        box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18), 0 2px 8px rgba(0, 0, 0, 0.08);
    }

    body.eem-filter-sheet-open .eem-app-wrapper.eem-filter-sheet-active {
        position: relative;
    }

    /* 3. Filters Sheet OPEN - Maximize Vertical Screen Space */
    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded {
        position: fixed;
        top: auto;
        bottom: var(--eem-floating-bottom-offset, 18px);
        left: 50%;
        transform: translateX(-50%);
        width: calc(100% - 24px);
        max-width: 580px;
        height: auto;
        min-height: auto;
        max-height: calc(100dvh - var(--eem-floating-bottom-offset, 18px) - 20px);
        border-radius: 24px;
        padding: 16px 14px 12px 14px;
        background: rgba(255, 255, 255, 0.98);
        backdrop-filter: blur(20px) saturate(180%);
        -webkit-backdrop-filter: blur(20px) saturate(180%);
        box-shadow: 0 16px 48px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(0, 0, 0, 0.06);
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: space-between;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior: contain;
        overscroll-behavior-y: contain;
        gap: 0;
        z-index: 2147483647;
    }

/* App-level Blurred Backdrop Overlay when Floating Filter Sheet is Open (Envato Compliant) */
.eem-app-wrapper.eem-filter-sheet-active::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.15);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    z-index: 2147483646;
    pointer-events: auto;
    animation: eemBackdropFadeIn 0.25s ease forwards;
}

@keyframes eemBackdropFadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

    /* Soft Keyboard Active Mode: Maximize available space between top screen edge & soft keyboard */
    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded.eem-keyboard-active,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded.eem-keyboard-active {
        bottom: calc(var(--eem-keyboard-offset, 0px) + 8px);
        max-height: calc(var(--eem-viewport-height, 100vh) - 16px);
        border-radius: 18px;
        padding: 12px 12px 10px 12px;
    }

    /* Order 1: Filter Dropdowns (Alle Typen, Alle Kategorien, Alle Standorte) */
    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-filter-collapsible,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-filter-collapsible {
        order: 1;
        flex: 1 1 100%;
        width: 100%;
        display: flex;
        flex-direction: column;
        gap: 8px;
        margin: 0 0 10px 0;
        padding: 0;
    }

    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-filter-select-group,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-filter-select-group {
        display: flex;
        flex-direction: column;
        gap: 8px;
        width: 100%;
    }

    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-custom-select,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-custom-select {
        width: 100%;
        min-width: 0;
        height: auto;
        /* Siehe Kommentar oben: In der Spalten-Anordnung des Filter-Sheets
           darf die Desktop-flex-basis (180px) nicht als Hoehe wirken. */
        flex: 0 0 auto;
    }

    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-select-trigger,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-select-trigger {
        display: block;
        width: 100%;
        height: 42px;
        min-height: 42px;
        max-height: 42px;
        line-height: 40px;
        border-radius: 10px;
        border: 1px solid #d8d8d8;
        background-color: #f9f9f9;
        padding: 0 12px;
        font-size: 0.9rem;
        font-weight: 500;
        color: #333333;
        box-sizing: border-box;
        margin: 0;
    }

    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-select-options,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-select-options {
        display: none;
        position: relative;
        top: 0;
        left: 0;
        width: 100%;
        max-height: 200px;
        box-shadow: none;
        border: 1px solid #d8d8d8;
        border-radius: 4px;
        margin-top: 6px;
        box-sizing: border-box;
        background: #ffffff;
    }

    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-custom-select.active .eem-select-options,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-custom-select.active .eem-select-options {
        display: block;
    }

    /* Order 2: Action Buttons (Favoriten + Share) */
    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-filter-actions,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-filter-actions {
        display: flex;
        flex-direction: row;
        gap: 8px;
        width: 100%;
        margin: 0 0 8px 0;
    }

    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-filter-fav-btn,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-filter-fav-btn {
        flex: 1 1 auto;
        height: 40px;
        min-height: 40px;
        border-radius: 10px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        font-size: 0.85rem;
        font-weight: 600;
        box-sizing: border-box;
    }

    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-share-fav-btn,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-share-fav-btn {
        flex: 0 0 44px;
        width: 44px;
        height: 40px;
        min-height: 40px;
        border-radius: 10px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
    }

    /* Order 9: Divider line between filter controls and bottom search row */
    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded::after,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded::after {
        content: "";
        order: 9;
        flex: 1 1 100%;
        width: 100%;
        height: 1px;
        background: #e8e8e8;
        margin: 4px 0 6px 0;
    }

    /* Order 10: Search Row at the Bottom */
    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-filter-search-group,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-filter-search-group {
        order: 10;
        display: flex;
        flex: 1 1 auto;
        width: calc(100% - 46px);
        max-width: calc(100% - 46px);
        min-width: 140px;
        height: 42px;
        min-height: 42px;
        max-height: 42px;
        margin: 4px 0 0 0;
        padding: 0;
        border: 1px solid #e0e0e0;
        background: #f7f7f7;
        border-radius: 21px;
        position: relative;
        box-sizing: border-box;
    }

    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-search-input,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-search-input {
        width: 100%;
        height: 40px;
        min-height: 40px;
        max-height: 40px;
        line-height: 40px;
        /* rechts Platz fuer den 26px-Kreis des Loeschen-X */
        padding: 0 36px 0 34px;
        font-size: 14px;
        border: none;
        outline: none;
        background: transparent;
        color: #222222;
        box-sizing: border-box;
        margin: 0;
    }

    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-filter-search-group::before,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-filter-search-group::before {
        content: "\f179";
        font-family: dashicons;
        position: absolute;
        left: 10px;
        top: 50%;
        transform: translateY(-50%);
        display: block;
        opacity: 0.55;
        z-index: 2;
        font-size: 18px;
        color: #222222;
        margin: 0;
    }

    /* Kein eigener Block mehr fuer das Loeschen-X im aufgeklappten Zustand -
       die Kreis-Regel weiter oben gilt fuer beide Zustaende. */

    /* Order 11: Filter Toggle Button side-by-side with bottom search input */
    .eem-filter-bar.eem-filter-bar-floating.eem-filters-expanded .eem-filter-toggle-btn,
    .eem-app-wrapper.eem-floating-search-active .eem-filter-bar.eem-filters-expanded .eem-filter-toggle-btn {
        order: 11;
        display: inline-flex;
        flex: 0 0 38px;
        width: 38px;
        min-width: 38px;
        max-width: 38px;
        height: 38px;
        min-height: 38px;
        max-height: 38px;
        margin: 4px 0 0 8px;
        align-self: center;
    }

@keyframes eemSlideUpFade {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Floating Toast Notification */
.eem-toast-alert {
    position: fixed;
    top: 28px;
    left: 50%;
    transform: translateX(-50%) translateY(-20px);
    background: #222222;
    color: #ffffff;
    padding: 12px 24px;
    border-radius: 999px;
    font-size: 0.9rem;
    font-weight: 500;
    z-index: 2147483647;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease, transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
    max-width: 90%;
    text-align: center;
}

.eem-toast-alert.active {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0);
}

/* Safari / Chrome Search Input Reset to prevent duplicate clear icons.
   Gilt auch fuer die Suchfelder in den Filter-Dropdowns: Die sind seit
   1.0.20 ebenfalls type="search" (verhindert Autofill-Vorschlaege aus
   Adressbuch und Wallet auf dem Smartphone) und haetten sonst zusaetzlich
   zum eigenen X das native Loeschsymbol. */
input[type="search"].eem-search-input::-webkit-search-decoration,
input[type="search"].eem-search-input::-webkit-search-cancel-button,
input[type="search"].eem-search-input::-webkit-search-results-button,
input[type="search"].eem-search-input::-webkit-search-results-decoration,
.eem-custom-select-search input[type="search"]::-webkit-search-decoration,
.eem-custom-select-search input[type="search"]::-webkit-search-cancel-button,
.eem-custom-select-search input[type="search"]::-webkit-search-results-button,
.eem-custom-select-search input[type="search"]::-webkit-search-results-decoration {
    -webkit-appearance: none;
}

/* Hinweis: Hier stand frueher eine display:none-Regel fuer fremde
   Bottom-Navigationen (Theme- bzw. App-Leisten), adressiert ueber hart
   eingetragene Klassennamen. Bewusst entfernt: Das Plugin fasst fremdes Markup
   nicht an. Wer seine eigene Leiste bei geoeffneter Tastatur ausblenden will,
   macht das im eigenen CSS - das Plugin setzt dafuer die Klasse
   "eem-keyboard-open" auf <body>:

       body.eem-keyboard-open #meine-bottom-nav { display: none !important; }   */
