/* Leitwarte — Komponenten des Design-Systems.
 *
 * Praefix lw- mit Absicht: .card, .btn-primary, .form-row und .upload-zone gibt
 * es in styles.css bereits ZWEIMAL — global hell und unter #main-dashboard in
 * einer eigenen Farbwelt. Neue Namen kollidieren mit keiner der beiden.
 *
 * Reihenfolge: Bausteine (Icon, Knopf, Feld) → Seitenmuster (Kopf, Reiter,
 * Abschnitt, leerer Zustand) → Ueberlagerungen (Menue, Modal).
 */

/* ── Bausteine ─────────────────────────────────────────── */

.lw-ic {
  width: 1.15em;
  height: 1.15em;
  flex-shrink: 0;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
  fill: none;
}

.lw-knopf {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  padding: 0.55rem 0.9rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius);
  background: var(--lw-karte);
  color: var(--lw-text);
  font: inherit;
  font-size: 0.88rem;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.12s, border-color 0.12s;
}
.lw-knopf:hover { background: var(--lw-flaeche-2); }
.lw-knopf:focus-visible { outline: 2px solid var(--lw-ring); outline-offset: 1px; }
.lw-knopf:disabled { opacity: 0.5; cursor: not-allowed; }

.lw-knopf--primaer {
  background: var(--lw-primaer);
  border-color: transparent;
  color: var(--lw-primaer-text);
  font-weight: 600;
}
.lw-knopf--primaer:hover { background: var(--lw-primaer-hover); }

.lw-knopf--geist { background: none; border-color: transparent; }
.lw-knopf--geist:hover { background: var(--lw-flaeche-2); }

.lw-knopf--gefahr { color: var(--lw-fehler); }
.lw-knopf--gefahr:hover { background: color-mix(in srgb, var(--lw-fehler) 10%, transparent); }

.lw-knopf--klein { padding: 0.32rem 0.6rem; font-size: 0.8rem; }

/* Runder Senden-Knopf der Eingabeleiste */
.lw-knopf--rund {
  width: 2.25rem;
  height: 2.25rem;
  padding: 0;
  border-radius: var(--lw-radius-rund);
  background: var(--lw-primaer);
  border-color: transparent;
  color: var(--lw-primaer-text);
}
.lw-knopf--rund:hover { background: var(--lw-primaer-hover); }

.lw-feld {
  width: 100%;
  padding: 0.55rem 0.75rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius);
  background: var(--lw-karte);
  color: var(--lw-text);
  font: inherit;
  font-size: 0.9rem;
}
.lw-feld:focus { outline: 2px solid var(--lw-ring); outline-offset: -1px; border-color: transparent; }
.lw-feld::placeholder { color: var(--lw-text-leise); }

textarea.lw-feld { resize: none; font-family: inherit; }

/* Auswahlmenue, das wie ein Knopf in der Werkzeugleiste aussieht */
.lw-auswahl {
  appearance: none;
  padding: 0.4rem 1.7rem 0.4rem 0.7rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius);
  background: var(--lw-karte) no-repeat right 0.55rem center;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23696969' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  color: var(--lw-text);
  font: inherit;
  font-size: 0.84rem;
  cursor: pointer;
  max-width: 20rem;
  text-overflow: ellipsis;
}
.lw-auswahl:focus-visible { outline: 2px solid var(--lw-ring); outline-offset: 1px; }

.lw-suchfeld { position: relative; display: flex; align-items: center; flex: 1; }
.lw-suchfeld .lw-ic {
  position: absolute;
  left: 0.7rem;
  color: var(--lw-text-leise);
  pointer-events: none;
}
.lw-suchfeld input { padding-left: 2.1rem; }

.lw-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.35rem 0.8rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius-rund);
  background: var(--lw-karte);
  color: var(--lw-text);
  font-size: 0.85rem;
  cursor: pointer;
  white-space: nowrap;
}
.lw-chip:hover { background: var(--lw-flaeche-2); }
.lw-chip[aria-pressed="true"], .lw-chip.ist-aktiv {
  background: var(--lw-primaer-zart);
  border-color: color-mix(in srgb, var(--lw-primaer) 35%, transparent);
  color: var(--lw-primaer);
}

.lw-pille {
  display: inline-flex;
  align-items: center;
  padding: 0.25rem 0.7rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius-rund);
  background: var(--lw-karte);
  color: var(--lw-text-leise);
  font-size: 0.78rem;
  font-variant-numeric: tabular-nums;
}

/* Zitat aus dem Netz — bewusst anders eingefaerbt als ein Firmenbeleg. */
.source-chip--web {
  border-color: color-mix(in srgb, var(--lw-warnung) 45%, transparent);
  background: color-mix(in srgb, var(--lw-warnung) 10%, transparent);
  color: var(--lw-warnung);
}

