/* E2 – Voice Explorer: Merkmale | Treffer | Player (abgestimmter Desktop-Entwurf), sonst gestuft.
   Nur Tokens aus site.css/theme.css; site.css bleibt unverändert. Die Spaltenaufteilung setzt explorer.js anhand der
   tatsächlich gemessenen Breiten von Filterbeschriftungen und Trefferzahlen (Klassen xp--wide / xp--mid, CSS-Variablen):
   xp--wide  drei Spalten (nur wenn Filter einzeilig, Liste ≥ 380 px und Player ≥ 320 px passen)
   xp--mid   Merkmale oben (zweispaltig), darunter Liste | Player
   < 900 px  eine Spalte: Merkmale · Treffer · Player · Liste (wie bisher), mobile Wiedergabeleiste */

/* Eigene, breitere Inhaltsfläche nur für den Voice Explorer (Entwurf: 1792 px bei 1920 px) */
.xp-wrap { max-width: calc(1792px + 2 * var(--pad-x)); }

.xp {
  --xp-type-scale: 1.15;
  --xp-screen: #0f1113; --xp-screen-ink: #f0eee9; --xp-screen-dim: rgba(240, 238, 233, .62);
  --xp-row-hover: rgba(255, 255, 255, .38); --xp-row-active: rgba(255, 255, 255, .62);
  --xp-gap: 32px; --xp-genre-min: 170px; --xp-sub-min: 140px; --xp-cnt: 2ch;
  display: grid; grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "fx" "sum" "stage" "list";
  column-gap: var(--xp-gap); margin-top: 6px;
}
.xp-fx { grid-area: fx; min-width: 0; }
.xp-sum { grid-area: sum; min-width: 0; }
.xp-stage { grid-area: stage; min-width: 0; }
.xp-list { grid-area: list; min-width: 0; }

/* Drei Spalten */
.xp.xp--wide {
  grid-template-columns: var(--xp-fx-w, 450px) minmax(380px, 1fr) var(--xp-stage-w, 480px);
  grid-template-areas: "fx sum stage" "fx list stage"; grid-template-rows: auto 1fr; align-items: start;
}
.xp.xp--wide .xp-stage { position: sticky; top: 24px; }
/* Mittlere Breite: Merkmale oben (Genre/Medium | Sprechweise/Wirkung), darunter Liste | Player */
.xp.xp--mid { grid-template-columns: minmax(0, 1fr) minmax(344px, 1fr); grid-template-areas: "fx fx" "sum stage" "list stage"; grid-template-rows: auto auto 1fr; align-items: start; }
.xp.xp--mid .xp-stage { position: sticky; top: 24px; }
.xp.xp--mid .xp-fx { margin-bottom: 18px; }
.xp.xp--mid .xp-fx.is-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: var(--xp-gap); align-content: start; margin-bottom: 18px; }
.xp.xp--mid .xp-fx.is-split > .xp-col__head { grid-column: 1 / -1; }
.xp.xp--mid .xp-fx.is-split .xp-fx__group--genre, .xp.xp--mid .xp-fx.is-split .xp-fx__group--medium { grid-column: 1; }
.xp.xp--mid .xp-fx.is-split .xp-fx__pair { grid-column: 2; grid-row: 2 / span 3; }

/* Spaltenköpfe (Merkmale · n Treffer · Player) */
.xp-col__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; min-height: 52px; padding: 14px 0 12px; border-bottom: 1px solid var(--line); }
.xp-col__title { margin: 0; font-stretch: var(--cond-stretch); font-size: calc(12px * var(--xp-type-scale, 1.15)); font-weight: 500; letter-spacing: .16em; text-transform: uppercase; } /* Typografie wie bisher „Treffer“ (.xp-sum__label) */

/* ---------- Merkmale ---------- */
.xp-fx__group { min-width: 0; padding: 18px 0 4px; }
.xp-fx__head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 2px 10px; margin-bottom: 10px; }
.xp-fx__name { font-weight: 700; font-size: calc(11px * var(--xp-type-scale, 1.15)); letter-spacing: .16em; text-transform: uppercase; line-height: 1.3; }
/* E3: Hinweise („eine Auswahl“ …) und die Überschrift „Medium“ nur für Screenreader */
.xp-fx__hint, .xp-fx__head--hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.xp-fx__group--medium { padding-top: 18px; padding-bottom: 0; }
.xp-fx__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.xp-fx__chips--grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.xp-fx__chips--stack { display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--xp-sub-min), 1fr)); }
.xp-fx__pair { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 16px; }
.xp-fx__pair.is-single { grid-template-columns: minmax(0, 1fr); }

