/* ============================================================
   Geschuetzter Obmann-Zugang und seine Editoren
   ============================================================
   Teil der nach Funktion aufgeteilten Gestaltung (29.08.2026).

   Vorher lag alles in einer seite.css mit 1.940 Zeilen, und jede neue
   Funktion wurde hinten drangehaengt. Max am 29.08.2026: "dass nicht
   alles in App.js reinkommt und in CSS, sondern dass das nach Funktion
   getrennt wird." Beim JavaScript war das laengst so, beim CSS nicht.

   Neue Regeln gehoeren in die Datei ihrer Funktion, nicht ans Ende der
   naechstbesten. Die Einbindereihenfolge in den HTML-Dateien entspricht
   der Reihenfolge, in der die Bloecke vorher in seite.css standen -
   daran haengt die Kaskade. tests/frontend-architecture.test.js prueft
   beides.
   ============================================================ */

/* ---------- Geschuetzter Obmann-Zugang ---------- */
.admin-seite { background: #f3f5f7; }
.admin-inhalt { max-width: 1160px; padding-top: 42px; }
.admin-zurueck { color: var(--marke-hell); text-decoration: none; font-weight: 650; }
.admin-auth-karte,
.admin-panel {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.admin-auth-karte { max-width: 560px; margin: 6vh auto; padding: clamp(24px, 5vw, 42px); }
.admin-auth-karte h1,
.admin-editor-kopf h1 { font-family: var(--font-titel); margin: 2px 0 10px; line-height: 1.08; }
.admin-kicker { color: var(--green-dark); text-transform: uppercase; letter-spacing: .08em; font-size: .74rem; font-weight: 800; margin: 0 0 5px; }
.admin-form { display: grid; gap: 16px; margin-top: 24px; }
.admin-form label,
.admin-neue-liga label,
.admin-zahlenraster label,
.admin-feld { display: grid; gap: 6px; color: var(--marke-hell); font-size: .8rem; font-weight: 700; }
.admin-form input,
.admin-neue-liga input,
.admin-neue-liga select,
.admin-zahlenraster input,
.admin-feld input {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  min-height: 44px;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 9px 11px;
  font: inherit;
  background: #fff;
}
.admin-seite .knopf {
  min-height: 44px;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 10px 15px;
  background: #fff;
  color: var(--marke);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.admin-seite .knopf:hover { background: #f7f8f9; }
.admin-seite .knopf:disabled { opacity: .55; cursor: wait; }
.admin-seite .knopf-primaer { background: var(--marke); color: #fff; border-color: var(--marke); }
.admin-seite .knopf-primaer:hover { background: var(--marke-dunkel); }
.admin-code-form input { font-size: 1.35rem; letter-spacing: .28em; font-weight: 750; text-align: center; }
.admin-hinweis { color: var(--muted); font-size: .78rem; line-height: 1.55; margin-top: 20px; }
.admin-schritte { color: var(--muted); line-height: 1.65; padding-left: 22px; }
.admin-qr { display: block; width: min(260px, 100%); aspect-ratio: 1; margin: 22px auto; border: 10px solid #fff; box-shadow: 0 0 0 1px var(--border); }
.admin-secret { display: block; overflow-wrap: anywhere; padding: 10px; margin-top: 8px; background: #f4f4f5; border-radius: 8px; }
.admin-meldung { padding: 13px 16px; border-radius: 10px; background: #eff6ff; color: #1e3a8a; margin-bottom: 18px; }
.admin-meldung[data-art="erfolg"] { background: var(--green-light); color: var(--green-dark); }
.admin-meldung[data-art="fehler"] { background: var(--red-hell); color: #991b1b; }
.admin-warnung { padding: 14px 16px; background: #fffbeb; color: #713f12; border: 1px solid #fde68a; border-radius: 10px; margin: 18px 0; line-height: 1.5; }
.admin-editor-kopf { display: flex; align-items: start; justify-content: space-between; gap: 24px; }
.admin-editor-kopf p:last-child { color: var(--muted); margin: 0; }
.admin-bereich-nav { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin: 26px 0 22px; }
.admin-bereich-nav button { min-height: 58px; border: 1px solid var(--border); border-radius: 13px; background: #fff; color: var(--marke-hell); font: inherit; font-weight: 750; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 9px; }
.admin-bereich-nav button span { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; background: var(--marke-lighter); font-weight: 850; }
.admin-bereich-nav button[aria-pressed="true"] { color: #fff; border-color: var(--marke); background: var(--marke); box-shadow: var(--shadow); }
.admin-bereich-nav button[aria-pressed="true"] span { background: rgba(255,255,255,.14); }
.admin-bereich-einstieg { display: flex; justify-content: space-between; align-items: center; gap: 18px; margin: 6px 0 16px; }
.admin-bereich-einstieg h2 { font-family: var(--font-titel); font-size: 1.45rem; margin: 0; }
.admin-bereich-einstieg p { color: var(--muted); margin: 3px 0 0; }
.admin-bereich-status { flex: 0 0 auto; padding: 6px 10px; border-radius: 999px; background: var(--green-light); color: var(--green-dark); font-size: .72rem; font-weight: 750; }
.admin-panel { padding: 0; margin: 18px 0; overflow: hidden; }
.admin-panel-kopf { padding: 18px 20px; border-bottom: 1px solid var(--border); }
.admin-panel-kopf h2 { font-family: var(--font-titel); font-size: 1.05rem; margin: 0; }
.admin-panel-kopf p { color: var(--muted); font-size: .78rem; margin: 4px 0 0; }
.admin-ligen-liste { padding: 10px; }
.admin-liga-gruppe { border: 1px solid var(--border); border-radius: 12px; margin: 8px 0; overflow: hidden; background: #fff; }
.admin-liga-gruppe:last-child { border-bottom: 0; }
.admin-liga-gruppe > summary { list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 15px 16px; cursor: pointer; font-weight: 800; }
.admin-liga-gruppe > summary::-webkit-details-marker { display: none; }
.admin-liga-gruppe > summary::before { content: "+"; width: 24px; height: 24px; display: grid; place-items: center; border-radius: 7px; background: var(--marke-lighter); color: var(--marke); }
.admin-liga-gruppe[open] > summary::before { content: "−"; }
.admin-liga-gruppe > summary > span:first-of-type { margin-right: auto; }
.admin-anzahl { color: var(--muted); font-size: .72rem; font-weight: 650; }
.admin-liga-inhalt { padding: 0 12px 12px; display: grid; gap: 10px; }
.admin-liga-zeile { min-width: 0; display: grid; grid-template-columns: minmax(190px, 1.4fr) minmax(210px, .9fr) minmax(210px, .9fr); gap: 14px; align-items: center; padding: 14px; border: 1px solid #e8eaed; border-radius: 11px; background: #fafbfc; }
.admin-liga-name { align-self: center; min-width: 0; }
.admin-liga-name strong,
.admin-liga-name span { display: block; }
.admin-liga-name span { color: var(--muted); font-size: .72rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-liga-werte { min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(90px, 1fr)); gap: 10px; }
.admin-liga-werte.ohne-sra { grid-template-columns: minmax(120px, 1fr); }
.admin-liga-aktionen { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; }
.admin-kein-sra { min-width: 0; display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 8px; align-items: center; min-height: 44px; font-size: .72rem; line-height: 1.25; }
.admin-kein-sra input { width: 18px; height: 18px; margin: 0; }
.admin-icon-knopf { min-height: 40px; border: 1px solid #fecaca; border-radius: 9px; padding: 8px 11px; background: #fff; color: #b91c1c; font: inherit; font-size: .75rem; font-weight: 750; cursor: pointer; white-space: nowrap; }
.admin-icon-knopf:hover { background: #fef2f2; }
.admin-neue-liga,
.admin-zahlenraster { display: grid; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); gap: 14px; align-items: end; }
.admin-neue-liga { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; padding: 20px; align-items: end; }
.admin-checkbox { display: flex !important; grid-auto-flow: column; justify-content: start; align-items: center; min-height: 44px; }
.admin-checkbox input { min-height: auto; width: 18px; height: 18px; }
.admin-aufklapper > summary { cursor: pointer; padding: 18px 20px; list-style: none; }
.admin-aufklapper > summary::-webkit-details-marker { display: none; }
.admin-aufklapper > summary span { display: grid; gap: 3px; }
.admin-aufklapper > summary small { color: var(--muted); font-weight: 500; }
.admin-aufklapper[open] > summary { border-bottom: 1px solid var(--border); }
.admin-werte-gruppen { padding: 18px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.admin-werte-gruppen fieldset { min-width: 0; margin: 0; padding: 15px; border: 1px solid var(--border); border-radius: 11px; }
.admin-werte-gruppen legend { padding: 0 6px; color: var(--marke); font-size: .8rem; font-weight: 800; }
.admin-text-form,
.admin-quellen-raster { padding: 20px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.admin-text-form label,
.admin-quellen-raster label,
.admin-dokument-felder label,
.admin-regel-felder label { min-width: 0; display: grid; gap: 6px; color: var(--marke-hell); font-size: .8rem; font-weight: 700; }
.admin-text-form input,
.admin-text-form textarea,
.admin-quellen-raster input,
.admin-quellen-raster textarea,
.admin-dokument-felder input,
.admin-dokument-felder select,
.admin-dokument-felder textarea,
.admin-regel-felder input,
.admin-regel-felder textarea { box-sizing: border-box; width: 100%; min-width: 0; border: 1px solid var(--border); border-radius: 10px; padding: 10px 11px; font: inherit; background: #fff; resize: vertical; }
.admin-text-form input,
.admin-quellen-raster input,
.admin-dokument-felder input,
.admin-dokument-felder select,
.admin-regel-felder input { min-height: 44px; }
.admin-breit { grid-column: 1 / -1; }

/* Textredaktion: jede Zeile ist ein Feld plus der Ausgangsstand
   darunter. Der Ausgangsstand steht bewusst als grauer Kleintext und
   nicht in einem Aufklapper - man soll beim Tippen sehen, wovon man
   gerade abweicht, ohne erst etwas oeffnen zu muessen. */
.admin-text-zeile { grid-column: 1 / -1; display: grid; gap: 6px; }
.admin-vorgabe { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  color: var(--muted); font-size: .78rem; line-height: 1.5; }
.admin-vorgabe span { font-weight: 700; }
.admin-vorgabe code { flex: 1 1 220px; min-width: 0; padding: 4px 7px; border-radius: 7px;
  background: #f3f5f7; font: .78rem/1.5 var(--font-text); overflow-wrap: anywhere; }
.admin-vorgabe .knopf { min-height: 34px; padding: 4px 12px; font-size: .76rem; }
.admin-text-panel .admin-panel-kopf a { color: inherit; }

/* Aufklappbare Gruppe je Seitenabschnitt. Bei 77 Feldern ist die
   flache Liste unbrauchbar - man findet den Satz nicht wieder, den
   man gerade geaendert hat. */
.admin-textgruppe { border-top: 1px solid var(--border); }
.admin-textgruppe > summary { display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 13px 20px; cursor: pointer; font-weight: 750; list-style: none; }
.admin-textgruppe > summary::-webkit-details-marker { display: none; }
.admin-textgruppe > summary::before { content: "▸"; color: var(--muted); font-size: .85rem; }
.admin-textgruppe[open] > summary::before { content: "▾"; }
.admin-textgruppe[open] > summary { border-bottom: 1px solid var(--border); }
.admin-textgruppe > summary small { color: var(--muted); font-weight: 500; font-size: .78rem; }
.admin-textgruppe > summary em { margin-left: auto; font-style: normal; font-size: .74rem;
  font-weight: 700; padding: 3px 9px; border-radius: 999px;
  background: var(--marke); color: #fff; }
.admin-text-zeile.ist-geaendert > label { color: var(--marke); }
.admin-text-zeile.ist-geaendert textarea,
.admin-text-zeile.ist-geaendert input { border-color: var(--marke); }
.admin-vorschau { grid-column: 1 / -1; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
.admin-vorschau summary { cursor: pointer; padding: 12px 14px; font-weight: 750; }
.admin-vorschau pre { margin: 0; padding: 16px; border-top: 1px solid var(--border); background: #fafbfc; white-space: pre-wrap; font: .8rem/1.55 var(--font-text); }
.admin-inhalt-gruppe { overflow: hidden; }
.admin-inhalt-gruppe > summary { list-style: none; display: flex; align-items: center; padding: 18px 20px; cursor: pointer; }
.admin-inhalt-gruppe > summary::-webkit-details-marker { display: none; }
.admin-inhalt-gruppe > summary span { display: grid; gap: 3px; }
.admin-inhalt-gruppe > summary small { color: var(--muted); font-weight: 500; }
.admin-inhalt-gruppe[open] > summary { border-bottom: 1px solid var(--border); }
.admin-inhalt-liste { padding: 12px; display: grid; gap: 10px; }
.admin-dokument-zeile { min-width: 0; padding: 15px; border: 1px solid #e8eaed; border-radius: 11px; background: #fafbfc; }
.admin-dokument-kopf { display: flex; justify-content: space-between; gap: 14px; margin-bottom: 13px; }
.admin-dokument-kopf span { color: var(--muted); font-size: .75rem; }
.admin-dokument-felder { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.admin-zeilen-aktionen { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 9px; margin-top: 13px; }
.admin-zeilen-aktionen .admin-checkbox { margin-right: auto; }
.admin-mini-knopf { min-height: 38px; border: 1px solid var(--border); border-radius: 9px; padding: 7px 10px; background: #fff; color: var(--marke); font: inherit; font-size: .75rem; font-weight: 700; cursor: pointer; }
.admin-mini-knopf:hover { background: var(--marke-lighter); }
.admin-quellen-raster fieldset { min-width: 0; margin: 0; padding: 15px; border: 1px solid var(--border); border-radius: 11px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.admin-quellen-raster legend { padding: 0 6px; font-size: .8rem; font-weight: 800; }
.admin-regel-zeile { border: 1px solid #e8eaed; border-radius: 11px; background: #fafbfc; overflow: hidden; }
.admin-regel-zeile > summary { list-style: none; display: grid; grid-template-columns: minmax(140px, .65fr) minmax(0, 1fr); gap: 14px; padding: 13px 15px; cursor: pointer; }
.admin-regel-zeile > summary::-webkit-details-marker { display: none; }
.admin-regel-zeile > summary span { color: var(--muted); font-size: .76rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-regel-felder { padding: 14px; border-top: 1px solid var(--border); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.admin-regel-zeile > .admin-zeilen-aktionen { padding: 0 14px 14px; }

/* ---------- Regelübersicht-Editor: Gruppierung + Suche (29.08.2026) ----------
   Max: "müssen wir das vielleicht auch noch ein bisschen besser sortieren,
   damit man das schneller findet". Untergliedert die bis zu 22 Zeilen pro
   Datensatz nach Altersklasse und ergänzt eine Suche darüber - siehe
   regeln-editor.js: nachAltersklasse(), bindeGruppenSuche(). */
.admin-inhalt-suche { padding: 0 12px 12px; }
.admin-inhalt-suche input {
  box-sizing: border-box; width: 100%; min-height: 42px;
  border: 1px solid var(--border); border-radius: 10px;
  padding: 9px 13px; font: inherit; font-size: .84rem; background: #fff;
}
.admin-inhalt-suche input:focus { border-color: var(--marke-hell); outline: none; }

.admin-regel-untergruppe { padding: 0 12px; }
.admin-regel-untergruppe + .admin-regel-untergruppe { margin-top: 6px; }
.admin-regel-untertitel {
  margin: 14px 2px 8px; font-family: var(--font-titel); font-size: .78rem;
  color: var(--muted); text-transform: uppercase; letter-spacing: .05em;
}
.admin-regel-untergruppe:first-of-type .admin-regel-untertitel { margin-top: 4px; }
.admin-regel-untergruppe > .admin-regel-zeile + .admin-regel-zeile { margin-top: 10px; }

/* Wortmarke statt Icon, dieselbe Regel wie .sym-wort auf der Vereinsseite -
   zeigt im zusammengeklappten Zustand, welche Zeile einen Warnhinweis
   trägt, ohne dass man jede einzelne aufklappen muss. */
.admin-warnhinweis-pille {
  grid-column: 1 / -1;
  justify-self: start;
  font-size: .64rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em;
  padding: 3px 9px; border-radius: 999px;
  background: rgba(113, 63, 18, .12); color: #713f12;
}
.admin-versionen { margin: 18px 0; padding: 17px; border: 1px solid var(--border); border-radius: 12px; background: #fff; }
.admin-versionen h3 { margin: 0; font-family: var(--font-titel); font-size: 1rem; }
.admin-versionen > p { margin: 4px 0 12px; color: var(--muted); font-size: .78rem; }
.admin-version-zeile { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 10px 0; border-top: 1px solid var(--border); font-size: .8rem; }
.admin-aktionsleiste { position: sticky; bottom: 12px; display: flex; justify-content: flex-end; gap: 10px; padding: 13px; background: rgba(255,255,255,.94); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow); backdrop-filter: blur(8px); }

/* ---------- Terminsuche verwalten (29.08.2026) ----------
   Fuenfter Reiter des Obmann-Zugangs, siehe
   src/admin/terminfindung-editor.js. Eigene Regeln statt der
   vorhandenen Dokument- und Regelzeilen, weil hier zum ersten Mal eine
   echte Tabelle steht: je Vorschlag eine Zeile mit drei Zahlenspalten,
   und die soll man auch bei acht Vorschlaegen noch nebeneinander
   lesen koennen. */
.admin-tf-karte { padding: 18px; margin: 18px 0; border: 1px solid var(--border); border-radius: 14px; background: #fff; box-shadow: var(--shadow); }
.admin-tf-karte[data-status="abgebrochen"] { opacity: .72; }
.admin-tf-kopf { display: flex; justify-content: space-between; align-items: start; gap: 16px; margin-bottom: 14px; }
.admin-tf-kopf strong { display: block; font-family: var(--font-titel); font-size: 1.08rem; }
.admin-tf-meta { display: block; margin-top: 3px; color: var(--muted); font-size: .76rem; }
.admin-tf-beschreibung { margin: 8px 0 0; color: var(--marke-hell); font-size: .84rem; line-height: 1.55; }
.admin-tf-marke { flex: 0 0 auto; padding: 6px 10px; border-radius: 999px; background: var(--marke-lighter); color: var(--marke); font-size: .72rem; font-weight: 750; }
.admin-tf-karte[data-status="offen"] .admin-tf-marke { background: var(--green-light); color: var(--green-dark); }

/* Die Tabelle scrollt in ihrer eigenen Huelle. Ohne sie wuerde bei acht
   Vorschlaegen und langen Ortsangaben die ganze Seite waagerecht
   scrollen - der Fehler, den die Vereinsseite an keiner Stelle macht. */
.admin-tf-tabelle-huelle { overflow-x: auto; border: 1px solid var(--border); border-radius: 11px; }
.admin-tf-tabelle { width: 100%; border-collapse: collapse; font-size: .82rem; }
.admin-tf-tabelle th { padding: 10px 12px; text-align: left; background: #fafbfc; border-bottom: 1px solid var(--border); font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.admin-tf-tabelle td { padding: 11px 12px; border-bottom: 1px solid #eef0f2; vertical-align: top; }
.admin-tf-tabelle tr:last-child td { border-bottom: 0; }
.admin-tf-tabelle tr[data-empfohlen="ja"] { background: var(--green-light); }
.admin-tf-tabelle tr[data-gewaehlt="ja"] { background: var(--marke-lighter); }
.admin-tf-zahl { text-align: center; font-variant-numeric: tabular-nums; font-weight: 750; }
.admin-tf-namen { display: block; margin-top: 3px; color: var(--muted); font-size: .74rem; }
.admin-tf-zeilenaktion { text-align: right; white-space: nowrap; }
.admin-tf-empfehlung { margin: 12px 0 0; color: var(--green-dark); font-size: .82rem; font-weight: 700; }

.admin-tf-werkzeuge { display: grid; gap: 10px; margin-top: 16px; }
.admin-tf-werkzeug { border: 1px solid var(--border); border-radius: 11px; background: #fafbfc; overflow: hidden; }
.admin-tf-werkzeug > summary { cursor: pointer; padding: 12px 15px; font-weight: 750; font-size: .84rem; }
.admin-tf-werkzeug > form,
.admin-tf-werkzeug > button,
.admin-tf-werkzeug > p { margin: 0 15px 15px; }
.admin-tf-werkzeug > form { padding: 0; }
.admin-tf-stand { display: grid; justify-items: start; gap: 10px; padding: 0 15px 15px; }
.admin-tf-standzeile { margin: 0; font-size: .84rem; line-height: 1.55; }
.admin-tf-erinnerung { box-sizing: border-box; width: 100%; border: 1px solid var(--border); border-radius: 10px; padding: 10px 11px; font: inherit; font-size: .82rem; background: #fff; resize: vertical; }
.admin-tf-vorschlagszeilen { display: grid; gap: 10px; padding: 0 20px; }
/* Beim Nachtragen steht die Zeile in einem admin-neue-liga-Raster und
   bekaeme sonst nur eine 180-px-Spalte fuer vier Felder. */
.admin-neue-liga > .admin-tf-vorschlagszeile { grid-column: 1 / -1; }
.admin-tf-vorschlagszeile { display: grid; grid-template-columns: minmax(140px, 1fr) minmax(110px, .6fr) minmax(140px, 1fr) auto; gap: 12px; align-items: end; padding: 12px; border: 1px solid #e8eaed; border-radius: 11px; background: #fafbfc; }
.admin-tf-vorschlagszeile label { min-width: 0; display: grid; gap: 6px; color: var(--marke-hell); font-size: .78rem; font-weight: 700; }
.admin-tf-vorschlagszeile input { box-sizing: border-box; width: 100%; min-height: 44px; border: 1px solid var(--border); border-radius: 10px; padding: 10px 11px; font: inherit; background: #fff; }
.admin-tf-formularfuss { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; padding: 16px 20px 20px; }
.admin-tf-kartenfuss { display: flex; justify-content: flex-end; margin-top: 14px; }
.admin-tf-verweis { display: inline-block; margin-top: 12px; color: var(--marke); font-size: .84rem; font-weight: 700; }

@media (max-width: 760px) {
  .admin-inhalt { padding-top: 24px; }
  .admin-editor-kopf { display: grid; }
  .admin-bereich-nav { grid-template-columns: repeat(2, 1fr); }
  .admin-bereich-einstieg { align-items: start; }
  .admin-bereich-status { display: none; }
  .admin-liga-zeile { grid-template-columns: 1fr; }
  .admin-liga-werte { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-liga-aktionen { grid-template-columns: 1fr auto; }
  .admin-werte-gruppen { grid-template-columns: 1fr; }
  .admin-text-form,
  .admin-quellen-raster,
  .admin-dokument-felder,
  .admin-regel-felder { grid-template-columns: 1fr; }
  .admin-quellen-raster fieldset { grid-template-columns: 1fr; }
  .admin-breit { grid-column: auto; }
  .admin-dokument-kopf { display: grid; }
  .admin-zeilen-aktionen { align-items: stretch; }
  .admin-zeilen-aktionen .admin-checkbox { width: 100%; margin-right: 0; }
  .admin-regel-zeile > summary { grid-template-columns: 1fr; gap: 3px; }
  .admin-version-zeile { align-items: stretch; display: grid; }
  .admin-aktionsleiste { display: grid; grid-template-columns: 1fr; }
  .admin-tf-kopf { display: grid; }
  .admin-tf-vorschlagszeile { grid-template-columns: 1fr; }
  .admin-tf-vorschlagszeilen { padding: 0 12px; }
  .admin-tf-formularfuss { padding: 14px 12px 16px; }
}

@media (min-width: 761px) and (max-width: 1040px) {
  .admin-liga-zeile { grid-template-columns: minmax(180px, 1fr) minmax(220px, 1fr); }
  .admin-liga-aktionen { grid-column: 1 / -1; }
  .admin-bereich-nav { grid-template-columns: repeat(3, 1fr); }
}
.admin-freigaben-panel { display: grid; gap: 0; padding: 0; overflow: hidden; }
.admin-freigabe-zeile {
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  min-height: 76px; padding: 16px 18px; cursor: pointer;
}
.admin-freigabe-zeile + .admin-freigabe-zeile { border-top: 1px solid var(--border); }
.admin-freigabe-zeile span { display: grid; gap: 4px; }
.admin-freigabe-zeile strong { font-size: .96rem; }
.admin-freigabe-zeile small { color: var(--muted); line-height: 1.4; }
.admin-freigabe-zeile input {
  width: 24px; height: 24px; flex: none; accent-color: var(--green);
}

/* ---------- Redaktionsbereich "Bilder" ----------
   Die Vorschau ist absichtlich gross genug, um zu erkennen, was auf dem
   Bild zu sehen ist. Ein Briefmarken-Vorschaubild haette den Zweck
   verfehlt: man tauscht ein Motiv aus, um es anzusehen. */
.admin-bild-liste { display: grid; gap: 12px; padding: 12px; }
.admin-bild-zeile {
  display: grid; grid-template-columns: 168px minmax(0, 1fr) auto; gap: 16px; align-items: start;
  min-width: 0; padding: 15px; border: 1px solid #e8eaed; border-radius: 11px; background: #fafbfc;
}
.admin-bild-vorschau {
  display: grid; place-items: center; overflow: hidden;
  aspect-ratio: 16 / 10; border: 1px solid var(--border); border-radius: 10px; background: #fff;
}
.admin-bild-vorschau img { width: 100%; height: 100%; object-fit: cover; }
.admin-bild-text { min-width: 0; display: grid; gap: 6px; }
.admin-bild-text strong { font-size: .96rem; }
.admin-bild-text small { color: var(--muted); line-height: 1.4; }
.admin-bild-quelle { margin: 0; color: var(--marke-hell); font-size: .78rem; font-weight: 700; }
.admin-bild-text label { display: grid; gap: 6px; margin-top: 6px; color: var(--marke-hell); font-size: .78rem; font-weight: 700; }
.admin-bild-text input { box-sizing: border-box; width: 100%; min-height: 44px; border: 1px solid var(--border); border-radius: 10px; padding: 10px 11px; font: inherit; font-weight: 400; background: #fff; }
.admin-bild-hinweis { margin: 0; color: var(--muted); font-size: .76rem; line-height: 1.5; }
.admin-bild-aktionen { display: grid; gap: 8px; justify-items: stretch; align-content: start; }
.admin-bild-fortschritt { margin: 0; max-width: 220px; color: var(--muted); font-size: .76rem; line-height: 1.45; }
.admin-bild-fortschritt[data-art="fehler"] { color: #b91c1c; font-weight: 650; }

@media (max-width: 760px) {
  .admin-bild-zeile { grid-template-columns: 1fr; }
  .admin-bild-fortschritt { max-width: none; }
}