.lw-pille--warnung {
  border-color: color-mix(in srgb, var(--lw-warnung) 40%, transparent);
  background: color-mix(in srgb, var(--lw-warnung) 12%, transparent);
  color: var(--lw-warnung);
}

.lw-abzeichen {
  padding: 0.05rem 0.4rem;
  border-radius: var(--lw-radius-klein);
  background: var(--lw-primaer-zart);
  color: var(--lw-primaer);
  font-size: 0.7rem;
  font-weight: 600;
}

/* ── Seitenmuster ──────────────────────────────────────── */

.lw-seite {
  max-width: 68rem;
  margin: 0 auto;
  padding: 2rem 2rem 3rem;
}

.lw-seitenkopf {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  margin-bottom: 1.5rem;
}
.lw-seitenkopf__marke {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.25rem;
  height: 3.25rem;
  flex-shrink: 0;
  border-radius: var(--lw-radius-gross);
  background: var(--lw-primaer-zart);
  color: var(--lw-primaer);
}
.lw-seitenkopf__marke .lw-ic { width: 1.5rem; height: 1.5rem; }
.lw-seitenkopf__text { flex: 1; min-width: 0; }
.lw-seitenkopf h1 {
  margin: 0 0 0.35rem;
  font-size: 2.1rem;
  font-weight: 800;
  letter-spacing: -0.02em;
}
.lw-seitenkopf p {
  margin: 0;
  max-width: 46rem;
  color: var(--lw-text-leise);
  font-size: 0.92rem;
  line-height: 1.5;
}

.lw-werkzeugleiste {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin-bottom: 1.25rem;
}

.lw-reiter {
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  padding: 0.25rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius);
  background: var(--lw-karte);
}
.lw-reiter__knopf {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.4rem 0.75rem;
  border: none;
  border-radius: var(--lw-radius-klein);
  background: none;
  color: var(--lw-text-leise);
  font: inherit;
  font-size: 0.86rem;
  cursor: pointer;
}
.lw-reiter__knopf:hover { background: var(--lw-flaeche-2); }
.lw-reiter__knopf.ist-aktiv { background: var(--lw-flaeche-2); color: var(--lw-text); font-weight: 600; }
.lw-reiter__zahl { color: var(--lw-text-leise); font-size: 0.75rem; font-variant-numeric: tabular-nums; }

.lw-abschnitt {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  margin: 1.5rem 0 0.9rem;
}
.lw-abschnitt h2 { margin: 0; font-size: 1.15rem; font-weight: 700; }
.lw-abschnitt p { margin: 0.2rem 0 0; color: var(--lw-text-leise); font-size: 0.85rem; }

.lw-karte {
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius);
  background: var(--lw-karte);
  padding: 1rem 1.15rem;
}
.lw-karte--anklickbar { cursor: pointer; transition: box-shadow 0.12s, border-color 0.12s; }
.lw-karte--anklickbar:hover { border-color: color-mix(in srgb, var(--lw-primaer) 35%, var(--lw-rahmen)); box-shadow: var(--lw-schatten-2); }

.lw-raster {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr));
  gap: 0.9rem;
}

/* Leerer Zustand — im Vorbild die grosse Karte mit Icon im Kreis */
.lw-leer {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  padding: 3.5rem 1.5rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius);
  text-align: center;
}
.lw-leer__marke {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4.5rem;
  height: 4.5rem;
  margin-bottom: 0.4rem;
  border-radius: var(--lw-radius-gross);
  background: var(--lw-primaer-zart);
  color: var(--lw-primaer);
}
.lw-leer__marke .lw-ic { width: 2rem; height: 2rem; }
.lw-leer h3 { margin: 0; font-size: 1.15rem; font-weight: 600; }
.lw-leer p { margin: 0 0 0.6rem; max-width: 28rem; color: var(--lw-text-leise); font-size: 0.9rem; }

/* Bereichsseiten scrollen in sich; die Shell selbst steht fest. */
.bereich-main { padding: 0; overflow-y: auto; }

/* Ein Eintrag im Raster (Prompt, Skill, Projekt …) */
.lw-eintrag {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.9rem 1rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius);
  background: var(--lw-karte);
  transition: box-shadow 0.12s, border-color 0.12s;
}
.lw-eintrag:hover { border-color: color-mix(in srgb, var(--lw-primaer) 35%, var(--lw-rahmen)); box-shadow: var(--lw-schatten-2); }
/* Ganze Karte als Link (Anleitung): Link-Optik zuruecknehmen. */
.lw-eintrag--link { text-decoration: none; color: inherit; cursor: pointer; }
.lw-eintrag--link .lw-eintrag__titel { display: flex; align-items: center; gap: 0.4rem; }
.lw-eintrag__kopf { display: flex; align-items: flex-start; gap: 0.5rem; }
/* `overflow-wrap: anywhere` ist der Teil, der wirklich zaehlt: `min-width: 0`
   laesst den Titel zwar schrumpfen, aber ein Dateiname wie
   "Anschlussbelegung_Wichernhaus_unvollstaendig.xlsx" ist fuer den Umbruch EIN
   Wort — Unterstriche sind keine Trennstelle. Ohne die Regel lief er aus der
   Karte heraus und schob die Knoepfe hinaus. */
