/* ============================================================
   TVF Journal — Ausgaben und Hochladeseite
   Nutzt die Designtoken des Themes. Zur Begründung der doppelten
   Klassennamen und der `!important`-Angaben siehe
   plugins/tvf-fahrten/assets/fahrten.css — auf dieser Website
   überschreiben fremde Plugins blanke Element- und Themeklassen.
   ============================================================ */

.tvfj{ max-width: 880px; margin: 0 }

/* ---- Knöpfe ------------------------------------------------- */
.tvfj .tvfj-knopf,
.tvfj-sozial .tvfj-knopf{
  display: inline-flex; align-items: center; justify-content: center;
  gap: var(--s2);
  min-height: 50px !important;
  padding: 8px var(--s6) !important;
  border: 0 !important;
  border-radius: var(--r-full) !important;
  background: var(--action) !important;
  color: var(--on-action) !important;
  font-family: var(--font) !important;
  font-size: 16px !important;
  font-weight: 500 !important;
  text-transform: none !important;
  letter-spacing: normal !important;
  text-decoration: none;
  cursor: pointer;
  transition: opacity var(--d-fast) var(--ease);
}
.tvfj .tvfj-knopf:hover{ opacity: .86 }
.tvfj .tvfj-knopf--still,
.tvfj-sozial .tvfj-knopf--still{
  background: transparent !important;
  color: var(--fg) !important;
  border: 1px solid var(--border-strong) !important;
  min-height: 44px !important;
  font-size: 15px !important;
}
.tvfj .tvfj-knopf--still:hover{ border-color: var(--fg) !important; opacity: 1 }

/* ---- Kästen ------------------------------------------------- */
.tvfj-kasten{
  padding: var(--s6) var(--s7);
  border-radius: var(--r-lg);
  border-left: 3px solid var(--border-strong);
  background: var(--bg-2);
}
.tvfj-kasten--gut{ border-left-color: var(--tvf-ok) }
.tvfj-kasten--fehler{ border-left-color: var(--tvf-err); margin-bottom: var(--s6) }
.tvfj-kasten__titel{
  margin: 0 0 var(--s3);
  font-size: var(--t-h3) !important;
  font-weight: 600 !important;
  text-transform: none !important;
  letter-spacing: -.01em !important;
  color: var(--fg) !important;
}
.tvfj-kasten p{ margin: 0 0 var(--s3); max-width: var(--lese); line-height: 1.6 }
.tvfj-kasten p:last-child{ margin-bottom: 0 }

/* ---- Das Feld ----------------------------------------------- */
/* Eine große Fläche, nicht ein schmaler Knopf: Auf dem Handy trifft
   man sie mit dem Daumen, am Rechner kann man eine Datei daraufziehen. */
.tvfj-feld{
  display: block;
  padding: var(--s8) var(--s6);
  border: 2px dashed var(--border-strong);
  border-radius: var(--r-lg);
  background: var(--bg);
  text-align: center;
  cursor: pointer;
  transition: border-color var(--d-fast) var(--ease), background-color var(--d-fast) var(--ease);
}
.tvfj-feld:hover{ border-color: var(--fg); background: var(--bg-2) }
.tvfj-feld:focus-within{ outline: 2px solid var(--focus-ring); outline-offset: 3px }
.tvfj-feld__titel{
  display: block;
  font-size: var(--t-h3) !important;
  font-weight: 600 !important;
  text-transform: none !important;
  letter-spacing: -.01em !important;
  color: var(--fg) !important;
}
.tvfj-feld__text{
  display: block;
  margin: var(--s3) auto 0;
  max-width: 46ch;
  color: var(--fg-muted);
  font-size: var(--t-small);
  line-height: 1.6;
}
.tvfj-feld input[type="file"]{
  display: block;
  margin: var(--s5) auto 0;
  max-width: 100%;
  font-size: 15px;
}

.tvfj-form .tvfj-knopf{ margin-top: var(--s6) }
.tvfj-hinweis{
  margin: var(--s5) 0 0;
  max-width: var(--lese);
  color: var(--fg-muted);
  font-size: var(--t-small);
  line-height: 1.6;
}
.tvfj-letzte{
  margin-top: var(--s7);
  padding-top: var(--s5);
  border-top: 1px solid var(--border);
  color: var(--fg-muted);
  font-size: var(--t-small);
}
.tvfj-letzte__titel{
  margin: 0 0 var(--s1);
  font: 600 10px/1.4 var(--mono) !important;
  letter-spacing: .08em !important;
  text-transform: uppercase !important;
}
.tvfj-letzte p{ margin: 0 }