/* Filterknöpfe: 14 px, normaler Schnitt – auch ausgewählt; Zahl rechtsbündig, auch 0 (abgeschwächt, weiter klickbar) */
.xp-chip { display: flex; align-items: center; gap: 8px; min-height: 40px; padding: 8px 12px; font-size: calc(12.5px * var(--xp-type-scale, 1.15)); font-weight: 400; line-height: 1.2; white-space: nowrap; text-align: left; }
.xp-fx__chips--grid .xp-chip, .xp-fx__chips--stack .xp-chip { width: 100%; }
.xp-chip__label { flex: 0 1 auto; }
.xp-chip .chip__count { margin-left: auto; padding-left: 8px; min-width: calc(var(--xp-cnt) + 8px); text-align: right; font-size: calc(11px * var(--xp-type-scale, 1.15)); font-variant-numeric: tabular-nums; }
/* Messung der natürlichen Breite (explorer.js, nur kurzzeitig gesetzt) */
.xp--measure .xp-chip { width: max-content !important; }
.xp-chip .chip__x { width: calc(var(--xp-cnt) + 8px); height: 9px; flex: none; font-size: calc(11px * var(--xp-type-scale, 1.15)); margin-left: auto; fill: none; stroke: var(--lime); stroke-width: 1.8; } /* E3: gleiche Breite wie die Zahl – Auswählen verschiebt nichts */
.xp-chip[aria-pressed="true"] { font-weight: 400; }
.xp-chip.is-zero { opacity: .45; }
.xp-chip.is-zero:hover { opacity: .8; }