.lw-eintrag__titel { flex: 1; min-width: 0; font-size: 0.95rem; font-weight: 600; overflow-wrap: anywhere; }
.lw-eintrag__zeile { color: var(--lw-text-leise); font-size: 0.85rem; line-height: 1.4; }
.lw-eintrag__fuss { display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; margin-top: 0.2rem; }
/* Die Knoepfe geben nie nach — sie sind der Grund, warum die Karte da ist. */
.lw-eintrag__knoepfe { display: flex; gap: 0.15rem; flex-shrink: 0; }
.lw-eintrag__knoepfe .lw-knopf { padding: 0.3rem; border-color: transparent; background: none; color: var(--lw-text-leise); }
.lw-eintrag__knoepfe .lw-knopf:hover { background: var(--lw-flaeche-2); color: var(--lw-text); }

/* ── Formulare ─────────────────────────────────────────── */
.lw-formular { display: flex; flex-direction: column; gap: 0.8rem; }
.lw-formular label { display: flex; flex-direction: column; gap: 0.3rem; font-size: 0.85rem; font-weight: 500; }
.lw-formular__zeile { display: flex; gap: 0.8rem; flex-wrap: wrap; }
.lw-formular__zeile > label { flex: 1; min-width: 12rem; }
.lw-formular__knoepfe { display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 0.4rem; }
.lw-optional { color: var(--lw-text-leise); font-weight: 400; }
.lw-formular__ueberschrift { font-size: 0.85rem; font-weight: 500; margin-bottom: 0.2rem; }
.lw-formular__hinweis { margin: 0 0 0.5rem; color: var(--lw-text-leise); font-size: 0.8rem; line-height: 1.4; }
.lw-erfolg { color: var(--lw-erfolg); font-size: 0.85rem; font-weight: 500; }
.lw-haken-liste { display: flex; flex-direction: column; gap: 0.35rem; }
.lw-haken {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: 0.85rem;
  font-weight: 400;
  cursor: pointer;
}
/* `.lw-formular label` stellt jedes Label untereinander — eine Hakenzeile
   gehoert aber nebeneinander. Gleiche Herkunft, hoehere Spezifitaet: sonst
   stuende das Kaestchen ueber seiner Beschriftung. */
.lw-formular .lw-haken { flex-direction: row; align-items: flex-start; }
.lw-haken input { margin-top: 0.15rem; }
.lw-haken__zeile { display: block; color: var(--lw-text-leise); font-size: 0.78rem; }

/* Angehängte Skills über der Eingabe */
.lw-anhaenge { display: flex; flex-wrap: wrap; gap: 0.35rem; padding: 0.7rem 0.9rem 0; }
.lw-anhang {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.2rem 0.4rem 0.2rem 0.6rem;
  border: 1px solid color-mix(in srgb, var(--lw-primaer) 35%, transparent);
  border-radius: var(--lw-radius-rund);
  background: var(--lw-primaer-zart);
  color: var(--lw-primaer);
  font-size: 0.8rem;
}
.lw-anhang button {
  display: inline-flex;
  border: none;
  background: none;
  color: inherit;
  cursor: pointer;
  padding: 0.1rem;
  opacity: 0.7;
}
.lw-anhang button:hover { opacity: 1; }
.lw-anhang .lw-ic { width: 0.9em; height: 0.9em; }

/* Werkzeug-Verlauf und Artefakte — kommen aus dem Werkzeug-Lauf und werden
   sowohl vom Chat als auch vom Agenten-Endpunkt gezeigt. Lagen frueher als
   injiziertes CSS in agents.js, mit fest verdrahteten Hellfarben. */
.agent-steps { margin: 6px 0 2px; display: flex; flex-direction: column; gap: 2px; }
.agent-step { font-size: 0.75rem; color: var(--lw-text-leise); font-style: italic; }
.agent-artifact {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin: 0.5rem 0;
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius);
  background: var(--lw-flaeche-2);
}
.agent-artifact a { font-weight: 600; text-decoration: none; color: var(--lw-primaer); cursor: pointer; }
.agent-artifact a:hover { text-decoration: underline; }
.agent-artifact .meta { font-size: 0.75rem; color: var(--lw-text-leise); }