/* ---- Quittung ----------------------------------------------- */
.tvfj-vorschau{ margin: var(--s5) 0; display: flex; gap: var(--s5); align-items: flex-start }
.tvfj-vorschau img{
  width: 150px; height: auto; flex: none;
  border: 1px solid var(--border);
  border-radius: var(--r);
  box-shadow: 0 6px 18px rgb(0 0 0 / .10);
}
.tvfj-vorschau__text{ color: var(--fg-muted); font-size: var(--t-small) }
.tvfj-quelle{ color: var(--fg-muted); font-size: var(--t-small) }
.tvfj-quelle a{ color: var(--accent); text-decoration: underline }
.tvfj-warnung{ color: var(--tvf-warn) !important; font-size: var(--t-small) }
.tvfj-tat{ display: flex; flex-wrap: wrap; gap: var(--s4); margin-top: var(--s5) }

/* ---- Die Ausgaben ------------------------------------------- */
.tvfj-marke{
  margin: 0 0 var(--s4);
  font: 600 10px/1.4 var(--mono) !important;
  letter-spacing: .1em !important;
  text-transform: uppercase !important;
  color: var(--fg-muted) !important;
}

.tvfj-aktuell{
  display: grid;
  grid-template-columns: minmax(0, 300px) minmax(0, 1fr);
  gap: var(--s7);
  align-items: center;
}
.tvfj-aktuell__bild img{
  width: 100%; height: auto; display: block;
  border: 1px solid var(--border);
  border-radius: var(--r);
  box-shadow: 0 14px 40px rgb(0 0 0 / .14);
}
.tvfj-aktuell__titel{
  margin: 0 0 var(--s5);
  font-size: var(--t-h2) !important;
  font-weight: 600 !important;
  text-transform: none !important;
  letter-spacing: -.01em !important;
  line-height: 1.15;
}
.tvfj-daten{
  margin: var(--s3) 0 0;
  font: 400 12px/1.4 var(--mono);
  letter-spacing: .06em;
  color: var(--fg-muted);
}

.tvfj-archiv{ margin-top: var(--s9); padding-top: var(--s7); border-top: 1px solid var(--border) }
.tvfj-liste{ list-style: none; margin: 0; padding: 0; display: grid;
             grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--s6) }
.tvfj-liste__eintrag a{
  display: block; text-decoration: none; color: inherit;
}
.tvfj-liste__eintrag img{
  width: 100%; height: auto; display: block;
  border: 1px solid var(--border); border-radius: var(--r);
  transition: border-color var(--d-fast) var(--ease), transform var(--d-fast) var(--ease);
}
.tvfj-liste__eintrag a:hover img{ border-color: var(--fg); transform: translateY(-2px) }
.tvfj-liste__leer{
  display: flex; align-items: center; justify-content: center;
  aspect-ratio: 1 / 1.414;
  border: 1px dashed var(--border-strong); border-radius: var(--r);
  font: 600 12px/1 var(--mono); letter-spacing: .1em; color: var(--fg-muted);
}
.tvfj-liste__titel{ display: block; margin-top: var(--s3); font-size: var(--t-small); font-weight: 500 }
.tvfj-liste__daten{ display: block; font: 400 11px/1.4 var(--mono); color: var(--fg-muted) }
.tvfj-leer{ color: var(--fg-muted) }

/* ---- Soziale Netze ------------------------------------------ */
.tvfj-sozial{
  margin-top: var(--s8); padding-top: var(--s7);
  border-top: 1px solid var(--border);
}
.tvfj-sozial__text{ max-width: var(--lese); color: var(--fg-muted); font-size: var(--t-small); line-height: 1.6 }
.tvfj-sozial__bild{ margin: var(--s5) 0 }
.tvfj-sozial__bild a{ color: var(--accent); text-decoration: underline }
.tvfj-sozial__bild span{ color: var(--fg-muted); font-size: var(--t-small) }
.tvfj-netz{ margin-top: var(--s6) }
.tvfj-netz__titel{
  margin: 0 0 var(--s2);
  font: 600 10px/1.4 var(--mono) !important;
  letter-spacing: .1em !important; text-transform: uppercase !important;
  color: var(--fg-muted) !important;
}
.tvfj-netz__text{
  width: 100%; box-sizing: border-box;
  padding: var(--s4) var(--s5) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--r) !important;
  background: var(--bg-2) !important;
  color: var(--fg) !important;
  font-family: var(--font) !important;
  font-size: 15px !important;
  line-height: 1.55;
  resize: vertical;
}
.tvfj-netz .tvfj-knopf{ margin-top: var(--s3) }
.tvfj-sozial__fuss{
  margin-top: var(--s7); max-width: var(--lese);
  color: var(--fg-muted); font-size: 13px; line-height: 1.6;
}
.tvfj-sozial__fuss code{ font-family: var(--mono); font-size: 12px; word-break: break-all }

