/* ==========================================================================
   admin.css — seitenspezifische Styles für das Admin-Panel (admin.html)
   Baut auf base.css auf und nutzt ausschließlich deren Design-Tokens.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Kopfzeile — Grundlayout kommt aus base.css.
   Der Kontext-Marker „Admin" bekommt das editoriale Signatur-em der Marke
   (Playfair, kursiv, Koralle) — ein ruhiger Akzent, der den Bereich benennt.
   -------------------------------------------------------------------------- */

.kopfzeile-marke em {
  font-family: var(--schrift-familie-display);
  font-style: italic;
  font-weight: 500;
  color: var(--farbe-akzent-koralle);
}

/* --------------------------------------------------------------------------
   2. Tab-Leiste
   -------------------------------------------------------------------------- */

.tab-leiste {
  display: flex;
  gap: var(--abstand-l);
  border-bottom: 1px solid var(--farbe-linie);
  margin-bottom: var(--abstand-xl);
}

.tab {
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  padding: var(--abstand-s) 0 var(--abstand-m);
  margin-bottom: -1px;
  font-size: var(--schrift-groesse-m);
  color: var(--farbe-text-gedimmt);
  cursor: pointer;
  transition: color var(--uebergang), border-color var(--uebergang);
}

.tab:hover {
  color: var(--farbe-text);
}

.tab-aktiv {
  color: var(--farbe-text);
  font-weight: var(--schrift-gewicht-mittel);
  border-bottom-color: var(--farbe-text);
}

/* --------------------------------------------------------------------------
   3. Globale Meldung (Erfolg/Fehler) — Inline-Banner statt alert()
   -------------------------------------------------------------------------- */

.meldung {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--abstand-m);
  padding: var(--abstand-s) var(--abstand-m);
  margin-bottom: var(--abstand-l);
  font-size: var(--schrift-groesse-s);
  border-radius: var(--radius-s);
}

/* Erfolg: dezente graue Fläche */
.meldung-erfolg {
  background-color: var(--farbe-hintergrund-leicht);
}

/* Fehler: schwarzer Rahmen und mehr Gewicht (Brand: kein Rot) */
.meldung-fehler {
  border: 1px solid var(--farbe-text);
  font-weight: var(--schrift-gewicht-mittel);
}

.meldung-schliessen {
  background: none;
  border: none;
  padding: 0 var(--abstand-xs);
  font-size: var(--schrift-groesse-l);
  line-height: 1;
  color: var(--farbe-text-gedimmt);
  cursor: pointer;
}

.meldung-schliessen:hover {
  color: var(--farbe-text);
}

/* --------------------------------------------------------------------------
   4. Mitglieder-Tabelle
   -------------------------------------------------------------------------- */

.formular-anlegen {
  align-items: flex-start;
}

.aktionen-zelle {
  display: flex;
  flex-wrap: wrap;
  gap: var(--abstand-xs) var(--abstand-s);
}

/* Fortschritts-Anzeige: Prozentwert plus schmaler Balken */
.fortschritt-anzeige {
  display: flex;
  align-items: center;
  gap: var(--abstand-s);
  white-space: nowrap;
}

.fortschritt-balken {
  width: 4.5rem;
  height: 4px;
  background-color: var(--farbe-linie);
  border-radius: 999px;
  overflow: hidden;
}

.fortschritt-balken-fuellung {
  height: 100%;
  background-color: var(--farbe-akzent-koralle);
  border-radius: 999px;
}

/* Zweite Zeile in der Zugangs-Spalte, z.B. „bis 31.12.2026" */
.zugang-zusatz {
  display: block;
  font-size: var(--schrift-groesse-xs);
  color: var(--farbe-text-leise);
}

/* --------------------------------------------------------------------------
   4c. Detailansicht: Sehfortschritt pro Lektion (aufklappbar in der Zeile)
   -------------------------------------------------------------------------- */

.mitglied-detail-zeile > td {
  padding: 0;
  background-color: var(--farbe-hintergrund-leicht);
}

.mitglied-detail {
  padding: var(--abstand-m) var(--abstand-l);
}

.mitglied-detail-kopf {
  margin: 0 0 var(--abstand-m);
  font-size: var(--schrift-groesse-s);
  font-weight: var(--schrift-gewicht-mittel);
}

.detail-modul {
  margin-bottom: var(--abstand-m);
}

.detail-modul:last-child {
  margin-bottom: 0;
}

.detail-modul-titel {
  margin: 0 0 var(--abstand-xs);
  font-size: var(--schrift-groesse-s);
  color: var(--farbe-text-leise);
  font-weight: var(--schrift-gewicht-mittel);
}