/* Inline-Diagramm unter einer Antwort (diagramm.js). Die Karte ist klein und
   klickbar; Details, Legende und Downloads stehen in der Großansicht. */
.lw-diagramm {
  margin: 0.5rem 0;
  padding: 0.6rem 0.75rem 0.5rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius);
  background: var(--lw-karte);
  max-width: 48rem;
}
.lw-diagramm__kopf { display: flex; align-items: baseline; gap: 0.6rem; flex-wrap: wrap; margin-bottom: 0.3rem; }
.lw-diagramm__titel { font-weight: 600; font-size: 0.85rem; }
.lw-diagramm__untertitel { font-size: 0.75rem; color: var(--lw-text-leise); }
.lw-diagramm__flaeche { position: relative; height: 180px; cursor: zoom-in; }
.lw-diagramm__flaeche:hover { opacity: 0.92; }
.lw-diagramm__luecken { margin-top: 0.35rem; font-size: 0.75rem; color: var(--lw-warnung); }
.lw-diagramm-modal__karte { max-width: 72rem; }
.lw-diagramm-modal__knoepfe { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.lw-diagramm-modal__flaeche { position: relative; height: min(60vh, 560px); }
.lw-diagramm__status { min-height: 1.2em; margin-top: 0.5rem; font-size: 0.8rem; color: var(--lw-text-leise); }
.lw-diagramm__status--ok { color: var(--lw-text); }
.lw-diagramm__status--fehler { color: var(--lw-warnung); }
.lw-diagramm__status-link { color: var(--lw-primaer); font-weight: 600; }
.lw-diagramm__flaeche canvas, .lw-diagramm-modal__flaeche canvas { display: block; width: 100%; height: 100%; }
.lw-diagramm__tipp {
  position: absolute;
  pointer-events: none;
  padding: 0.25rem 0.5rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius-klein);
  background: var(--lw-karte);
  color: var(--lw-text);
  font-size: 0.75rem;
  white-space: nowrap;
  box-shadow: var(--lw-schatten-4);
  z-index: 2;
}
@media (max-width: 640px) {
  .lw-diagramm__flaeche { height: 140px; }
  .lw-diagramm-modal__flaeche { height: 45vh; }
}
/* Rückfall in agents.js, falls die Oberfläche kein Modus-Menü mitbringt. */
.agent-picker { margin-left: 8px; }
.lw-fehler {
  padding: 0.5rem 0.7rem;
  border-radius: var(--lw-radius-klein);
  background: color-mix(in srgb, var(--lw-fehler) 12%, transparent);
  color: var(--lw-fehler);
  font-size: 0.85rem;
}

/* ── Ueberlagerungen ───────────────────────────────────── */

/* Befehlsmenue: sitzt UEBER der Eingabeleiste, nicht als Vollbild-Modal */
.lw-menue {
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius-gross);
  background: var(--lw-popover);
  box-shadow: var(--lw-schatten-3);
  overflow: hidden;
}
.lw-menue__kopf {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  padding: 0.5rem 0.8rem;
  border-bottom: 1px solid var(--lw-rahmen);
}
.lw-menue__kopf input {
  flex: 1;
  border: none;
  background: none;
  color: var(--lw-text);
  font: inherit;
  font-size: 0.9rem;
}
.lw-menue__kopf input:focus { outline: none; }
.lw-menue { margin-bottom: 0.5rem; }
.lw-menue__filter { flex: 1; color: var(--lw-text-leise); font-size: 0.9rem; }
.lw-menue__reiter { display: flex; gap: 0.15rem; }
.lw-menue__reiter-knopf {
  padding: 0.2rem 0.55rem;
  border: none;
  border-radius: var(--lw-radius-klein);
  background: none;
  color: var(--lw-text-leise);
  font: inherit;
  font-size: 0.8rem;
  cursor: pointer;
}
.lw-menue__reiter-knopf:hover { background: var(--lw-flaeche-2); }
.lw-menue__reiter-knopf.ist-aktiv { background: var(--lw-flaeche-2); color: var(--lw-text); font-weight: 600; }
.lw-menue__leer { padding: 1.2rem 0.9rem; color: var(--lw-text-leise); font-size: 0.85rem; text-align: center; }
.lw-menue__liste { max-height: 18rem; overflow-y: auto; }
.lw-menue__eintrag {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
  width: 100%;
  padding: 0.6rem 0.9rem;
  border: none;
  background: none;
  color: var(--lw-text);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.lw-menue__eintrag:hover, .lw-menue__eintrag.ist-aktiv { background: var(--lw-primaer-zart); }
.lw-menue__eintrag .lw-ic { margin-top: 0.15rem; color: var(--lw-primaer); }
.lw-menue__titel { display: flex; align-items: center; gap: 0.45rem; font-size: 0.9rem; font-weight: 600; }
.lw-menue__zeile { color: var(--lw-text-leise); font-size: 0.82rem; line-height: 1.35; }
.lw-tastenzeile {
  display: flex;
  gap: 1rem;
  padding: 0.4rem 0.9rem;
  border-top: 1px solid var(--lw-rahmen);
  background: var(--lw-flaeche-2);
  color: var(--lw-text-leise);
  font-size: 0.75rem;
}
.lw-taste {
  padding: 0 0.3rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: 4px;
  background: var(--lw-karte);
  font-size: 0.72rem;
}

.lw-modal {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: rgba(10, 18, 28, 0.5);
}
.lw-modal__karte {
  width: 100%;
  max-width: 40rem;
  max-height: 85vh;
  overflow-y: auto;
  padding: 1.2rem 1.4rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius-gross);
  background: var(--lw-karte);
  box-shadow: var(--lw-schatten-4);
}
.lw-modal__kopf {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 0.8rem;
}
.lw-modal__kopf h3 { margin: 0; font-size: 1.1rem; }