@media (max-width: 680px){
  .tvfj-aktuell{ grid-template-columns: 1fr; gap: var(--s6) }
  .tvfj-aktuell__bild img{ max-width: 260px }
  .tvfj-kasten{ padding: var(--s5) }
  .tvfj-feld{ padding: var(--s7) var(--s5) }
  .tvfj-vorschau{ flex-direction: column }
  .tvfj .tvfj-knopf{ width: 100% }
  .tvfj-liste{ grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: var(--s5) }
}

/* ============================================================
   Anzeigenanfrage
   ============================================================ */

.tvfa{ max-width: 880px; margin: 0 }

.tvfa-gruppe{
  border: 0; border-top: 1px solid var(--border);
  margin: 0 0 var(--s8); padding: var(--s7) 0 0; min-width: 0;
}
.tvfa-gruppe:first-of-type{ border-top: 0; padding-top: 0 }
.tvfa-gruppe > legend{
  float: left; width: 100%; padding: 0; margin: 0 0 var(--s5);
  font-family: var(--font) !important; font-size: var(--t-h3) !important;
  font-weight: 600 !important; text-transform: none !important;
  letter-spacing: -.01em !important; color: var(--fg) !important;
}
.tvfa-gruppe > legend + *{ clear: both }
.tvfa-gruppe__text{ margin: 0 0 var(--s5); max-width: var(--lese);
                    color: var(--fg-muted); font-size: var(--t-small) }

.tvfa-raster{ display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: var(--s6) var(--s5) }
.tvfa-feld--breit{ grid-column: 1 / -1 }
@media (max-width: 680px){ .tvfa-raster{ grid-template-columns: 1fr; gap: var(--s4) } }

.tvfa label.tvfa-label{
  display: block; margin: 0 0 var(--s3);
  font-family: var(--font) !important; font-size: 15px !important;
  font-weight: 500 !important; text-transform: none !important;
  letter-spacing: normal !important; color: var(--fg) !important;
}
.tvfa-pflicht{ color: var(--accent) }

.tvfa input.tvfa-eingabe,
.tvfa select.tvfa-eingabe,
.tvfa textarea.tvfa-eingabe{
  width: 100%; box-sizing: border-box; margin: 0;
  padding: 13px 15px !important;
  border: 1px solid var(--border-strong) !important;
  border-radius: var(--r) !important;
  background: var(--bg) !important; color: var(--fg) !important;
  font-family: var(--font) !important; font-size: 16px !important;
  font-weight: 400 !important; line-height: 1.45;
  box-shadow: none !important;
}
.tvfa select.tvfa-eingabe{
  appearance: none; -webkit-appearance: none; padding-right: 42px !important;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%236B7079' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important; background-position: right 15px center !important;
  cursor: pointer;
}
.tvfa .tvfa-eingabe:focus-visible{ outline: 2px solid var(--focus-ring) !important; outline-offset: 2px }
.tvfa-hilfe{ margin: var(--s2) 0 0; color: var(--fg-muted) !important;
             font-size: 13px !important; line-height: 1.5; max-width: 46ch }
.tvfa-fehler{ margin: var(--s2) 0 0; color: var(--tvf-err) !important;
              font-size: 13px !important; font-weight: 500 !important }

/* ---- Die Ausgaben als Liste -------------------------------- */
.tvfa-ausgaben{ list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s3) }
.tvfa-ausgabe{
  display: grid; grid-template-columns: auto 1fr; gap: var(--s3) var(--s4);
  align-items: baseline;
  padding: var(--s4) var(--s5);
  border: 1px solid var(--border); border-radius: var(--r);
  cursor: pointer;
}
.tvfa-ausgabe:hover{ border-color: var(--border-strong) }
.tvfa-ausgabe:has(input:checked){ border-color: var(--fg); background: var(--bg-2) }
.tvfa-ausgabe input{ width: 19px !important; height: 19px !important; margin: 0 !important;
                     accent-color: var(--action); grid-row: span 2 }
