/* Ergänzungen zum übernommenen Grundstil (style.css) und das dunkle Farbschema.
   Was dort schon steht — .karte, .datentabelle, .warnung-kasten, die Dialoge —
   wird dort genutzt und hier nicht nachgebaut.

   Palette und Aufbau sind aus ParkWeg und MD-Assist übernommen, damit die
   Werkzeuge des Hauses nebeneinander wie eine Familie aussehen und nicht wie
   drei Zufälle. */

/* =====================================================================
   Dunkles Farbschema

   Dunkel ist die Voreinstellung und steht direkt im :root — so gibt es beim
   Laden kein kurzes Aufblitzen einer hellen Seite. Wer lieber hell arbeitet,
   setzt über den Umschalter im Kopf data-thema="hell" auf <html>; ein winziges
   Skript im <head> jeder Seite liest die Wahl, bevor der Stil greift.
   ===================================================================== */

:root {
  --bg:#12171F;
  --surface:#1A212B;
  --ink:#E6EBF2;
  --ink-soft:#93A1B5;
  --line:#2C3644;

  --blue:#60A5FA;
  --blue-deep:#93C5FD;
  --blue-tint:#1B2A41;

  --yellow:#FCD34D;
  --yellow-ink:#FCD34D;
  --yellow-tint:#3A2F0B;

  --green:#86EFAC;
  --green-ink:#86EFAC;
  --green-tint:#14351F;

  --red:#FCA5A5;
  --red-tint:#3D1618;

  --lightblue:#7DD3FC;
  --purple:#C4A0C2;
  --gray-ink:#93A1B5;
  --gray-tint:#232B36;

  --eingabe-bg:#141A23;
  --auf-akzent:#0B1017;
  --schatten:rgba(0,0,0,.45);

  --logo-navy:#9CC5EC;
  --logo-papier:#12171F;
}

:root[data-thema="hell"] {
  --bg:#F4F7FA;
  --surface:#FFFFFF;
  --ink:#17262B;
  --ink-soft:#5A6B70;
  --line:#DFE6EC;

  --blue:#003E77;
  --blue-deep:#002C55;
  --blue-tint:#E4EDF6;

  --yellow:#FFD405;
  --yellow-ink:#8F7400;
  --yellow-tint:#FFF7D1;

  --green:#4DAF45;
  --green-ink:#2F7A29;
  --green-tint:#E7F5E5;

  --red:#B2452F;
  --red-tint:#F9E9E5;

  --lightblue:#70CAF3;
  --purple:#A862A4;
  --gray-ink:#5A6B70;
  --gray-tint:#ECEFF0;

  --eingabe-bg:#FFFFFF;
  --auf-akzent:#FFFFFF;
  --schatten:rgba(23,38,43,.14);

  --logo-navy:#003E77;
  --logo-papier:#FFFFFF;
}

/* =====================================================================
   Seitenwechsel — weich statt hart, ohne eine Zeile JavaScript
   ===================================================================== */

@view-transition { navigation: auto; }

html { background: var(--bg); }

::view-transition-old(root) { animation: ausblenden .12s ease both; }
::view-transition-new(root) { animation: einblenden .16s ease both; }

@keyframes ausblenden { to { opacity: 0; } }
@keyframes einblenden { from { opacity: 0; } }

header { view-transition-name: kopfzeile; }
::view-transition-group(kopfzeile) { animation-duration: 0s; }

@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root),
  ::view-transition-new(root) { animation: none; }
}

/* color-scheme ist wichtiger, als es aussieht: Ohne diese Angabe zeichnet der
   Browser die Aufklappliste eines <select>, die Bildlaufleisten und die
   Zahlenpfeile weiterhin im hellen Systemschema — Teile, an die kein
   Stylesheet herankommt. */
:root { color-scheme: dark; }
:root[data-thema="hell"] { color-scheme: light; }

input, select, textarea { background: var(--eingabe-bg); }
option { background: var(--surface); color: var(--ink); }
::placeholder { color: var(--ink-soft); opacity: 1; }

/* Vom Browser ausgefuellte Felder.
   Chrome legt darueber einen hellgelben Grund, den kein background erreicht --
   auf dunklem Schema sieht das Feld dadurch aus, als waere es fehlerhaft
   markiert. Der einzige Weg dorthin ist ein Innenschatten, der die Flaeche
   ueberdeckt; die absurd lange Transition haelt ihn ueber den kurzen Moment,
   in dem Chrome ihn sonst zurueckschreibt. */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