.lw-dropzone {
  padding: 1.5rem;
  border: 1.5px dashed var(--lw-rahmen);
  border-radius: var(--lw-radius);
  color: var(--lw-text-leise);
  text-align: center;
  font-size: 0.88rem;
}
.lw-dropzone.zieht { border-color: var(--lw-primaer); color: var(--lw-primaer); }

.lw-tabelle { width: 100%; border-collapse: collapse; font-size: 0.88rem; }
.lw-tabelle th {
  padding: 0.4rem 0.6rem;
  border-bottom: 1px solid var(--lw-rahmen);
  color: var(--lw-text-leise);
  font-size: 0.78rem;
  font-weight: 600;
  text-align: left;
}
.lw-tabelle td { padding: 0.55rem 0.6rem; border-bottom: 1px solid var(--lw-rahmen); }
.lw-tabelle tr:last-child td { border-bottom: none; }

/* Wissen: die Tabelle steht in einer Karte, der Dokumenttext in einem
   breiteren Modal — ein Chunk ist eine Textwand, 40rem waeren zu schmal. */
.lw-tabellen-karte {
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius-gross);
  background: var(--lw-karte);
  overflow-x: auto;
}
.lw-tabelle tbody tr:hover { background: var(--lw-flaeche-2); }
.lw-tabelle .lw-zelle-titel { font-weight: 600; }
.lw-tabelle .lw-zelle-knoepfe { width: 1%; white-space: nowrap; text-align: right; }

.lw-modal__karte--breit { max-width: 56rem; }
.lw-doktext__hinweis { margin: 0.6rem 0 0.9rem; color: var(--lw-text-leise); font-size: 0.8rem; }
.lw-doktext {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  max-height: 60vh;
  overflow-y: auto;
}
.lw-doktext__stueck { padding-bottom: 0.8rem; border-bottom: 1px solid var(--lw-rahmen); }
.lw-doktext__stueck:last-child { border-bottom: none; }
.lw-doktext__pfad {
  margin-bottom: 0.35rem;
  color: var(--lw-text-leise);
  font-size: 0.75rem;
  font-weight: 600;
}
.lw-doktext__text {
  margin: 0;
  font-family: inherit;
  font-size: 0.85rem;
  line-height: 1.55;
  white-space: pre-wrap;
  word-break: break-word;
}

.lw-blaettern { display: flex; justify-content: center; padding: 0.9rem 0 0; }

/* ── Aufklappbarer Abschnitt ────────────────────────────
 * Loest `.lw-abschnitt` dort ab, wo eine Seite aus mehreren langen Listen
 * besteht (Dokumente: Anleitung, Wochenberichte, Notizen, Dateien). Der Kopf
 * ist KEIN <button>, sondern eine Zeile aus Schalter + Aktionsknoepfen: „Neue
 * Notiz“ darf nicht im Klapp-Schalter stecken, sonst klappt jeder Klick darauf
 * den Abschnitt zu. Zugeklappt wird der Inhalt aus dem Baum genommen
 * (`hidden`), nicht nur verborgen — sonst fangen unsichtbare Karten weiter
 * Tabulator-Spruenge ab. */