/* **Auch hier gegen die Fremdregel auf blanke `label`.** Sie setzt
   Versalien, Schriftstärke 950 und Schieferblau — bei den beschrifteten
   Feldern war das abgefangen, bei diesen Kästchenzeilen nicht. Sichtbar
   geworden, als das Formular ins Fenster zog. Begründung in
   plugins/tvf-fahrten/assets/fahrten.css. */
.tvfa label.tvfa-ausgabe,
.tvfa label.tvfa-ausgabe span{
  font-family: var(--font) !important;
  text-transform: none !important;
  letter-spacing: normal !important;
}
.tvfa .tvfa-ausgabe__titel{
  font-size: 16px !important;
  font-weight: 500 !important;
  color: var(--fg) !important;
}
.tvfa .tvfa-ausgabe__daten{
  grid-column: 2;
  color: var(--fg-muted) !important;
  font-size: 13px !important;
  font-weight: 400 !important;
  line-height: 1.5;
}

/* ---- Preisanzeige ------------------------------------------ */
.tvfa-preis{
  margin-top: var(--s6); padding: var(--s6) var(--s7);
  border: 1px solid var(--fg); border-radius: var(--r-lg); background: var(--bg);
}
.tvfa-preis__wert{
  margin: 0; font-family: var(--font) !important;
  font-size: clamp(1.8rem, 3.4vw, 2.4rem) !important; font-weight: 600 !important;
  letter-spacing: -.02em !important; line-height: 1; color: var(--fg) !important;
}
.tvfa-preis__text{ margin: var(--s4) 0 0; max-width: 54ch;
                   color: var(--fg-muted) !important; font-size: var(--t-small) !important; line-height: 1.6 }

/* ---- Einwilligung, Knopf, Kästen --------------------------- */
.tvfa-koeder{ position: absolute !important; width: 1px; height: 1px;
              overflow: hidden; clip-path: inset(50%); white-space: nowrap }
.tvfa-einwilligung{ margin: 0 0 var(--s6); padding: var(--s5) var(--s6);
                    background: var(--bg-2); border-radius: var(--r-lg) }
.tvfa-einwilligung label{ display: flex; gap: var(--s4); align-items: flex-start;
                          font-size: 15px; line-height: 1.6; cursor: pointer }
.tvfa-einwilligung input{ width: 19px !important; height: 19px !important;
                          margin: .15em 0 0 !important; accent-color: var(--action); flex: none }
.tvfa-einwilligung a{ color: var(--accent); text-decoration: underline }
.tvfa-hinweis{ margin: 0 0 var(--s7); max-width: var(--lese);
               color: var(--fg-muted); font-size: var(--t-small); line-height: 1.65 }

.tvfa .tvfa-knopf{
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 52px !important; padding: 8px var(--s8) !important;
  border: 0 !important; border-radius: var(--r-full) !important;
  background: var(--action) !important; color: var(--on-action) !important;
  font-family: var(--font) !important; font-size: 16px !important;
  font-weight: 500 !important; text-transform: none !important; cursor: pointer;
}
.tvfa .tvfa-knopf:hover{ opacity: .86 }

.tvfa-kasten{ padding: var(--s6) var(--s7); border-radius: var(--r-lg);
              border-left: 3px solid var(--border-strong); background: var(--bg-2) }
.tvfa-kasten--gut{ border-left-color: var(--tvf-ok) }
.tvfa-kasten--fehler{ border-left-color: var(--tvf-err); margin-bottom: var(--s6) }
.tvfa-kasten__titel{ margin: 0 0 var(--s3); font-size: var(--t-h2) !important;
                     font-weight: 600 !important; letter-spacing: -.01em !important }
.tvfa-kasten p{ margin: 0 0 var(--s3); max-width: var(--lese); line-height: 1.6 }
.tvfa-kasten p:last-child{ margin-bottom: 0 }
.tvfa-referenz{ margin-top: var(--s5) !important; padding-top: var(--s4);
                border-top: 1px solid var(--border); font-size: var(--t-small); color: var(--fg-muted) }
.tvfa-referenz strong{ margin-left: var(--s2); font-family: var(--mono) !important;
                       font-size: var(--t-h3) !important; letter-spacing: .08em !important; color: var(--fg) !important }
.tvfa-fehlerliste{ margin: 0 0 var(--s7); padding: var(--s5) var(--s6);
                   border-left: 3px solid var(--tvf-err); background: var(--bg-2);
                   border-radius: var(--r-lg); font-size: var(--t-small) }