/* ---------- Treffer ---------- */
.xp-sum__count { font-variant-numeric: tabular-nums; }
.xp-sum__meta { margin-top: 14px; font-size: calc(13px * var(--xp-type-scale, 1.15)); color: var(--stone); font-variant-numeric: tabular-nums; }
.xp-sum__text { margin-top: 4px; font-size: calc(14px * var(--xp-type-scale, 1.15)); color: var(--stone); min-width: 0; }
.xp-sum__text b { color: var(--ink); font-weight: 600; }
.xp-sum__text i, .xp-none__text i { font-style: normal; font-stretch: var(--cond-stretch); font-size: calc(11px * var(--xp-type-scale, 1.15)); letter-spacing: .14em; text-transform: uppercase; padding-inline: 2px; }
.xp-sum__reset { font-size: calc(12.5px * var(--xp-type-scale, 1.15)); font-weight: 600; color: var(--ink); text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
/* E3: Platz bleibt reserviert – beim Auswählen verschiebt sich nichts (unsichtbar = auch nicht fokussierbar) */
.xp-sum__reset.is-off { visibility: hidden; }
.xp-sum__off { margin-top: 8px; font-size: calc(13px * var(--xp-type-scale, 1.15)); color: var(--stone); }
.xp-sum__off b { color: var(--ink); font-weight: 600; }
.xp-sum__off button { margin-left: 4px; color: var(--ink); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.xp-list { padding-top: 12px; }
.xp-list__items { list-style: none; margin: 0; padding: 0; }

.xp-kind { width: 15px; height: 15px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; }

/* Trefferzeile: Titel links, Medium · Genre rechts, Klangeigenschaften darunter – Höhe aus dem Inhalt */
.xp-row { border-bottom: 1px solid var(--line); }
.xp-row__btn { display: grid; grid-template-columns: 34px minmax(0, 1fr); align-items: start; width: 100%; text-align: left;
  padding: 14px 12px 14px 12px; transition: background .2s; }
.xp-row__btn:hover { background: var(--xp-row-hover); }
.xp-row__nr { padding-top: 2px; font-stretch: var(--cond-stretch); font-size: calc(12.5px * var(--xp-type-scale, 1.15)); letter-spacing: .08em; color: var(--stone); font-variant-numeric: tabular-nums; }
.xp-row__main { min-width: 0; }
.xp-row__top { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 18px; row-gap: 2px; }
.xp-row__title { flex: 1 1 auto; min-width: 0; font-size: calc(15px * var(--xp-type-scale, 1.15)); font-weight: 500; line-height: 1.3; overflow-wrap: anywhere; }
.xp-row__side { flex: 0 1 auto; margin-left: auto; display: inline-flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 2px 6px;
  font-size: calc(13px * var(--xp-type-scale, 1.15)); line-height: 1.4; color: var(--stone); text-align: right; }
.xp-row__side .xp-kind { width: 13px; height: 13px; }
.xp-row__kind { display: inline-flex; }
.xp-row__meta { display: block; margin-top: 4px; font-size: calc(13px * var(--xp-type-scale, 1.15)); line-height: 1.4; color: var(--stone); overflow-wrap: anywhere; }
.xp-row__meta:empty { display: none; }
.xp-row__state:empty { display: none; }
.xp-row__state { display: inline-block; margin-left: 10px; font-stretch: var(--cond-stretch); font-weight: 700; font-size: calc(10.5px * var(--xp-type-scale, 1.15)); letter-spacing: .16em; text-transform: uppercase; color: var(--ink); vertical-align: 2px; white-space: nowrap; }
.xp-row__state::before { content: ""; display: inline-block; width: 5px; height: 5px; margin-right: 6px; border-radius: 50%; background: currentColor; vertical-align: 2px; }
.xp-row__state.is-live { color: var(--ink); }
.xp-row__state.is-live::before { width: 7px; height: 7px; background: var(--lime-deep); vertical-align: 1px; }
.xp-row.is-active .xp-row__btn { background: var(--xp-row-active); box-shadow: inset 2px 0 0 var(--ink); }
.xp-row.is-active .xp-row__nr { color: var(--ink); }
/* Nachgeladene Einträge („Weitere anzeigen“, Klasse is-new) bleiben neutral – keine eigene Markierung */
/* Filtertreffer: zurückhaltend unterstrichen (ohne Fettung) */
.xp-hit { color: inherit; font-weight: inherit; text-decoration: underline; text-decoration-color: var(--lime-deep); text-decoration-thickness: 1px; text-underline-offset: 4px; }

.xp-more { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-top: 22px; }
.xp-more__info { font-size: calc(13px * var(--xp-type-scale, 1.15)); color: var(--stone); font-variant-numeric: tabular-nums; }
.xp-more__btn { display: inline-flex; align-items: center; gap: 14px; min-height: 44px; padding: 12px 20px; border: 1px solid currentColor; border-radius: 2px;
  font-stretch: var(--cond-stretch); font-weight: 600; font-size: calc(12px * var(--xp-type-scale, 1.15)); letter-spacing: .14em; text-transform: uppercase; transition: background .2s, color .2s; }
.xp-more__btn:hover { background: var(--ink); color: var(--paper); }
.xp-more__btn svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.6; }

.xp-none { padding: 30px 12px 28px; border-bottom: 1px solid var(--line); color: var(--stone); font-size: calc(14px * var(--xp-type-scale, 1.15)); }
.xp-none__title { color: var(--ink); font-stretch: var(--display-stretch); font-weight: 800; font-size: calc(20px * var(--xp-type-scale, 1.15)); line-height: 1.15; text-transform: uppercase; }
.xp-none__text { margin-top: 8px; }
.xp-none__text b { color: var(--ink); font-weight: 600; }
.xp-none__acts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.xp-none__acts .xp-chip { width: auto; }

/* ---------- Player: Video 16:9, Audio kompakt (keine leere Videofläche) ---------- */
.xp-stage__kicker { display: flex; align-items: center; gap: 8px; margin-top: 16px; font-stretch: var(--cond-stretch); font-weight: 600; font-size: calc(11px * var(--xp-type-scale, 1.15)); letter-spacing: .16em; text-transform: uppercase; color: var(--stone); }
.xp-stage__kicker .xp-kind { width: 13px; height: 13px; color: var(--ink); }
.xp-stage__title { margin-top: 8px; font-stretch: 100%; font-weight: 600; font-size: calc(18px * var(--xp-type-scale, 1.15)); line-height: 1.1; letter-spacing: -.005em; overflow-wrap: anywhere; } /* Schreibweise normal (E2, Entscheidung 1) */
.xp-stage__title .badge { vertical-align: 4px; }
.xp-stage__screen { position: relative; margin-top: 16px; height: 132px; background: var(--xp-screen); color: var(--xp-screen-ink); }
.xp-stage.is-video .xp-stage__screen { height: auto; aspect-ratio: 16 / 9; }
.xp-stage__wave { --xp-played: #d4ef5b; --xp-idle: rgba(240, 238, 233, .26); --xp-hover: #f0eee9;
  position: absolute; left: 20px; right: 20px; top: 18px; height: 60px; cursor: pointer; touch-action: none; }
.xp-stage__wave canvas { width: 100%; height: 100%; display: block; }
.xp-stage__wave:focus-visible { outline: 2px solid var(--lime); outline-offset: 6px; }
.xp-stage__clock { position: absolute; left: 20px; bottom: 16px; font-stretch: var(--display-stretch); font-weight: 800; font-size: calc(26px * var(--xp-type-scale, 1.15)); line-height: 1; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.xp-stage__clock small { font-stretch: 100%; font-weight: 400; font-size: calc(13px * var(--xp-type-scale, 1.15)); letter-spacing: 0; color: var(--xp-screen-dim); margin-left: 8px; }
.xp-stage__tag { position: absolute; right: 20px; bottom: 17px; font-stretch: var(--cond-stretch); font-weight: 600; font-size: calc(10.5px * var(--xp-type-scale, 1.15)); letter-spacing: .16em; text-transform: uppercase; color: var(--xp-screen-dim); }
.xp-stage__tag.is-live { color: var(--lime); }
.xp-stage__tag.is-live::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 7px; border-radius: 50%; background: var(--lime); vertical-align: 1px; }
.xp-stage__bar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 16px; min-height: 44px; margin-top: 16px; }
/* Bedienknopf als Rahmen-Schaltfläche: Symbol + Klartext („Abspielen“, „Pausieren“, „Video laden“, „Video stoppen“ …) */
.xp-pbtn { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 10px 16px; border: 1px solid var(--line); border-radius: 2px;
  background: rgba(255, 255, 255, .35); color: var(--ink); font-stretch: 100%; font-size: calc(12.5px * var(--xp-type-scale, 1.15)); font-weight: 400; letter-spacing: 0; text-transform: none; /* wie Filterbeschriftungen (12,5 px / 400) */ transition: background .2s, border-color .2s; }