.lw-klappe {
  margin: 1.1rem 0 0;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius-gross);
  background: var(--lw-karte);
  overflow: hidden;
}
.lw-klappe__kopf {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.15rem 0.9rem 0.15rem 0.2rem;
}
.lw-klappe__schalter {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.85rem 0.5rem 0.85rem 0.7rem;
  border: none;
  border-radius: var(--lw-radius);
  background: none;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.lw-klappe__schalter:hover { background: var(--lw-flaeche-2); }
.lw-klappe__schalter:focus-visible { outline: 2px solid var(--lw-ring); outline-offset: -2px; }
/* Der Pfeil zeigt nach rechts (zu) und dreht sich beim Aufklappen nach unten. */
.lw-klappe__pfeil {
  flex-shrink: 0;
  color: var(--lw-text-leise);
  transition: transform 0.15s ease;
}
.lw-klappe__schalter[aria-expanded="true"] .lw-klappe__pfeil { transform: rotate(90deg); }
/* Die Ueberschrift steht um den Schalter herum (ein <button> darf kein <h2>
   tragen); ihre Groesse kommt von `__titel`, damit sie hier nichts vorgibt. */
.lw-klappe__ueberschrift { flex: 1; min-width: 0; margin: 0; font: inherit; }
.lw-klappe__text { flex: 1; min-width: 0; }
.lw-klappe__titel { display: block; font-size: 1.05rem; font-weight: 700; }
.lw-klappe__unter {
  display: block;
  margin-top: 0.15rem;
  color: var(--lw-text-leise);
  font-size: 0.83rem;
  font-weight: 400;
  line-height: 1.4;
}
/* Zugeklappt schrumpft die Beschreibung auf eine Zeile: der Abschnitt soll
   dann eine Kopfzeile sein, kein Absatz. */
.lw-klappe__schalter[aria-expanded="false"] .lw-klappe__unter {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lw-klappe__zahl {
  flex-shrink: 0;
  color: var(--lw-text-leise);
  font-size: 0.78rem;
  font-variant-numeric: tabular-nums;
}
.lw-klappe__aktionen { display: flex; align-items: center; gap: 0.4rem; flex-shrink: 0; flex-wrap: wrap; }
.lw-klappe__inhalt { padding: 0.2rem 1.1rem 1.1rem; }
/* Innerhalb einer Klappe braucht der erste Abschnittskopf keinen Abstand mehr. */
.lw-klappe__inhalt > .lw-abschnitt:first-child { margin-top: 0.3rem; }
@media (max-width: 40rem) {
  .lw-klappe__kopf { flex-wrap: wrap; padding-bottom: 0.6rem; }
  .lw-klappe__aktionen { width: 100%; padding-left: 2.1rem; }
}

/* ── Markdown-Leseansicht ───────────────────────────────
 * Fuer Notizen und .md-Dateien: derselbe Text, den der Editor roh zeigt, nur
 * gesetzt. Bewusst eigene Regeln statt der Chat-Blase (`.msg-bubble`): dort
 * geht es um kurze Antworten, hier um mehrseitige Notizen aus dem Second
 * Brain — mit Ueberschriftenhierarchie, Tabellen und Aufgabenlisten. */
.lw-md {
  font-size: 1rem;
  line-height: 1.7;
  overflow-wrap: break-word;
}
/* Zeilenlaenge. Ueber die Breite des Fensters gesetzt waeren das gut 100
   Zeichen je Zeile — beim Zeilenwechsel findet das Auge den Anfang dann nicht
   mehr zuverlaessig. Die Schranke gilt nur fuer Fliesstext: Tabellen,
   Codebloecke und Callouts duerfen die volle Breite behalten, sie werden
   gelesen wie Bilder, nicht wie Absaetze. */
.lw-md > p,
.lw-md > ul,
.lw-md > ol,
.lw-md > h1, .lw-md > h2, .lw-md > h3,
.lw-md > h4, .lw-md > h5, .lw-md > h6 { max-width: 68ch; }
.lw-md > :first-child { margin-top: 0; }
.lw-md > :last-child { margin-bottom: 0; }
.lw-md h1, .lw-md h2, .lw-md h3, .lw-md h4, .lw-md h5, .lw-md h6 {
  margin: 1.6em 0 0.5em;
  font-weight: 700;
  line-height: 1.3;
  scroll-margin-top: 0.5rem;
}
.lw-md h1 { font-size: 1.5rem; padding-bottom: 0.3em; border-bottom: 1px solid var(--lw-rahmen); }
.lw-md h2 { font-size: 1.25rem; padding-bottom: 0.25em; border-bottom: 1px solid var(--lw-rahmen); }
.lw-md h3 { font-size: 1.08rem; }
.lw-md h4 { font-size: 0.98rem; }
.lw-md h5, .lw-md h6 { font-size: 0.9rem; color: var(--lw-text-leise); }
.lw-md p { margin: 0 0 0.9em; }
.lw-md ul, .lw-md ol { margin: 0 0 0.9em; padding-left: 1.4em; }
.lw-md li { margin: 0.25em 0; }
.lw-md li > ul, .lw-md li > ol { margin-bottom: 0.2em; }
/* Aufgabenlisten (`- [ ]`): ohne Punkt, mit eingerueckter Kaestchenspalte. */
.lw-md li:has(> input[type="checkbox"]) { list-style: none; margin-left: -1.25em; }
.lw-md input[type="checkbox"] { margin-right: 0.45em; accent-color: var(--lw-primaer); }
.lw-md a { color: var(--lw-link); text-decoration: underline; text-underline-offset: 2px; }
.lw-md a:hover { color: var(--lw-link-hover); }
.lw-md code {
  padding: 0.12em 0.36em;
  border-radius: var(--lw-radius-klein);
  background: var(--lw-flaeche-2);
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: 0.87em;
}
.lw-md pre {
  margin: 0 0 0.9em;
  padding: 0.8rem 0.9rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius);
  background: var(--lw-flaeche-2);
  overflow-x: auto;
}
.lw-md pre code { padding: 0; background: none; font-size: 0.85rem; line-height: 1.5; }

/* ── Callouts (Obsidian `> [!typ] Titel`) ────────────────────────────
 * Farbe kommt ueber eine Variable je Art, damit Kopf, Rahmen und Flaeche
 * garantiert zusammenpassen und eine neue Art eine Zeile ist. */
.lw-callout {
  margin: 0 0 1em;
  border: 1px solid color-mix(in srgb, var(--lw-callout) 30%, var(--lw-rahmen));
  border-left: 3px solid var(--lw-callout);
  border-radius: var(--lw-radius);
  background: color-mix(in srgb, var(--lw-callout) 7%, var(--lw-karte));
  overflow: hidden;
}
.lw-callout--info    { --lw-callout: var(--lw-link); }
.lw-callout--erfolg  { --lw-callout: var(--lw-erfolg); }
.lw-callout--warnung { --lw-callout: var(--lw-warnung); }
.lw-callout--fehler  { --lw-callout: var(--lw-fehler); }
.lw-callout--neutral { --lw-callout: var(--lw-text-leise); }
.lw-callout__kopf {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 0.9rem;
  /* Nicht die reine Kennfarbe: --lw-erfolg und --lw-warnung sind fuer Flaechen
     und Punkte gedacht und kaemen als Text auf hellem Grund nur auf rund 3:1.
     Der Zug zur Textfarbe macht sie hell dunkler und dunkel heller — in beiden
     Themes also lesbarer, ohne dass die Art verlorenginge. Rahmen und Flaeche
     behalten die reine Farbe. */
  color: color-mix(in srgb, var(--lw-callout) 65%, var(--lw-text));
  font-size: 0.9rem;
  font-weight: 700;
}
.lw-callout__kopf .lw-ic { flex-shrink: 0; width: 1.05rem; height: 1.05rem; }
/* Aufklappbare Callouts (`[!typ]-`): der Pfeil des Browsers passt nicht zur
   Zeile, ein eigener steht rechts und dreht sich. */
summary.lw-callout__kopf { cursor: pointer; list-style: none; }
summary.lw-callout__kopf::-webkit-details-marker { display: none; }
summary.lw-callout__kopf::after {
  content: "";
  width: 0.42rem;
  height: 0.42rem;
  margin-left: auto;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(-45deg);
  transition: transform 0.15s ease;
}
details[open] > summary.lw-callout__kopf::after { transform: rotate(45deg); }
.lw-callout__inhalt { padding: 0 0.9rem 0.75rem; }
.lw-callout__inhalt > :first-child { margin-top: 0; }
.lw-callout__inhalt > :last-child { margin-bottom: 0; }
/* Im Kasten sitzt der Text enger als im Fliesstext — er ist ein Einschub. */
.lw-callout__inhalt p, .lw-callout__inhalt ul, .lw-callout__inhalt ol {
  font-size: 0.94rem;
  line-height: 1.6;
}
.lw-md blockquote {
  margin: 0 0 0.9em;
  padding: 0.1rem 0 0.1rem 0.9rem;
  border-left: 3px solid color-mix(in srgb, var(--lw-link) 45%, var(--lw-rahmen));
  color: var(--lw-text-leise);
}
.lw-md hr { margin: 1.4em 0; border: none; border-top: 1px solid var(--lw-rahmen); }
.lw-md table {
  display: block;
  width: max-content;
  max-width: 100%;
  margin: 0 0 0.9em;
  border-collapse: collapse;
  overflow-x: auto;
  font-size: 0.88rem;
}
.lw-md th, .lw-md td { padding: 0.4rem 0.65rem; border: 1px solid var(--lw-rahmen); text-align: left; }
.lw-md th { background: var(--lw-flaeche-2); font-weight: 600; }
.lw-md img { max-width: 100%; height: auto; border-radius: var(--lw-radius-klein); }
/* Obsidian-Wikilinks `[[Ziel]]`: als Chip, damit sichtbar ist, dass das eine
   Verknuepfung IN den eigenen Notizen ist und kein Webziel. Trifft der Name
   eine vorhandene Notiz, ist der Chip anklickbar (`--offen`). */
.lw-md-wikilink {
  display: inline-block;
  padding: 0.02em 0.45em;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius-rund);
  background: var(--lw-flaeche-2);
  color: var(--lw-text-leise);
  font-size: 0.88em;
  text-decoration: none;
}
.lw-md-wikilink--offen {
  border-color: color-mix(in srgb, var(--lw-link) 40%, var(--lw-rahmen));
  background: var(--lw-primaer-zart);
  color: var(--lw-link);
  cursor: pointer;
}
.lw-md-wikilink--offen:hover { border-color: var(--lw-link); }