.tvfa-fehlerliste ul{ margin: 0; padding-left: 1.2em }
.tvfa-fehlerliste a{ color: var(--tvf-err) }

/* ---- Mediadaten-Tabellen ----------------------------------- */
.tvfj-tabelle{ width: 100%; border-collapse: collapse; margin-top: var(--s5) }
.tvfj-tabelle th,
.tvfj-tabelle td{ padding: var(--s3) var(--s4); border-bottom: 1px solid var(--border);
                  text-align: left; vertical-align: top; font-size: 15px; line-height: 1.5 }
.tvfj-tabelle th{ font: 600 10px/1.4 var(--mono); letter-spacing: .08em;
                  text-transform: uppercase; color: var(--fg-muted) }
.tvfj-tabelle td:last-child{ text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums }
.tvfj-tabelle__scroll{ overflow-x: auto }

/* ---- Verweis auf die Werbeseite ---------------------------- */
/* Steht unter den Ausgaben, nicht zwischen ihnen: Journal und Werbung
   bleiben getrennt, aber der Weg dazwischen ist da. */
.tvfj-werbung{
  margin-top: var(--s9);
  padding: var(--s7);
  border: 1px solid var(--border-strong);
  border-radius: var(--r-lg);
  background: var(--bg-2);
}
.tvfj-werbung__titel{
  margin: 0 0 var(--s3);
  font-size: var(--t-h3) !important;
  font-weight: 600 !important;
  letter-spacing: -.01em !important;
  color: var(--fg) !important;
}
.tvfj-werbung__text{
  margin: 0 0 var(--s5);
  max-width: var(--lese);
  color: var(--fg-muted);
  font-size: var(--t-small);
  line-height: 1.6;
}
@media (max-width: 680px){
  .tvfj-werbung{ padding: var(--s5) }
}