.detail-lektion {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--abstand-s) var(--abstand-m);
  padding: var(--abstand-s) 0;
  border-bottom: 1px solid var(--farbe-linie);
}

.detail-lektion:last-child {
  border-bottom: none;
}

.detail-lektion-titel {
  flex: 1;
  min-width: 10rem;
  font-size: var(--schrift-groesse-s);
}

.detail-lektion-sehstand {
  font-size: var(--schrift-groesse-xs);
  color: var(--farbe-text-leise);
  white-space: nowrap;
}

/* --------------------------------------------------------------------------
   4b. Kurs-Einstellungen: Stammdaten-Karte (Titel, Untertitel, Beschreibung)
   -------------------------------------------------------------------------- */

.kurs-stammdaten {
  margin: 0;
}

.kurs-stammdaten-eintrag {
  display: flex;
  gap: var(--abstand-m);
  padding: var(--abstand-s) 0;
  border-bottom: 1px solid var(--farbe-linie);
}

.kurs-stammdaten-eintrag:last-child {
  border-bottom: none;
}

.kurs-stammdaten dt {
  flex: none;
  width: 8rem;
  font-size: var(--schrift-groesse-s);
  color: var(--farbe-text-leise);
}

.kurs-stammdaten dd {
  margin: 0;
  font-size: var(--schrift-groesse-s);
  overflow-wrap: anywhere;
}

/* --------------------------------------------------------------------------
   5. Kurs-Editor: Modul-Blöcke mit auf-/zuklappbaren Lektionen
   -------------------------------------------------------------------------- */

.modul-block {
  border: 1px solid var(--farbe-linie);
  border-radius: var(--radius-m);
  box-shadow: var(--schatten-karte);
  margin-bottom: var(--abstand-m);
  background-color: var(--farbe-hintergrund);
}

.modul-kopf {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--abstand-s) var(--abstand-m);
  padding: var(--abstand-m) var(--abstand-l);
}

/* Der Klapp-Button trägt den Modultitel */
.modul-titel-knopf {
  display: flex;
  align-items: baseline;
  gap: var(--abstand-s);
  flex: 1;
  min-width: 12rem;
  background: none;
  border: none;
  padding: 0;
  text-align: left;
  font-size: var(--schrift-groesse-m);
  font-weight: var(--schrift-gewicht-mittel);
  cursor: pointer;
}

.modul-pfeil {
  display: inline-block;
  font-size: var(--schrift-groesse-xs);
  color: var(--farbe-text-leise);
  transition: transform var(--uebergang);
}

.modul-titel-knopf[aria-expanded="true"] .modul-pfeil {
  transform: rotate(90deg);
}

.modul-meta {
  font-size: var(--schrift-groesse-xs);
  color: var(--farbe-text-leise);
  white-space: nowrap;
}

.modul-aktionen {
  display: flex;
  flex-wrap: wrap;
  gap: var(--abstand-s);
}

.modul-inhalt {
  border-top: 1px solid var(--farbe-linie);
  padding: var(--abstand-l);
}

.modul-beschreibung {
  color: var(--farbe-text-gedimmt);
  font-size: var(--schrift-groesse-s);
  margin-bottom: var(--abstand-m);
}

.lektion-zeile {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--abstand-s) var(--abstand-m);
  padding: var(--abstand-s) 0;
  border-bottom: 1px solid var(--farbe-linie);
}

.lektion-zeile:last-child {
  border-bottom: none;
}

.lektion-nummer {
  min-width: 1.6rem;
  font-size: var(--schrift-groesse-s);
  color: var(--farbe-text-leise);
}

.lektion-titel {
  flex: 1;
  min-width: 10rem;
  font-size: var(--schrift-groesse-s);
}

.lektion-meta {
  font-size: var(--schrift-groesse-xs);
  color: var(--farbe-text-leise);
  white-space: nowrap;
}

.lektion-aktionen {
  display: flex;
  gap: var(--abstand-s);
}

/* --------------------------------------------------------------------------
   6. Statistik: Kennzahlen-Karten
   -------------------------------------------------------------------------- */

.kennzahlen {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  gap: var(--abstand-m);
}

.kennzahl {
  padding: var(--abstand-l);
  text-align: center;
}

.kennzahl-wert {
  display: block;
  font-size: var(--schrift-groesse-xxl);
  font-weight: var(--schrift-gewicht-stark);
  letter-spacing: -0.02em;
  line-height: var(--schrift-zeilenhoehe-titel);
}