.xp-pbtn:hover { border-color: var(--ink); }
.xp-pbtn svg { width: 13px; height: 13px; flex: none; fill: currentColor; }
.xp-pbtn[disabled] { opacity: .4; cursor: default; }
.xp-pbtn[hidden] { display: none; }
.xp-stage__acts { margin-left: auto; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px 18px; }
.xp-stage__acts .text-btn { min-height: 40px; }
.xp-stage__status { display: flex; flex-wrap: wrap; gap: 2px 10px; margin-top: 10px; font-size: calc(13px * var(--xp-type-scale, 1.15)); color: var(--stone); }
.xp-stage__status b { font-stretch: var(--cond-stretch); font-weight: 700; font-size: calc(11px * var(--xp-type-scale, 1.15)); letter-spacing: .16em; text-transform: uppercase; color: var(--ink); align-self: center; }
.xp-stage__status span { font-variant-numeric: tabular-nums; }
.xp-stage__desc { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line); font-size: calc(14px * var(--xp-type-scale, 1.15)); color: var(--stone); }
.xp-stage__desc[hidden] + .xp-stage__facts { border-top: 1px solid var(--line); padding-top: 12px; margin-top: 14px; }
.xp-stage__facts { margin: 10px 0 0; display: grid; gap: 4px; font-size: calc(13px * var(--xp-type-scale, 1.15)); }
.xp-stage__facts > div { display: flex; flex-wrap: wrap; gap: 0 8px; }
.xp-stage__facts dt { font-stretch: var(--cond-stretch); font-weight: 600; font-size: calc(10.5px * var(--xp-type-scale, 1.15)); letter-spacing: .16em; text-transform: uppercase; color: var(--stone); padding-top: 2px; }
.xp-stage__facts dd { margin: 0; color: var(--stone); min-width: 0; overflow-wrap: anywhere; }