/* ---- Fenster für die Anzeigenanfrage ----------------------- */
.tvfj-dialog{
  width: min(880px, calc(100vw - 2 * var(--s5)));
  max-height: min(88vh, 1000px);
  padding: 0; border: 0;
  border-radius: var(--r-lg);
  background: var(--bg); color: var(--fg);
  box-shadow: 0 24px 70px rgb(0 0 0 / .32);
  overflow: hidden;
}
.tvfj-dialog::backdrop{ background: rgb(0 0 0 / .45) }
.tvfj-dialog__kopf{
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--s4);
  padding: var(--s5) var(--s7);
  border-bottom: 1px solid var(--border);
  position: sticky; top: 0; z-index: 2; background: var(--bg);
}
.tvfj-dialog__titel{
  margin: 0;
  font-family: var(--font) !important;
  font-size: var(--t-h3) !important;
  font-weight: 600 !important;
  text-transform: none !important;
  letter-spacing: -.01em !important;
  color: var(--fg) !important;
}
.tvfj-dialog__zu{
  flex: none;
  width: 38px !important; height: 38px !important;
  min-height: 0 !important; padding: 0 !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--r-full) !important;
  background: transparent !important; color: var(--fg-muted) !important;
  font-size: 15px !important; line-height: 1 !important; cursor: pointer;
}
.tvfj-dialog__zu:hover{ border-color: var(--fg) !important; color: var(--fg) !important }
.tvfj-dialog__text{
  padding: var(--s7);
  max-height: calc(88vh - 72px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
/* Im Fenster braucht das Formular keine eigene Breitenbegrenzung mehr. */
.tvfj-dialog .tvfa{ max-width: none }

@media (max-width: 680px){
  .tvfj-dialog{ width: 100vw; max-width: 100vw; max-height: 100dvh; border-radius: 0 }
  .tvfj-dialog__kopf{ padding: var(--s4) var(--s5) }
  .tvfj-dialog__text{ padding: var(--s5); max-height: calc(100dvh - 64px) }
}

/* ---- Rubrikwahl auf der Hochladeseite -------------------------
   Umschaltung ohne Javascript. `:has()` liest am Formular, welches
   Radiofeld gewählt ist, und blendet den passenden Teil ein.

   WARUM NICHT MIT JAVASCRIPT: Die Seite bedient die Geschäftsstelle,
   oft nebenbei. Ein Formular, das bei klemmendem Skript stumm bleibt,
   kostet einen Anruf. Diese Lösung hat keinen Zustand, der kaputtgehen
   kann — der Browser macht es.

   RÜCKFALL: Kennt ein Browser `:has()` nicht (vor 2023), bleiben ALLE
   Teile sichtbar. Das ist länglich, aber vollständig bedienbar — die
   Serverprüfung entscheidet ohnehin, und die liest nur die Felder der
   gewählten Rubrik. Kein Datenverlust, nur mehr Scrollen. */
.tvfm-wahl{
  border:1px solid var(--tvfj-linie, #E3E0DA); border-radius:8px;
  padding:16px; margin-bottom:24px; display:grid; gap:4px;
}
.tvfm-wahl legend{ padding:0 6px }
.tvfm-wahl__punkt{
  display:flex; gap:12px; align-items:flex-start;
  padding:10px 8px; border-radius:6px; cursor:pointer;
}
.tvfm-wahl__punkt:hover{ background:rgba(0,0,0,.035) }
.tvfm-wahl__punkt input{ margin-top:3px; flex:none }
.tvfm-wahl__punkt strong{ display:block }
.tvfm-wahl__punkt small{ display:block; opacity:.75; margin-top:2px; line-height:1.45 }

/* Standard: alles aus, sobald der Wähler überhaupt greift. */
.tvfj-form:has(.tvfm-wahl input[type="radio"]) .tvfm-teil{ display:none }

.tvfj-form:has(input[value="journal"]:checked) .tvfm-teil--journal,
.tvfj-form:has(input[value="messe"]:checked)   .tvfm-teil--messe,
.tvfj-form:has(input[value="news"]:checked)    .tvfm-teil--news,
.tvfj-form:has(input[value="eigen"]:checked)   .tvfm-teil--eigen{ display:block }

/* Gültigkeit und Startseiten-Haken bei allen AUSSER dem Journal: Die
   neueste Ausgabe steht dort ohnehin immer, und eine Zeitschrift läuft
   nicht ab. Ein Haken ohne Wirkung ist schlimmer als keiner. */
.tvfj-form:has(input[value="messe"]:checked) .tvfm-teil--gemeinsam,
.tvfj-form:has(input[value="news"]:checked)  .tvfm-teil--gemeinsam,
.tvfj-form:has(input[value="eigen"]:checked) .tvfm-teil--gemeinsam{
  display:block; border-top:1px solid var(--tvfj-linie, #E3E0DA);
  padding-top:24px; margin-top:8px;
}

/* Der Rechtehaken steht quer zur übrigen Feldform: Kästchen links,
   Text rechts, kein eigener Titel darüber. */
.tvfm-kasten{ display:flex; gap:12px; align-items:flex-start }
.tvfm-kasten input{ margin-top:3px; flex:none }

/* ---- Liste der Mitteilungen ----------------------------------- */
.tvfm-liste{ list-style:none; margin:0; padding:0; border-top:1px solid var(--tvfj-linie, #E3E0DA) }
.tvfm-eintrag{ padding:24px 0; border-bottom:1px solid var(--tvfj-linie, #E3E0DA) }
/* Abgelaufenes bleibt lesbar — nur zurückgenommen, nicht ausgegraut.
   Text unter 4,5:1 wäre für niemanden besser. */
.tvfm-eintrag--alt{ opacity:.72 }
.tvfm-eintrag__kopf{
  display:flex; gap:12px; align-items:center; flex-wrap:wrap;
  font:500 11px/1 ui-monospace,"SF Mono",Menlo,monospace;
  letter-spacing:.1em; text-transform:uppercase; opacity:.8; margin:0 0 10px;
}
.tvfm-marke{ border:1px solid currentColor; border-radius:999px; padding:4px 10px }
.tvfm-marke--alt{ border-style:dashed }
.tvfm-eintrag__titel{ margin:0; font-size:1.25rem; line-height:1.3 }
.tvfm-eintrag__text{ margin:10px 0 0; max-width:62ch; line-height:1.6 }
.tvfm-eintrag__fuss{ margin:12px 0 0; display:flex; gap:18px; flex-wrap:wrap; font-size:.875rem }

/* Vorschaubild in der Liste. Begrenzt, damit ein hochformatiges PDF die
   Zeile nicht auseinanderzieht — die Überschrift bleibt die Hauptsache. */
.tvfm-eintrag__bild{ display:block; margin:14px 0 0; max-width:260px }
.tvfm-eintrag__bild img{
  display:block; width:100%; height:auto; border-radius:6px;
  border:1px solid var(--tvfj-linie, #E3E0DA);
}