select:-webkit-autofill,
textarea:-webkit-autofill {
  -webkit-text-fill-color: var(--ink);
  -webkit-box-shadow: 0 0 0 1000px var(--eingabe-bg) inset;
  caret-color: var(--ink);
  transition: background-color 5000s ease-in-out 0s;
}

.dialog-huelle { z-index: 400; }

.status { font-size:12.5px; margin-top:8px; }
.status.ok { color:var(--green-ink); font-weight:600; }
.status.fehler { color:var(--red); font-weight:600; }

/* --- Logo und Kopfleiste --- */
.logo { display:flex; align-items:center; gap:10px; }
.logo-zeichen { height:38px; width:38px; flex:0 0 auto; }
.logo-wort {
  font-family: var(--font-display, Arial, Helvetica, sans-serif);
  font-size:19px; font-weight:600; letter-spacing:1.4px;
  color: var(--logo-navy); white-space:nowrap;
}
.logo[data-form="lockup"] { flex-direction:column; gap:14px; }
.logo[data-form="lockup"] .logo-zeichen { height:84px; width:84px; }
.logo[data-form="lockup"] .logo-wort { font-size:28px; letter-spacing:2.6px; }
.logo-unterzeile {
  font-size:11.5px; letter-spacing:2.2px; color:var(--ink-soft);
  text-transform:uppercase; text-align:center;
}

.thema-knopf {
  border:1px solid var(--line); background:transparent; color:var(--ink-soft);
  border-radius:8px; width:32px; height:32px; line-height:1; font-size:15px; padding:0;
}
.thema-knopf:hover { color:var(--blue); border-color:var(--blue); }

.zahnrad-huelle { position:relative; display:flex; }
.kopfmenue {
  position:absolute; top:38px; right:0; z-index:500; min-width:190px;
  background:var(--surface); border:1px solid var(--line); border-radius:10px;
  box-shadow:0 6px 24px var(--schatten); padding:6px; display:flex;
  flex-direction:column; gap:2px;
}
.kopfmenue a {
  display:block; padding:8px 12px; border-radius:7px; font-size:13.5px;
  color:var(--ink); text-decoration:none; white-space:nowrap;
}
.kopfmenue a:hover { background:var(--blue-tint); color:var(--blue); }
.kopfmenue a.aktiv { color:var(--blue); font-weight:600; }

/* =====================================================================
   Das Eingabefeld

   Es ist das Werkzeug. Deshalb steht es oben, ist groß und hat keinen
   Kasten um sich, der es zu einem Formularfeld unter anderen machen würde.
   ===================================================================== */

.uebersetzer { max-width:900px; margin:0 auto; }

.eingabe-feld {
  width:100%; min-height:96px; resize:vertical; font-size:17px; line-height:1.5;
  padding:16px 18px; border-radius:12px; border:1px solid var(--line);
  background:var(--surface);
}
.eingabe-feld:focus-visible { border-color:var(--blue); }

.eingabe-zeile {
  display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:12px;
}
.eingabe-zeile .fuellt { flex:1; }
.eingabe-hinweis { font-size:12.5px; color:var(--ink-soft); }

/* Der Datenschutzhinweis über dem Feld. Gelb und nicht rot: Er hält niemanden
   auf, er sagt nur, was gerade erkannt wurde. */
.personenbezug {
  display:flex; gap:10px; align-items:flex-start;
  background:var(--yellow-tint); border:1px solid var(--yellow);
  border-radius:9px; padding:10px 13px; margin-top:12px; font-size:12.5px;
  line-height:1.5;
}
.personenbezug b { color:var(--yellow-ink); }

/* =====================================================================
   Trefferkarten

   Eine Karte je Vorschlag. Der Leistungsname steht groß und ist das, was
   kopiert wird; alles andere erklaert, warum er dasteht.
   ===================================================================== */

.abschnitt-block { margin-top:26px; }
.abschnitt-kopf {
  display:flex; align-items:baseline; gap:12px; flex-wrap:wrap;
  margin:0 0 12px; padding-bottom:8px; border-bottom:1px solid var(--line);
}
.abschnitt-kopf h3 {
  font-family:var(--font-display); font-size:15px; color:var(--ink); margin:0;
}
.abschnitt-kopf .zaehler { font-size:12.5px; color:var(--ink-soft); }
.abschnitt-kopf .zaehler.schwach { color:var(--yellow-ink); font-weight:600; }