/* ---------- V2-03 B3: Videos in der Liste und auf der Bühne ---------- */
.xp-kind__fill { fill: currentColor; stroke: none; }
.xp-chip .xp-kind { width: 13px; height: 13px; margin-right: 2px; }
/* Video-Ebene in derselben Leinwand: Vorschaubild (eigener Server) + Freigabe, danach der YouTube-Rahmen */
.xp-stage__video { position: relative; min-height: 100%; display: flex; flex-direction: column; } /* E2: im Fluss – die Freigabe darf die Fläche bei schmalem Player verlängern */
.xp-stage__video[hidden] { display: none; }
.xp-stage__poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .55; }
.xp-stage__poster[hidden] { display: none; }
.xp-stage__consent { position: relative; z-index: 1; flex: 1 0 auto; display: flex; flex-direction: column; justify-content: flex-end; gap: 12px; padding: 6% 7%;
  background: linear-gradient(0deg, rgba(10, 11, 13, .94) 0%, rgba(10, 11, 13, .62) 62%, rgba(10, 11, 13, .2) 100%); }
.xp-stage__consent[hidden] { display: none; }
.xp-stage__note { margin: 0; font-size: calc(12.5px * var(--xp-type-scale, 1.15)); line-height: 1.5; color: var(--xp-screen-dim); max-width: 48ch; }
.xp-stage__note a { color: var(--xp-screen-ink); text-decoration: underline; text-underline-offset: 3px; }
.xp-stage__consent-row { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 18px; }
.xp-vload { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 10px 18px; background: #d4ef5b; color: #141619; border-radius: 2px;
  font-stretch: 100%; font-weight: 400; font-size: calc(12.5px * var(--xp-type-scale, 1.15)); letter-spacing: 0; text-transform: none; } /* wie Filterbeschriftungen; auch „Video abspielen“/„Erneut versuchen“ (.xp-stage__go) */
