/**
 * VeneziaCast — Konzerte (Classictic) Brand-DNA: Lagunenblau, Gold, Backstein
 */
.tv-kz-block{--gold:#c9941e;--lagune:#1a4d6e;--backstein:#a23838;--bg:#fbf8f3;--line:#e2dccf;--ink:#1c1c1c;--muted:#5e5848;margin:1.5rem 0;font-family:inherit}
.tv-kz-filters{background:#fff;border:1px solid var(--line);border-radius:10px;padding:1rem 1.1rem;margin:0 0 1.25rem;position:sticky;top:0;z-index:5;box-shadow:0 2px 6px rgba(0,0,0,0.05)}
.tv-kz-filter-row{display:flex;flex-wrap:wrap;gap:0.35rem;margin-bottom:0.5rem;align-items:center}
.tv-kz-filter-row:last-child{margin-bottom:0}
.tv-kz-filter-row--meta{margin-top:0.4rem;padding-top:0.4rem;border-top:1px dashed var(--line)}
.tv-kz-filter-label{font-size:0.72rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--muted);min-width:90px}
.tv-kz-pill{background:#fbf8f3;border:1px solid var(--line);color:var(--ink);padding:0.32rem 0.78rem;border-radius:99px;font-size:0.82rem;cursor:pointer;transition:all 0.15s;font-family:inherit;line-height:1.2}
.tv-kz-pill:hover{background:#f3ead9;border-color:var(--gold)}
.tv-kz-pill.is-active{background:var(--lagune);color:#fff;border-color:var(--lagune)}
.tv-kz-pill--reset{background:#fff;color:var(--backstein);border-color:var(--backstein)}
.tv-kz-pill--reset:hover{background:var(--backstein);color:#fff}
.tv-kz-counter{display:inline-block;margin-left:auto;font-size:0.85rem;color:var(--muted)}
.tv-kz-counter__num{color:var(--lagune);font-weight:600}
.tv-kz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:1.1rem;margin:1rem 0 1.5rem}
.tv-kz-card{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;transition:transform 0.15s,box-shadow 0.15s}
.tv-kz-card.is-hidden{display:none}
.tv-kz-card:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(0,0,0,0.08)}
.tv-kz-card__img{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;background:var(--bg)}
.tv-kz-card__img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 0.3s}
.tv-kz-card__img:hover img{transform:scale(1.04)}
.tv-kz-card__genre{position:absolute;left:0.6rem;top:0.6rem;background:var(--lagune);color:#fff;font-size:0.72rem;font-weight:600;padding:0.18rem 0.55rem;border-radius:4px;text-transform:uppercase;letter-spacing:0.04em}
.tv-kz-card__body{padding:0.95rem 1rem 1.1rem;display:flex;flex-direction:column;gap:0.55rem;flex:1}
.tv-kz-card__date{display:flex;align-items:baseline;gap:0.4rem;font-size:0.85rem}
.tv-kz-card__dow{display:inline-block;background:#f3ead9;color:var(--lagune);padding:0.1rem 0.45rem;border-radius:4px;font-size:0.74rem;font-weight:600}
.tv-kz-card__day{color:var(--lagune);font-weight:600;font-variant-numeric:tabular-nums}
.tv-kz-card__time{color:var(--muted);margin-left:auto;font-size:0.82rem}
.tv-kz-card__title{margin:0;font-size:1.02rem;line-height:1.35;color:var(--ink);font-family:Georgia,serif}
.tv-kz-card__venue{margin:0;font-size:0.84rem;color:var(--muted)}
.tv-kz-card__desc{margin:0;font-size:0.85rem;color:var(--ink);line-height:1.45;flex:1}
.tv-kz-card__cta-row{display:flex;align-items:center;gap:0.6rem;margin-top:0.4rem}
.tv-kz-card__cta{background:var(--gold);color:#1c1c1c;padding:0.5rem 0.95rem;border-radius:6px;font-weight:600;font-size:0.88rem;text-decoration:none;transition:background 0.15s}
.tv-kz-card__cta:hover{background:#a87a13;color:#fff}
.tv-kz-card__soldout{color:var(--backstein);font-size:0.78rem;font-weight:600;text-transform:uppercase;letter-spacing:0.04em}
.tv-kz-empty,.tv-kz-empty-state{padding:1.5rem 1rem;text-align:center;color:var(--muted);background:#fbf8f3;border:1px dashed var(--line);border-radius:8px;margin:1rem 0}

/* ── Mobile ≤ 640 px ──────────────────────────────────────────────────────── */
@media(max-width:640px){
  /* BUGFIX: Filter nicht sticky auf Mobile — verhindert Überlappung der Ergebnisse.
     Stattdessen: ausklappbares Drawer-Element via JS-Toggle.
     position:sticky mit top:0 überlagerte auf 375 px die Karten, weil der Filter
     durch wrappende Pills bis zu 250 px hoch wurde und den Viewport blockierte. */
  .tv-kz-filters{
    position:relative;
    top:auto;
    padding:0;
    overflow:hidden;
  }

  /* Toggle-Button (wird per JS injiziert) */
  .tv-kz-filter-toggle{
    display:flex;
    width:100%;
    align-items:center;
    gap:0.5rem;
    background:none;
    border:none;
    border-bottom:1px solid transparent;
    padding:0.8rem 1.1rem;
    font-size:0.875rem;
    font-weight:600;
    color:var(--lagune);
    cursor:pointer;
    font-family:inherit;
    text-align:left;
    transition:border-color 0.15s;
  }
  .tv-kz-filters.is-open .tv-kz-filter-toggle{
    border-bottom-color:var(--line);
  }
  .tv-kz-filter-toggle__label{flex:1}
  .tv-kz-filter-toggle__badge{
    background:var(--lagune);
    color:#fff;
    font-size:0.7rem;
    font-weight:700;
    padding:0.1rem 0.5rem;
    border-radius:99px;
    line-height:1.5;
  }
  .tv-kz-filter-toggle__chevron{
    font-style:normal;
    font-size:0.8rem;
    transition:transform 0.25s;
    color:var(--muted);
  }
  .tv-kz-filters.is-open .tv-kz-filter-toggle__chevron{
    transform:rotate(180deg);
  }

  /* Ausklappbarer Filter-Body */
  .tv-kz-filters-body{
    display:none;
    padding:0.85rem 1.1rem 0.8rem;
  }
  .tv-kz-filters.is-open .tv-kz-filters-body{
    display:block;
  }

  /* Bestehende Mobile-Anpassungen */
  .tv-kz-filter-label{min-width:auto;width:100%;margin-bottom:0.15rem}
  .tv-kz-counter{margin-left:0;margin-top:0.35rem;width:100%}
  .tv-kz-grid{grid-template-columns:1fr;gap:0.85rem}
}