.treffer {
  background:var(--surface); border:1px solid var(--line); border-radius:12px;
  padding:14px 16px; margin-bottom:10px;
  display:grid; grid-template-columns:1fr auto; gap:6px 16px; align-items:start;
}
.treffer.top { border-color:var(--blue); box-shadow:0 0 0 1px var(--blue); }
.treffer.gestrichen { opacity:.85; border-style:dashed; }

.treffer-name {
  font-family:var(--font-display); font-size:16.5px; font-weight:700;
  color:var(--ink); line-height:1.3; margin:0;
}
.treffer-name button {
  border:none; background:none; padding:0; font:inherit; color:inherit;
  text-align:left; cursor:pointer;
}
.treffer-name button:hover { color:var(--blue); }
.treffer-def { font-size:13px; color:var(--ink-soft); line-height:1.55; margin:4px 0 0;
               max-width:72ch; }
.treffer-haus {
  font-size:13px; line-height:1.55; margin:6px 0 0; padding:7px 10px;
  background:var(--blue-tint); border-radius:7px; max-width:72ch;
}
.treffer-haus b { color:var(--blue); font-weight:600; }

/* Die Fusszeile eines Treffers.

   line-height und row-gap stehen hier ausdruecklich und nicht geerbt: Erbt die
   Zeile ihre Zeilenhoehe vom Koerper, haengt der Abstand zwischen zwei
   umgebrochenen Reihen an der geladenen Schrift. Faellt sie aus oder rechnet
   der Browser anders, ruecken die Marken ineinander -- gemeldet aus dem
   Betrieb, hier bei keiner Fensterbreite nachstellbar. Feste Werte sind an
   dieser Stelle das kleinere Uebel als eine Darstellung, die nur auf den
   Rechnern stimmt, auf denen man sie prueft.

   Jede Marke bleibt einzeilig und wird notfalls beschnitten. Eine Marke, die
   selbst umbricht, ist die Ursache: Ihr Hintergrund waechst dann ueber die
   Zeilenhoehe hinaus und schiebt sich unter die Nachbarn. */
.treffer-zeile {
  grid-column:1 / -1; display:flex; flex-wrap:wrap;
  column-gap:12px; row-gap:8px;
  font-size:12px; line-height:1.5; color:var(--ink-soft);
  margin-top:10px; align-items:center;
}
.treffer-zeile > * { flex:0 0 auto; }

/* .beleg und NICHT .marke.

   Der geerbte Grundstil hat bereits ein `.marke`: einen runden Punkt von 20
   mal 20 Pixeln, mit fester Breite. Die Regel hier überschrieb Anzeige,
   Hintergrund und Innenabstand — aber nicht die Breite. Jeder Beleg wurde
   damit auf zwanzig Pixel gezwungen, sein Text lief darüber hinaus und legte
   sich über den Nachbarn.

   Das war die aus dem Betrieb gemeldete »Überlagerung«. Sie war durch
   Ausprobieren von Fensterbreiten nicht zu finden, weil sie mit Breiten nichts
   zu tun hatte — erst der Blick auf die tatsächlich angewandten Regeln zeigte
   den fremden Selektor.

   Umbenannt statt überschrieben: Wer nur die Breite nachträgt, hat height,
   border-radius und font-size noch vor sich. Dieselbe Lehre steht in ParkWeg
   als .karte gegen .landkarte. */
.treffer-zeile .beleg {
  display:inline-block; background:var(--gray-tint); border-radius:20px;
  padding:2px 10px; line-height:1.5; white-space:nowrap;
}
.treffer-knoepfe { display:flex; flex-direction:column; gap:6px; align-items:stretch; }
.treffer-knoepfe button { white-space:nowrap; }
.treffer-knoepfe button.uebernommen {
  background:var(--green-tint); border-color:var(--green); color:var(--green-ink);
}
.treffer-knoepfe button.uebernommen:hover { border-color:var(--red); color:var(--red); }

/* Die Abgrenzung ohne eigenen Kasten. Sie ist eine Fussnote zum Treffer, kein
   Alarm — als gelber Block auf jeder Karte übertönte sie den Namen, um den es
   geht. */
.treffer-abgrenzung {
  font-size:12px; line-height:1.5; margin:6px 0 0; color:var(--ink-soft);
  max-width:72ch;
}
.treffer-abgrenzung b { color:var(--yellow-ink); font-weight:600; }

/* =====================================================================
   Die Ergebnisleiste

   Eine Zeile statt einer Karte. Die vollständige Liste steht in einem
   Fenster, das nur aufgeht, wenn jemand sie sehen will — der Regelfall ist,
   dass die Vorbelegung stimmt und nur kopiert wird. Als Karte mit Liste,
   Knopf und Erklärabsatz schob sie die Vorschläge aus dem Bild.
   ===================================================================== */