/* Rahmen der Leseansicht: Kopfleiste bleibt stehen, der Text scrollt. */
.lw-leser__kopfzeile { min-width: 0; }
.lw-leser__titel {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 700;
  overflow-wrap: anywhere;
}
.lw-leser__unter {
  margin: 0.15rem 0 0;
  color: var(--lw-text-leise);
  font-size: 0.78rem;
}
/* YAML-Frontmatter (`---` am Dateianfang) gehoert nicht in den Fliesstext —
   Obsidian-Notizen tragen dort Typ, Datum, Schlagworte. Als Chipreihe. */
.lw-leser__kopfdaten {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0 0 1rem;
  padding-bottom: 0.8rem;
  border-bottom: 1px solid var(--lw-rahmen);
}
.lw-leser__kopfdatum {
  display: inline-flex;
  gap: 0.35rem;
  padding: 0.15rem 0.55rem;
  border: 1px solid var(--lw-rahmen);
  border-radius: var(--lw-radius-rund);
  background: var(--lw-flaeche-2);
  font-size: 0.76rem;
}
.lw-leser__kopfdatum b { font-weight: 600; color: var(--lw-text-leise); }
/* Der Kopf steht fest, der Text laeuft darunter durch. Ohne die Linie schnitt
   der Text beim Scrollen unvermittelt an der Titelzeile ab. */