.xp-vload svg { width: 11px; height: 11px; fill: currentColor; }
.xp-vload:focus-visible { outline: 2px solid #f0eee9; outline-offset: 3px; }
.xp-remember { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; font-size: calc(12.5px * var(--xp-type-scale, 1.15)); color: var(--xp-screen-dim); cursor: pointer; }
.xp-remember input { width: 16px; height: 16px; margin: 0; accent-color: #d4ef5b; }
.xp-stage__frame { position: absolute; inset: 0; }
.xp-stage__frame:empty { display: none; }
.xp-stage__iframe { width: 100%; height: 100%; border: 0; display: block; background: #000; }

/* V2-03 B3.1: MP4 im nativen Player derselben Leinwand; „Video abspielen“ (vor dem Start/bei blockiertem Autostart) und Meldung */
.xp-stage__mp4 { width: 100%; height: 100%; display: block; background: #000; object-fit: contain; }
.xp-stage__mp4:focus-visible { outline: 2px solid #d4ef5b; outline-offset: -2px; }
.xp-stage__go { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); z-index: 2; box-shadow: 0 6px 24px rgba(0, 0, 0, .35); }
.xp-stage__go[hidden] { display: none; }
.xp-stage__msg { position: absolute; left: 7%; right: 7%; top: 8%; z-index: 2; margin: 0; padding: 10px 14px; max-width: 52ch;
  background: rgba(10, 11, 13, .86); color: var(--xp-screen-ink); font-size: calc(12.5px * var(--xp-type-scale, 1.15)); line-height: 1.45; border-left: 2px solid #d4ef5b; }
.xp-stage__msg[hidden] { display: none; }

/* ---------- E4: unter 900 px – Filterreiter, Liste, Player als Leiste am unteren Rand ----------
   Ab 900 px gilt alles oben Stehende unverändert; Reiter, „n Treffer anzeigen“ und die Leiste sind dort ausgeblendet. */
.xp-fx__tabs, .xp-fx__done, .xp-mini { display: none; }
.xp-mini__kind .xp-kind { width: 16px; height: 16px; }
@media (max-width: 899px) {
  .xp { --xp-bar-h: 64px; grid-template-areas: "fx" "sum" "list";
    padding-bottom: calc(var(--xp-bar-h) + env(safe-area-inset-bottom, 0px) + 24px); } /* letzte Einträge bleiben über der Leiste */

  /* Typografie: Archivo in normaler Breite, Gewichte 400/600, Größen 12 · 14 · 16 · 20 px */
  .xp, .xp * { font-stretch: 100% !important; letter-spacing: 0 !important; text-transform: none !important; }
  .xp .xp-col__title { font-size: calc(14px * var(--xp-type-scale, 1.15)); font-weight: 600; }
  .xp .xp-sum__reset { font-size: calc(14px * var(--xp-type-scale, 1.15)); font-weight: 400; }
  .xp .xp-chip { font-size: calc(14px * var(--xp-type-scale, 1.15)); font-weight: 400; }
  .xp .xp-chip .chip__count { font-size: calc(12px * var(--xp-type-scale, 1.15)); font-weight: 400; }
  .xp .xp-sum__off { font-size: calc(14px * var(--xp-type-scale, 1.15)); }
  .xp .xp-row__nr, .xp .xp-row__side, .xp .xp-more__info { font-size: calc(12px * var(--xp-type-scale, 1.15)); font-weight: 400; }
  .xp .xp-row__title { font-size: calc(16px * var(--xp-type-scale, 1.15)); font-weight: 600; }
  .xp .xp-row__meta { font-size: calc(14px * var(--xp-type-scale, 1.15)); line-height: 1.4; }
  .xp .xp-row__state { font-size: calc(12px * var(--xp-type-scale, 1.15)); font-weight: 600; vertical-align: 1px; }
  .xp .xp-hit { font-weight: inherit; }
  .xp .xp-more__btn, .xp .xp-pbtn, .xp .xp-vload, .xp .xp-fx__done { font-size: calc(14px * var(--xp-type-scale, 1.15)); font-weight: 600; }
  .xp .xp-none__title { font-size: calc(16px * var(--xp-type-scale, 1.15)); font-weight: 600; line-height: 1.3; }
  .xp .xp-none__text, .xp .xp-stage__desc { font-size: calc(14px * var(--xp-type-scale, 1.15)); }
  .xp .xp-stage__kicker, .xp .xp-stage__tag, .xp .xp-stage__status, .xp .xp-stage__status b, .xp .xp-stage__facts,
  .xp .xp-stage__facts dt, .xp .xp-stage__note, .xp .xp-remember, .xp .xp-stage__msg, .xp .xp-mini__s, .xp .xp-stage__clock small { font-size: calc(12px * var(--xp-type-scale, 1.15)); }
  .xp .xp-stage__kicker, .xp .xp-stage__clock small, .xp .xp-mini__s { font-weight: 400; }
  .xp .xp-stage__tag, .xp .xp-stage__status b, .xp .xp-stage__facts dt { font-weight: 600; }
  .xp .xp-stage__title { font-size: calc(20px * var(--xp-type-scale, 1.15)); font-weight: 600; line-height: 1.25; }
  .xp .xp-stage__clock { font-size: calc(16px * var(--xp-type-scale, 1.15)); font-weight: 600; }
  .xp .xp-stage__acts .text-btn, .xp .xp-tab { font-size: calc(14px * var(--xp-type-scale, 1.15)); font-weight: 400; }
  .xp .xp-mini__t, .xp .xp-mini__go { font-size: calc(14px * var(--xp-type-scale, 1.15)); font-weight: 600; }

  /* Filter: Reiter Medium | Genre | Sprechweise | Wirkung, darunter nur die Auswahl der geöffneten Gruppe */
  .xp-fx { margin-bottom: 6px; }
  .xp-fx__tabs { display: flex; justify-content: space-between; gap: 8px; border-bottom: 1px solid var(--line); }
  .xp-tab { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0; color: var(--stone);
    box-shadow: inset 0 -1px 0 transparent; white-space: nowrap; }
  .xp-tab:hover, .xp-tab[aria-expanded="true"] { color: var(--ink); }
  .xp-tab[aria-expanded="true"] { box-shadow: inset 0 -1px 0 var(--ink); } /* geöffnete Gruppe: dezente Unterstreichung */
  .xp-tab__n { display: inline-grid; place-items: center; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px;
    background: var(--ink); color: var(--paper); font-size: calc(12px * var(--xp-type-scale, 1.15)); font-weight: 600; line-height: 1; font-variant-numeric: tabular-nums; }
  .xp-tab__n:empty { visibility: hidden; } /* Platz bleibt reserviert */
  .xp-fx__group { padding: 14px 0 0; }
  .xp-fx__group:not(.is-open) { display: none; }
  .xp-fx__head { display: none; }
  .xp-fx__pair, .xp-fx__pair.is-single { display: block; }
  .xp .xp-fx__chips, .xp .xp-fx__chips--grid, .xp .xp-fx__chips--stack { display: flex; flex-wrap: wrap; gap: 8px; }
  .xp .xp-fx__chips .xp-chip { position: relative; width: auto; min-height: 34px; padding: 6px 10px; }
  .xp .xp-fx__chips .xp-chip::after { content: ""; position: absolute; inset: -4px 0; } /* Tippfläche 42 px, ohne Überlappung (Abstand 8 px) */
  .xp-fx__done { display: flex; justify-content: center; align-items: center; width: 100%; min-height: 44px; margin-top: 16px; padding: 10px 16px;
    border: 1px solid var(--ink); border-radius: 2px; color: var(--ink); }
  .xp-fx__done[hidden] { display: none; }

  /* Treffer und Liste */
  .xp-list { padding-top: 4px; }

  /* Player: Leiste am unteren Rand, aufklappbar. Eingeklappt bleibt der vollständige Player (Audio/Video) unverändert im
     Dokument, er wird nur nach unten verschoben – Wiedergabe und Position laufen weiter, nichts wird neu geladen. */
  .xp-stage { position: fixed; z-index: 42; /* über dem Staging-Hinweis (40), unter Toast (45) */ left: 0; right: 0; bottom: 0; max-height: min(86vh, 760px); overflow-y: auto; overscroll-behavior: contain;
    padding: 0 max(var(--pad-x, 16px), env(safe-area-inset-right, 0px)) calc(20px + env(safe-area-inset-bottom, 0px)) max(var(--pad-x, 16px), env(safe-area-inset-left, 0px));
    background: var(--paper); color: var(--ink); box-shadow: 0 -1px 0 var(--line), 0 -10px 30px rgba(10, 11, 13, .12);
    transform: translateY(calc(100% - var(--xp-bar-h) - env(safe-area-inset-bottom, 0px))); transition: transform .28s var(--ease), visibility 0s; }
  .xp-stage.is-open { transform: none; }
  .xp-stage.is-away { transform: translateY(100%); visibility: hidden; transition: transform .2s var(--ease), visibility 0s .2s; }
  .menu-open .xp-stage { visibility: hidden; } /* geöffnetes Seitenmenü liegt darüber */
  .xp-stage .xp-col__head { display: none; }
  .xp-mini { position: sticky; top: 0; z-index: 3; display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; gap: 12px; align-items: center;
    height: calc(var(--xp-bar-h) + env(safe-area-inset-bottom, 0px)); padding-bottom: env(safe-area-inset-bottom, 0px);
    margin-inline: calc(-1 * max(var(--pad-x, 16px), env(safe-area-inset-left, 0px))); padding-inline: max(var(--pad-x, 16px), env(safe-area-inset-left, 0px));
    background: var(--paper); color: var(--ink); }
  .xp-mini[hidden] { display: none; }
  .xp-stage.is-open .xp-mini { height: var(--xp-bar-h); padding-bottom: 0; box-shadow: 0 1px 0 var(--line); }
  .xp-mini > .xp-pbtn--mini, .xp-mini__kind { grid-column: 1; grid-row: 1; }
  .xp-mini__t { grid-column: 2; grid-row: 1; min-width: 0; margin: 0; line-height: 1.3; }
  .xp-mini__t > span:first-child { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* voller Titel im aufgeklappten Player */
  .xp-mini__s { display: block; color: var(--stone); font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .xp-mini__go { grid-column: 3; grid-row: 1; min-height: 44px; padding: 0 2px; color: var(--ink); text-decoration: underline; text-underline-offset: 4px; text-decoration-color: var(--line); }
  .xp-pbtn--mini { width: 40px; height: 40px; min-height: 0; padding: 0; justify-content: center; border: 0; border-radius: 50%; background: var(--lime); color: #141619; }
  .xp-pbtn--mini svg { width: 13px; height: 13px; }
  .xp-mini__kind { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--line); display: grid; place-items: center; color: var(--ink); }
  .xp-mini__kind[hidden] { display: none; }
  .xp-mini__bar { position: absolute; left: 0; top: 0; height: 2px; width: 0; background: var(--lime-deep); }
  .xp-stage__body { padding-top: 2px; }
  .xp-stage__kicker { margin-top: 12px; }
  .xp-stage__screen { margin-inline: calc(-1 * max(var(--pad-x, 16px), env(safe-area-inset-left, 0px))); }
  .xp-stage.is-video .xp-stage__screen { height: auto; }
}
@media (max-width: 640px) {
  .xp-stage__consent { padding: 14px 16px; gap: 8px; }
  .xp-row__btn { grid-template-columns: 26px minmax(0, 1fr); padding: 13px 4px; }
  .xp-row__side { flex-basis: 100%; margin-left: 0; justify-content: flex-start; text-align: left; }
  .xp-row__state { display: block; margin: 3px 0 1px; }
  .xp-more { flex-direction: column-reverse; align-items: stretch; text-align: center; gap: 10px; }
  .xp-more__btn { justify-content: center; }
}
@media (max-width: 899px) and (prefers-reduced-motion: reduce) {
  .xp-stage, .xp-stage.is-away { transition: none; }
}

/* ---------- Dunkel (mit JavaScript gewählt bzw. System-Schema ohne JavaScript) ---------- */
:root[data-theme="dark"] .xp { --xp-row-hover: rgba(240, 238, 233, .03); --xp-row-active: rgba(240, 238, 233, .06); --xp-screen: #0b0c0e; }
:root[data-theme="dark"] .xp-pbtn:not(.xp-pbtn--mini) { background: rgba(240, 238, 233, .04); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .xp { --xp-row-hover: rgba(240, 238, 233, .03); --xp-row-active: rgba(240, 238, 233, .06); --xp-screen: #0b0c0e; }
  :root:not([data-theme]) .xp-pbtn:not(.xp-pbtn--mini) { background: rgba(240, 238, 233, .04); }
}
@media (prefers-reduced-motion: reduce) {
  .xp-row__btn, .xp-pbtn, .xp-more__btn { transition: none; }
}

/* P2: project context, only for information absent from the sample title. */
.xp-row__project { display: block; margin-bottom: 3px; font-size: calc(12.5px * var(--xp-type-scale, 1.15)); font-weight: 400; font-stretch: normal; letter-spacing: normal; text-transform: none; color: var(--stone); overflow-wrap: anywhere; }
.xp-stage__project { margin: 0 0 6px; font-size: calc(13.5px * var(--xp-type-scale, 1.15)); font-weight: 400; font-stretch: normal; letter-spacing: normal; text-transform: none; overflow-wrap: anywhere; }
.xp-stage__project[hidden] { display: none; }

/* E5: larger text without changing the two genre columns. Long labels can wrap. */
.xp-fx__chips--grid .xp-chip__label { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
.xp .xp-fx__chips--grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.xp .xp-fx__chips--grid .xp-chip { width: 100%; min-width: 0; }
@media (max-width: 480px) {
  .xp-fx__tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 16px; }
}

/* F2: independent sibling buttons keep favorite clicks separate from playback. */
.xp .xp-row { display: grid; grid-template-columns: minmax(0, 1fr) 40px; align-items: stretch; }
.xp .xp-row__btn { min-width: 0; width: 100%; }
.xp .xp-favorite { border: 0; background: transparent; color: var(--muted, currentColor); font: inherit; font-size: 25px; cursor: pointer; min-height: 44px; padding: 0; }
.xp .xp-favorite[aria-pressed="true"] { color: var(--ink); }
.xp .xp-favorites { flex-shrink: 0; border: 1px solid var(--line); border-radius: 3px; padding: 7px 10px; background: transparent; color: var(--ink); font: inherit; font-size: 13px; cursor: pointer; min-height: 38px; }
.xp .xp-favorites[aria-pressed="true"] { background: var(--ink); color: var(--paper, #fff); }
.xp .xp-favorite:focus-visible, .xp .xp-favorites:focus-visible { outline: 2px solid var(--ink); outline-offset: -2px; }
.xp .xp-sum .xp-col__head { flex-wrap: wrap; gap: 8px; }