.kennzahl-name {
  display: block;
  margin-top: var(--abstand-xs);
  font-size: var(--schrift-groesse-xs);
  color: var(--farbe-text-gedimmt);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* Neutrales Badge, z.B. für das Log-Ergebnis „duplikat" */
.badge-neutral {
  background-color: var(--farbe-hintergrund-leicht);
  color: var(--farbe-text-gedimmt);
}

/* Fehler-Badge im Log: schwarzer Rahmen, mehr Gewicht (kein Rot, Brand-Vorgabe) */
.badge-fehler {
  background-color: transparent;
  color: var(--farbe-text);
  border: 1px solid var(--farbe-text);
}

.log-detail {
  max-width: 24rem;
  overflow-wrap: anywhere;
}

/* --------------------------------------------------------------------------
   7. Dialoge
   -------------------------------------------------------------------------- */

.dialog {
  width: min(92vw, 30rem);
  border: 1px solid var(--farbe-linie);
  border-radius: var(--radius-m);
  padding: var(--abstand-xl);
  box-shadow: 0 10px 40px rgba(17, 17, 17, 0.15);
}

.dialog-breit {
  width: min(92vw, 42rem);
}

.dialog::backdrop {
  background-color: rgba(17, 17, 17, 0.35);
}

.dialog-fussleiste {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--abstand-s);
  margin-top: var(--abstand-l);
}

/* Etikett über der Download-Liste (wie ein Label, aber kein <label>) */
.formular-etikett {
  display: block;
  font-size: var(--schrift-groesse-s);
  font-weight: var(--schrift-gewicht-mittel);
  margin-bottom: var(--abstand-s);
}

/* Eine Download-Zeile: Name + URL + Entfernen */
.download-zeile {
  display: flex;
  gap: var(--abstand-s);
  margin-bottom: var(--abstand-s);
}

.download-zeile input {
  flex: 1;
  min-width: 0;
}

.download-entfernen {
  background: none;
  border: 1px solid var(--farbe-linie-stark);
  border-radius: var(--radius-s);
  padding: 0 0.7rem;
  color: var(--farbe-text-gedimmt);
  cursor: pointer;
  transition: color var(--uebergang), border-color var(--uebergang);
}

.download-entfernen:hover {
  color: var(--farbe-text);
  border-color: var(--farbe-text);
}

/* --------------------------------------------------------------------------
   8. Kleine Helfer, die base.css nicht mitbringt
   -------------------------------------------------------------------------- */

.ohne-abstand {
  margin-bottom: 0;
}

.abstand-oben-s {
  margin-top: var(--abstand-s);
}

/* --------------------------------------------------------------------------
   8b. Seiten-Fuß: dezente Links zu Impressum und Datenschutz
   -------------------------------------------------------------------------- */

.seiten-fuss {
  max-width: var(--breite-inhalt);
  margin: 0 auto;
  padding: var(--abstand-l);
  text-align: center;
  font-size: var(--schrift-groesse-xs);
  color: var(--farbe-text-leise);
}

.seiten-fuss a {
  color: var(--farbe-text-leise);
}

.seiten-fuss a:hover {
  color: var(--farbe-text-gedimmt);
}

/* --------------------------------------------------------------------------
   9. Responsiv
   -------------------------------------------------------------------------- */

@media (max-width: 720px) {
  .tab-leiste {
    gap: var(--abstand-m);
    overflow-x: auto;
  }

  .tab {
    white-space: nowrap;
  }

  .dialog {
    padding: var(--abstand-l);
  }

  .modul-kopf,
  .modul-inhalt {
    padding: var(--abstand-m);
  }
}

/* Warnungen — Vorfälle mit Geldbezug. Sollen auffallen, ohne zu schreien:
   Kachelgrau mit rotem Balken links, nicht knallrot flächig. */
.alarm-bereich {
  margin-bottom: var(--abstand-l);
  padding: var(--abstand-l);
  background-color: var(--farbe-buehne);
  border-left: 4px solid var(--farbe-akzent-koralle);
  border-radius: var(--radius-m);
}

.alarm-titel {
  margin: 0 0 var(--abstand-m);
  font-size: var(--schrift-groesse-m);
}

.alarm-liste {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--abstand-m);
}

.alarm-eintrag {
  padding: var(--abstand-m);
  background-color: #fff;
  border-radius: var(--radius-s);
}

.alarm-text {
  margin: 0 0 var(--abstand-xs);
  font-weight: var(--schrift-gewicht-mittel);
}

.alarm-hinweis {
  margin: 0 0 var(--abstand-xs);
  font-size: var(--schrift-groesse-s);
}

.alarm-fuss {
  margin: 0 0 var(--abstand-s);
  font-size: var(--schrift-groesse-xs);
  color: var(--farbe-text-leise);
}

.alarm-aktionen {
  display: flex;
  gap: var(--abstand-s);
  flex-wrap: wrap;
}