.ergebnisleiste {
  position:sticky; top:76px; z-index:30;
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  background:var(--surface); border:1px solid var(--blue); border-radius:11px;
  padding:10px 14px; margin:18px 0 4px;
  box-shadow:0 4px 16px var(--schatten);
}
.ergebnisleiste .anzahl {
  font-weight:700; color:var(--blue); white-space:nowrap; font-size:13.5px;
}
.ergebnisleiste .namen {
  flex:1; min-width:140px; font-size:13px; color:var(--ink-soft);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.ergebnisleiste button { white-space:nowrap; }

/* --- Das Fenster mit der Liste --- */
.liste-fenster { max-width:620px; }
.liste-fenster ol {
  list-style:none; counter-reset:zeile; margin:0;
  display:flex; flex-direction:column; gap:5px;
}
.liste-fenster li {
  counter-increment:zeile; display:flex; align-items:center; gap:10px;
  padding:9px 12px; background:var(--bg); border-radius:8px;
}
.liste-fenster li::before {
  content:counter(zeile) "."; color:var(--ink-soft); font-size:12px;
  min-width:1.4em; flex:none;
}
.liste-fenster .name { flex:1; font-weight:600; font-size:14.5px; }
.liste-fenster li button {
  border:none; background:none; padding:0 6px; font-size:16px; line-height:1;
  color:var(--ink-soft); flex:none;
}
.liste-fenster li button:hover { color:var(--red); }
.liste-fenster .leer { color:var(--ink-soft); font-size:13.5px; }

/* Sicherheitsstufe. Der Text sagt, worauf der Treffer beruht — nicht eine
   Prozentzahl, mit der auf Station niemand etwas anfangen kann. */
.stufe {
  display:inline-block; padding:2px 10px; border-radius:20px; font-size:11.5px;
  line-height:1.5; font-weight:700; white-space:nowrap; flex:none;
}
.stufe.sicher { background:var(--green-tint); color:var(--green-ink); }
.stufe.wahrscheinlich { background:var(--blue-tint); color:var(--blue); }
.stufe.unsicher { background:var(--yellow-tint); color:var(--yellow-ink); }
.stufe.ki { background:var(--yellow-tint); color:var(--yellow-ink); }
.stufe.gestrichen { background:var(--red-tint); color:var(--red); }

/* Nichts gefunden. Bewusst prominent und mit einem nächsten Schritt — eine
   leere Fläche wäre die Stelle, an der jemand aufgibt. */
.leer-block {
  background:var(--surface); border:1px dashed var(--line); border-radius:12px;
  padding:22px 20px; text-align:center;
}
.leer-block h3 { font-family:var(--font-display); font-size:16px; margin:0 0 6px; }
.leer-block p { color:var(--ink-soft); font-size:13.5px; margin:0 0 14px;
                max-width:60ch; margin-inline:auto; line-height:1.6; }
.leer-block .aktionen { justify-content:center; }

.vorschlaege { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; }
.vorschlaege button { font-size:12.5px; }

/* =====================================================================
   Katalog und Wörterbuch
   ===================================================================== */

.filterleiste { display:flex; gap:10px; flex-wrap:wrap; align-items:end; margin-bottom:16px; }
.filterleiste label { margin:0; }
.filterleiste input, .filterleiste select { min-width:200px; }
.filterleiste .wachsen { flex:1; min-width:240px; }

.katalog-zeile { cursor:pointer; }
.katalog-name { font-weight:600; }
.katalog-def { font-size:12.5px; color:var(--ink-soft); line-height:1.45;
               display:block; max-width:80ch; }

/* .katalog-spalten und nicht .detail-spalten: Den Namen gibt es im geerbten
   Grundstil bereits, mitsamt min-height:480px. Überschreiben hiesse, jede
   künftig dort ergänzte Eigenschaft mit zu erben — siehe .beleg oben. */
.katalog-spalten { display:grid; grid-template-columns:1fr 380px; gap:20px; align-items:start; }
@media (max-width: 1000px) { .katalog-spalten { grid-template-columns:1fr; } }

.merkmal-liste { list-style:none; display:flex; flex-direction:column; gap:6px; }
.merkmal-liste li {
  display:flex; justify-content:space-between; gap:12px; font-size:13px;
  padding:7px 10px; background:var(--gray-tint); border-radius:7px;
}
.merkmal-liste .stufe-text { color:var(--ink-soft); font-size:11.5px; white-space:nowrap; }

.begriff-liste { display:flex; flex-wrap:wrap; gap:7px; }
.begriff {
  display:inline-flex; align-items:center; gap:7px; font-size:12.5px;
  background:var(--gray-tint); border:1px solid var(--line);
  border-radius:20px; padding:3px 6px 3px 11px;
}
.begriff.vorgeschlagen { border-color:var(--yellow); background:var(--yellow-tint); }
.begriff.abgelehnt { opacity:.5; text-decoration:line-through; }
.begriff button {
  border:none; background:none; padding:0 4px; font-size:14px; line-height:1;
  color:var(--ink-soft); cursor:pointer;
}
.begriff button:hover { color:var(--red); }

/* =====================================================================
   Einstellungen mit Seitenleiste

   Wie im Zahnrad-Fenster von MD-Assist: Die Hauptnavigation traegt nur die
   drei Ansichten der taeglichen Arbeit, alles Uebrige liegt hier.
   ===================================================================== */

.einst-layout { display:grid; grid-template-columns:250px 1fr; gap:26px; align-items:start; }
@media (max-width: 900px) { .einst-layout { grid-template-columns:1fr; } }

.einst-menue { position:sticky; top:96px; display:flex; flex-direction:column; gap:2px; }
.einst-menue .gruppe {
  font-size:11px; letter-spacing:.7px; text-transform:uppercase;
  color:var(--ink-soft); margin:14px 0 4px 12px;
}
.einst-menue button {
  text-align:left; border:1px solid transparent; background:none;
  padding:8px 12px; border-radius:8px; font-size:13.5px; color:var(--ink);
}
.einst-menue button:hover { background:var(--blue-tint); color:var(--blue); }
.einst-menue button.aktiv {
  background:var(--blue-tint); color:var(--blue); border-color:var(--blue); font-weight:600;
}

.einst-abschnitt { display:none; }
.einst-abschnitt.aktiv { display:block; animation:einblenden .18s ease-out; }

/* Ein Schalter ist ein <label> — und style.css setzt auf jedes Label
   text-transform:uppercase, font-weight:700 und weite Sperrung. Das ist für
   kurze Feldbeschriftungen gedacht ("SUCHEN", "ANZEIGEN") und dort richtig.
   Hier stehen ganze Sätze darin, und die waren durchgehend in Versalien
   gesetzt: unlesbar, und dem Ton der Anwendung genau entgegengesetzt.

   Der Rücksetzer steht auf .schalter selbst, nicht auf .text: Sonst erbt jedes
   künftig hinzugefügte Element im Schalter die Versalien wieder. style.css
   nimmt die Regel nur für input, select, textarea und .feld-hilfe zurück. */
.schalter {
  display:flex; gap:12px; align-items:flex-start; margin-bottom:14px;
  text-transform:none; letter-spacing:normal; font-weight:400;
  font-size:13.5px; color:var(--ink);
}
.schalter input { width:auto; margin-top:3px; flex:none; }
.schalter .text { line-height:1.5; }
.schalter .text b { display:block; font-weight:600; margin-bottom:2px; }
.schalter .text span { display:block; color:var(--ink-soft); font-size:12.5px; }

.ablage {
  border:2px dashed var(--line); border-radius:12px; padding:28px 24px;
  text-align:center; background:var(--surface); transition:border-color .15s, background .15s;
}
.ablage.bereit { border-color:var(--blue); background:var(--blue-tint); }
.ablage h3 { margin:0 0 6px; font-size:16px; }
.ablage p { color:var(--ink-soft); font-size:13px; margin:0 0 16px; }
.ablage input[type=file] { display:none; }

.aktion-spalte { text-align:right; white-space:nowrap; }
.aktion-spalte button { padding:4px 10px; font-size:12px; margin-left:6px; opacity:.55; }
tr:hover .aktion-spalte button { opacity:1; }
.aktion-spalte button:disabled { visibility:hidden; }

.lage { display:grid; grid-template-columns:repeat(auto-fit,minmax(215px,1fr)); gap:12px;
        margin-bottom:22px; }
.lage-feld {
  background:var(--surface); border:1px solid var(--line); border-radius:10px;
  padding:12px 14px;
}
.lage-feld.stoerung { border-color:var(--yellow); background:var(--yellow-tint); }
.lage-name { font-size:11.5px; letter-spacing:.7px; text-transform:uppercase;
             color:var(--ink-soft); margin-bottom:3px; }
.lage-wert { font-size:13.5px; font-weight:600; line-height:1.4; }
