/* Laboros 2.0 – Gestaltungsregeln aus dem Bauplan, Kapitel 8: Haarlinien statt Schatten, Radius null,
   Signalfarbe nur auf der einen Haupthandlung, Warnfarbe nur für Abweichungen und Offenes, keine Deko. */
@font-face { font-family: Plex; src: url("../fonts/ibm-plex-sans-latin-400-normal.0ceb759015a6.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: Plex; src: url("../fonts/ibm-plex-sans-latin-600-normal.e78568807d10.woff2") format("woff2"); font-weight: 600; font-display: swap; }
@font-face { font-family: Plex; src: url("../fonts/ibm-plex-sans-latin-700-normal.f9b6356e32a9.woff2") format("woff2"); font-weight: 700; font-display: swap; }
@font-face { font-family: PlexMono; src: url("../fonts/ibm-plex-mono-latin-400-normal.4cc7b4398540.woff2") format("woff2"); font-weight: 400; font-display: swap; }

:root {
  --ink: #151922; --mute: #5b6372; --line: #d8dce3; --line2: #9aa1ad;
  --bg: #fff; --s1: #fff; --s2: #f7f9fc; --head: #f7f9fc;
  --navy: #0b2f63; --navy2: #123d7a; --sig: #2563eb; --sig-hell: #e8f0fe; --warn: #b45309; --ok: #166534;
  --rot: #b91c1c; --rot-hell: #fdecec; --r: 0; --r-klein: 0; --schatten: none; --wahl: #e8f0fe;
  --leiste: 248px;
}

* { box-sizing: border-box; }
html, body { margin: 0; }
body { font-family: Plex, system-ui, sans-serif; color: var(--ink); background: var(--bg); font-size: 14px; line-height: 1.45; -webkit-font-smoothing: antialiased; }
a { color: var(--navy); }
.m { font-variant-numeric: tabular-nums; }
.c { font-family: PlexMono, ui-monospace, monospace; }

.kopf { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 24px; background: var(--s1); border-bottom: 1px solid var(--line2); }
.kopf-links { display: flex; gap: 14px; align-items: center; }
.marke { font-weight: 700; font-size: 14px; letter-spacing: .22em; text-transform: uppercase; color: var(--navy); text-decoration: none; }
.instanz { font-size: 12px; padding: 1px 8px; border: 1px solid var(--line2); color: var(--mute); }
.instanz--test { border-color: var(--warn); color: var(--warn); }
.instanz--vorfuehrung { border-color: var(--navy); color: var(--navy); }
.nav { display: flex; gap: 18px; font-size: 13px; }
.nav a { text-decoration: none; color: var(--ink); }
.nav a[aria-current="page"] { border-bottom: 2px solid var(--ink); }
.person { font-size: 13px; color: var(--mute); display: flex; gap: 12px; align-items: center; }

main { max-width: 1120px; margin: 0 auto; padding: 28px 24px 64px; }
h1 { font-size: 22px; font-weight: 700; margin: 0 0 4px; }
.unter { color: var(--mute); margin: 0 0 24px; }
h2 { font-size: 15px; font-weight: 600; margin: 28px 0 10px; }

.flaeche { background: var(--s1); border: 1px solid var(--line); border-radius: var(--r); padding: 20px 22px; box-shadow: var(--schatten); }
.schmal { max-width: 420px; margin: 48px auto; }

table { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--s1); border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; }
th { text-align: left; font-size: 12px; color: var(--mute); background: var(--head); padding: 8px 10px; border-bottom: 1px solid var(--line2); font-weight: 600; }
td { padding: 8px 10px; border-top: 1px solid var(--line); vertical-align: top; }

label { display: block; font-size: 12px; color: var(--mute); margin: 14px 0 4px; }
input[type=text], input[type=password], input[type=number], input[type=email], input[type=date], input[type=datetime-local], select, textarea {
  width: 100%; font: inherit; padding: 9px 10px; border: 1px solid var(--line2); border-radius: var(--r-klein); background: var(--s1); color: var(--ink);
}
input:focus, select:focus, textarea:focus, button:focus-visible, a:focus-visible { outline: 2px solid var(--sig); outline-offset: 1px; }
.pin { font-size: 28px; letter-spacing: .4em; text-align: center; font-family: PlexMono, monospace; }

.knopf { display: inline-flex; align-items: center; gap: 6px; font: inherit; font-weight: 600; padding: 8px 14px; border: 1px solid var(--line2); background: var(--s1); color: var(--ink); border-radius: var(--r-klein); cursor: pointer; text-decoration: none; white-space: nowrap; }
.knopf:hover { border-color: var(--ink); }
.knopf--haupt:hover { background: #1d4ed8; border-color: #1d4ed8; }
.knopf--haupt { background: var(--sig); border-color: var(--sig); color: #fff; }
.knopf--leise { border-color: var(--line2); color: var(--mute); }
.zeile { display: flex; gap: 10px; align-items: center; margin-top: 18px; }

.meldung { border: 1px solid var(--line); background: var(--s2); padding: 10px 14px; margin: 0 0 16px; border-radius: var(--r-klein); box-shadow: var(--schatten); }
.meldung--error { border-color: #f1c4c4; background: var(--rot-hell); color: #7f1d1d; }
.meldung--success { border-color: #bfe0c8; background: #eef7f0; color: #14532d; }
.meldung--warning { border-color: #f1d3a8; background: #fdf6ec; color: #7c2d12; }
.hinweis { font-size: 12px; color: var(--mute); }
.fehler { color: #b91c1c; font-size: 13px; margin-top: 6px; }
.qr { background: #fff; padding: 12px; border: 1px solid var(--line); display: inline-block; }
.qr svg { display: block; width: 200px; height: 200px; }

.fuss { max-width: 1120px; margin: 0 auto; padding: 0 24px 24px; font-size: 11px; color: var(--mute); }

.stand { font-size: 12px; padding: 1px 7px; border: 1px solid var(--line2); white-space: nowrap; }
.stand--im_test, .stand--nachvalidiert { border-color: var(--warn); color: var(--warn); }
.stand--freigegeben, .stand--live { border-color: var(--ok); color: var(--ok); }
.stand--abgelehnt { color: var(--mute); text-decoration: line-through; }

@media print {
  .kopf, .nav, .leiste, .nicht-drucken, .fuss form { display: none !important; }
  body.mit-leiste { padding-left: 0 !important; }
  body { background: #fff; }
  main { padding: 0; max-width: none; }
  .flaeche, table { border-color: #999; }
}

.formular { max-width: 720px; }
.abstand { margin-top: 24px; }
.flaeche > h2:first-child { margin-top: 0; }

/* Labor */
.band { background: var(--head); border-bottom: 1px solid var(--line2); text-align: center; font-size: 12px; padding: 6px 16px; color: var(--ink); }
.reiter { display: flex; gap: 0; flex-wrap: wrap; border-bottom: 1px solid var(--line2); margin: 0 0 16px; }
.reiter a { padding: 8px 14px; text-decoration: none; color: var(--mute); font-size: 13px; border-bottom: 2px solid transparent; }
.reiter a[aria-current="page"] { color: var(--ink); border-bottom-color: var(--ink); font-weight: 600; }
.zahl { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
td input.messwert { width: 6.2em; text-align: right; padding: 6px 8px; font-variant-numeric: tabular-nums; }
.ueber { color: #b91c1c; font-weight: 600; }
.leise { color: var(--mute); font-size: 12px; }
.marke-frei { color: var(--ok); font-size: 12px; white-space: nowrap; }
.marke-offen { color: var(--warn); font-size: 12px; white-space: nowrap; }
.schritte { counter-reset: schritt; list-style: none; padding: 0; margin: 0; }
.schritte li { counter-increment: schritt; border: 1px solid var(--line); background: var(--s1); padding: 16px 18px 16px 56px; margin-bottom: 10px; position: relative; }
.schritte li::before { content: counter(schritt); position: absolute; left: 18px; top: 14px; font-weight: 700; font-size: 18px; color: var(--sig); }
.schritte h2 { margin: 0 0 6px; }
.knopfzeile { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
form.inline { display: inline; }
select.einheit { width: auto; padding: 4px 6px; font-size: 13px; }
.zwei { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 800px) { .zwei { grid-template-columns: 1fr; } }
.bericht-kopf { display: flex; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.fussnote { font-size: 12px; color: var(--mute); margin-top: 8px; }
@media print {
  .band, .reiter, .knopfzeile, select.einheit, .nur-bildschirm { display: none !important; }
}
.knopf--klein { padding: 4px 10px; font-size: 12px; }
.rollbar { overflow-x: auto; }
.einheit-wahl { display: flex; gap: 4px; align-items: center; }
.nur-druck { display: none; }
input.grund { width: 22em; }
details summary { cursor: pointer; font-weight: 600; margin: 8px 0; }
@media print { .nur-druck { display: inline; } }
.passwort-feld { position: relative; }
.passwort-feld input { padding-right: 44px; }
.passwort-auge { position: absolute; top: 1px; right: 1px; bottom: 1px; width: 40px; display: flex; align-items: center; justify-content: center; border: 0; background: transparent; color: var(--mute); cursor: pointer; padding: 0; }
.passwort-auge:hover { color: var(--ink); }

/* ---------- Seitenleiste (Bauplan Kapitel 8) */
.symbol { flex: none; }
body.mit-leiste { padding-left: var(--leiste); }
.leiste { position: fixed; inset: 0 auto 0 0; width: var(--leiste); background: var(--s1); border-right: 1px solid var(--line); display: flex; flex-direction: column; z-index: 20; }
.leiste-kopf { padding: 22px 24px 18px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; }
.leiste .marke { font-size: 15px; letter-spacing: .22em; text-transform: uppercase; color: var(--navy); }
.leiste-kunde { flex-basis: 100%; font-size: 12px; color: var(--mute); }
.leiste-schalter { display: none; margin-left: auto; font: inherit; font-size: 13px; background: transparent; border: 1px solid var(--line2); padding: 4px 10px; cursor: pointer; }
.leiste-nav { flex: 1; overflow-y: auto; padding: 0 12px 12px; display: flex; flex-direction: column; }
.leiste-nav .gruppe { font-size: 12px; font-weight: 600; color: var(--mute); margin: 20px 12px 6px; }
.leiste-nav a { display: flex; align-items: center; padding: 8px 12px; color: var(--ink); text-decoration: none; font-size: 14px; }
.leiste-nav a:hover { background: var(--s2); }
.leiste-nav a[aria-current="page"] { background: var(--wahl); color: var(--navy); font-weight: 600; }
.nav-zahl { margin-left: auto; font-variant-numeric: tabular-nums; font-size: 13px; color: var(--mute); padding-left: 8px; }
a[aria-current="page"] .nav-zahl { color: var(--ink); }
.leiste-person { padding: 14px 24px 18px; border-top: 1px solid var(--line); }
.person-zeile { display: flex; align-items: center; gap: 12px; }
.person-text { display: flex; flex-direction: column; min-width: 0; font-size: 12px; color: var(--mute); }
.person-text b { color: var(--ink); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kuerzel { flex: none; width: 34px; height: 34px; background: var(--navy); color: #fff; font-weight: 600; font-size: 12px; display: inline-flex; align-items: center; justify-content: center; }
.person-fuss { display: flex; justify-content: space-between; align-items: center; margin-top: 12px; font-size: 12px; color: var(--mute); }
.textknopf { font: inherit; font-size: 12px; background: none; border: 0; padding: 0; color: var(--navy); text-decoration: underline; cursor: pointer; }
.arbeitsflaeche { min-height: 100vh; display: flex; flex-direction: column; }
.arbeitsflaeche main { flex: 1; width: 100%; }
body.mit-leiste main, body.mit-leiste .fuss { max-width: 1240px; margin-left: 0; padding-left: 36px; padding-right: 36px; }
.oberleiste { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 36px; background: var(--s1); border-bottom: 1px solid var(--line); min-height: 58px; }
.pfad { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--mute); flex-wrap: wrap; }
.pfad a { color: var(--mute); text-decoration: none; }
.pfad a:hover { color: var(--ink); }
.pfad [aria-current="page"] { color: var(--ink); font-weight: 600; }
.trenner { color: var(--line2); }
.oberleiste-rechts { display: flex; align-items: center; gap: 20px; }
.blaettern { display: flex; gap: 16px; font-size: 13px; }
.blaettern a { color: var(--mute); text-decoration: none; }
.blaettern a:hover { color: var(--ink); }
.schnellsuche { position: relative; width: 260px; }
.schnellsuche input[type=search] { padding-right: 44px; }
.schnellsuche kbd { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); font-family: Plex, sans-serif; font-size: 12px; color: var(--mute); }

/* ---------- Seitenkopf, Karten, Listen (Mechanik von SalesSuite, Optik nach Bauplan) */
.seitenkopf { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.anzahl { font-size: 13px; font-weight: 400; color: var(--mute); margin-left: 6px; }
.karte { background: var(--s1); border: 1px solid var(--line); }
.karte table { border: 0; }
.werkzeugleiste { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px 10px; flex-wrap: wrap; }
.suchfeld { position: relative; flex: 0 1 320px; }
.suchfeld .symbol { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: var(--mute); }
input[type=search] { width: 100%; font: inherit; padding: 8px 10px; border: 1px solid var(--line2); border-radius: 0; background: var(--s1); color: var(--ink); -webkit-appearance: none; }
.suchfeld input[type=search] { padding-left: 34px; }
.phasen { display: flex; gap: 0; flex-wrap: wrap; padding: 0 16px; border-bottom: 1px solid var(--line2); }
.phasen a { display: inline-flex; align-items: center; gap: 8px; padding: 10px 14px; color: var(--mute); text-decoration: none; font-size: 13px; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.phasen a:hover { color: var(--ink); }
.phasen a[aria-current="page"] { color: var(--ink); font-weight: 600; border-bottom-color: var(--ink); }
.zaehler { font-variant-numeric: tabular-nums; font-size: 12px; color: var(--mute); font-weight: 400; }
.zaehler--arbeit { color: var(--warn); }
.zaehler--freigabe { color: var(--sig); }
.zaehler--frei { color: var(--ok); }
table.liste th { background: var(--head); }
table.liste td { vertical-align: middle; }
table.liste tbody tr:hover { background: var(--s2); }
table.liste td.m { white-space: nowrap; }
.zeilenlink { font-weight: 600; text-decoration: none; }
.zeilenlink:hover { text-decoration: underline; }
.rechts { text-align: right; }
a.sortieren { color: inherit; text-decoration: none; }
a.sortieren:hover { color: var(--ink); }
.listenfuss { padding: 10px 16px; font-size: 12px; color: var(--mute); border-top: 1px solid var(--line); }
.fortschritt { display: flex; align-items: center; gap: 10px; white-space: nowrap; }
.balken { display: inline-flex; width: 96px; height: 4px; background: var(--head); overflow: hidden; }
.teil-frei { background: var(--ok); }
.teil-gemessen { background: var(--line2); }
.b0 { width: 0; } .b1 { width: 10%; } .b2 { width: 20%; } .b3 { width: 30%; } .b4 { width: 40%; } .b5 { width: 50%; }
.b6 { width: 60%; } .b7 { width: 70%; } .b8 { width: 80%; } .b9 { width: 90%; } .b10 { width: 100%; }
.leerzustand { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 48px 16px; color: var(--mute); text-align: center; }
.leerzustand b { color: var(--ink); font-size: 15px; }
.leer-rahmen { fill: var(--s2); stroke: var(--line); }
.leer-linie { fill: none; stroke: var(--line2); stroke-width: 4; stroke-linecap: square; }

/* ---------- Übersicht */
.begruessung { margin-bottom: 8px; }
.begruessung h1 { margin: 0; }
.begruessung .unter { margin: 2px 0 0; }
h2.abschnitt { font-size: 16px; color: var(--ink); font-weight: 600; margin: 32px 0 12px; }

/* ---------- Probe (Bauplan: Freigabe einer Probe) */
.probenkopf { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid var(--line); }
.probenkopf h1 { font-size: 26px; margin-bottom: 14px; }
.eckdaten { display: flex; flex-wrap: wrap; margin: 0; }
.eckdaten > div { padding: 0 22px; border-left: 1px solid var(--line); }
.eckdaten > div:first-child { padding-left: 0; border-left: 0; }
.eckdaten dt { font-size: 12px; color: var(--mute); }
.eckdaten dd { margin: 2px 0 0; font-size: 14px; }
.probenkopf-aktionen { display: flex; align-items: center; gap: 10px; }
.offen-hinweis { color: var(--warn); font-size: 13px; font-weight: 600; margin-right: 6px; }
.probe-raster { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 28px; align-items: start; }
.messfelder { white-space: nowrap; }
.seitenspalte { border-left: 1px solid var(--line); padding-left: 24px; }
.spaltentitel { font-size: 14px; color: var(--ink); font-weight: 600; margin: 0 0 10px; }
.seitenspalte > section + section { margin-top: 26px; }
.regel { display: flex; gap: 10px; margin: 0; }
.regel-zeichen { color: var(--ok); font-weight: 700; }
.regel-zeichen--warn { color: var(--warn); }
.probenprotokoll { list-style: none; margin: 0; padding: 0; font-size: 13px; }
.probenprotokoll li { display: grid; grid-template-columns: 96px 1fr; gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--line); }
.probenprotokoll time { color: var(--mute); white-space: nowrap; }

/* ---------- schmale Bildschirme */
@media (max-width: 1720px) { .probe-raster { grid-template-columns: 1fr; } .seitenspalte { border-left: 0; padding-left: 0; border-top: 1px solid var(--line); padding-top: 18px; display: grid; grid-template-columns: 1fr 1.4fr; gap: 0 36px; } .seitenspalte > section + section { margin-top: 0; } }
@media (max-width: 800px) { .seitenspalte { display: block; } .seitenspalte > section + section { margin-top: 26px; } }
@media (max-width: 900px) {
  body.mit-leiste { padding-left: 0; }
  .leiste { position: sticky; top: 0; width: auto; inset: auto; border-right: 0; border-bottom: 1px solid var(--line); }
  .leiste-kopf { padding: 14px 16px; }
  .leiste-schalter { display: inline-block; }
  .leiste-nav, .leiste-person { display: none; }
  .leiste.offen .leiste-nav, .leiste.offen .leiste-person { display: flex; flex-direction: column; }
  .leiste.offen { max-height: 100vh; overflow-y: auto; }
  .oberleiste { padding: 10px 16px; flex-wrap: wrap; }
  .schnellsuche { width: 100%; }
  .schnellsuche kbd { display: none; }
  body.mit-leiste main { padding: 20px 16px 48px; }
}
@media (max-width: 1180px) { .nur-breit { display: none; } }
@media (max-width: 700px) { .werkzeugleiste .knopf--haupt { width: 100%; justify-content: center; } .eckdaten > div { padding: 0 12px 0 0; border-left: 0; margin-bottom: 8px; } }

/* ---------- Rechenregel mit Live-Prüfung */
.formular--breit { max-width: 1080px; }
.regel-raster { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px; align-items: start; }
.regel-vorschau { border-left: 1px solid var(--line); padding-left: 28px; margin-top: 14px; }
.pruefliste { list-style: none; margin: 0 0 12px; padding: 0; }
.pruef-fehler { color: var(--rot); padding: 6px 0; border-bottom: 1px solid var(--line); }
.pruef-ok { color: var(--ok); font-weight: 600; margin: 0 0 12px; }
table.probelauf td input.messwert { width: 8em; }
.probe-ergebnis { display: flex; align-items: baseline; gap: 10px; padding: 14px 0; border-bottom: 1px solid var(--line); margin-bottom: 8px; }
.probe-ergebnis b { font-size: 24px; font-variant-numeric: tabular-nums; }
@media (max-width: 900px) { .regel-raster { grid-template-columns: 1fr; } .regel-vorschau { border-left: 0; padding-left: 0; border-top: 1px solid var(--line); padding-top: 14px; } }

/* ---------- Suche oben */
.suchtreffer-liste { display: none; position: absolute; top: calc(100% + 4px); right: 0; width: 420px; max-width: calc(100vw - 32px); max-height: 70vh; overflow-y: auto; background: var(--s1); border: 1px solid var(--line2); z-index: 30; }
.schnellsuche.offen .suchtreffer-liste { display: block; }
.suchgruppe-titel { font-size: 12px; font-weight: 600; color: var(--mute); padding: 10px 14px 4px; }
.suchtreffer { display: flex; justify-content: space-between; gap: 12px; padding: 8px 14px; color: var(--ink); text-decoration: none; }
.suchtreffer span { color: var(--mute); font-size: 12px; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.suchtreffer b { font-weight: 600; white-space: nowrap; }
.suchtreffer:hover, .suchtreffer.aktiv { background: var(--wahl); }
.suchtreffer--alle { border-top: 1px solid var(--line); }
.suchleer { padding: 14px; color: var(--mute); }

/* ---------- Klickbare Zeilen */
tr.klickbar { cursor: pointer; }
tr.klickbar:focus-visible { outline: 2px solid var(--sig); outline-offset: -2px; }

/* ---------- Auswertung */
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.karte--innen { padding: 18px 20px; }
.spaltentitel--innen { padding: 16px 16px 0; }
.auswertung-raster { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 16px; }
table.rueckstand { border: 0; }
table.rueckstand th { background: none; text-transform: none; letter-spacing: 0; font-size: 13px; color: var(--ink); font-weight: 400; border: 0; padding: 7px 10px 7px 0; white-space: nowrap; width: 1%; }
table.rueckstand td { border: 0; padding: 7px 0; vertical-align: middle; }
.balken--breit { width: 100%; height: 14px; }
.teil-messung { background: var(--warn); opacity: .75; }
.teil-freigabe { background: var(--sig); }
.legende { font-size: 12px; color: var(--mute); display: flex; align-items: center; gap: 6px; margin: 10px 0 0; }
.punkt { display: inline-block; width: 10px; height: 10px; margin-left: 8px; }
.punkt:first-child { margin-left: 0; }
.punkt--messung { background: var(--warn); opacity: .75; }
.punkt--freigabe { background: var(--sig); }
.kennzeile { margin: 14px 0 0; padding-top: 12px; border-top: 1px solid var(--line); }
.warnzeile { color: var(--warn); }
.wochen { display: flex; align-items: flex-end; gap: 6px; height: 170px; padding-top: 8px; }
.woche { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; gap: 4px; min-width: 0; }
.woche-saeule { width: 100%; max-width: 28px; background: var(--navy); }
.woche-zahl { font-size: 11px; color: var(--mute); font-variant-numeric: tabular-nums; }
.woche-name { font-size: 10px; color: var(--mute); white-space: nowrap; }
.h0 { height: 1px; background: var(--line); } .h1 { height: 10%; } .h2 { height: 20%; } .h3 { height: 30%; } .h4 { height: 40%; } .h5 { height: 50%; }
.h6 { height: 60%; } .h7 { height: 70%; } .h8 { height: 80%; } .h9 { height: 90%; } .h10 { height: 100%; }
.wochen .woche-saeule { max-height: 120px; }
.verlauf-kopf { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.verlauf-kopf .spaltentitel { margin: 0; }
.verlauf-wahl { display: flex; gap: 8px; flex-wrap: wrap; }
.verlauf-wahl select { width: auto; min-width: 160px; }
.diagramm { margin-top: 12px; overflow-x: auto; }
.diagramm svg { width: 100%; min-width: 520px; height: auto; display: block; }
.gitter { stroke: var(--line); stroke-width: 1; }
.achse { font-size: 11px; fill: var(--mute); font-family: Plex, sans-serif; }
.grenzlinie { stroke: var(--rot); stroke-width: 1.2; stroke-dasharray: 5 4; }
.grenztext { font-size: 11px; fill: var(--rot); font-family: Plex, sans-serif; }
.verlaufslinie { fill: none; stroke: var(--navy); stroke-width: 1.6; }
.messpunkt { fill: var(--s1); stroke: var(--navy); stroke-width: 1.6; cursor: pointer; }
.messpunkt:hover { fill: var(--navy); }
.messpunkt--ueber { fill: var(--rot); stroke: var(--rot); }
.messpunkt--bg { stroke-dasharray: 2 2; }
@media (max-width: 1000px) { .auswertung-raster { grid-template-columns: 1fr; } }
table.rueckstand td:nth-child(2) { width: 100%; }
table.rueckstand td.zahl { padding-left: 12px; }

/* ---------- Handy: Tabellen als Karten, Leiste und Oberleiste */
.probe-raster, .auswertung-raster { min-width: 0; }
@media (max-width: 1720px) { .probe-raster { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 1000px) { .auswertung-raster { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 900px) {
  .blaettern { display: none; }
  .oberleiste-rechts { width: 100%; }
}
@media (max-width: 700px) {
  table.stapeln, table.stapeln tbody { display: block; border: 0; background: none; }
  table.stapeln thead { display: none; }
  table.stapeln tr { display: block; background: var(--s1); border: 1px solid var(--line); margin-bottom: 10px; padding: 6px 12px; }
  table.stapeln tbody tr:hover { background: var(--s1); }
  table.stapeln td { display: grid; grid-template-columns: minmax(96px, 38%) 1fr; gap: 10px; align-items: baseline; border: 0; border-top: 1px solid var(--line); padding: 7px 0; text-align: left; white-space: normal; }
  table.stapeln td:first-child { border-top: 0; display: block; font-size: 15px; padding-top: 8px; }
  table.stapeln td::before { content: attr(data-titel); font-size: 12px; color: var(--mute); }
  table.stapeln td:first-child::before, table.stapeln td:not([data-titel])::before, table.stapeln td[data-titel=""]::before { content: none; }
  table.stapeln td:not([data-titel]), table.stapeln td[data-titel=""] { display: block; }
  table.stapeln td:empty, table.stapeln td.nur-breit { display: none; }
  .diagramm svg { min-width: 0; }
  .diagramm .achse, .diagramm .grenztext { font-size: 18px; }
  table.stapeln td.zahl { text-align: left; }
  table.stapeln td.messfelder { grid-template-columns: minmax(96px, 38%) 1fr 1fr auto; }
  table.stapeln td input.messwert { width: 100%; min-height: 44px; font-size: 16px; }
  .karte table.stapeln tr { margin: 10px; }
  .phasen { overflow-x: auto; flex-wrap: nowrap; }
  .phasen a { white-space: nowrap; }
  .probenkopf h1 { font-size: 22px; }
  .probenkopf-aktionen { width: 100%; }
  .probenkopf-aktionen .knopf--haupt, .probenkopf-aktionen form { flex: 1; }
  .probenkopf-aktionen form .knopf { width: 100%; justify-content: center; }
  .woche-name { font-size: 9px; }
  .woche:nth-child(even) .woche-name { visibility: hidden; }
  .verlauf-wahl, .verlauf-wahl select { width: 100%; }
  .seitenkopf { flex-wrap: wrap; }
  .zeile { flex-wrap: wrap; }
  .knopf { min-height: 44px; }
  .knopf--klein { min-height: 36px; }
  input[type=text], input[type=password], input[type=number], input[type=email], input[type=search], select, textarea { font-size: 16px; }
}

/* ---------- Pflichtbegründung und Abschluss */
.begruendung-zeile td { border-top: 0; padding-top: 0; }
input.begruendung { border-color: var(--warn); }
.freigabe-form { display: flex; gap: 6px; justify-content: flex-end; align-items: center; }
.freigabe-form input.begruendung { width: 220px; padding: 5px 8px; font-size: 13px; }
.fertig-band { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; border: 1px solid #bfe0c8; background: #eef7f0; background: var(--s1); padding: 12px 16px; margin-bottom: 18px; }
@media (max-width: 700px) {
  table.stapeln tr.begruendung-zeile { margin-top: -10px; border-top: 0; }
  table.stapeln tr.begruendung-zeile td:first-child { display: none; }
  .freigabe-form { flex-wrap: wrap; justify-content: flex-start; }
  .freigabe-form input.begruendung { width: 100%; }
}

/* ---------- Benutzerverwaltung */
.plaetze { background: var(--s1); border: 1px solid var(--line); padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.plaetze--voll { border-color: var(--warn); border-left-width: 3px; }
.plaetze .hinweis { margin: 0; }
.teil-platz { background: var(--navy); }
.plaetze--voll .teil-platz { background: var(--warn); }
.aktionsraster { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.aktionsraster h2 { margin-top: 0; }
.link-zeile { display: flex; gap: 8px; }
.link-zeile input { font-family: PlexMono, monospace; font-size: 13px; }
.formular .plaetze { margin: 0 0 8px; }

/* Seitenfenster (Mechanik wie SalesSuite, Optik nach Bauplan: Haarlinie statt Schatten) */
.fenster { position: fixed; top: 0; right: 0; bottom: 0; width: clamp(560px, 46vw, 780px); background: var(--s2); border-left: 1px solid var(--line2); z-index: 40; display: flex; flex-direction: column; outline: 0; }
.fenster[hidden] { display: none; }
.fenster[aria-busy="true"] .fenster-inhalt { opacity: .55; transition: opacity .12s; }
.fenster-innen { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.fenster-kopf { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; padding: 16px 20px 14px; background: var(--s1); border-bottom: 1px solid var(--line); }
.fenster-titel { min-width: 0; }
.fenster-titel h2 { margin: 0; font-size: 20px; font-weight: 700; }
.fenster-titel .leise { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fenster-aktionen { display: flex; gap: 8px; align-items: center; flex-shrink: 0; }
.knopf--symbol { padding: 8px; min-width: 36px; min-height: 36px; justify-content: center; }
.knopf--symbol .symbol { display: block; }
.fenster-reiter { display: flex; gap: 0; padding: 0 12px; background: var(--s1); border-bottom: 1px solid var(--line2); overflow-x: auto; }
.fenster-reiter a { padding: 11px 12px 9px; text-decoration: none; color: var(--mute); font-size: 13px; border-bottom: 2px solid transparent; white-space: nowrap; }
.fenster-reiter a:hover { color: var(--ink); }
.fenster-reiter a[aria-selected="true"] { color: var(--ink); border-bottom-color: var(--ink); font-weight: 600; }
.fenster-inhalt { flex: 1; overflow-y: auto; padding: 16px 20px 40px; overscroll-behavior: contain; }
.fenster-inhalt > .meldung { margin-bottom: 12px; }
.abschnitt-karte { background: var(--s1); border: 1px solid var(--line); margin: 0 0 12px; }
.abschnitt-kopf { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin: 0; padding: 11px 16px; font-size: 14px; font-weight: 600; border-bottom: 1px solid var(--line); }
.abschnitt-kopf a { color: var(--ink); text-decoration: none; }
.abschnitt-kopf a:hover { text-decoration: underline; }
details.abschnitt-karte > summary { cursor: pointer; list-style: none; }
details.abschnitt-karte > summary::-webkit-details-marker { display: none; }
details.abschnitt-karte > summary::after { content: "+"; color: var(--mute); font-weight: 400; font-size: 18px; line-height: 1; }
details.abschnitt-karte[open] > summary::after { content: "−"; }
details.abschnitt-karte:not([open]) > summary { border-bottom: 0; }
.abschnitt-rumpf { padding: 14px 16px; margin: 0; }
.felder { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 24px; padding: 14px 16px; margin: 0; }
.felder dt { font-size: 12px; color: var(--mute); }
.felder dd { margin: 2px 0 0; }
.felder-breit { grid-column: 1 / -1; }
.stand-gross { display: grid; gap: 10px; }
.stand-zahlen { display: flex; gap: 20px; flex-wrap: wrap; font-size: 13px; color: var(--mute); }
.stand-zahlen b { color: var(--ink); font-variant-numeric: tabular-nums; }
.naechste { list-style: none; margin: 0; padding: 0; }
.schritt { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 11px 16px; border-top: 1px solid var(--line); }
.schritt:first-child { border-top: 0; }
.schritt a { font-weight: 600; white-space: nowrap; }
.schritt--warn { background: #fdf6ec; }
.probenliste { list-style: none; margin: 0; padding: 0; }
.probenliste li + li { border-top: 1px solid var(--line); }
.probenzeile { display: grid; gap: 4px; padding: 11px 16px; color: var(--ink); text-decoration: none; }
.probenzeile:hover { background: var(--s2); }
.probenzeile-kopf { display: flex; gap: 10px; align-items: baseline; }
.fenster-tabelle { border: 0; table-layout: fixed; }
.fenster-tabelle th:nth-child(1) { width: 28%; } .fenster-tabelle th:nth-child(2) { width: 22%; } .fenster-tabelle th:nth-child(3) { width: 14%; }
.fenster-tabelle td { vertical-align: middle; }
.freigabe-inline { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.freigabe-inline input.begruendung { width: 180px; padding: 5px 8px; font-size: 13px; }
.menue { position: relative; }
.menue > summary { list-style: none; }
.menue > summary::-webkit-details-marker { display: none; }
.menue-liste { position: absolute; right: 0; top: calc(100% + 4px); min-width: 210px; background: var(--s1); border: 1px solid var(--line2); z-index: 50; display: flex; flex-direction: column; padding: 4px 0; }
.menue-liste a, .menue-liste button { display: block; padding: 9px 14px; text-align: left; background: none; border: 0; font: inherit; font-size: 13px; color: var(--ink); text-decoration: none; cursor: pointer; }
.menue-liste a:hover, .menue-liste button:hover, .menue-liste a:focus-visible, .menue-liste button:focus-visible { background: var(--head); outline: 0; }
tr.gewaehlt > td { background: var(--sig-hell); }
.nav-zahl:empty { display: none; }
@media (max-width: 1100px) { .fenster { width: min(100vw, 640px); } }
@media (max-width: 700px) {
  .fenster { width: 100vw; border-left: 0; }
  body.fenster-offen { overflow: hidden; }
  .fenster-kopf { flex-wrap: wrap; padding: 12px 16px; }
  .fenster-aktionen { width: 100%; }
  .fenster-aktionen .knopf--haupt { flex: 1; justify-content: center; }
  .fenster-inhalt { padding: 12px 12px 40px; }
  .felder { grid-template-columns: 1fr; }
  .freigabe-inline input.begruendung { width: 100%; }
}

/* Logo, Fußzeile, Fehlerseiten */
.marke { display: inline-flex; align-items: center; gap: 10px; }
.marke-bild { display: block; width: 28px; height: 28px; }
.fuss { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.fuss-links { display: flex; gap: 14px; }
.fuss-links a { color: var(--mute); }
.fehlerseite { max-width: 560px; margin: 64px auto; }
.fehlerseite h1 { font-size: 26px; margin-bottom: 8px; }
.fehlerseite .knopfzeile { margin-top: 20px; }

/* Prüfbericht */
.bericht-aktionen { display: flex; gap: 8px; flex-wrap: wrap; align-items: flex-start; }
.bericht-stand { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; background: var(--s1); border: 1px solid var(--line); padding: 12px 16px; margin: 0 0 20px; }
.bericht-stand--ok { border-color: #bfe0c8; background: #eef7f0; }
.bericht-stand--warn { border-color: #f1d3a8; background: #fdf6ec; }
.ausstellen-form { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.ausstellen-form input { width: 320px; }

/* Zwischenzustände */
.ladebalken { position: fixed; top: 0; left: 0; right: 0; height: 2px; z-index: 100; background: var(--sig); transform: scaleX(0); transform-origin: left; opacity: 0; pointer-events: none; }
.ladebalken.an { opacity: 1; animation: laden 2.4s ease-out forwards; }
@keyframes laden { from { transform: scaleX(0); } 60% { transform: scaleX(.7); } to { transform: scaleX(.92); } }
.knopf[aria-busy="true"], a[aria-busy="true"] { cursor: progress; }
.knopf[aria-busy="true"]::after { content: ""; width: 11px; height: 11px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: drehen .7s linear infinite; }
@keyframes drehen { to { transform: rotate(360deg); } }
.knopf:disabled { opacity: .75; }
.platzhalter-karte { padding: 16px; display: grid; gap: 10px; }
.platzhalter { display: block; height: 10px; background: var(--head); animation: puls 1.2s ease-in-out infinite; }
.platzhalter.b4 { width: 40%; } .platzhalter.b6 { width: 60%; } .platzhalter.b9 { width: 90%; }
@keyframes puls { 50% { opacity: .5; } }
@media (prefers-reduced-motion: reduce) { .ladebalken.an, .platzhalter, .knopf[aria-busy="true"]::after { animation: none; } .ladebalken.an { transform: scaleX(.6); } }
.sitzung-hinweis { position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); z-index: 90; display: flex; gap: 14px; align-items: center; background: var(--s1); border: 1px solid var(--ink); padding: 12px 16px; max-width: calc(100vw - 32px); }
.sitzung-hinweis[hidden] { display: none; }
@media (max-width: 700px) { .sitzung-hinweis { flex-direction: column; align-items: stretch; } .ausstellen-form input { width: 100%; } }
textarea { resize: vertical; min-height: 68px; line-height: 1.5; }

/* Stammdaten in Einrichtungsreihenfolge */
.einrichtung ol { list-style: none; margin: 0 0 12px; padding: 0; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border: 1px solid var(--line); background: var(--s1); }
.einrichtung li + li { border-left: 1px solid var(--line); }
.einrichtung a { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; text-decoration: none; color: var(--mute); height: 100%; }
.einrichtung a:hover { background: var(--s2); color: var(--ink); }
.einrichtung a[aria-current="step"] { color: var(--ink); box-shadow: inset 0 -2px 0 var(--ink); background: var(--s2); }
.einrichtung-nr { flex: none; width: 22px; height: 22px; border: 1px solid var(--line2); display: grid; place-items: center; font-size: 12px; font-variant-numeric: tabular-nums; }
.einrichtung a[aria-current="step"] .einrichtung-nr { border-color: var(--ink); background: var(--ink); color: #fff; }
.einrichtung-text { display: grid; font-size: 13px; line-height: 1.3; min-width: 0; overflow-wrap: anywhere; }
.einrichtung-zahl { font-size: 12px; color: var(--mute); font-variant-numeric: tabular-nums; }
.zweck { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; flex-wrap: wrap; margin: 0 0 16px; color: var(--mute); }
.zweck p { margin: 0; max-width: 760px; }
.zweck b { color: var(--ink); }
.zweck a { font-weight: 600; white-space: nowrap; }
@media (max-width: 1180px) { .einrichtung ol { grid-template-columns: repeat(4, minmax(0, 1fr)); } .einrichtung li:nth-child(5) { border-left: 0; } .einrichtung li:nth-child(n+5) { border-top: 1px solid var(--line); } }
@media (max-width: 700px) { .einrichtung ol { grid-template-columns: repeat(2, minmax(0, 1fr)); } .einrichtung li { border-left: 0 !important; border-top: 1px solid var(--line); } .einrichtung li:nth-child(even) { border-left: 1px solid var(--line) !important; } .einrichtung li:nth-child(-n+2) { border-top: 0; } }

/* Auftragsseite: derselbe Inhalt wie das Seitenfenster, in voller Breite */
.auftrag-seite .fenster-innen { height: auto; }
.auftrag-seite .fenster-kopf { background: transparent; border-bottom: 0; padding: 0 0 12px; }
.auftrag-seite .fenster-titel h1 { margin: 0; font-size: 24px; }
.auftrag-seite .fenster-reiter { background: transparent; padding: 0; }
.auftrag-seite .fenster-inhalt { overflow: visible; padding: 16px 0 0; }

/* Benutzer wie SalesSuite: Plätze-Marke, Rollenmarken, Mailstand */
.plaetze-marke { font-size: 12px; padding: 5px 10px; border: 1px solid var(--warn); color: var(--warn); background: #fff8eb; white-space: nowrap; }
.plaetze-marke--voll { border-color: var(--rot); color: var(--rot); background: #fdf0f0; }
.namenszeile { display: flex; gap: 10px; align-items: center; }
.kuerzel--klein { width: 30px; height: 30px; font-size: 11px; flex: none; }
.rollenmarke { font-size: 12px; padding: 2px 8px; border: 1px solid var(--line2); white-space: nowrap; }
.rollenmarke--leitung { border-color: var(--navy); color: var(--navy); }
.rollenmarke--admin, .rollenmarke--betreiber { border-color: var(--ink); color: var(--ink); }
.rollenmarke--labor { border-color: var(--sig); color: var(--sig); }
.mailstand { display: flex; justify-content: space-between; gap: 12px; align-items: center; flex-wrap: wrap; padding: 9px 16px; border-top: 1px solid var(--line); font-size: 13px; color: var(--mute); }
.mailstand--aus { background: #fdf6ec; color: #7c2d12; }
.knopfzeile--rechts { justify-content: flex-end; }
.rollenhilfe { margin: 16px 0 0; }
.rollenhilfe summary { cursor: pointer; color: var(--navy); font-weight: 600; font-size: 13px; }
.rollenhilfe table { margin-top: 8px; }

/* Hilfe */
.hilfe-knopf { display: inline-grid; place-items: center; width: 36px; height: 36px; border: 1px solid var(--line2); color: var(--ink); background: var(--s1); }
.hilfe-knopf:hover { border-color: var(--ink); }
.leiste-hilfe { display: flex; align-items: center; gap: 8px; margin: 0 12px 10px; padding: 9px 12px; border: 1px solid var(--line); color: var(--navy); text-decoration: none; font-size: 13px; font-weight: 600; background: var(--s1); }
.leiste-hilfe:hover, .leiste-hilfe[aria-current="page"] { border-color: var(--navy); }
.hilfe-kopf { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; flex-wrap: wrap; }
.hilfe-suche input { max-width: 520px; margin: 0 0 8px; }
.hilfe-gruppe h2 { margin: 22px 0 10px; }
.hilfe-karten { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.hilfe-karte { display: grid; gap: 4px; padding: 14px 16px; background: var(--s1); border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); color: var(--ink); text-decoration: none; }
.hilfe-karte:hover { background: var(--s2); }
.hilfe-karte span { color: var(--mute); font-size: 13px; }
.hilfe-karte[hidden], .hilfe-gruppe[hidden] { display: none; }
.hilfe-raster { display: grid; grid-template-columns: 240px minmax(0, 760px); gap: 40px; }
.hilfe-nav { display: grid; align-content: start; gap: 2px; font-size: 13px; position: sticky; top: 16px; }
.hilfe-nav .gruppe { font-size: 12px; font-weight: 600; color: var(--mute); margin: 14px 0 4px; }
.hilfe-nav a { color: var(--ink); text-decoration: none; padding: 4px 8px; }
.hilfe-nav a[aria-current="page"] { background: var(--wahl); font-weight: 600; }
.hilfe-artikel { line-height: 1.6; font-size: 15px; }
.hilfe-artikel h1 { font-size: 26px; }
.hilfe-artikel h2 { font-size: 18px; margin: 30px 0 8px; }
.hilfe-artikel h3 { font-size: 15px; margin: 20px 0 6px; }
.hilfe-artikel ol, .hilfe-artikel ul { padding-left: 22px; }
.hilfe-artikel li { margin: 0 0 6px; }
.hilfe-artikel .ui { font-weight: 600; white-space: nowrap; }
.hilfe-hinweis { border: 1px solid #c9dafb; background: var(--sig-hell); padding: 10px 14px; margin: 14px 0; }
.hilfe-bild { margin: 14px 0 22px; }
.hilfe-bild img { display: block; max-width: 100%; height: auto; border: 1px solid var(--line); }
.hilfe-bild figcaption { font-size: 12px; color: var(--mute); margin-top: 6px; }
.hilfe-inhalt { display: grid; gap: 2px; border: 1px solid var(--line); background: var(--s1); padding: 10px 14px; margin: 0 0 18px; font-size: 13px; }
.hilfe-weiter { display: flex; justify-content: space-between; gap: 16px; border-top: 1px solid var(--line); margin-top: 32px; padding-top: 12px; font-weight: 600; }
.hilfe-fenster { position: fixed; left: 12px; top: 12px; bottom: 12px; width: min(460px, calc(100vw - 24px)); z-index: 60; background: var(--s1); border: 1px solid var(--line2); display: flex; flex-direction: column; outline: 0; }
.hilfe-fenster[hidden] { display: none; }
.hilfe-fenster-innen { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.hilfe-fenster-kopf { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.hilfe-fenster-titel { flex: 1; font-size: 14px; }
.hilfe-fenster-aktionen { display: flex; gap: 6px; }
.hilfe-fenster-inhalt { flex: 1; overflow-y: auto; padding: 18px 22px 32px; }
.hilfe-fenster .hilfe-artikel { font-size: 14px; }
.hilfe-fenster .hilfe-artikel h1 { font-size: 21px; }
@media (max-width: 1000px) { .hilfe-raster { grid-template-columns: 1fr; } .hilfe-nav { position: static; display: none; } }

/* ---------- Durchgang 29.10.: helle Fläche, Zurück, überschrittene Zeilen, Suchfelder */
.zurueck { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--mute); text-decoration: none; margin: 0 0 10px; }
.zurueck:hover { color: var(--ink); }
.zurueck .symbol { width: 16px; height: 16px; }
.titel-zeile { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.statusmarke { display: inline-flex; align-items: center; font-size: 12px; font-weight: 600; padding: 2px 8px; border: 1px solid var(--line2); color: var(--mute); background: var(--s1); }
.statusmarke--arbeit { border-color: #f1d3a8; background: #fdf6ec; color: var(--warn); }
.statusmarke--freigabe { border-color: #c9dafb; background: var(--sig-hell); color: var(--sig); }
.statusmarke--frei { border-color: #bfe0c8; background: #eef7f0; color: var(--ok); }
tr.ueber-zeile > td { background: var(--rot-hell); }
tr.ueber-zeile > td .ueber, tr.ueber-zeile > td.ueber { color: var(--rot); }
table.liste tbody tr.ueber-zeile:hover > td { background: #fbdcdc; }
.filterleiste { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; padding: 14px 16px 10px; }
.filterleiste .suchfeld { flex: 1 1 280px; }
.filterleiste select { width: auto; min-width: 180px; padding: 8px 10px; }
.filterleiste .knopf { padding: 7px 12px; }
.suche-leer { padding: 28px 16px; text-align: center; color: var(--mute); }
[data-suche-zeile][hidden] { display: none; }
.titel-zeile h1, .titel-zeile h2 { margin: 0; }
.fenster-titel .titel-zeile { margin-bottom: 2px; }
.suchauswahl { position: relative; }
.suchauswahl-zeile { display: flex; gap: 6px; align-items: stretch; position: relative; }
.suchauswahl-feld { flex: 1; }
.suchauswahl-marke { position: absolute; right: 52px; top: 50%; transform: translateY(-50%); font-size: 11px; font-weight: 600; color: var(--ok); border: 1px solid #bfe0c8; background: #eef7f0; padding: 0 6px; }
.suchauswahl-plus { font-size: 20px; line-height: 1; width: 40px; justify-content: center; padding: 0; }
.suchauswahl-liste { position: absolute; left: 0; right: 0; top: calc(100% + 2px); z-index: 30; margin: 0; padding: 4px 0; list-style: none; background: var(--s1); border: 1px solid var(--line2); max-height: 280px; overflow-y: auto; box-shadow: 0 8px 24px rgba(15, 23, 42, .10); }
.suchauswahl-liste li { padding: 8px 12px; cursor: pointer; display: flex; justify-content: space-between; gap: 12px; font-size: 14px; }
.suchauswahl-liste li.aktiv { background: var(--sig-hell); }
.suchauswahl-zusatz { font-size: 12px; color: var(--mute); white-space: nowrap; }
.suchauswahl-neu { color: var(--sig); font-weight: 600; border-top: 1px solid var(--line); }
.suchauswahl-leer { color: var(--mute); cursor: default; }
.speicherleiste { position: sticky; bottom: 0; z-index: 5; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 0; margin-top: 6px; background: var(--bg); border-top: 1px solid var(--line); }
.speicherleiste .ungespeichert { color: var(--warn); font-weight: 600; }
input.messwert.geaendert { border-color: var(--warn); background: #fffaf2; }
.filterleiste--seite { padding: 0 0 18px; }
.filterleiste--seite a { font-size: 13px; }
.auswahlgruppe { border: 0; padding: 0; margin: 0 0 18px; }
.auswahlgruppe legend { font-weight: 600; font-size: 14px; padding: 0; margin-bottom: 8px; }
.auswahl { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--line); margin: 0 0 -1px; font-size: 14px; color: var(--ink); cursor: pointer; }
.auswahl:has(input:checked) { background: var(--sig-hell); border-color: #c9dafb; position: relative; }
.auswahl input { margin-top: 3px; }
.dreier { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 14px; }
.dreier label { margin-top: 0; }
@media (max-width: 700px) { .dreier { grid-template-columns: 1fr; } }
/* Erweiterungen wie LastPass hängen eigene Elemente in Tabellenzeilen; der Browser macht daraus eine
   zusätzliche Zelle und alle Spalten rutschen. In einer Zeile gehören nur Zellen hin. */
tr > :not(td):not(th) { display: none !important; }
td.messfelder { position: relative; }
td.messfelder > :not(input):not(span) { position: absolute !important; }
td.verfahren-zelle { min-width: 10em; }
input[readonly][data-schreibschutz] { cursor: text; background: var(--s1); }
.abstand-innen { padding: 10px 16px 14px; margin: 0; }
.abstand-unten { margin-bottom: 18px; }
a.person-text { text-decoration: none; color: var(--mute); } a.person-text:hover b { text-decoration: underline; }
.begruendung-titel { display: block; font-size: 12px; font-weight: 600; color: var(--rot); margin: 0 0 4px; }

/* ---------- Modul Sensorik */
.gruppe-felder { border: 0; border-top: 1px solid var(--line); margin: 14px 0 0; padding: 10px 0 0; }
.gruppe-felder legend { font-weight: 600; font-size: 13px; color: var(--mute); padding-right: 8px; }
.feld-ka .zeile { display: flex; gap: 6px; align-items: center; }
.feld-ka .zeile > input, .feld-ka .zeile > select { flex: 1; }
.zeile-fehler td { background: var(--rot-hell); }
.verkostung { border-bottom: 1px solid var(--line); padding: 12px 16px; }
.verkostung--aktuell { background: var(--sig-hell); }
.verkostung-kopf { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.verkostung .gross { font-size: 20px; font-weight: 700; }
.markierung { color: var(--warn); font-weight: 600; margin-right: 8px; }
.tagstand { border: 1px solid var(--line2); padding: 10px 14px; margin: 8px 0 12px; background: var(--s2); }
.abschluss { margin-top: 10px; }
.liste.klein td, .liste.klein th { font-size: 12px; white-space: nowrap; }
.kabine { max-width: 1180px; margin: 0 auto; }
.kabine-kopf { display: flex; align-items: baseline; gap: 18px; margin-bottom: 18px; }
.kabine-code { font-family: PlexMono, monospace; font-size: 48px; font-weight: 700; letter-spacing: .08em; }
.kabine-merkmale { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); }
.kabine-merkmal { display: grid; grid-template-columns: 1fr 170px; gap: 6px 14px; align-items: center; border: 1px solid var(--line); padding: 12px 14px; }
.kabine-merkmal label { font-size: 18px; font-weight: 600; }
.kabine-merkmal input, .kabine-merkmal select { font-size: 22px; padding: 8px 10px; text-align: center; }
.kabine-merkmal input[name="grund"] { grid-column: 1 / -1; font-size: 14px; text-align: left; }
.kabine-status { grid-column: 1 / -1; font-size: 13px; min-height: 18px; }
.gespeichert { color: var(--ok); }
.kabine-fertig { margin-top: 22px; }
.kabine-knopf { font-size: 18px; padding: 14px 28px; min-width: 340px; justify-content: center; }
.kabine-nb { margin-top: 18px; }
.kabine-warten { display: grid; gap: 6px; text-align: center; padding: 60px 20px; border: 1px solid var(--line); }
.kabine-warten b { font-size: 22px; }
@media (max-width: 640px) { .kabine-merkmal { grid-template-columns: 1fr; } .kabine-code { font-size: 36px; } }
.dehnen { flex: 1; }
.voll { width: 100%; }
.zeile--verteilt { justify-content: space-between; }
.zeile--mitte { justify-content: center; }
.kabine-gruppe { grid-column: 1 / -1; font-weight: 700; font-size: 15px; color: var(--navy); border-bottom: 2px solid var(--navy); padding-top: 8px; }
.kabine-legende { color: var(--mute); margin: 14px 0 0; }
.namen { margin: 8px 0; }

/* Vorlagen: Kacheln zur Übersicht */
.kachelraster { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.kachel { display: flex; flex-direction: column; gap: 6px; padding: 16px 18px; text-decoration: none; color: inherit; }
.kachel:hover, .kachel:focus-visible { border-color: var(--navy); }
.kachel span { color: var(--mute); font-size: 13px; }
.kabine-kommentar { grid-template-columns: 1fr; }
.kabine-kommentar textarea { font-size: 18px; padding: 8px 10px; }
tr.aktiv td { background: var(--sig-hell); }