#leser-modal .lw-modal__kopf {
  align-items: flex-start;
  margin-bottom: 0;
  padding-bottom: 0.8rem;
  border-bottom: 1px solid var(--lw-rahmen);
}
.lw-leser__koerper {
  display: flex;
  gap: 1.8rem;
  align-items: flex-start;
  max-height: calc(85vh - 7rem);
  padding-top: 1.1rem;
  overflow-y: auto;
  /* Der Systembalken ist hier so breit wie die Randspalte des Textes. */
  scrollbar-width: thin;
  scrollbar-color: var(--lw-rahmen) transparent;
}
.lw-leser__koerper::-webkit-scrollbar { width: 9px; }
.lw-leser__koerper::-webkit-scrollbar-track { background: transparent; }
.lw-leser__koerper::-webkit-scrollbar-thumb {
  border: 3px solid transparent;
  border-radius: 9px;
  background: var(--lw-rahmen);
  background-clip: content-box;
}
.lw-leser__koerper::-webkit-scrollbar-thumb:hover { background: var(--lw-text-leise); background-clip: content-box; }
.lw-leser__text { flex: 1; min-width: 0; }
/* Inhaltsverzeichnis: erst ab drei Ueberschriften, und nur wenn Platz ist —
   auf schmalem Fenster waere es eine Spalte, die dem Text die Breite nimmt. */
.lw-leser__inhalt {
  position: sticky;
  top: 0;
  flex: 0 0 13rem;
  padding-left: 1rem;
  border-left: 1px solid var(--lw-rahmen);
  font-size: 0.82rem;
}
.lw-leser__inhalt-titel {
  margin: 0 0 0.4rem;
  color: var(--lw-text-leise);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.lw-leser__inhalt a {
  display: block;
  padding: 0.16rem 0;
  color: var(--lw-text-leise);
  text-decoration: none;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lw-leser__inhalt a:hover { color: var(--lw-link); }
/* Wo man gerade liest. Der Strich links traegt die Marke, nicht die Farbe
   allein — auf einen Farbunterschied von zwei Grautoenen ist kein Verlass. */
.lw-leser__inhalt a {
  border-left: 2px solid transparent;
  margin-left: -0.65rem;
  padding-left: 0.65rem;
}
.lw-leser__inhalt a.ist-aktiv {
  border-left-color: var(--lw-link);
  color: var(--lw-text);
  font-weight: 600;
}
.lw-leser__inhalt a[data-tiefe="3"] { padding-left: 0.7rem; }
.lw-leser__inhalt a[data-tiefe="4"], .lw-leser__inhalt a[data-tiefe="5"],
.lw-leser__inhalt a[data-tiefe="6"] { padding-left: 1.4rem; }
@media (max-width: 60rem) {
  .lw-leser__inhalt { display: none; }
}
