/* v929: Kabelmessungen – Tabelle zum Eintragen (wie Excel), Import, Protokollkopf (kabelmessungen.js).
   Ruhig wie Bautagesberichte und Arbeitslisten: eine Akzentfarbe, klare Zahlen, alles in der Ansicht.
   v930: feste Spaltenbreiten (table-layout: fixed), einklappbare Gruppen, Messgerät je Gruppe, Markierung wie Excel,
   neue Werte leuchten einmal kurz auf. Alle Regeln mit Ansichts-ID: die allgemeinen Label-/Eingabe-Regeln der App
   (18 px Abstand über Labels, 14 px Innenabstand, 16 px Schrift) gelten hier nicht. */

/* ---------- Arbeitsbereich: Eintrag „Kabelmessungen“ (wie Bautagesberichte); Farbe des Symbolfelds: arbeitsbereich.css */
#kabelmessungenCard::before { content: ""; }
#bauleiterArbeitsbereich #kabelmessungenCard { min-height: 78px !important; padding: 15px 76px 15px 70px !important; }
#bauleiterArbeitsbereich #kabelmessungenCard > #btnKabelmessungenOeffnen {
  position: absolute !important; inset: 0 !important; z-index: 4 !important; width: 100% !important; min-width: 0 !important; max-width: none !important;
  height: 100% !important; min-height: 0 !important; margin: 0 !important; padding: 0 !important; transform: none !important; border: 0 !important;
  border-radius: 0 !important; background: transparent !important; box-shadow: none !important; color: transparent !important; font-size: 0 !important; cursor: pointer !important;
}
#bauleiterArbeitsbereich #kabelmessungenCard::after {
  content: "›"; position: absolute; right: 20px; top: 39px; transform: translateY(-50%); z-index: 3;
  color: var(--text-muted); font-size: 26px; font-weight: 400; line-height: 1; pointer-events: none;
}
@media (max-width: 900px) {
  #bauleiterArbeitsbereich #kabelmessungenCard { min-height: 74px !important; padding: 14px 58px 14px 60px !important; }
  #bauleiterArbeitsbereich #kabelmessungenCard::after { right: 14px; top: 37px; }
}
@media (max-width: 620px) {
  #bauleiterArbeitsbereich #kabelmessungenCard { min-height: 72px !important; padding: 13px 48px 13px 56px !important; }
  #bauleiterArbeitsbereich #kabelmessungenCard::after { right: 10px; top: 36px; font-size: 24px; }
}

/* ---------- Tokens */
#view-kabelmessungen {
  --km-bg: #f4f6f9; --km-surface: #ffffff; --km-surface-2: #f8fafc; --km-surface-3: #f1f4f8;
  --km-border: #e3e8ef; --km-border-strong: #cfd6e0; --km-line: #edf1f5;
  --km-text: #0f1a2a; --km-text-2: #44536a; --km-text-3: #5f6b7f;
  --km-accent: #2563eb; --km-accent-soft: #eaf1ff; --km-on-accent: #ffffff; --km-sel: #dbe7ff;
  --km-rot: #b42318; --km-rot-soft: #fef3f2; --km-gruen: #067647; --km-gruen-soft: #ecfdf3; --km-warn: #b54708; --km-warn-soft: #fffaeb;
  --km-neu: #bbf7d0;
  --km-shadow: 0 1px 2px rgba(15, 26, 42, .04), 0 2px 8px -2px rgba(15, 26, 42, .06);
  --km-font: "Segoe UI Variable Text", "Segoe UI", Inter, system-ui, -apple-system, Roboto, Arial, sans-serif;
  --km-font-display: "Segoe UI Variable Display", "Segoe UI", Inter, system-ui, -apple-system, Roboto, sans-serif;
}
html[data-theme="dark"] #view-kabelmessungen {
  --km-bg: #1a1d21; --km-surface: #21252b; --km-surface-2: #252a31; --km-surface-3: #2a3038;
  --km-border: #323942; --km-border-strong: #424b56; --km-line: #2b3139;
  --km-text: #eef1f5; --km-text-2: #bac3cf; --km-text-3: #8d97a5;
  --km-accent: #6b9bff; --km-accent-soft: rgba(107, 155, 255, .14); --km-on-accent: #0b1424; --km-sel: rgba(107, 155, 255, .24);
  --km-rot: #f97066; --km-rot-soft: rgba(249, 112, 102, .12); --km-gruen: #47cd89; --km-gruen-soft: rgba(71, 205, 137, .12); --km-warn: #fdb022; --km-warn-soft: rgba(253, 176, 34, .12);
  --km-neu: rgba(71, 205, 137, .34);
  --km-shadow: 0 1px 2px rgba(0, 0, 0, .28), 0 4px 14px -6px rgba(0, 0, 0, .4);
}
body[data-app-view="kabelmessungen"] .app-layout, body[data-app-view="kabelmessungen"] .app-layout > main { max-width: none; width: 100%; margin: 0; padding: 0; display: block; }
/* v955 (Anwender 10.11.: „nicht hoch und runter scrollen … und ich dann hier oben was nicht sehe … fix“): Planmodus und
   Protokollkopf füllen genau das Fenster. Bisher war der Plan fensterhoch ab seiner Oberkante, darunter lagen aber noch
   das Mindestmaß der Ansicht und die Fußzeile – die ganze Seite scrollte gut 80 px, und die Leiste verschwand unter der
   klebenden Kopfzeile. Jetzt wie die Suchtabelle (v543): eine Spalte in Fensterhöhe, die Kopfzeile in natürlicher Höhe,
   die Ansicht bekommt den Rest; die Fußzeile entfällt hier (body.km-vollbild setzt kabelmessungen.js). */
body.km-vollbild[data-app-view="kabelmessungen"]:not(#_) { height: 100vh; height: 100dvh; min-height: 0; overflow: hidden; overscroll-behavior: none; }
body.km-vollbild[data-app-view="kabelmessungen"]:not(#_) > * { flex-shrink: 0; }
/* v956: hier scrollt nichts – der sonst freigehaltene Platz für den Scrollbalken (15 px Streifen rechts) entfällt */
html:has(> body.km-vollbild[data-app-view="kabelmessungen"]):not(#_) { overflow: hidden; scrollbar-gutter: auto; }
body.km-vollbild[data-app-view="kabelmessungen"]:not(#_) > .app-footer { display: none; }
body.km-vollbild[data-app-view="kabelmessungen"]:not(#_) > .app-layout,
body.km-vollbild[data-app-view="kabelmessungen"]:not(#_) > .app-layout > main { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
body.km-vollbild[data-app-view="kabelmessungen"]:not(#_) #view-kabelmessungen.active { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
body.km-vollbild[data-app-view="kabelmessungen"]:not(#_) #view-kabelmessungen > .km:is(.km-planmodus, .km-kopfmodus) { flex: 1 1 auto; height: auto; min-height: 0; }
#view-kabelmessungen { background: var(--km-bg); color: var(--km-text); font-family: var(--km-font); min-height: calc(100vh - 60px); }
:where(#view-kabelmessungen) :is(button, input, select, textarea) { font-family: var(--km-font); box-shadow: none; margin: 0; min-height: 0; line-height: 1.3; }
:where(#view-kabelmessungen) svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex: 0 0 auto; }
#view-kabelmessungen label { margin: 0; font-size: inherit; color: inherit; }
#view-kabelmessungen .km-unsichtbar { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Gerüst */
.km { display: grid; gap: 14px; padding: 20px 24px 28px; min-width: 0; }
.km-laedt, .km-leer { padding: 44px 16px; color: var(--km-text-2); text-align: center; }
.km-laedt.klein { padding: 10px 0 0; text-align: left; }
.km-kopf { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: end; gap: 12px 20px; }
.km-titel { display: grid; gap: 3px; min-width: 0; }
.km-eyebrow { color: var(--km-text-3); font-size: 11.5px; font-weight: 650; letter-spacing: .08em; text-transform: uppercase; }
.km-titel h2 { margin: 0; font: 650 26px/1.15 var(--km-font-display); letter-spacing: -.01em; color: var(--km-text); }
.km-titel small { color: var(--km-text-2); font-size: 13px; overflow-wrap: anywhere; }
.km-warn { color: var(--km-rot); font-weight: 600; }
.km-stand { color: var(--km-text-3); }
.km-stand.ok { color: var(--km-gruen); }
.km-kennzahl { display: grid; grid-template-columns: auto auto; align-items: baseline; gap: 2px 8px; min-width: 150px; }
.km-kennzahl b { font: 700 26px/1.1 var(--km-font-display); font-variant-numeric: tabular-nums; }
.km-kennzahl span { color: var(--km-text-2); font-size: 12.5px; }
.km-kennzahl i { grid-column: 1 / -1; display: block; height: 6px; border-radius: 99px; background: linear-gradient(90deg, var(--km-gruen) var(--km-anteil), var(--km-line) var(--km-anteil)); }
.km-aktionen { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }

/* ---------- Knöpfe */
.km-knopf { display: inline-flex; align-items: center; justify-content: center; gap: 7px; box-sizing: border-box; height: 38px; padding: 0 14px; border: 1px solid var(--km-border-strong); border-radius: 10px;
  background: var(--km-surface); color: var(--km-text); font-size: 13.5px; font-weight: 600; white-space: nowrap; cursor: pointer; }
.km-knopf:hover { background: var(--km-surface-3); }
.km-knopf[aria-pressed="true"] { border-color: var(--km-accent); background: var(--km-accent-soft); color: var(--km-accent); }
.km-knopf.primaer { border-color: var(--km-accent); background: var(--km-accent); color: var(--km-on-accent); }
.km-knopf.primaer:hover { filter: brightness(1.06); }
.km-knopf.klein { height: 30px; padding: 0 10px; border-radius: 8px; font-size: 12.5px; }
.km-knopf.klein svg { width: 15px; height: 15px; }
.km-knopf:disabled { opacity: .55; cursor: default; }
.km-knopf .km-kurz, .km-chips .km-kurz { display: none; }
.km-knopf:focus-visible, .km-mini:focus-visible, .km-reiter button:focus-visible, .km-chips button:focus-visible, .km-gk-auf:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 2px; }
.km-mini { display: inline-grid; place-items: center; width: 30px; height: 30px; padding: 0; border: 1px solid transparent; border-radius: 8px; background: transparent; color: var(--km-text-2); cursor: pointer; }
.km-mini:hover { border-color: var(--km-border); background: var(--km-surface-3); color: var(--km-text); }
.km-mini.an { border-color: var(--km-border-strong); background: var(--km-surface-3); color: var(--km-text); }
.km-mini svg { width: 16px; height: 16px; }
.km-link { padding: 0; border: 0; background: none; color: var(--km-accent); font-size: inherit; font-weight: 600; text-decoration: underline; cursor: pointer; }

/* ---------- Reiter */
.km-reiter { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; padding: 4px; border: 1px solid var(--km-border); border-radius: 12px; background: var(--km-surface-3); }
.km-reiter button { display: grid; gap: 1px; justify-items: start; padding: 9px 14px; border: 0; border-radius: 9px; background: transparent; color: var(--km-text-2); text-align: left; cursor: pointer; }
.km-reiter button b { color: var(--km-text); font-size: 14.5px; font-weight: 650; }
.km-reiter button span { font-size: 12.5px; }
.km-reiter button[aria-selected="true"] { background: var(--km-surface); box-shadow: var(--km-shadow); }
.km-reiter button[aria-selected="true"] b { color: var(--km-accent); }

/* ---------- Filter: alle Bedienelemente 38 px hoch, unten bündig */
.km-filter { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 12px; }
.km-feld { display: grid; gap: 4px; min-width: 0; }
.km-feld > span { color: var(--km-text-2); font-size: 12px; font-weight: 600; line-height: 16px; }
#view-kabelmessungen :is(.km-feld, .km-check, .km-spalte, .km-suche, .km-import-kachel) { margin: 0; }
#view-kabelmessungen :is(.km-feld input, .km-feld select, .km-spalte select) { box-sizing: border-box; width: 100%; height: 38px; min-height: 0; margin: 0; padding: 0 10px;
  border: 1px solid var(--km-border-strong); border-radius: 9px; background: var(--km-surface); color: var(--km-text); font-size: 14px; line-height: normal; }
#view-kabelmessungen .km-feld input::placeholder { color: var(--km-text-3); opacity: 1; }
#view-kabelmessungen .km-feld input:focus, #view-kabelmessungen .km-feld select:focus { border-color: var(--km-accent); outline: none; box-shadow: 0 0 0 3px var(--km-accent-soft); }
.km-filter .km-feld { width: 180px; }
.km-chips { display: inline-flex; gap: 4px; box-sizing: border-box; height: 38px; padding: 3px; border: 1px solid var(--km-border); border-radius: 10px; background: var(--km-surface); }
.km-chips button { height: 30px; padding: 0 11px; border: 0; border-radius: 7px; background: transparent; color: var(--km-text-2); font-size: 13px; font-weight: 600; white-space: nowrap; cursor: pointer; }
.km-chips button[aria-pressed="true"] { background: var(--km-accent-soft); color: var(--km-accent); }
.km-suche { display: inline-flex; align-items: center; gap: 8px; box-sizing: border-box; height: 38px; padding: 0 10px; border: 1px solid var(--km-border-strong); border-radius: 9px; background: var(--km-surface); color: var(--km-text-3); flex: 1 1 220px; max-width: 360px; }
#view-kabelmessungen .km-suche input { flex: 1 1 auto; min-width: 0; height: 100%; min-height: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--km-text); font-size: 14px; outline: none; }
/* v954: Trefferzahl und „Genau“ rechts im Suchfeld */
.km-such-zahl { flex: 0 0 auto; color: var(--km-text-2); font-size: 12px; font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.km-such-zahl:empty { display: none; }
.km-such-zahl.leer { color: var(--km-rot); }
#view-kabelmessungen .km-such-genau { flex: 0 0 auto; box-sizing: border-box; height: 26px; margin: 0 -4px 0 0; padding: 0 8px; border: 1px solid var(--km-border); border-radius: 7px;
  background: transparent; color: var(--km-text-2); font: inherit; font-size: 12px; font-weight: 650; line-height: 1; cursor: pointer; }
#view-kabelmessungen .km-such-genau:hover { border-color: var(--km-border-strong); color: var(--km-text); }
#view-kabelmessungen .km-such-genau[aria-pressed="true"] { border-color: var(--km-accent); background: var(--km-accent-soft); color: var(--km-accent); }
#view-kabelmessungen .km-such-genau:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 1px; }
.km-pm-suchinfo { display: none; }   /* nur am Handy (siehe unten) */
.km-filter-rechts { display: flex; align-items: flex-end; gap: 8px; margin-left: auto; }
.km-klapp { display: inline-flex; gap: 4px; }
.km-typen { margin: -4px 0 0; color: var(--km-text-2); font-size: 12.5px; }

/* ---------- Tabelle: feste Spaltenbreiten, damit nichts „klobig“ breit wird */
.km-tabelle-rahmen { overflow: auto; max-height: calc(100vh - 250px); min-height: 280px; border: 1px solid var(--km-border); border-radius: 12px; background: var(--km-surface); box-shadow: var(--km-shadow); }
.km-tabelle-rahmen.klein { max-height: 280px; min-height: 0; }
.km-tabelle { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 0; font-size: 13.5px; }
.km-tabelle.kabel { min-width: 1120px; }
.km-tabelle.einheiten { min-width: 900px; }
.km-tabelle.vorschau { table-layout: auto; min-width: 640px; font-size: 13px; }
.km-tabelle col.c-nr { width: 15%; } .km-tabelle col.c-typ { width: 16%; } .km-tabelle col.c-art { width: 9%; } .km-tabelle col.c-ohm { width: 8%; }
.km-tabelle col.c-iso { width: 9.5%; } .km-tabelle col.c-datum { width: 11%; } .km-tabelle col.c-name { width: 14%; } .km-tabelle col.c-akt { width: 84px; }
.km-tabelle col.c-armatur { width: 15%; } .km-tabelle col.c-einheit { width: 32%; } .km-tabelle col.c-ohm2 { width: 13%; }
.km-tabelle.einheiten col.c-datum { width: 14%; } .km-tabelle.einheiten col.c-name { width: 20%; }
.km-tabelle thead th { position: sticky; top: 0; z-index: 3; height: 38px; padding: 0 12px; border-bottom: 1px solid var(--km-border-strong); background: var(--km-surface-2);
  color: var(--km-text-2); font-size: 12px; font-weight: 650; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.km-tabelle thead th.km-sp { cursor: cell; }
.km-tabelle thead th.km-sp:hover { color: var(--km-accent); background: var(--km-accent-soft); }
.km-tabelle td, .km-tabelle tbody th { height: 40px; padding: 2px 4px; border-bottom: 1px solid var(--km-line); vertical-align: middle; text-align: left; font-weight: 400; }
.km-tabelle.vorschau td, .km-tabelle.vorschau th { height: 32px; padding: 2px 10px; }
.km-tabelle .km-nr { position: sticky; left: 0; z-index: 2; padding-left: 12px; background: var(--km-surface); overflow: hidden; }
.km-tabelle thead .km-nr { z-index: 4; background: var(--km-surface-2); }
.km-nr > div { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; }
.km-nr b { font-size: 14px; font-weight: 650; }
.km-nr small, .km-einheit small { display: block; color: var(--km-text-3); font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.km-tag { display: inline-block; padding: 1px 6px; border-radius: 99px; background: var(--km-surface-3); color: var(--km-text-2); font-size: 10.5px; font-weight: 600; }
.km-tag.warn { background: var(--km-warn-soft); color: var(--km-warn); }
.km-tabelle .km-akt { white-space: nowrap; text-align: right; padding-right: 8px; }
.km-tabelle th.zahl { text-align: right; }
.km-tabelle .km-einheit { padding-left: 4px; }
.km-armatur { display: flex; align-items: center; gap: 2px; }
.km-leerzeile td { height: 44px; padding-left: 14px; color: var(--km-text-3); font-size: 13px; }

/* Zellen */
#view-kabelmessungen .km-zelle { box-sizing: border-box; width: 100%; height: 32px; min-height: 0; margin: 0; padding: 0 8px; border: 1px solid var(--km-border); border-radius: 7px;
  background: var(--km-surface); color: var(--km-text); font-size: 13.5px; line-height: 30px; }
#view-kabelmessungen .km-zelle.stark { font-weight: 650; }
#view-kabelmessungen .km-zelle:hover:not(:disabled) { border-color: var(--km-border-strong); }
#view-kabelmessungen .km-zelle:focus { border-color: var(--km-accent); outline: none; box-shadow: 0 0 0 3px var(--km-accent-soft); }
#view-kabelmessungen .km-zelle::placeholder { color: var(--km-text-3); opacity: 1; }
#view-kabelmessungen .km-zelle:disabled { border-color: transparent; background: transparent; color: var(--km-text-3); cursor: default; }
#view-kabelmessungen .km-zelle.leer:disabled, #view-kabelmessungen .km-zelle.leer:disabled::placeholder { color: transparent; }   /* kein Platzhalter, der wie ein Wert aussieht */
#view-kabelmessungen :is(.km-schleife_ohm, .km-ohm) .km-zelle { text-align: right; font-variant-numeric: tabular-nums; }
#view-kabelmessungen .km-zelle.warn { border-color: var(--km-rot); background: var(--km-rot-soft); color: var(--km-rot); font-weight: 650; }
#view-kabelmessungen .km-zelle[type="date"] { padding-right: 4px; }
html[data-theme="dark"] #view-kabelmessungen .km-zelle[type="date"] { color-scheme: dark; }

/* Markierung wie Excel: Zellen getönt, Rahmen um den ganzen Bereich */
.km-tabelle.km-ziehen { user-select: none; }
#view-kabelmessungen td.km-sel .km-zelle { border-color: transparent; background: var(--km-sel); }
#view-kabelmessungen td.km-sel { background: var(--km-sel); }
#view-kabelmessungen td.km-sel-o { box-shadow: inset 0 2px 0 var(--km-accent); }
#view-kabelmessungen td.km-sel-u { box-shadow: inset 0 -2px 0 var(--km-accent); }
#view-kabelmessungen td.km-sel-o.km-sel-u { box-shadow: inset 0 2px 0 var(--km-accent), inset 0 -2px 0 var(--km-accent); }
#view-kabelmessungen td.km-sel-l { border-left: 2px solid var(--km-accent); }
#view-kabelmessungen td.km-sel-r { border-right: 2px solid var(--km-accent); }

/* Neue Werte (Import, neues Kabel): einmal kurz grün, dann wie alle anderen */
@keyframes km-neu-aufleuchten { 0%, 45% { background: var(--km-neu); border-color: var(--km-gruen); } 100% { background: var(--km-surface); border-color: var(--km-border); } }
@keyframes km-neu-zeile { 0%, 45% { background: var(--km-neu); } 100% { background: transparent; } }
#view-kabelmessungen .km-zelle.km-neu-wert { animation: km-neu-aufleuchten 6s ease-out 1 both; }
#view-kabelmessungen .km-neu-zeile :is(td, th) { animation: km-neu-zeile 6s ease-out 1 both; }
#view-kabelmessungen .km-neu-gruppe .km-gruppenkopf th { animation: km-neu-zeile 6s ease-out 1 both; }
@media (prefers-reduced-motion: reduce) {
  #view-kabelmessungen .km-zelle.km-neu-wert { animation-duration: 2.5s; }
}

/* Stand je Zeile: farbiger Strich links */
.km-z.gemessen .km-nr, .km-z.gemessen .km-kabelarmatur { box-shadow: inset 3px 0 0 var(--km-gruen); }
.km-z.auffaellig .km-nr { box-shadow: inset 3px 0 0 var(--km-rot); }
.km-z.entfaellt :is(td, th) { background: var(--km-surface-2); }
.km-z.entfaellt .km-nr b, .km-z.entfaellt .km-einheit .km-zelle { color: var(--km-text-3); text-decoration: line-through; }
.km-z.teil .km-nr b { display: none; }
.km-z.teil .km-nr { padding-left: 28px; }
.km-z:hover :is(td, th) { background: var(--km-surface-2); }

/* Gruppenkopf (Kabelschrank / Betriebsstelle): eine Zeile, alles mittig auf einer Linie */
.km-gruppenkopf th { position: sticky; left: 0; padding: 0; background: var(--km-surface-3); border-bottom: 1px solid var(--km-border); }
.km-gk { position: sticky; left: 0; display: flex; align-items: center; gap: 8px 16px; box-sizing: border-box; max-width: min(100%, calc(100vw - 80px)); min-height: 48px; padding: 7px 12px 7px 6px; }
.km-gk-auf { display: inline-flex; align-items: center; gap: 8px; min-width: 0; height: 34px; padding: 0 10px 0 4px; border: 0; border-radius: 8px; background: transparent; color: var(--km-text); text-align: left; cursor: pointer; }
.km-gk-auf:hover { background: var(--km-surface); }
.km-gk-auf b { font-size: 14.5px; font-weight: 700; white-space: nowrap; }
.km-gk-auf small { overflow: hidden; color: var(--km-text-2); font-size: 12.5px; text-overflow: ellipsis; white-space: nowrap; }
.km-chevron { display: inline-grid; place-items: center; width: 22px; height: 22px; color: var(--km-text-2); transition: transform .15s ease; }
.km-gk-auf[aria-expanded="true"] .km-chevron { transform: rotate(90deg); }
.km-gk-stand { flex: 0 0 auto; color: var(--km-text-2); font-size: 12.5px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.km-gk-stand.fertig { color: var(--km-gruen); }
.km-gk-akt { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; }
.km-gk-geraet { flex: 0 1 auto; min-width: 0; height: 28px; padding: 0 10px; overflow: hidden; border: 1px dashed var(--km-border-strong); border-radius: 99px; background: transparent;
  color: var(--km-text-2); font-size: 12px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.km-gk-geraet:hover, .km-gk-geraet[aria-expanded="true"] { border-style: solid; border-color: var(--km-accent); color: var(--km-accent); background: var(--km-surface); }
.km-gk-geraet.eigen { border-style: solid; color: var(--km-text); }
.km-gk-geraet:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 2px; }
.km-gruppe:not(.offen) .km-gruppenkopf th { border-bottom-color: var(--km-line); }

/* Messgerät je Protokoll (aufgeklappte Gruppe) – drei gleich breite Felder */
.km-geraet td { padding: 8px 12px 10px; background: var(--km-surface-2); border-bottom: 1px solid var(--km-line); }
.km-geraet-zeile { position: sticky; left: 12px; display: grid; grid-template-columns: minmax(170px, 220px) repeat(3, minmax(150px, 230px)); align-items: end; gap: 10px 12px; max-width: calc(100vw - 100px); }
.km-geraet-titel { display: grid; gap: 1px; align-self: center; color: var(--km-text-2); font-size: 12.5px; font-weight: 650; }
.km-geraet-titel small { color: var(--km-text-3); font-size: 11.5px; font-weight: 500; }
#view-kabelmessungen .km-geraet .km-feld input { height: 32px; font-size: 13.5px; }

/* Neues Kabel / neue Zeile (in der Tabelle) */
.km-neu td { padding: 10px 12px; background: var(--km-accent-soft); }
.km-neu-form { position: sticky; left: 12px; display: grid; grid-template-columns: minmax(130px, 1fr) minmax(120px, .8fr) minmax(160px, 1.2fr) minmax(110px, .8fr) minmax(160px, 1.2fr) auto; align-items: end; gap: 10px; max-width: calc(100vw - 100px); }
.km-neu-form .km-feld.breit { grid-column: 1 / -2; }
.km-neu-knoepfe { display: flex; gap: 8px; }
.km-hinweis { margin: 0; color: var(--km-text-2); font-size: 12.5px; }

/* ---------- Panels (Import, Protokollkopf, neuer Kabelschrank) – in der Ansicht, nichts schwebt */
.km-panel { display: grid; gap: 14px; padding: 16px 18px; border: 1px solid var(--km-border); border-radius: 14px; background: var(--km-surface); box-shadow: var(--km-shadow); }
.km-panel-kopf { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.km-panel-kopf > div { display: grid; gap: 2px; }
.km-panel-kopf b { font: 650 16.5px/1.25 var(--km-font-display); }
.km-panel-kopf small { color: var(--km-text-2); font-size: 13px; }
.km-raster { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; }
.km-raster.zwei { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; }
.km-raster.drei { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.km-panel fieldset { display: grid; align-content: start; gap: 10px; margin: 0; padding: 12px 14px 14px; border: 1px solid var(--km-border); border-radius: 12px; min-width: 0; }
.km-panel legend { padding: 0 6px; color: var(--km-text-2); font-size: 12.5px; font-weight: 650; }
.km-typen-wahl > div { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; min-height: 38px; }
.km-check { display: inline-flex; align-items: center; gap: 8px; min-height: 24px; font-size: 14px; line-height: 1.2; cursor: pointer; }
#view-kabelmessungen .km-check input { flex: 0 0 auto; width: 18px; height: 18px; min-height: 0; margin: 0; padding: 0; accent-color: var(--km-accent); }
.km-panel-fuss { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 10px; }

/* Import: zwei gleich große Kacheln – Datei oder Zwischenablage */
.km-import-wahl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.km-import-kachel { position: relative; display: grid; justify-items: center; align-content: center; gap: 4px; min-height: 132px; padding: 16px; box-sizing: border-box;
  border: 1.5px dashed var(--km-border-strong); border-radius: 12px; background: var(--km-surface-2); color: var(--km-text-2); text-align: center; cursor: pointer; }
.km-import-kachel:hover, .km-import-kachel:focus-within { border-color: var(--km-accent); background: var(--km-accent-soft); }
.km-import-kachel svg { width: 26px; height: 26px; color: var(--km-accent); }
.km-import-kachel b { color: var(--km-text); font-size: 14.5px; }
.km-import-kachel span { font-size: 12.5px; }
/* iOS: kein unsichtbares Feld per Skript anklicken – das Dateifeld liegt durchsichtig über der Kachel */
#view-kabelmessungen .km-import-kachel input[type="file"] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
#view-kabelmessungen .km-import-kachel textarea { position: absolute; inset: 0; width: 100%; height: 100%; box-sizing: border-box; padding: 0; border: 0; background: transparent; color: transparent;
  caret-color: transparent; resize: none; cursor: pointer; outline: none; }
.km-datei-name { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--km-text); font-size: 13.5px; font-weight: 600; }
.km-datei-name svg { color: var(--km-accent); }
.km-ein-zahlen { display: flex; flex-wrap: wrap; gap: 8px; }
.km-ein-zahlen span { padding: 6px 10px; border-radius: 9px; background: var(--km-surface-3); color: var(--km-text-2); font-size: 13px; }
.km-ein-zahlen b { color: var(--km-text); font-variant-numeric: tabular-nums; }
.km-ein-zahlen .neu { background: var(--km-gruen-soft); color: var(--km-gruen); }
.km-ein-zahlen .neu b { color: var(--km-gruen); }
.km-ein-zahlen .warn { background: var(--km-warn-soft); color: var(--km-warn); }
.km-ein-zahlen .warn b { color: var(--km-warn); }
.km-warnung { margin: 0; padding: 9px 12px; border-radius: 9px; background: var(--km-warn-soft); color: var(--km-warn); font-size: 13px; }
.km-spalten-wahl summary { color: var(--km-text-2); font-size: 13px; font-weight: 600; cursor: pointer; }
.km-hinweise { display: grid; gap: 2px; margin: 8px 0 0; padding-left: 20px; color: var(--km-text-2); font-size: 12.5px; }
.km-spalten { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 8px 10px; margin-top: 10px; }
.km-spalte { display: grid; gap: 3px; min-width: 0; }
.km-spalte span { overflow: hidden; color: var(--km-text-2); font-size: 11.5px; text-overflow: ellipsis; white-space: nowrap; }
#view-kabelmessungen .km-spalte select { height: 34px; font-size: 13px; }
.km-tabelle.vorschau tr.gleich td { color: var(--km-text-3); }

/* ---------- v932: Kabelübersichtspläne (Reiter Kabel, „Plan“) – das Blatt des Schranks wie Papier (auch im Dunkelmodus,
   wie die Statuspläne), darauf Kästchen um die erkannten Kabelnummern (Farbe = Stand der Messung) und um die Nachbarschränke
   am Leitungsende (Klick: Sprung zu deren Blatt). Die Kästchen-Farben sind für weißes Papier gewählt, deshalb fest. */
#view-kabelmessungen { --km-k-gruen: #067647; --km-k-blau: #1d4ed8; --km-k-gelb: #b45309; --km-k-rot: #b42318; --km-k-grau: #667085; --km-k-lila: #7c3aed;
  /* v945: Farben je Stand – Standard hier, abweichende Farben des Projekts setzt kabelmessungen.js an die Ansicht (--km-s-…) */
  --km-s-gemessen: var(--km-k-gruen); --km-s-teilweise: var(--km-k-gelb); --km-s-offen: var(--km-k-blau); --km-s-auffaellig: var(--km-k-rot);
  --km-s-entfaellt: var(--km-k-grau); --km-s-link: var(--km-k-lila); }
/* Rahmen und Füllung je Stand: Füllung = dieselbe Farbe, durchscheinend (die Zeichnung bleibt lesbar).
   v956: eine Deckkraft für alle (--km-deck, „Füllung im Plan“ in „Stände und Markierungen“; vorgegeben 40 %, vorher fest 10–24 %) */
#view-kabelmessungen { --km-deck: 40%; }
#view-kabelmessungen .offen { --km-r: var(--km-s-offen); --km-f: color-mix(in srgb, var(--km-s-offen) var(--km-deck), transparent); }
#view-kabelmessungen .gemessen { --km-r: var(--km-s-gemessen); --km-f: color-mix(in srgb, var(--km-s-gemessen) var(--km-deck), transparent); }
#view-kabelmessungen .teilweise { --km-r: var(--km-s-teilweise); --km-f: color-mix(in srgb, var(--km-s-teilweise) var(--km-deck), transparent); }
#view-kabelmessungen .auffaellig { --km-r: var(--km-s-auffaellig); --km-f: color-mix(in srgb, var(--km-s-auffaellig) var(--km-deck), transparent); }
#view-kabelmessungen .entfaellt { --km-r: var(--km-s-entfaellt); --km-f: color-mix(in srgb, var(--km-s-entfaellt) var(--km-deck), transparent); }
#view-kabelmessungen .link { --km-r: var(--km-s-link); --km-f: color-mix(in srgb, var(--km-s-link) var(--km-deck), transparent); }
#view-kabelmessungen .markiert { --km-r: var(--km-m); --km-f: color-mix(in srgb, var(--km-m) var(--km-deck), transparent); }
.km-kuep-hinweis { display: grid; gap: 6px; padding: 14px 16px; border: 1.5px dashed var(--km-border-strong); border-radius: 12px; background: var(--km-surface-2); }
.km-kuep-hinweis b { font-size: 14.5px; }
.km-kuep-hinweis > span { color: var(--km-text-2); font-size: 13px; line-height: 1.45; }
.km-kuep-stand { display: grid; gap: 5px; margin: 6px 0 0; padding: 0; list-style: none; color: var(--km-text); font-size: 13px; font-variant-numeric: tabular-nums; }
.km-kuep-stand li { display: flex; align-items: center; gap: 8px; }
.km-kuep-stand i { display: inline-block; box-sizing: border-box; width: 18px; height: 11px; border: 2px solid var(--km-r, var(--km-s-offen)); border-radius: 3px; background: var(--km-f); }
.km-kuep-stand .entfaellt i { border-style: dashed; }
html[data-theme="dark"] .km-kuep-stand i { background: linear-gradient(var(--km-f), var(--km-f)), #ffffff; }   /* Papier wie im Plan */
.km-gk-stand i { color: var(--km-text-2); font-style: normal; font-weight: 500; }
.km-kuep-marke, .km-kuep-link { position: absolute; box-sizing: border-box; min-width: 14px; min-height: 10px; margin: 0; padding: 0; border: 2px solid var(--km-r);
  border-radius: 4px; background: var(--km-f); cursor: pointer; transition: box-shadow .12s ease, background-color .12s ease;
  mix-blend-mode: multiply; }   /* v956: färbt das Papier ein – die Schrift darunter bleibt auch bei kräftiger Füllung lesbar */
.km-kuep-marke.entfaellt { border-style: dashed; }
.km-kuep-marke.nur-plan { border-style: dotted; }
.km-kuep-marke.markiert { border-style: solid; border-width: 2.5px; }   /* v945: eigene Markierung färbt statt des Messstands */
.km-kuep-marke:hover, .km-kuep-marke:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(29, 78, 216, .35); }
.km-kuep-marke.aktiv { box-shadow: 0 0 0 3px var(--km-k-blau), 0 0 0 6px rgba(29, 78, 216, .25); }
.km-kuep-marke.km-neu-wert { animation: km-kuep-neu 6s ease-out 1; }
@keyframes km-kuep-neu { 0%, 45% { background: rgba(6, 118, 71, .55); } }
.km-kuep-link { --km-r: var(--km-s-link); --km-f: color-mix(in srgb, var(--km-s-link) var(--km-deck, 40%), transparent); border: 2px dashed var(--km-r); background: var(--km-f); }
.km-kuep-link:hover, .km-kuep-link:focus-visible { outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--km-s-link) 30%, transparent); }
.km-kuep-fehlen { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; color: var(--km-text-2); font-size: 12.5px; }
.km-kuep-fehlen > span { margin-right: 4px; font-weight: 600; }
.km-kuep-chip { --km-c: var(--km-k-blau); height: 26px; padding: 0 9px; border: 1.5px solid var(--km-c); border-radius: 99px; background: var(--km-surface);
  color: var(--km-text); font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums; cursor: pointer; }
.km-kuep-chip.gemessen { --km-c: var(--km-gruen); background: var(--km-gruen-soft); }
.km-kuep-chip.teilweise { --km-c: var(--km-warn); background: var(--km-warn-soft); }
.km-kuep-chip.auffaellig { --km-c: var(--km-rot); background: var(--km-rot-soft); }
.km-kuep-chip.entfaellt { --km-c: var(--km-text-3); border-style: dashed; color: var(--km-text-2); }
.km-kuep-chip.aktiv { box-shadow: 0 0 0 3px var(--km-accent-soft); }
.km-kuep-chip:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 2px; }
.km-kuep-chip.markiert { --km-c: var(--km-m); border-width: 2px; background: color-mix(in srgb, var(--km-m) 16%, var(--km-surface)); }
html[data-theme="dark"] #view-kabelmessungen .km-kuep-chip { --km-k-blau: #8fb2ff; }
.km-kuep-leer { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px 16px; max-width: 1400px; margin: 0 auto; padding: 16px 18px;
  border: 1.5px dashed var(--km-border-strong); border-radius: 12px; background: var(--km-surface-2); }
.km-kuep-leer > div:first-child { display: grid; gap: 3px; }
.km-kuep-leer b { font-size: 14.5px; }
.km-kuep-leer > div > span { color: var(--km-text-2); font-size: 13px; }
.km-kuep-leer .km-kuep-fehlen { grid-column: 1 / -1; }
.km-kuep-leer.km-kuep-start { max-width: none; margin: 0; border-color: var(--km-accent); background: var(--km-accent-soft); }

/* ---------- v946: Planmodus – oben eine schlanke Leiste, darunter füllt der Plan den Bildschirm (Höhe ab dem Anfang
   der Ansicht: --km-pm-oben aus kabelmessungen.js). Links die Blätter (einklappbar), in der Mitte 1–3 Blätter, die Werte als
   Seitenleiste über dem Plan nur bei einem angeklickten Kabel (Handy: von unten). Das Blatt bleibt Papier (weiß, auch
   nachts); Rahmen der Kästchen bleiben beim Zoomen gleich dick (--km-pa-s). */
.km.km-planmodus { display: flex; flex-direction: column; gap: 10px; box-sizing: border-box; height: calc(100dvh - var(--km-pm-oben, 76px)); min-height: 440px;
  padding: 10px 16px 14px; }
.km-pm-leiste { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; flex: 0 0 auto; }
.km-pm-leiste > .km-stand-chips { flex: 0 1 auto; min-width: 0; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
.km-pm-leiste > .km-stand-chips::-webkit-scrollbar { display: none; }
.km-pm-suche { flex: 1 1 180px; max-width: 280px; }
.km-pm-rechts { display: inline-flex; align-items: center; gap: 8px; margin-left: auto; }
.km-pm-spalten button { display: inline-grid; place-items: center; min-width: 34px; padding: 0 7px; }
.km-pm-spalten button svg { width: 18px; height: 18px; }
.km-pm-spalten button[aria-disabled="true"] { color: var(--km-text-3); opacity: .5; cursor: not-allowed; }
.km-pm-flaeche { position: relative; flex: 1 1 auto; min-height: 0; }
.km-pm-panel { position: absolute; top: 0; right: 0; z-index: 9; width: min(640px, 100%); max-height: 100%; overflow: auto; overscroll-behavior: contain; border-radius: 14px;
  box-shadow: 0 18px 48px rgba(15, 26, 42, .22); }
html[data-theme="dark"] .km-pm-panel { box-shadow: 0 18px 48px rgba(0, 0, 0, .55); }
.km-pm-panel > .km-panel { border-radius: 14px; }

.km-pa { display: grid; grid-template-columns: 240px minmax(0, 1fr); grid-template-areas: "liste blaetter"; gap: 12px; height: 100%; min-height: 0; }
.km-pa.liste-zu { grid-template-columns: minmax(0, 1fr); grid-template-areas: "blaetter"; }
.km-pa.liste-zu .km-pa-liste { display: none; }
.km-pa-liste { grid-area: liste; display: flex; flex-direction: column; min-width: 0; min-height: 0; overflow: hidden; border: 1px solid var(--km-border); border-radius: 12px;
  background: var(--km-surface); box-shadow: var(--km-shadow); }
.km-pa-liste-kopf { display: flex; flex: 0 0 auto; align-items: center; justify-content: space-between; gap: 8px; box-sizing: border-box; height: 44px; padding: 0 14px; border-bottom: 1px solid var(--km-line); }
.km-pa-liste-kopf b { font-size: 14px; font-weight: 650; }
.km-pa-liste-kopf small { color: var(--km-text-2); font-size: 12px; }
.km-pa-liste-filter { display: flex; flex: 0 0 auto; flex-wrap: wrap; gap: 6px; padding: 8px 8px; border-bottom: 1px solid var(--km-line); }
#view-kabelmessungen .km-pa-liste-filter select { box-sizing: border-box; width: 100%; height: 32px; margin: 0; padding: 0 8px; border: 1px solid var(--km-border-strong); border-radius: 8px;
  background: var(--km-surface); color: var(--km-text); font-size: 13px; }
.km-filter-pille { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; box-sizing: border-box; height: 28px; margin: 0; padding: 0 6px 0 10px; border: 1px solid var(--km-accent);
  border-radius: 99px; background: var(--km-accent-soft); color: var(--km-accent); font-size: 12.5px; font-weight: 600; cursor: pointer; }
.km-filter-pille bdi { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.km-filter-pille svg { width: 14px; height: 14px; }
.km-pa-liste-inhalt { flex: 1 1 auto; min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 6px; }
.km-pa-liste-inhalt > ul, .km-pa-ohne ul { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; }
.km-pa-eintrag { position: relative; display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 10px; box-sizing: border-box; width: 100%; padding: 6px;
  border: 1px solid transparent; border-radius: 10px; background: transparent; color: var(--km-text); font: inherit; text-align: left; cursor: pointer; }
.km-pa-eintrag:hover { background: var(--km-surface-3); }
.km-pa-eintrag:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 1px; }
.km-pa-eintrag.gezeigt { border-color: var(--km-border-strong); background: var(--km-surface-2); }
.km-pa-eintrag.aktiv { border-color: var(--km-accent); background: var(--km-accent-soft); }
.km-pa-eintrag.ohne-treffer { opacity: .55; }
.km-pa-daumen { display: grid; place-items: center; box-sizing: border-box; width: 76px; height: 54px; overflow: hidden; border: 1px solid var(--km-border); border-radius: 6px; background: #ffffff; }
.km-pa-daumen img { display: block; max-width: 100%; max-height: 100%; user-select: none; -webkit-user-drag: none; }
.km-pa-daumen img:not([src]), .km-pa-daumen img.fehlt { visibility: hidden; }
/* nachts: Miniaturen als dunkles Blatt (Linien hell, Rot bleibt rot) statt grellweißer Kästchen – das große Blatt bleibt Papier */
html[data-theme="dark"] #view-kabelmessungen .km-pa-daumen { background: #1c2128; }
html[data-theme="dark"] #view-kabelmessungen .km-pa-daumen img { filter: invert(.9) hue-rotate(180deg); }
.km-pa-eintrag-text { display: grid; gap: 1px; min-width: 0; }
.km-pa-eintrag-text b { overflow: hidden; font-size: 13.5px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.km-pa-eintrag-text :is(small, em, i) { overflow: hidden; color: var(--km-text-2); font-size: 11.5px; font-style: normal; text-overflow: ellipsis; white-space: nowrap; font-variant-numeric: tabular-nums; }
.km-pa-eintrag-text em.fertig { color: var(--km-gruen); font-weight: 600; }
.km-pa-eintrag-text .km-pa-treffer { color: var(--km-accent); font-weight: 600; }
.km-pa-platz { position: absolute; top: 2px; left: 2px; display: grid; place-items: center; box-sizing: border-box; min-width: 20px; height: 20px; padding: 0 5px;
  border: 2px solid var(--km-surface); border-radius: 99px; background: var(--km-accent); color: var(--km-on-accent); font-size: 11px; font-weight: 700; line-height: 1; }
.km-pa-ohne { margin: 8px 2px 4px; padding-top: 8px; border-top: 1px solid var(--km-line); color: var(--km-text-2); font-size: 12.5px; }
.km-pa-ohne summary { padding: 4px 6px; border-radius: 6px; font-weight: 600; cursor: pointer; }
.km-pa-ohne summary:hover { background: var(--km-surface-3); }
.km-pa-ohne summary span { font-weight: 500; }
.km-pa-ohne p { margin: 4px 6px 8px; font-size: 12px; line-height: 1.4; }
.km-pa-ohne ul { gap: 2px; padding: 0 6px 4px; }
.km-pa-ohne .km-link { font-size: 12.5px; text-decoration: none; }
.km-pa-ohne .km-link:hover { text-decoration: underline; }

.km-pa-blaetter { grid-area: blaetter; display: grid; grid-template-columns: repeat(var(--km-pa-spalten, 1), minmax(0, 1fr)); gap: 12px; min-width: 0; min-height: 0; }
.km-pa-blatt { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr) auto; min-width: 0; min-height: 0; overflow: hidden; border: 1px solid var(--km-border); border-radius: 12px;
  background: var(--km-surface); box-shadow: var(--km-shadow); }
.km-pa-blatt.aktiv { border-color: var(--km-accent); box-shadow: 0 0 0 1px var(--km-accent), var(--km-shadow); }
.km-pa-blatt.km-pa-blinkt { animation: km-pa-blinkt 1.2s ease-out 1; }
@keyframes km-pa-blinkt { 0%, 30% { box-shadow: 0 0 0 4px var(--km-accent-soft), 0 0 0 1px var(--km-accent); } }
/* Kopf eine Zeile, so hoch wie der Kopf der Blätter-Liste: ‹ Schrank › · Stand · schließen */
.km-pa-kopf { display: flex; align-items: center; gap: 2px 6px; box-sizing: border-box; height: 44px; padding: 0 6px; border-bottom: 1px solid var(--km-line); }
.km-pa-titel { display: flex; flex: 0 0 auto; align-items: baseline; gap: 8px; min-width: 0; max-width: 60%; padding: 0 2px; }   /* ‹ Name › beieinander;
   v952: schrumpft nicht mit (sonst kürzte schon ein Bruchteil eines Pixels den Namen zu „KS826…“) – erst ab 60 % der Kopfbreite */
.km-pa-titel b { flex: 0 0 auto; max-width: 100%; overflow: hidden; font-size: 14.5px; font-weight: 700; line-height: 19px; text-overflow: ellipsis; white-space: nowrap; }
/* v961: Name im Blattkopf öffnet den Kabelschrank (Status der Montage) */
button.km-pa-titel { margin: 0; padding: 5px 2px; border: 0; border-radius: 6px; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }   /* so hoch wie ‹ › (zum Antippen) */
button.km-pa-titel:hover b { color: var(--km-accent); text-decoration: underline; text-decoration-thickness: 1.5px; text-underline-offset: 3px; }
#view-kabelmessungen button.km-pa-titel:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 2px; }
.km-pa-titel small { flex: 0 1 auto; min-width: 0; overflow: hidden; color: var(--km-text-2); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.km-pa-stand { flex: 0 100 auto; /* v951: wird es eng, kürzt zuerst der Stand – der Name bleibt lesbar */ min-width: 0; margin-left: auto; overflow: hidden; padding: 0 4px; color: var(--km-text-2); font-size: 12.5px; text-overflow: ellipsis; white-space: nowrap; font-variant-numeric: tabular-nums; }
/* v956 (Anwender 10.11.: „keine Doppelverzweigung mit Icons, die genau dasselbe machen“): das Messprotokoll im Blattkopf nur am
   Handy – am Rechner öffnet „Protokolle“ in der Leiste dasselbe Menü (für das Blatt, das dran ist, oder alle) */
#view-kabelmessungen .km-pa-kopf .km-pa-protokoll { display: none; }
.km-pa-stand.fertig { color: var(--km-gruen); font-weight: 600; }
.km-pa-blaettern:disabled { opacity: .35; cursor: default; }
.km-pa-blaettern:disabled:hover { border-color: transparent; background: transparent; }
.km-pa-flaeche { position: relative; min-width: 0; min-height: 0; overflow: hidden; background: var(--km-surface-3); cursor: grab; touch-action: none; user-select: none; -webkit-user-select: none; }
.km-pa-flaeche.zieht { cursor: grabbing; }
.km-pa-inhalt { --km-pa-s: 1; position: absolute; top: 0; left: 0; transform-origin: 0 0; background: #ffffff;
  box-shadow: 0 0 0 calc(1px / var(--km-pa-s)) rgba(15, 26, 42, .14), 0 calc(6px / var(--km-pa-s)) calc(24px / var(--km-pa-s)) rgba(15, 26, 42, .14); }
.km-pa-inhalt img { display: block; width: 100%; height: 100%; pointer-events: none; user-select: none; -webkit-user-drag: none; }
.km-pa-inhalt img:not([src]), .km-pa-inhalt img.fehlt { visibility: hidden; }
.km-pa-inhalt :is(.km-kuep-marke, .km-kuep-link) { min-width: calc(14px / var(--km-pa-s)); min-height: calc(10px / var(--km-pa-s));
  border-width: calc(2px / var(--km-pa-s)); border-radius: calc(4px / var(--km-pa-s)); }
.km-pa-inhalt .km-kuep-marke:is(:hover, :focus-visible) { box-shadow: 0 0 0 calc(3px / var(--km-pa-s)) rgba(29, 78, 216, .35); }
.km-pa-inhalt .km-kuep-marke.aktiv { box-shadow: 0 0 0 calc(3px / var(--km-pa-s)) var(--km-k-blau), 0 0 0 calc(6px / var(--km-pa-s)) rgba(29, 78, 216, .25); }
.km-pa-inhalt .km-kuep-link:is(:hover, :focus-visible) { box-shadow: 0 0 0 calc(3px / var(--km-pa-s)) rgba(124, 58, 237, .3); }
/* v961: Name des eigenen Schranks oben im Blatt – blau unterstrichen, Klick öffnet den Kabelschrank (Papier bleibt weiß) */
.km-pa-inhalt .km-kuep-kopf { position: absolute; box-sizing: border-box; min-width: calc(24px / var(--km-pa-s)); min-height: calc(14px / var(--km-pa-s)); margin: 0; padding: 0;
  border: 0; border-bottom: calc(2px / var(--km-pa-s)) solid rgba(37, 99, 235, .6); border-radius: 0; background: transparent; cursor: pointer; }
.km-pa-inhalt .km-kuep-kopf:is(:hover, :focus-visible) { outline: none; border-radius: calc(4px / var(--km-pa-s)); background: rgba(37, 99, 235, .12);
  box-shadow: 0 0 0 calc(2px / var(--km-pa-s)) rgba(37, 99, 235, .55); }
/* v963: Sprungflächen im Bearbeiten – sichtbar als blauer gestrichelter Rahmen, wählen, ziehen, Griffe (wie die Verweise) */
.km-pa-inhalt .km-kuep-kopf.bearbeitbar { border: calc(2px / var(--km-pa-s)) dashed rgba(37, 99, 235, .85); border-radius: calc(4px / var(--km-pa-s));
  background: rgba(37, 99, 235, .1); cursor: move; }
.km-pa-inhalt .km-kuep-kopf.bearbeitbar.gewaehlt { z-index: 2; border-style: solid; background: rgba(37, 99, 235, .2);
  box-shadow: 0 0 0 calc(3px / var(--km-pa-s)) rgba(37, 99, 235, .3); }
.km-pa-inhalt .km-kuep-kopf .km-pa-griff { border-color: #2563eb; }
.km-pa-inhalt .km-kuep-kopf.von-hand::after { content: ""; position: absolute; top: calc(-3px / var(--km-pa-s)); right: calc(-3px / var(--km-pa-s));
  width: calc(7px / var(--km-pa-s)); height: calc(7px / var(--km-pa-s)); border-radius: 50%; background: #2563eb; }
.km-pa-blatt.bearbeiten[data-werkzeug="kopf"] .km-pa-flaeche, .km-pa-blatt.bearbeiten[data-werkzeug="kopf"] :is(.km-kuep-marke, .km-kuep-link, .km-kuep-kopf) { cursor: crosshair; }
.km-pa-entwurf.sprung { border-color: #2563eb; background: rgba(37, 99, 235, .14); }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-kopf { color: #2563eb; }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-kopf[aria-pressed="true"] { background: rgba(37, 99, 235, .14); color: #2563eb; }
.km-pa-zoom { position: absolute; right: 10px; bottom: 10px; z-index: 2; display: inline-flex; align-items: center; gap: 2px; padding: 3px; border: 1px solid var(--km-border);
  border-radius: 10px; background: var(--km-surface); box-shadow: 0 4px 14px rgba(15, 26, 42, .16); cursor: default; }
.km-pa-zoom button { display: inline-grid; place-items: center; width: 32px; height: 32px; padding: 0; border: 0; border-radius: 7px; background: transparent; color: var(--km-text);
  font-size: 18px; font-weight: 600; line-height: 1; cursor: pointer; }
.km-pa-zoom button:hover:not(:disabled) { background: var(--km-surface-3); }
.km-pa-zoom button:focus-visible { outline: 2px solid var(--km-accent); outline-offset: -2px; }
.km-pa-zoom button:disabled { opacity: .4; cursor: default; }
.km-pa-zoom svg { width: 17px; height: 17px; }
.km-pa-zoom output { min-width: 44px; color: var(--km-text-2); font-size: 12px; font-weight: 600; text-align: center; font-variant-numeric: tabular-nums; }
/* v949: Kästchen im Plan von Hand – Stift im Blattkopf; Werkzeugleiste oben links im Blatt; die gewählte Markierung mit
   Rahmen und vier Griffen; neuer Rahmen gestrichelt. Größen gleich bei jedem Zoom (--km-pa-s). */
.km-pa-bearbeiten[aria-pressed="true"] { border-color: var(--km-accent); background: var(--km-accent-soft); color: var(--km-accent); }
.km-pa-blatt.bearbeiten .km-pa-flaeche { box-shadow: inset 0 0 0 2px var(--km-accent); }
.km-pa-blatt.bearbeiten .km-kuep-marke { cursor: move; }
.km-pa-blatt.bearbeiten[data-werkzeug="neu"] .km-pa-flaeche, .km-pa-blatt.bearbeiten[data-werkzeug="neu"] .km-kuep-marke { cursor: crosshair; }
/* v950: Verweise (violett) im Bearbeiten-Modus wie Kästchen wählbar, verschiebbar, mit Griffen */
.km-pa-blatt.bearbeiten .km-kuep-link { cursor: move; }
.km-pa-blatt.bearbeiten[data-werkzeug="link"] .km-pa-flaeche, .km-pa-blatt.bearbeiten[data-werkzeug="link"] :is(.km-kuep-marke, .km-kuep-link),
.km-pa-blatt.bearbeiten[data-werkzeug="neu"] .km-kuep-link { cursor: crosshair; }
.km-pa-inhalt .km-kuep-marke.gewaehlt { z-index: 2; box-shadow: 0 0 0 calc(2px / var(--km-pa-s)) var(--km-accent), 0 0 0 calc(5px / var(--km-pa-s)) var(--km-accent-soft); }
.km-pa-inhalt .km-kuep-link.gewaehlt { z-index: 2; background: color-mix(in srgb, var(--km-s-link) 24%, transparent);
  box-shadow: 0 0 0 calc(2px / var(--km-pa-s)) var(--km-s-link), 0 0 0 calc(5px / var(--km-pa-s)) color-mix(in srgb, var(--km-s-link) 28%, transparent); }
.km-pa-inhalt .km-kuep-link .km-pa-griff { border-color: var(--km-s-link); }
.km-pa-inhalt :is(.km-kuep-marke, .km-kuep-link).von-hand::after { content: ""; position: absolute; top: calc(-3px / var(--km-pa-s)); right: calc(-3px / var(--km-pa-s));
  width: calc(6px / var(--km-pa-s)); height: calc(6px / var(--km-pa-s)); border-radius: 50%; background: var(--km-accent); }
.km-pa-inhalt .km-kuep-link.von-hand::after { background: var(--km-s-link); }
.km-pa-blatt:not(.bearbeiten) :is(.km-kuep-marke, .km-kuep-link).von-hand::after { display: none; }
.km-pa-griff { position: absolute; box-sizing: border-box; width: calc(12px / var(--km-pa-s)); height: calc(12px / var(--km-pa-s)); border: calc(2px / var(--km-pa-s)) solid var(--km-accent);
  border-radius: 50%; background: #ffffff; touch-action: none; }
.km-pa-griff.nw { left: calc(-7px / var(--km-pa-s)); top: calc(-7px / var(--km-pa-s)); cursor: nwse-resize; }
.km-pa-griff.ne { right: calc(-7px / var(--km-pa-s)); top: calc(-7px / var(--km-pa-s)); cursor: nesw-resize; }
.km-pa-griff.sw { left: calc(-7px / var(--km-pa-s)); bottom: calc(-7px / var(--km-pa-s)); cursor: nesw-resize; }
.km-pa-griff.se { right: calc(-7px / var(--km-pa-s)); bottom: calc(-7px / var(--km-pa-s)); cursor: nwse-resize; }
@media (pointer: coarse) {
  .km-pa-griff { width: calc(20px / var(--km-pa-s)); height: calc(20px / var(--km-pa-s)); }
  .km-pa-griff.nw, .km-pa-griff.sw { left: calc(-11px / var(--km-pa-s)); }
  .km-pa-griff.ne, .km-pa-griff.se { right: calc(-11px / var(--km-pa-s)); }
  .km-pa-griff.nw, .km-pa-griff.ne { top: calc(-11px / var(--km-pa-s)); }
  .km-pa-griff.sw, .km-pa-griff.se { bottom: calc(-11px / var(--km-pa-s)); }
}
.km-pa-entwurf { position: absolute; z-index: 3; box-sizing: border-box; border: calc(2px / var(--km-pa-s)) dashed var(--km-accent); border-radius: calc(4px / var(--km-pa-s));
  background: rgba(37, 99, 235, .12); pointer-events: none; }
.km-pa-entwurf.verweis { border-color: var(--km-s-link); background: color-mix(in srgb, var(--km-s-link) 14%, transparent); }
/* v954: mehrere markieren – Werkzeug „Mehrere“: Rahmen auf freier Fläche; Rahmen fein gestrichelt, kaum gefüllt */
.km-pa-blatt.bearbeiten[data-werkzeug="mehrfach"] .km-pa-flaeche { cursor: crosshair; }
.km-pa-entwurf.auswahl { border-width: calc(1.5px / var(--km-pa-s)); border-radius: 0; background: rgba(37, 99, 235, .07); }
.km-pa-wz-anzahl { flex: 0 0 auto; padding: 3px 9px; border-radius: 999px; background: var(--km-accent-soft); color: var(--km-accent); font-size: 12.5px; font-weight: 700;
  white-space: nowrap; font-variant-numeric: tabular-nums; }
html[data-theme="dark"] .km-pa-wz-anzahl { color: #b4cbff; }   /* auf der dunklen Leiste sonst unter 4,5 : 1 */
.km-pa-wz-anzahl + .km-pa-wz-hinweis { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-gefahr { color: var(--km-rot); }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-gefahr:hover:not(:disabled) { background: var(--km-rot-soft); }
/* v950 (Anwender: „schwebt in der Luft … verankert“): die Werkzeugleiste ist eine feste Zeile direkt unter dem Blattkopf –
   sie liegt nicht mehr über dem Plan, der Plan beginnt darunter. */
.km-pa-blatt.bearbeiten { container: km-pa-blatt / inline-size; grid-template-rows: auto auto minmax(0, 1fr) auto; }
.km-pa-werkzeug { position: relative; z-index: 5; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; grid-template-areas: "werkzeuge mitte aktionen";
  align-items: center; gap: 6px 10px; box-sizing: border-box; min-height: 48px; padding: 7px 8px; border-bottom: 1px solid var(--km-line); background: var(--km-surface-2); cursor: default; }
.km-pa-wz-gruppe { display: inline-flex; align-items: center; gap: 2px; }
.km-pa-wz-gruppe:first-child { grid-area: werkzeuge; padding-right: 8px; border-right: 1px solid var(--km-line); }
.km-pa-werkzeug > .km-pa-wz-mitte { grid-area: mitte; }
.km-pa-werkzeug > .km-pa-wz-mitte + .km-pa-wz-gruppe { grid-area: aktionen; justify-self: end; margin-left: 0; }
/* schmales Blatt (2–3 nebeneinander, Handy): oben Werkzeuge und Aktionen, darunter Kabel bzw. Hinweis über die ganze Breite */
@container km-pa-blatt (max-width: 680px) {
  .km-pa-werkzeug { grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "werkzeuge aktionen" "mitte mitte"; }
  /* v963: Werkzeuge und Aktionen brechen um, statt sich zu überlagern (am Handy passen sechs Werkzeuge und die Aktionen nicht
     in eine Zeile): Werkzeuge, daneben bzw. darunter rechts Rückgängig … Fertig, dann die Felder über die ganze Breite */
  .km-pa-werkzeug { display: flex; flex-wrap: wrap; }
  .km-pa-werkzeug > .km-pa-wz-gruppe:first-child { order: 1; }
  .km-pa-werkzeug > .km-pa-wz-mitte + .km-pa-wz-gruppe { order: 2; margin-left: auto; }
  .km-pa-werkzeug > .km-pa-wz-mitte { order: 3; flex: 1 1 100%; }
  .km-pa-wz-kabel { flex: 1 1 auto; min-width: 0; }
  .km-pa-kombi { flex: 1 1 auto; min-width: 0; }
  #view-kabelmessungen .km-pa-werkzeug .km-pa-wz-kabel input { width: 100%; min-width: 0; }
  #view-kabelmessungen .km-pa-werkzeug .km-pa-wz-kabel select { flex: 1 1 auto; min-width: 0; max-width: none; }
  .km-pa-vorschlaege { right: 0; width: auto; max-width: none; }   /* so breit wie das Feld – nichts ragt aus dem Blatt */
  /* v962: Verlege-Symbol – das Kabel über die ganze Breite, darunter Ende, Liste und Knöpfe */
  .km-pa-wz-mitte:has([data-km-pa-wz-vl-ende]) { flex-wrap: wrap; row-gap: 6px; }
  .km-pa-wz-mitte:has([data-km-pa-wz-vl-ende]) > .km-pa-wz-kabel:first-child { flex: 1 1 100%; }
  .km-pa-wz-mitte:has([data-km-pa-wz-vl-ende]) > .km-pa-wz-kabel:not(:first-child) { flex: 1 1 calc(50% - 4px); }   /* v964: Ende und Liste je eine halbe Zeile */
  /* v964: darunter die Stand-Knöpfe (links) und Löschen/wie erkannt (rechts) – Ende und Liste behalten ihre Breite */
  .km-pa-wz-mitte:has([data-km-pa-wz-vl-ende]) > :not(.km-pa-wz-kabel) { order: 2; }
  .km-pa-wz-mitte:has([data-km-pa-wz-vl-ende]) > .km-pa-wz-stand { margin-right: auto; padding-left: 0; border-left: 0; }
  .km-pa-wz-mitte:has([data-km-pa-wz-vl-ende]) > .km-pa-wz-kabel:not(:first-child) > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
}
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-verweis { color: var(--km-s-link); }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-verweis[aria-pressed="true"] { background: color-mix(in srgb, var(--km-s-link) 16%, transparent); color: var(--km-s-link); }
.km-pa-kombi { position: relative; display: inline-flex; }
.km-pa-vorschlaege { position: absolute; top: calc(100% + 4px); left: 0; z-index: 8; box-sizing: border-box; min-width: 100%; width: max-content; max-width: 280px; max-height: 280px;
  margin: 0; padding: 4px; overflow: auto; overscroll-behavior: contain; list-style: none; border: 1px solid var(--km-border); border-radius: 10px; background: var(--km-surface);
  box-shadow: 0 12px 32px rgba(15, 26, 42, .22); }
html[data-theme="dark"] .km-pa-vorschlaege { box-shadow: 0 12px 32px rgba(0, 0, 0, .55); }
.km-pa-vorschlaege[hidden] { display: none; }
.km-pa-vorschlaege li { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 6px 9px; border-radius: 7px; color: var(--km-text); font-size: 13.5px;
  cursor: pointer; font-variant-numeric: tabular-nums; }
.km-pa-vorschlaege li b { font-weight: 600; }
.km-pa-vorschlaege li small { color: var(--km-text-2); font-size: 11.5px; white-space: nowrap; }
.km-pa-vorschlaege li:hover, .km-pa-vorschlaege li[aria-selected="true"] { background: var(--km-accent-soft); }
.km-pa-vorschlaege li.leer { color: var(--km-text-2); font-size: 12.5px; cursor: default; }
.km-pa-vorschlaege li.leer:hover { background: transparent; }
#view-kabelmessungen .km-pa-wz-kabel select { box-sizing: border-box; max-width: 220px; height: 32px; margin: 0; padding: 0 8px; border: 1px solid var(--km-border-strong); border-radius: 8px;
  background: var(--km-surface); color: var(--km-text); font-size: 14px; }
#view-kabelmessungen .km-pa-wz-kabel select:focus { border-color: var(--km-s-link); outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--km-s-link) 22%, transparent); }
.km-pa-tasten { position: absolute; top: calc(100% + 6px); right: 8px; z-index: 8; box-sizing: border-box; width: min(380px, calc(100% - 16px)); padding: 12px 14px;
  border: 1px solid var(--km-border); border-radius: 12px; background: var(--km-surface); box-shadow: 0 12px 32px rgba(15, 26, 42, .22); }
html[data-theme="dark"] .km-pa-tasten { box-shadow: 0 12px 32px rgba(0, 0, 0, .55); }
.km-pa-tasten b { display: block; margin-bottom: 8px; font-size: 13.5px; }
.km-pa-tasten dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 6px 12px; margin: 0; font-size: 12.5px; }
.km-pa-tasten dt { margin: 0; white-space: nowrap; }
.km-pa-tasten dd { margin: 0; color: var(--km-text-2); line-height: 1.35; }
.km-pa-tasten kbd { display: inline-block; padding: 1px 6px; border: 1px solid var(--km-border-strong); border-bottom-width: 2px; border-radius: 5px; background: var(--km-surface-2);
  color: var(--km-text); font-family: inherit; font-size: 11.5px; font-weight: 600; line-height: 1.5; white-space: nowrap; }
.km-pa-wz-mitte { display: inline-flex; flex: 1 1 auto; align-items: center; gap: 4px; min-width: 0; }
.km-pa-wz-mitte + .km-pa-wz-gruppe { margin-left: auto; }
#view-kabelmessungen .km-pa-werkzeug button { display: inline-grid; place-items: center; min-width: 32px; height: 32px; margin: 0; padding: 0; border: 0; border-radius: 8px;
  background: transparent; color: var(--km-text); cursor: pointer; }
#view-kabelmessungen .km-pa-werkzeug button:hover:not(:disabled) { background: var(--km-surface-3); }
#view-kabelmessungen .km-pa-werkzeug button[aria-pressed="true"] { background: var(--km-accent-soft); color: var(--km-accent); }
#view-kabelmessungen .km-pa-werkzeug button:focus-visible { outline: 2px solid var(--km-accent); outline-offset: -2px; }
#view-kabelmessungen .km-pa-werkzeug button:disabled { opacity: .4; cursor: default; }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-ok { background: var(--km-accent); color: var(--km-on-accent); }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-ok:hover { background: var(--km-accent); filter: brightness(1.06); }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-fertig { padding: 0 12px; background: var(--km-accent); color: var(--km-on-accent); font-size: 13px; font-weight: 650; }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-fertig:hover { background: var(--km-accent); filter: brightness(1.06); }
.km-pa-werkzeug svg { width: 17px; height: 17px; }
.km-pa-wz-hinweis { padding: 0 6px; color: var(--km-text-2); font-size: 12.5px; line-height: 1.3; }
.km-pa-wz-kabel { display: inline-flex; align-items: center; gap: 6px; }
#view-kabelmessungen .km-pa-wz-kabel > :is(span, label) { color: var(--km-text-2); font-size: 12px; font-weight: 600; white-space: nowrap; }   /* v962: „Kabel“ wie „Ende“, „Liste“, „Verweis auf“ (#view-… label überstimmte es) */
#view-kabelmessungen .km-pa-wz-kabel input { box-sizing: border-box; width: 140px; height: 32px; margin: 0; padding: 0 8px; border: 1px solid var(--km-border-strong); border-radius: 8px;
  background: var(--km-surface); color: var(--km-text); font-size: 14px; }
#view-kabelmessungen .km-pa-wz-kabel input:focus { border-color: var(--km-accent); outline: none; box-shadow: 0 0 0 3px var(--km-accent-soft); }
.km-pa-blatt > .km-kuep-fehlen { max-height: 84px; overflow: auto; padding: 8px 12px; border-top: 1px solid var(--km-line); }

/* Werte: Seitenleiste über dem Plan (nur bei einem angeklickten Kabel), so hoch wie ihr Inhalt; Karten schweben */
.km-pa-werte { position: absolute; top: 54px; right: 10px; z-index: 6;   /* unter dem Blattkopf – Name, ‹ › und Stand bleiben sichtbar */ display: grid; align-content: start; gap: 10px; box-sizing: border-box; width: min(390px, calc(100% - 20px));
  max-height: calc(100% - 64px); overflow: auto; overscroll-behavior: contain; border-radius: 14px; }
.km-pa-werte[hidden] { display: none; }
.km-pa-werte .km-plan-werte { margin: 0; max-width: none; }
.km-pa-werte .km-plan-karte { background: var(--km-surface); box-shadow: 0 16px 40px rgba(15, 26, 42, .2); }
html[data-theme="dark"] .km-pa-werte .km-plan-karte { box-shadow: 0 16px 40px rgba(0, 0, 0, .55); }
.km-pa-werte .km-plan-felder { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.km-pa-werte .km-plan-karte.teil { margin-left: 16px; }
/* v952: unter den Werten – wie viele noch offen sind und weiter zum nächsten offenen Kabel des Blatts */
.km-pa-weiter { position: sticky; bottom: 0; z-index: 2;   /* bleibt unten sichtbar, auch wenn die Werte scrollen (Handy) */
  display: flex; align-items: center; justify-content: space-between; gap: 10px; box-sizing: border-box; padding: 10px 12px; border: 1px solid var(--km-border);
  border-radius: 12px; background: var(--km-surface); box-shadow: 0 16px 40px rgba(15, 26, 42, .2); }
html[data-theme="dark"] .km-pa-weiter { box-shadow: 0 16px 40px rgba(0, 0, 0, .55); }
.km-pa-weiter small { min-width: 0; color: var(--km-text-2); font-size: 12.5px; line-height: 1.35; }
.km-pa-weiter .km-knopf { flex: 0 0 auto; gap: 4px; }
.km-pa-weiter .km-knopf svg { width: 16px; height: 16px; }
/* Suche: das gefundene Kästchen leuchtet kurz auf */
.km-pa-inhalt .km-kuep-marke.km-such-treffer { animation: km-such-treffer 2.4s ease-out 1; }
@keyframes km-such-treffer {
  0%, 35% { box-shadow: 0 0 0 calc(4px / var(--km-pa-s)) var(--km-k-blau), 0 0 0 calc(14px / var(--km-pa-s)) rgba(29, 78, 216, .35); }
}
.km-pa-leer { position: relative; display: grid; gap: 14px; height: 100%; align-content: start; }

@media (max-width: 1100px) {
  .km-pa { grid-template-columns: 210px minmax(0, 1fr); }
  .km-pm-suche { max-width: 220px; }
}
/* Handy: Leiste in zwei Zeilen (oben Tabelle|Plan, Suche, Knöpfe – darunter die Stände zum Wischen), ein Blatt füllt den
   Rest, Blätter-Liste nur auf Wunsch als Streifen, Werte von unten */
@media (max-width: 760px) {
  /* Handy: wie ein schmales Blatt (Container oben); Eingaben 16 px, sonst zoomt iOS beim Antippen */
  .km-pa-werkzeug { padding: 6px; }
  #view-kabelmessungen .km-pa-wz-kabel :is(input, select) { font-size: 16px; }
  .km-pa-vorschlaege { max-width: calc(100vw - 40px); }
  .km.km-planmodus { gap: 8px; min-height: 0; padding: 8px 10px 10px; }
  .km-pm-leiste { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 8px; }
  /* eindeutig vor den Handy-Regeln der Tabellen-Filterzeile (.km-chips/.km-suche über die ganze Breite) */
  .km-pm-leiste > .km-chips.km-ansicht { grid-column: 1; grid-row: 1; justify-content: flex-start; }
  .km-pm-leiste > .km-chips.km-ansicht button { flex: 0 0 auto; min-width: 0; padding: 0 10px; }
  .km-pm-leiste > .km-suche.km-pm-suche { grid-column: 2; grid-row: 1; min-width: 0; max-width: none; }
  .km-pm-leiste > .km-pm-rechts { grid-column: 3; grid-row: 1; margin-left: 0; gap: 6px; }
  .km-pm-rechts .km-knopf { width: 38px; height: 38px; padding: 0; }
  .km-pm-rechts .km-knopf span, .km-pm-leiste .km-pm-spalten { display: none; }
  #view-kabelmessungen .km-pm-rechts [data-km-pm-protokolle] { display: none; }   /* v951: am Handy im Blattkopf (sonst wird die Suche zu schmal) */
  #view-kabelmessungen .km-pa-kopf .km-pa-protokoll { display: inline-grid; }   /* v956: nur hier – am Rechner gibt es dafür „Protokolle“ in der Leiste */
  .km-farben .km-farben-deck { grid-template-columns: minmax(0, 1fr) 46px 30px; }   /* stärker als die Grundregel weiter unten */
  .km-farben .km-farben-deck label { grid-column: 1 / -1; }
  #view-kabelmessungen .km-plan-karte .km-plan-bemerkung textarea.km-zelle { font-size: 16px; }   /* v958: sonst zoomt iOS beim Antippen */
  .km-pm-leiste > .km-chips.km-stand-chips { grid-column: 1 / -1; grid-row: 2; }
  /* v954: das Suchfeld ist hier schmal – Trefferzahl und „Genau“ stehen vorn in der zweiten Zeile (unter Tabelle | Plan) */
  #view-kabelmessungen .km-pm-suche :is(.km-such-zahl, .km-such-genau) { display: none; }
  .km-pm-leiste > .km-pm-suchinfo { display: inline-flex; grid-column: 1; grid-row: 2; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; }
  #view-kabelmessungen .km-pm-suchinfo .km-such-genau { height: 32px; margin: 0; padding: 0 10px; font-size: 13px; }
  .km-pm-leiste.mit-suche > .km-chips.km-stand-chips { grid-column: 2 / -1; }
  /* v960: „Verlegung“ rechts in der zweiten Zeile (in der ersten würde die Suche zu schmal) */
  .km-pm-leiste:has(> .km-vl-knopf) > .km-chips.km-stand-chips { margin-right: 46px; }   /* bis an den Knopf (38 px + Abstand 8 px) */
  .km-pm-leiste > .km-vl-knopf { grid-column: 3; grid-row: 2; justify-self: end; width: 38px; height: 38px; padding: 0; }
  .km-pm-leiste > .km-vl-knopf span { display: none; }
  .km-pa-stand { font-size: 12px; }
  .km-pa, .km-pa.liste-zu { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); grid-template-areas: "liste" "blaetter"; gap: 8px; }
  .km-pa.liste-zu { grid-template-rows: minmax(0, 1fr); grid-template-areas: "blaetter"; }
  .km-pa-liste-kopf, .km-pa-ohne { display: none; }
  .km-pa-liste-inhalt { overflow-x: auto; overflow-y: hidden; padding: 6px; }
  .km-pa-liste-inhalt > ul { grid-auto-flow: column; grid-auto-columns: minmax(190px, 66vw); }
  .km-pa-eintrag { grid-template-columns: 64px minmax(0, 1fr); }
  .km-pa-daumen { width: 64px; height: 46px; }
  .km-pa-blaetter { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); }
  .km-pa-titel small { display: none; }
  .km-pa-werte { top: auto; right: 0; bottom: 0; left: 0; width: auto; max-height: 66%; border-radius: 16px 16px 0 0; }
  .km-pa-werte .km-plan-karte:first-child { border-radius: 16px 16px 12px 12px; }
  .km-pa-werte .km-plan-karte:first-child::before { content: ""; display: block; width: 40px; height: 4px; margin: -4px auto 2px; border-radius: 99px; background: var(--km-border-strong); }
  .km-pa-zoom { right: 8px; bottom: 8px; }
  .km-pa-zoom button { width: 36px; height: 36px; }
  .km-pm-panel { left: 0; width: auto; }
}

/* Panel „Kabelübersichtspläne“ */
.km-plaene .km-plan-hochladen { min-height: 104px; }
.km-plan-liste { display: grid; gap: 10px; }
.km-plan-eintrag { display: grid; gap: 8px; padding: 12px 14px; border: 1px solid var(--km-border); border-radius: 12px; background: var(--km-surface-2); }
.km-plan-eintrag-kopf { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 30px; }
.km-plan-eintrag-kopf > div { display: grid; gap: 1px; min-width: 0; }
.km-plan-eintrag-kopf b { font-size: 14.5px; overflow-wrap: anywhere; }
.km-plan-eintrag-kopf small { color: var(--km-text-2); font-size: 12px; }
.km-plan-eintrag-akt { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; }
.km-plan-stand { color: var(--km-text-2); font-size: 13px; }
.km-plan-stand.laeuft { display: grid; gap: 5px; }
.km-plan-stand.laeuft i { display: block; height: 6px; border-radius: 99px; background: linear-gradient(90deg, var(--km-accent) var(--km-anteil), var(--km-line) var(--km-anteil)); }
.km-plan-stand.fehler { color: var(--km-rot); font-weight: 600; }
.km-blaetter summary { color: var(--km-text-2); font-size: 13px; font-weight: 600; cursor: pointer; }
.km-blatt-liste { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 8px 12px; margin-top: 8px; }
.km-blatt-zeile { display: grid; grid-template-columns: minmax(0, 1fr) minmax(130px, 1.1fr) 30px; align-items: center; gap: 8px; }
.km-mini-platz { width: 30px; }
.km-plan-fehlend { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; padding: 8px 10px; border-radius: 9px;
  background: var(--km-warn-soft); color: var(--km-text); font-size: 13px; }
.km-blatt-zeile > span { display: grid; gap: 1px; min-width: 0; }
.km-blatt-zeile b { font-size: 13px; }
.km-blatt-zeile small { overflow: hidden; color: var(--km-text-3); font-size: 11.5px; text-overflow: ellipsis; white-space: nowrap; }
#view-kabelmessungen .km-blatt-zeile select { box-sizing: border-box; width: 100%; height: 34px; margin: 0; padding: 0 8px; border: 1px solid var(--km-border-strong); border-radius: 8px;
  background: var(--km-surface); color: var(--km-text); font-size: 13px; }

/* ---------- v932: Markieren (Häkchen) und Leiste mit den Aktionen für die Markierung */
#view-kabelmessungen input.km-wahl { flex: 0 0 auto; width: 17px; height: 17px; margin: 0; padding: 0; accent-color: var(--km-accent); cursor: pointer; }
.km-wahl-platz { flex: 0 0 auto; width: 17px; }
.km-tabelle thead .km-nr > div { display: flex; align-items: center; gap: 8px; }
.km-nr > div { flex-wrap: nowrap; }
.km-nr > div > b { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.km-nr small { padding-left: 23px; }
.km-z.teil .km-nr small { padding-left: 0; }
.km-gk > input.km-wahl { margin-left: 6px !important; }
.km-z.markiert :is(td, th) { background: var(--km-accent-soft); }
.km-gruppenkopf.markiert th { background: var(--km-sel); }
.km-gk-stand em { color: #93370d; font-style: normal; }   /* dunkleres Bernstein: auch auf markierter Zeile lesbar */
html[data-theme="dark"] .km-gk-stand em { color: var(--km-warn); }
.km-z.teilweise .km-nr { box-shadow: inset 3px 0 0 var(--km-warn); }
.km-auswahl { position: sticky; top: 8px; z-index: 6; display: grid; gap: 10px; padding: 10px 12px; border: 1px solid var(--km-accent); border-radius: 12px;
  background: var(--km-surface); box-shadow: var(--km-shadow); }
.km-auswahl-kopf { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.km-auswahl-zahl { color: var(--km-text); font-size: 13.5px; font-variant-numeric: tabular-nums; }
.km-auswahl-zahl b { color: var(--km-accent); }
.km-auswahl-gruppe { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; padding-left: 14px; border-left: 1px solid var(--km-border); }
.km-auswahl-titel { color: var(--km-text-3); font-size: 11.5px; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; }
.km-auswahl-weg { margin-left: auto; }
.km-knopf.gefahr { color: var(--km-rot); }
.km-knopf.gefahr:hover, .km-knopf.gefahr[aria-pressed="true"] { border-color: var(--km-rot); background: var(--km-rot-soft); color: var(--km-rot); }
.km-knopf.gefahr-voll { border-color: var(--km-rot); background: var(--km-rot); color: #ffffff; }
html[data-theme="dark"] .km-knopf.gefahr-voll { background: #b42318; border-color: #f97066; }
.km-auswahl-form, .km-auswahl-frage { display: grid; gap: 10px; padding-top: 10px; border-top: 1px solid var(--km-line); }
.km-auswahl-form p, .km-auswahl-frage p { margin: 0; color: var(--km-text-2); font-size: 13px; line-height: 1.45; }
.km-auswahl-frage p b { color: var(--km-text); }
.km-auswahl-felder { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px 12px; align-items: end; }
.km-auswahl-fuss { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.km-plan-eintrag .km-auswahl-frage { padding-top: 8px; }

/* Werte des angeklickten Kabels: Karte(n) unter dem Plan */
.km-plan-werte { display: grid; gap: 10px; max-width: 1180px; margin: 18px auto 0; }
.km-plan-karte { display: grid; gap: 10px; padding: 12px 14px 14px; border: 1px solid var(--km-border); border-left: 3px solid var(--km-border-strong); border-radius: 12px; background: var(--km-surface-2); }
.km-plan-karte.gemessen { border-left-color: var(--km-gruen); }
.km-plan-karte.auffaellig { border-left-color: var(--km-rot); }
.km-plan-karte.teilweise { border-left-color: var(--km-warn); }
.km-plan-karte.teil { margin-left: 24px; }
.km-plan-karte-kopf { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 30px; }
.km-plan-karte-kopf > div { display: grid; gap: 1px; min-width: 0; }
.km-plan-karte-kopf b { font-size: 14.5px; font-weight: 700; overflow-wrap: anywhere; }
.km-plan-karte-kopf small { color: var(--km-text-2); font-size: 12px; overflow-wrap: anywhere; }
.km-plan-karte-akt { display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; }
.km-plan-felder { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 10px; align-items: end; }
.km-plan-karte .km-feld > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#view-kabelmessungen .km-plan-karte .km-zelle { height: 36px; line-height: 34px; }
/* v958: Bemerkung je Kabel – mehrzeilig, wächst mit dem Text (bis 220 px, dann scrollt das Feld); steht nicht im Protokoll */
.km-plan-bemerkung { display: grid; gap: 4px; margin: 0; }
#view-kabelmessungen .km-plan-karte textarea.km-zelle { display: block; height: auto; min-height: 58px; max-height: 220px; padding: 7px 9px; font-family: inherit; font-size: 14px;
  line-height: 1.4; white-space: pre-wrap; overflow-wrap: anywhere; overflow-y: auto; resize: vertical; }
.km-plan-bemerkung-rest { color: var(--km-text-2); font-size: 11.5px; text-align: right; font-variant-numeric: tabular-nums; }
.km-plan-bemerkung-rest:empty { display: none; }
/* v960: Verlegung im Plan – Symbol an beiden Kabelenden (Papier bleibt weiß, daher in beiden Themen gleich). Größe folgt dem
   Blatt, am Bildschirm mindestens 16 und höchstens 30 Pixel (--km-pa-s = Zoom des Blatts) – nie breiter als der Platz bis
   zur Schrift (--km-vl-p aus der Erkennung, nur wo es eng ist). */
.km-vl-ebene { position: absolute; inset: 0; z-index: 3; pointer-events: none; }
.km-vl { --km-vl-farbe: #64748b; --km-vl-g: min(clamp(calc(16px / var(--km-pa-s, 1)), var(--km-vl), calc(30px / var(--km-pa-s, 1))), var(--km-vl-p, 1000px));
  position: absolute; box-sizing: border-box; display: grid; place-items: center; margin: 0; width: var(--km-vl-g); height: var(--km-vl-g);
  padding: calc(var(--km-vl-g) * .1); transform: translate(-50%, -50%);
  border: max(calc(1.5px / var(--km-pa-s, 1)), calc(var(--km-vl-g) * .09)) solid var(--km-vl-farbe); border-radius: 50%;
  background: #ffffff; color: var(--km-vl-farbe); box-shadow: 0 0 0 calc(1px / var(--km-pa-s, 1)) rgba(255, 255, 255, .9), 0 1px 3px rgba(15, 23, 42, .28);
  line-height: 0; pointer-events: auto; cursor: pointer; }
span.km-vl { cursor: default; }
.km-vl.km-vl-l { transform: translate(0, -50%); }      /* beginnt am Punkt (hinter dem Text) */
.km-vl.km-vl-r { transform: translate(-100%, -50%); }   /* endet am Punkt (vor dem Text) */
.km-vl svg { display: block; width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 3.2; stroke-linecap: round; stroke-linejoin: round; }
.km-vl.endlage svg, .km-vl-mini.endlage svg { stroke-width: 2.1; }
:is(.km-vl, .km-vl-mini).ja { --km-vl-farbe: #15803d; }
/* v965: angeschaltet – zwei Haken, dunkelgrün auf hellgrünem Grund (fertig) */
:is(.km-vl, .km-vl-mini).an { --km-vl-farbe: #166534; background: #dcfce7; }
.km-vl.an svg, .km-vl-mini.an svg { stroke-width: 2.6; }
:is(.km-vl, .km-vl-mini).endlage { --km-vl-farbe: #c2410c; }
:is(.km-vl, .km-vl-mini).nein { --km-vl-farbe: #dc2626; }
:is(.km-vl, .km-vl-mini).entfaellt { --km-vl-farbe: #6b7280; }
.km-vl.leer { border-style: dashed; background: rgba(255, 255, 255, .6); box-shadow: none; opacity: .6; }
.km-vl.leer:is(:hover, :focus-visible) { opacity: 1; }
#view-kabelmessungen .km-vl:focus-visible { outline: calc(3px / var(--km-pa-s, 1)) solid #2563eb; outline-offset: calc(2px / var(--km-pa-s, 1)); }
#view-kabelmessungen button.km-vl:hover { box-shadow: 0 0 0 calc(3px / var(--km-pa-s, 1)) color-mix(in srgb, var(--km-vl-farbe) 35%, transparent); }
/* v962: Symbole im Bearbeiten-Modus – wählen und ziehen; „?“ = steht in keiner Kabelliste; blauer Punkt = von Hand;
   gestrichelter Kreis = dort kommt ein neues Symbol hin (Werkzeug „Symbol setzen“) */
.km-pa-blatt.bearbeiten .km-vl.km-vl-edit { cursor: move; touch-action: none; }
.km-pa-blatt.bearbeiten[data-werkzeug="vl"] .km-pa-flaeche { cursor: crosshair; }
.km-vl.ohne { --km-vl-farbe: #94a3b8; border-style: dashed; background: rgba(255, 255, 255, .9); }
.km-vl.km-vl-edit.gewaehlt { z-index: 2; box-shadow: 0 0 0 calc(2px / var(--km-pa-s, 1)) #ffffff, 0 0 0 calc(5px / var(--km-pa-s, 1)) #2563eb; }
.km-vl.von-hand::after { content: ""; position: absolute; top: -14%; right: -14%; width: 34%; height: 34%; border: calc(1px / var(--km-pa-s, 1)) solid #ffffff;
  border-radius: 50%; background: #2563eb; }
.km-vl.km-vl-edit.weg { border-style: dashed; opacity: .35; box-shadow: none; }
.km-vl.km-vl-edit.weg.gewaehlt { opacity: .75; }
.km-vl.km-vl-entwurf { --km-vl-farbe: #2563eb; border-style: dashed; background: rgba(37, 99, 235, .14); box-shadow: none; pointer-events: none; }
/* v964: Stand gleich in der Bearbeiten-Leiste – die Symbole als Knöpfe, der aktuelle umrandet */
.km-pa-wz-stand { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 2px; padding: 0 4px; border-right: 1px solid var(--km-line); border-left: 1px solid var(--km-line); }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-stand-knopf { display: inline-grid; place-items: center; width: 32px; height: 32px; margin: 0; padding: 0;
  border: 1.5px solid transparent; border-radius: 8px; background: transparent; cursor: pointer; }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-stand-knopf[aria-pressed="true"] { border-color: var(--km-accent); background: var(--km-accent-soft); }
#view-kabelmessungen .km-pa-werkzeug .km-pa-wz-stand-knopf:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 1px; }
.km-pa-wz-stand-knopf .km-vl-mini { width: 22px; height: 22px; }
/* im Menü dieselben Symbole */
.km-vl-mini { --km-vl-farbe: #64748b; box-sizing: border-box; display: inline-grid; flex: 0 0 auto; place-items: center; width: 24px; height: 24px; padding: 2px;
  border: 2px solid var(--km-vl-farbe); border-radius: 50%; background: #ffffff; color: var(--km-vl-farbe); line-height: 0; }
.km-vl-mini.leer { border-style: dashed; }
#view-kabelmessungen .km-menue button > .km-vl-mini { flex: 0 0 24px; }   /* nicht wie der Text daneben in die Breite ziehen */
.km-vl-mini svg { width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 3.2; stroke-linecap: round; stroke-linejoin: round; }
#view-kabelmessungen .km-menue button.an { background: var(--km-surface-2); font-weight: 650; }
#view-kabelmessungen .km-menue button.an::after { content: ""; flex: 0 0 auto; width: 7px; height: 7px; border-radius: 50%; background: var(--km-accent); }
.km-vl-knopf svg circle { fill: currentColor; stroke: none; }
/* v959: „Als To-do“ rechts neben „Bemerkung“; darunter die To-dos dieses Kabels (Klick öffnet das To-do) */
.km-plan-karte .km-feld > span.km-plan-bemerkung-kopf { display: flex; align-items: center; justify-content: space-between; gap: 8px; overflow: visible; white-space: normal; }
.km-plan-bemerkung-kopf label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: default; }
#view-kabelmessungen .km-plan-als-todo { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 5px; min-height: 28px; padding: 0 2px; font-size: 12.5px; font-weight: 600; }
#view-kabelmessungen .km-plan-als-todo svg { width: 16px; height: 16px; }
#view-kabelmessungen .km-plan-als-todo:disabled { opacity: .55; cursor: default; }
.km-plan-todos { display: grid; gap: 4px; margin: 2px 0 0; padding: 0; list-style: none; }
.km-plan-todos li { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; padding: 5px 8px; border: 1px solid var(--km-border);
  border-radius: 8px; background: var(--km-surface-2); }
.km-plan-todos li.mehr { justify-content: flex-start; border-style: dashed; background: transparent; color: var(--km-text-2); font-size: 12px; }
#view-kabelmessungen .km-plan-todos .km-link { display: inline-flex; flex: 1 1 auto; align-items: center; gap: 6px; min-width: 0; text-align: left; font-size: 13px; }
#view-kabelmessungen .km-plan-todos .km-link span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#view-kabelmessungen .km-plan-todos .km-link svg { width: 15px; height: 15px; }
.km-plan-todos li.erledigt .km-link span { color: var(--km-text-2); text-decoration: line-through; }
.km-plan-todo-stand { flex: 0 0 auto; padding: 1px 8px; border: 1px solid color-mix(in srgb, var(--km-ts) 55%, transparent); border-radius: 999px;
  background: color-mix(in srgb, var(--km-ts) 14%, var(--km-surface)); color: var(--km-text); font-size: 11.5px; font-weight: 600; white-space: nowrap; }
/* Plan: Eck oben rechts am Kästchen (wie ein Excel-Kommentar) – dunkel, damit es auf jeder Füllung zu sehen ist */
.km-kuep-marke.mit-bemerkung::before { content: ""; position: absolute; top: 0; right: 0; width: 0; height: 0; pointer-events: none;
  border-top: calc(8px / var(--km-pa-s, 1)) solid #111827; border-left: calc(8px / var(--km-pa-s, 1)) solid transparent; }
.km-bemerkung-eck { display: inline-block; flex: 0 0 auto; box-sizing: border-box; width: 16px; height: 11px; border: 1.5px solid var(--km-border-strong); border-radius: 3px;
  background: linear-gradient(225deg, #111827 0 5px, #ffffff 5px); }
/* Tabelle: Sprechblase neben der Kabelnummer, der Text im Hinweis */
.km-bemerkung-zeichen { display: inline-grid; flex: 0 0 auto; place-items: center; width: 20px; height: 20px; color: var(--km-text-2); cursor: help; }
.km-bemerkung-zeichen svg { width: 16px; height: 16px; }
.km-plan-karte-plan { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 3px 12px; margin: 0; padding: 8px 10px; border-radius: 8px; background: var(--km-surface); font-size: 12.5px; line-height: 1.45; }
.km-plan-karte-plan dt { color: var(--km-text-2); font-weight: 600; white-space: nowrap; }
.km-plan-karte-plan dd { margin: 0; min-width: 0; overflow-wrap: anywhere; color: var(--km-text); }
.km-plan-karte-plan small { color: var(--km-text-2); font-size: inherit; }
.km-plan-karte.entfaellt .km-plan-karte-kopf b { color: var(--km-text-3); text-decoration: line-through; }

/* v946: Stand-Filter = Legende – je Knopf ein Farbfeld (Papier wie im Plan), eigene Markierungen dahinter, Stift zum
   Bearbeiten; im Plan zusätzlich „Nachbarschrank“ als reiner Legendeneintrag */
.km-stand-chips button { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 7px; }
.km-stand-chips bdi { max-width: 14em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.km-chip-farbe { display: inline-block; flex: 0 0 auto; box-sizing: border-box; width: 16px; height: 11px; border: 2px solid var(--km-r); border-radius: 3px;
  background: linear-gradient(var(--km-f), var(--km-f)), #ffffff; }
.km-chip-farbe.entfaellt, .km-chip-farbe.link { border-style: dashed; }
.km-chip-legende { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 7px; box-sizing: border-box; height: 30px; margin-left: 2px; padding: 0 10px 0 12px;
  border-left: 1px solid var(--km-border); color: var(--km-text-2); font-size: 13px; white-space: nowrap; }
.km-chips-stift { display: inline-grid; flex: 0 0 auto; place-items: center; width: 30px; height: 30px; margin: 0; padding: 0; border: 0; border-radius: 7px; background: transparent;
  color: var(--km-text-2); cursor: pointer; }
.km-chips-stift:hover, .km-chips-stift[aria-pressed="true"] { background: var(--km-accent-soft); color: var(--km-accent); }
.km-chips-stift:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 2px; }
.km-chips-stift svg { width: 16px; height: 16px; }
.km-ansicht button { min-width: 64px; }

/* ---------- v945: eigene Markierungen (Tabelle, Werte-Karte) und Panel „Farben“ – gewählte Farbe genau so, Schrift
   darauf schwarz oder weiß nach WCAG (--km-m-schrift aus kabelmessungen.js) */
.km-tag.km-markierung { border-color: var(--km-m); background: var(--km-m); color: var(--km-m-schrift, #ffffff); }
/* Tabelle: in der zweiten Zeile neben der Gegenstelle – so hoch wie die Textzeile (Zeilen bleiben gleich hoch), lange
   Namen und Gegenstellen mit „…“ (voller Name im Tooltip) */
.km-nr small.mit-markierung { display: flex; align-items: center; gap: 6px; }
.km-nr small .km-nr-gegen { flex: 0 4 auto; min-width: 42px;   /* bei Platzmangel kürzt zuerst die Gegenstelle – „→ KS…“ bleibt */ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.km-nr small .km-nr-gegen:empty { display: none; }
.km-nr small .km-markierung { flex: 0 1 auto; min-width: 28px; box-sizing: border-box; height: 14px; padding: 0 6px; overflow: hidden; font-size: 10px; line-height: 14px;
  text-overflow: ellipsis; white-space: nowrap; }
.km-plan-markierung { margin: 0; }
.km-plan-markierung.leer { color: var(--km-text-2); font-size: 12.5px; }
.km-plan-markierung-wahl { position: relative; display: block; }
.km-plan-markierung-wahl .km-markierung-punkt { position: absolute; top: 50%; left: 11px; width: 14px; height: 14px; box-sizing: border-box; transform: translateY(-50%);
  border: 1px solid rgba(15, 26, 42, .25); border-radius: 50%; background: var(--km-m); pointer-events: none; }
.km-plan-markierung-wahl .km-markierung-punkt.leer { border: 1.5px dashed var(--km-border-strong); background: transparent; }
#view-kabelmessungen .km-plan-markierung-wahl select { box-sizing: border-box; width: 100%; height: 36px; padding: 0 10px 0 34px; border: 1px solid var(--km-border-strong);
  border-radius: 9px; background: var(--km-surface); color: var(--km-text); font-size: 14px; }
#view-kabelmessungen .km-plan-markierung-wahl select:focus { border-color: var(--km-accent); outline: none; box-shadow: 0 0 0 3px var(--km-accent-soft); }
/* v946: Panel „Stände und Markierungen“ – jede Zeile gleich: Farbfeld (Klick: Palette), Name, Bedeutung bzw. Anzahl,
   Zurücksetzen bzw. Löschen. Zwei Spalten nur, wo Platz ist; Zeilen gleich hoch, Spalten bündig. */
.km-farben-raster { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 400px), 1fr)); gap: 18px 32px; align-items: start; max-width: 1240px; }
/* v956: „Füllung im Plan“ – Deckkraft der Hintergrundfarbe aller Kästchen, eine Zeile über den Ständen */
.km-farben-deck { display: grid; grid-template-columns: minmax(0, 1fr) minmax(120px, 240px) 46px 30px; align-items: center; gap: 6px 12px; box-sizing: border-box;
  max-width: 1240px; margin: 0 0 16px; padding: 10px 12px; border: 1px solid var(--km-border); border-radius: 10px; background: var(--km-surface-2); }
.km-farben-deck label { display: grid; gap: 2px; min-width: 0; cursor: default; }
.km-farben-deck label b { color: var(--km-text); font-size: 13px; font-weight: 650; }
.km-farben-deck label small { color: var(--km-text-2); font-size: 12px; line-height: 1.35; }
#view-kabelmessungen .km-farben-deck input[type="range"] { width: 100%; height: 24px; min-height: 0; margin: 0; padding: 0; border: 0; background: transparent; box-shadow: none;
  accent-color: var(--km-accent); cursor: pointer; }
#view-kabelmessungen .km-farben-deck input[type="range"]:disabled { cursor: default; opacity: .55; }
.km-farben-deck output { color: var(--km-text); font-size: 13px; font-weight: 650; text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.km-farben-deck-platz { display: block; width: 30px; height: 30px; }
.km-farben-gruppe { display: grid; align-content: start; gap: 8px; min-width: 0; }
.km-farben-gruppe h3 { margin: 0; color: var(--km-text-2); font-size: 11.5px; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; }
.km-farben-gruppe h3 small { margin-left: 6px; font-size: 11.5px; font-weight: 500; letter-spacing: 0; text-transform: none; }
.km-farben-liste { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.km-farbe-zeile { display: grid; grid-template-columns: 56px minmax(0, 1fr) minmax(0, 1.25fr) 32px; align-items: center; gap: 8px 10px; }
.km-farbe-knopf { display: inline-flex; align-items: center; justify-content: center; gap: 3px; box-sizing: border-box; width: 56px; height: 36px; margin: 0; padding: 0 4px 0 8px;
  border: 1px solid var(--km-border-strong); border-radius: 9px; background: var(--km-surface); color: var(--km-text-2); cursor: pointer; }
.km-farbe-knopf i { display: block; flex: 0 0 auto; box-sizing: border-box; width: 22px; height: 15px; border: 2.5px solid var(--km-m); border-radius: 4px;
  background: linear-gradient(color-mix(in srgb, var(--km-m) var(--km-deck, 40%), transparent), color-mix(in srgb, var(--km-m) var(--km-deck, 40%), transparent)), #ffffff; }
.km-farbe-knopf.entfaellt i, .km-farbe-knopf.link i { border-style: dashed; }
.km-farbe-knopf svg { width: 14px; height: 14px; transition: transform .15s ease; }
.km-farbe-knopf:hover:not(:disabled), .km-farbe-knopf[aria-expanded="true"] { border-color: var(--km-accent); color: var(--km-accent); }
.km-farbe-knopf[aria-expanded="true"] svg { transform: rotate(180deg); }
.km-farbe-knopf:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 2px; }
.km-farbe-knopf:disabled { cursor: default; }
#view-kabelmessungen .km-farbe-text { box-sizing: border-box; width: 100%; height: 36px; margin: 0; padding: 0 10px; border: 1px solid var(--km-border-strong); border-radius: 9px;
  background: var(--km-surface); color: var(--km-text); font-size: 14px; }
#view-kabelmessungen .km-farbe-text:hover:not(:disabled) { border-color: var(--km-text-3); }
#view-kabelmessungen .km-farbe-text:focus { border-color: var(--km-accent); outline: none; box-shadow: 0 0 0 3px var(--km-accent-soft); }
.km-farbe-meta { position: relative; min-width: 0; color: var(--km-text-2); font-size: 12px; }
/* v949: Bedeutung frei; bei Markierungen steht die Anzahl der Kabel rechts im Feld */
#view-kabelmessungen .km-farbe-bedeutung { color: var(--km-text-2); font-size: 13px; }
#view-kabelmessungen .km-farbe-meta.mit-anzahl .km-farbe-bedeutung { padding-right: 86px; }
.km-farbe-anzahl { position: absolute; top: 50%; right: 10px; max-width: 76px; overflow: hidden; color: var(--km-text-3); font-size: 11.5px; white-space: nowrap;
  text-overflow: ellipsis; transform: translateY(-50%); pointer-events: none; }
.km-farbe-aktion { display: inline-grid; place-items: center; width: 32px; }
.km-palette { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 8px; border: 1px solid var(--km-border); border-radius: 10px;
  background: var(--km-surface-2); }
.km-palette-farbe { box-sizing: border-box; width: 28px; height: 28px; margin: 0; padding: 0; border: 2px solid var(--km-surface); border-radius: 50%; background: var(--km-p);
  box-shadow: 0 0 0 1px rgba(15, 26, 42, .2); cursor: pointer; }
.km-palette-farbe.an { box-shadow: 0 0 0 2px var(--km-accent); }
.km-palette-farbe:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 2px; }
.km-palette-eigen { position: relative; display: inline-flex; align-items: center; box-sizing: border-box; height: 28px; margin-left: 4px; padding: 0 12px; border: 1px dashed var(--km-border-strong);
  border-radius: 99px; color: var(--km-text-2); font-size: 12.5px; font-weight: 600; cursor: pointer; }
#view-kabelmessungen .km-palette-eigen { color: var(--km-text-2); font-size: 12.5px; }   /* gegen die allgemeine label-Regel der Ansicht */
#view-kabelmessungen .km-palette-eigen input[type="color"] { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; padding: 0; border: 0; opacity: 0; cursor: pointer; }
.km-palette-eigen:focus-within { outline: 2px solid var(--km-accent); outline-offset: 2px; }
.km-farbe-frage { grid-column: 1 / -1; margin: 2px 0; }
.km-farben-leer { margin: 0; color: var(--km-text-2); font-size: 13px; }
.km-farben-neu { justify-self: start; }

/* ---------- Schmaler Bildschirm, Handy */
@media (max-width: 1200px) {
  .km-raster.zwei { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 900px) {
  .km-kopf { grid-template-columns: minmax(0, 1fr) auto; }
  .km-aktionen { grid-column: 1 / -1; justify-content: flex-start; }
  .km-filter-rechts { margin-left: 0; }
  .km-geraet-zeile { grid-template-columns: repeat(3, minmax(120px, 1fr)); }
  .km-geraet-titel { grid-column: 1 / -1; }
  .km-neu-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .km-neu-knoepfe { grid-column: 1 / -1; }
  .km-plan-felder { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .km-auswahl-felder { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .km { gap: 12px; padding: 14px 12px 22px; }
  .km-titel h2 { font-size: 22px; }
  .km-kennzahl { min-width: 0; }
  .km-kennzahl b { font-size: 22px; }
  .km-aktionen { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .km-aktionen > .km-knopf:first-child:nth-last-child(odd) { grid-column: 1 / -1; }   /* drei Knöpfe: der erste über die ganze Breite */
  .km-aktionen .km-knopf { min-width: 0; }
  .km-aktionen .km-knopf .km-lang { display: none; }
  .km-aktionen .km-knopf .km-kurz { display: inline; }
  .km-reiter button { padding: 8px 10px; }
  .km-reiter button span { font-size: 11.5px; }
  .km-filter { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .km-filter .km-feld { width: auto; }
  .km-chips, .km-suche, .km-filter-rechts { grid-column: 1 / -1; max-width: none; }
  .km-chips { justify-content: space-between; gap: 2px; }
  .km-chips button { flex: 1 1 auto; padding: 0 6px; font-size: 12.5px; }
  .km-chips .km-lang { display: none; }
  .km-chips .km-kurz { display: inline; }
  .km-filter-rechts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .km-filter-rechts > .km-knopf { grid-column: 1 / -1; }
  .km-klapp { display: contents; }
  .km-tabelle-rahmen { max-height: calc(100vh - 160px); }
  .km-tabelle col.c-nr { width: 118px; }
  .km-gk { flex-wrap: wrap; max-width: calc(100vw - 50px); }
  .km-gk-akt { margin-left: 0; }
  .km-geraet-zeile { grid-template-columns: minmax(0, 1fr); max-width: calc(100vw - 60px); }
  .km-neu-form { grid-template-columns: minmax(0, 1fr); max-width: calc(100vw - 60px); }
  .km-raster.drei, .km-import-wahl { grid-template-columns: minmax(0, 1fr); }
  .km-kuep-leer { grid-template-columns: minmax(0, 1fr); }
  .km-blatt-liste { grid-template-columns: minmax(0, 1fr); }
  .km-auswahl { position: static; }
  .km-auswahl-gruppe { padding-left: 0; border-left: 0; width: 100%; }
  .km-auswahl-weg { margin-left: 0; }
  .km-auswahl-felder { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .km-auswahl-fuss { display: grid; grid-template-columns: minmax(0, 1fr); }
  .km-auswahl-fuss .km-knopf { height: auto; min-height: 38px; padding: 8px 12px; white-space: normal; text-align: center; }
  .km-auswahl-fuss .km-knopf:last-child { order: -1; }   /* Ausführen oben, Abbrechen darunter */
  .km-plan-felder { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .km-plan-karte.teil { margin-left: 12px; }
  .km-farbe-zeile { grid-template-columns: 56px minmax(0, 1fr) 32px; }
  .km-farbe-meta { grid-column: 2; grid-row: 2; margin-top: -4px; }
  .km-farbe-aktion { grid-column: 3; grid-row: 1; }
  .km-stand-chips { justify-content: flex-start; overflow-x: auto; scrollbar-width: none; }
  .km-stand-chips button { flex: 0 0 auto; }
  .km-panel { padding: 14px 12px; }
  .km-panel-fuss { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------- v947: Protokollkopf mit Live-Vorschau – füllt die Ansicht (Höhe wie der Planmodus: --km-pm-oben). Links die
   Angaben in der Reihenfolge der Seite (eigener Bildlauf, Knöpfe immer zu sehen), rechts die Vorlage: Papier (auch nachts
   weiß) auf ruhiger Fläche, das Feld in Arbeit blau markiert mit seinem Namen. Handy/Tablet hochkant: Vorlage oben. */
.km.km-kopfmodus { display: block; box-sizing: border-box; height: calc(100dvh - var(--km-pm-oben, 76px)); min-height: 520px; padding: 12px 16px; }
.km-kw { display: grid; grid-template-columns: minmax(360px, 440px) minmax(0, 1fr); gap: 14px; height: 100%; min-height: 0; }
.km-kw-form, .km-kw-vorschau { display: flex; flex-direction: column; min-width: 0; min-height: 0; border: 1px solid var(--km-border); border-radius: 14px;
  box-shadow: var(--km-shadow); overflow: hidden; }
.km-kw-form { background: var(--km-surface); }
/* Kopf des Formulars so hoch wie die Leiste der Vorlage (55 px): eine durchgehende Linie über beide Spalten */
.km-kw-kopf { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex: 0 0 auto; box-sizing: border-box; height: 55px;
  padding: 0 12px 0 18px; border-bottom: 1px solid var(--km-border); }
.km-kw-kopf b { font: 650 16.5px/1.25 var(--km-font-display); }
.km-kw-einleitung { display: grid; justify-items: start; gap: 4px; margin: 0; color: var(--km-text-2); font-size: 12.5px; line-height: 1.45; }
.km-kw-einleitung p { margin: 0; }
.km-kw-code { padding: 0 4px; border-radius: 4px; background: var(--km-surface-3); color: var(--km-text); font: 600 12px/1.4 ui-monospace, Consolas, monospace; }
#view-kabelmessungen .km-kw-einleitung .km-link { font-size: 12.5px; text-align: left; }
/* v948: Reiter je Protokoll (dazu „Allgemein“) unter dem Kopf – drei gleich breite Felder */
.km-kw-reiter { flex: 0 0 auto; padding: 10px 18px; border-bottom: 1px solid var(--km-line); }
.km-kw-reiter .km-chips { display: flex; box-sizing: border-box; width: 100%; overflow-x: auto; scrollbar-width: none; }
.km-kw-reiter .km-chips::-webkit-scrollbar { display: none; }
.km-kw-reiter .km-chips button { flex: 1 0 auto; min-width: 0; max-width: 180px; padding: 0 8px; overflow: hidden; text-overflow: ellipsis; }
.km-kw-reiter .km-chips .km-kw-reiter-neu { flex: 0 0 auto; display: inline-grid; place-items: center; width: 32px; padding: 0; }
.km-kw-reiter .km-chips .km-kw-reiter-neu svg { width: 16px; height: 16px; }
.km-kw-reiter .km-chips button[aria-selected="true"] { background: var(--km-accent-soft); color: var(--km-accent); }
/* Feld: Beschriftung, rechts „Vorlage“ (nur wenn der Text abweicht); feste Texte der Vorlage auf leicht getönter Fläche,
   damit Angaben (Ersteller, Messgerät …) und Beschriftungen auf einen Blick auseinanderzuhalten sind */
.km-kw-feld-kopf { display: flex; align-items: center; justify-content: space-between; gap: 6px; min-width: 0; min-height: 18px; }
#view-kabelmessungen .km-kw-feld-kopf label { min-width: 0; overflow: hidden; color: var(--km-text-2); font-size: 12px; font-weight: 600; line-height: 16px;
  white-space: nowrap; text-overflow: ellipsis; }
#view-kabelmessungen .km-kw-vorlage { display: inline-flex; align-items: center; gap: 3px; flex: 0 0 auto; height: 18px; margin: 0; padding: 0 4px; border: 0; border-radius: 5px;
  background: transparent; color: var(--km-accent); font-size: 11.5px; font-weight: 600; cursor: pointer; }
#view-kabelmessungen .km-kw-vorlage svg { width: 13px; height: 13px; }
#view-kabelmessungen .km-kw-vorlage:hover { background: var(--km-accent-soft); }
#view-kabelmessungen .km-kw-vorlage:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 1px; }
#view-kabelmessungen .km-kw-vorlage[hidden] { display: none; }
#view-kabelmessungen .km-kw-feld.text :is(input, textarea) { background: var(--km-surface-2); }
#view-kabelmessungen .km-kw-feld textarea { box-sizing: border-box; width: 100%; min-height: 0; margin: 0; padding: 8px 10px; border: 1px solid var(--km-border-strong);
  border-radius: 9px; color: var(--km-text); font-size: 14px; line-height: 1.4; resize: none; field-sizing: content; min-height: 66px; max-height: 130px; }
#view-kabelmessungen .km-kw-feld textarea:focus { border-color: var(--km-accent); outline: none; box-shadow: 0 0 0 3px var(--km-accent-soft); }
/* Farben: je Zeile Farbfeld, Name, Wert; Klick öffnet die Palette darunter */
/* v949: Farben am Block, den sie färben – kleine Farbfelder mit Namen in einer Zeile, Palette darunter */
.km-kw-farben { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; grid-column: 1 / -1; margin-bottom: 2px; }
.km-kw-farben-titel { margin-right: 2px; color: var(--km-text-3); font-size: 12px; font-weight: 600; }
.km-kw-farbe { display: inline-flex; align-items: center; gap: 0; min-width: 0; }
#view-kabelmessungen .km-kw-farbknopf { display: inline-flex; align-items: center; gap: 6px; box-sizing: border-box; height: 30px; margin: 0; padding: 0 10px 0 5px;
  border: 1px solid var(--km-border-strong); border-radius: 999px; background: var(--km-surface); color: var(--km-text); font-size: 12.5px; cursor: pointer; }
#view-kabelmessungen .km-kw-farbknopf:hover { border-color: var(--km-accent); }
#view-kabelmessungen .km-kw-farbknopf:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 1px; }
#view-kabelmessungen .km-kw-farbknopf[aria-expanded="true"] { border-color: var(--km-accent); box-shadow: 0 0 0 3px var(--km-accent-soft); }
.km-kw-farbknopf i { flex: 0 0 auto; width: 20px; height: 20px; border-radius: 50%; background: var(--km-p); box-shadow: inset 0 0 0 1px rgba(15, 26, 42, .22); }
html[data-theme="dark"] #view-kabelmessungen .km-kw-farbknopf i { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .3); }
.km-kw-farbknopf span { white-space: nowrap; }
#view-kabelmessungen .km-kw-farbe-zurueck { width: 26px; height: 26px; }
#view-kabelmessungen .km-kw-farbe-zurueck svg { width: 14px; height: 14px; }
.km-kw-farben .km-kw-palette { flex: 1 1 100%; }
/* v949: weitere Vorlagen – Name und Basis, Aktionen (übernehmen, als Datei, löschen), neue Vorlage, Import */
.km-kw-vorlagenkopf { display: grid; gap: 4px; justify-self: stretch; padding-bottom: 4px; }
.km-kw-vorlagenkopf small { color: var(--km-text-3); font-size: 12px; }
.km-kw-aktionen { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; justify-self: stretch; margin-top: 2px; }
.km-kw-uebernehmen { flex: 1 1 220px; min-width: 0; }
#view-kabelmessungen .km-kw-uebernehmen select { box-sizing: border-box; width: 100%; height: 30px; margin: 0; padding: 0 8px; border: 1px solid var(--km-border-strong);
  border-radius: 8px; background: var(--km-surface); color: var(--km-text-2); font-size: 12.5px; }
#view-kabelmessungen .km-kw-uebernehmen select:focus { border-color: var(--km-accent); outline: none; box-shadow: 0 0 0 3px var(--km-accent-soft); }
.km-kw-basis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; box-sizing: border-box; height: auto; min-height: 38px; }
.km-kw-basis button { height: auto; min-height: 30px; padding: 4px 8px; white-space: normal; line-height: 1.2; }
.km-kw-basis button[aria-checked="true"] { background: var(--km-accent-soft); color: var(--km-accent); }
#view-kabelmessungen .km-kw-feld select { box-sizing: border-box; width: 100%; height: 38px; margin: 0; padding: 0 10px; border: 1px solid var(--km-border-strong); border-radius: 9px;
  background: var(--km-surface); color: var(--km-text); font-size: 14px; }
.km-kw-neu-fuss { display: flex; justify-content: flex-end; }
.km-kw-import { min-height: 112px; }
/* v949: Auswahl der Protokollvorlage beim Export – kleines Menü am Knopf (in der Ansicht) */
.km-menue { position: fixed; z-index: 60; display: grid; min-width: 220px; max-width: min(360px, calc(100vw - 16px)); padding: 6px; border: 1px solid var(--km-border);
  border-radius: 12px; background: var(--km-surface); box-shadow: 0 12px 32px -12px rgba(15, 26, 42, .35), var(--km-shadow); }
.km-menue-titel { padding: 4px 8px 6px; color: var(--km-text-3); font-size: 11.5px; font-weight: 650; letter-spacing: .02em; text-transform: uppercase; }
#view-kabelmessungen .km-menue button { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 36px; margin: 0; padding: 6px 10px; border: 0;
  border-radius: 8px; background: transparent; color: var(--km-text); font-size: 13.5px; text-align: left; cursor: pointer; }
#view-kabelmessungen .km-menue button:hover, #view-kabelmessungen .km-menue button:focus-visible { background: var(--km-accent-soft); color: var(--km-accent); outline: none; }
.km-menue button small { flex: 0 0 auto; color: var(--km-text-3); font-size: 11.5px; }
/* v951: Messprotokolle aus dem Plan – Gruppen (dieses Blatt / alle) mit Zwischenüberschrift, PDF/Excel mit Symbol */
.km-menue button > span { flex: 1 1 auto; min-width: 0; }
.km-menue button > svg { flex: 0 0 auto; width: 18px; height: 18px; color: var(--km-text-2); }
#view-kabelmessungen .km-menue button:is(:hover, :focus-visible) > svg { color: var(--km-accent); }
.km-menue-titel:not(:first-child) { margin-top: 6px; padding-top: 10px; border-top: 1px solid var(--km-line); }
.km-menue-titel { text-transform: none; letter-spacing: 0; font-size: 12px; }   /* Namen (KS82600) bleiben, wie sie sind */
.km-kw-scroll { display: grid; align-content: start; gap: 12px; flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 14px 18px 18px; }
#view-kabelmessungen .km-kw-gruppe { display: grid; gap: 10px; min-width: 0; margin: 0; padding: 10px 14px 14px; border: 1px solid var(--km-border); border-radius: 12px;
  transition: border-color .15s ease; }
#view-kabelmessungen .km-kw-gruppe:focus-within { border-color: color-mix(in srgb, var(--km-accent) 45%, var(--km-border)); }
#view-kabelmessungen .km-kw-gruppe legend { padding: 0 6px; color: var(--km-text-2); font-size: 12.5px; font-weight: 650; }
.km-kw-felder { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 12px; }
.km-kw-felder > .breit { grid-column: 1 / -1; }
/* Messgerät: der Text davor ist länger als die Angabe */
.km-kw-felder.geraet { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); }
.km-kw-hinweis { margin: -4px 0 0; color: var(--km-text-3); font-size: 12px; line-height: 1.45; }
.km-kw-typen { display: grid; gap: 8px; }
.km-kw-typen > span { color: var(--km-text-2); font-size: 12px; font-weight: 600; line-height: 16px; }
.km-kw-typen > div { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.km-kw-fuss { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; padding: 12px 18px; border-top: 1px solid var(--km-line); }
.km-kw-ungespeichert { display: inline-flex; align-items: center; gap: 8px; flex: 1 1 auto; min-width: 0; color: var(--km-text-3); font-size: 12.5px; line-height: 1.25; }
.km-kw-ungespeichert::before { content: ""; flex: 0 0 auto; width: 8px; height: 8px; border-radius: 50%; background: var(--km-border-strong); }
.km-kw-ungespeichert.an { color: var(--km-warn); font-weight: 600; }
.km-kw-ungespeichert.an::before { background: currentColor; }
.km-kw-fuss .km-knopf.primaer:disabled { opacity: .45; filter: none; cursor: default; }

.km-kw-vorschau { background: var(--km-surface-3); container: kw-vorschau / inline-size; }
.km-kw-leiste { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; box-sizing: border-box; min-height: 55px; padding: 8px 10px; border-bottom: 1px solid var(--km-border);
  background: var(--km-surface); }
.km-kw-quelle { flex: 1 1 0; min-width: 0; overflow: hidden; padding-left: 6px; color: var(--km-text-2); font-size: 12.5px; white-space: nowrap; text-overflow: ellipsis; }
.km-kw-quelle b { color: var(--km-text); font-weight: 650; }
.km-kw-status { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; box-sizing: border-box; height: 26px; margin-left: auto; padding: 0 10px; border-radius: 999px;
  background: var(--km-gruen-soft); color: var(--km-gruen); font-size: 12px; font-weight: 650; white-space: nowrap; }
.km-kw-status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.km-kw-status[data-zustand="laedt"] { background: var(--km-accent-soft); color: var(--km-accent); }
.km-kw-status[data-zustand="laedt"]::before { animation: km-kw-puls 1s ease-in-out infinite; }
.km-kw-status[data-zustand="fehler"] { background: var(--km-rot-soft); color: var(--km-rot); cursor: help; }
@keyframes km-kw-puls { 50% { opacity: .25; } }
.km-kw-zoom { display: inline-flex; align-items: center; gap: 2px; flex: 0 0 auto; box-sizing: border-box; height: 38px; padding: 3px; border: 1px solid var(--km-border);
  border-radius: 10px; background: var(--km-surface); }
.km-kw-zoom button { display: inline-grid; place-items: center; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 7px; background: transparent; color: var(--km-text);
  font-size: 17px; line-height: 1; cursor: pointer; }
.km-kw-zoom button:hover:not(:disabled) { background: var(--km-surface-3); }
.km-kw-zoom button[aria-pressed="true"] { background: var(--km-accent-soft); color: var(--km-accent); }
.km-kw-zoom button:focus-visible { outline: 2px solid var(--km-accent); outline-offset: -2px; }
.km-kw-zoom button:disabled { opacity: .4; cursor: default; }
.km-kw-zoom output { min-width: 46px; color: var(--km-text-2); font-size: 12px; font-weight: 600; text-align: center; font-variant-numeric: tabular-nums; }
.km-kw-rahmen { position: relative; display: grid; flex: 1 1 auto; min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 18px; scrollbar-gutter: stable; }
.km-kw-blatt { position: relative; margin: auto; background: #fff; border-radius: 2px;
  box-shadow: 0 1px 3px rgba(15, 26, 42, .14), 0 10px 28px -10px rgba(15, 26, 42, .32); }
html[data-theme="dark"] #view-kabelmessungen .km-kw-blatt { box-shadow: 0 1px 3px rgba(0, 0, 0, .5), 0 12px 32px -10px rgba(0, 0, 0, .7); }
.km-kw-blatt img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; user-select: none; -webkit-user-drag: none; }
.km-kw-blatt img[hidden] { display: none; }
.km-kw-warte { position: absolute; inset: 0; display: grid; place-items: center; color: #5f6b7f; font-size: 13px; }
/* Markierung wie ein Textmarker: Fläche multipliziert (Schrift bleibt schwarz und lesbar), Rand nur innen – nichts ragt
   über Nachbarzeilen. Die Seite ist immer weiß, daher feste Farben. */
.km-kw-bereich { position: absolute; z-index: 1; box-sizing: border-box; margin: 0; padding: 0; border: 0; border-radius: 3px; background: transparent; cursor: text;
  mix-blend-mode: multiply; transition: background-color .15s ease, box-shadow .15s ease; }
@media (hover: hover) {
  .km-kw-bereich:hover { background: rgba(37, 99, 235, .07); box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .55); }
}
.km-kw-bereich.an { z-index: 2; background: rgba(37, 99, 235, .16); box-shadow: inset 0 0 0 1.5px #2563eb; }

/* Leiste nach der Breite der Vorschau (nicht des Fensters): schmal → Zoom ohne „Seitenbreite“ und Prozent */
@container kw-vorschau (max-width: 479px) {
  .km-kw-leiste { gap: 6px; padding: 8px 6px; }
  .km-kw-quelle { padding-left: 4px; font-size: 12px; }
  .km-kw-status { height: 24px; padding: 0 8px; }
  .km-kw-zoom [data-km-kw-zoom="breite"], .km-kw-zoom output { display: none; }
}
@media (max-width: 1200px) {
  .km-kw { grid-template-columns: minmax(330px, 380px) minmax(0, 1fr); }
}
@media (max-width: 900px) {
  .km.km-kopfmodus { min-height: 0; padding: 8px 10px; }
  .km-kw { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(220px, 50%) minmax(0, 1fr); gap: 8px; }
  .km-kw-vorschau { order: -1; }
  .km-kw-rahmen { padding: 10px; }
  .km-kw-kopf { height: 48px; padding: 0 8px 0 14px; }
  .km-kw-reiter { padding: 8px 12px; }
  .km-kw-felder.geraet { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .km-kw-einleitung p { display: none; }
  .km-kw-scroll { gap: 10px; padding: 10px 12px 14px; }
  .km-kw-fuss { padding: 8px 12px; }
}
@media (max-width: 900px) {
  /* iPhone vergrößert die Seite bei Schrift unter 16 px im Eingabefeld – die geteilte Ansicht bliebe dann verschoben */
  #view-kabelmessungen .km-kw .km-feld :is(input, textarea) { font-size: 16px; }
}
@media (max-width: 640px) {
  .km-kw-reiter .km-chips { height: auto; min-height: 38px; }
  .km-kw-reiter .km-chips button { height: auto; min-height: 30px; padding: 3px 4px; white-space: normal; line-height: 1.2; hyphens: manual; }
  .km-kw-ungespeichert { font-size: 12px; }
  .km-kw-ungespeichert:not(.an) { visibility: hidden; }
  .km-kw-fuss .km-knopf { padding: 0 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .km-kw-status[data-zustand="laedt"]::before { animation: none; }
}

/* ---------- v931: Elementansicht – ein Wert, der woanders geändert wurde (Kabelmessungen, anderer Benutzer), leuchtet
   einmal kurz grün auf wie die neuen Werte in den Kabelmessungen und ist danach wieder normal (app.js attributFelderAufleuchten). */
.attributgruppen-custom-feld.attribut-aufleuchten { --attribut-neu: #bbf7d0; --attribut-neu-rand: #067647; --attribut-neu-schein: rgba(6, 118, 71, .2); }
html[data-theme="dark"] .attributgruppen-custom-feld.attribut-aufleuchten { --attribut-neu: #14532d; --attribut-neu-rand: #4ade80; --attribut-neu-schein: rgba(74, 222, 128, .28); }
@keyframes attribut-feld-aufleuchten { 0%, 45% { box-shadow: 0 0 0 3px var(--attribut-neu-schein); } }
@keyframes attribut-wert-aufleuchten { 0%, 45% { background-color: var(--attribut-neu); border-color: var(--attribut-neu-rand); } }
.attributgruppen-custom-feld.attribut-aufleuchten { border-radius: 12px; animation: attribut-feld-aufleuchten 6s ease-out 1; }
.attributgruppen-custom-feld.attribut-aufleuchten :is(input:not([type="checkbox"]):not([type="radio"]), textarea, select) { animation: attribut-wert-aufleuchten 6s ease-out 1; }
@media (prefers-reduced-motion: reduce) {
  .attributgruppen-custom-feld.attribut-aufleuchten,
  .attributgruppen-custom-feld.attribut-aufleuchten :is(input, textarea, select) { animation-duration: 2.5s; }
}

/* ---------- v968: Tabelle wie Excel (Anwender 10.11.2026: „ein riesen Block oben … ein Drittel vom ganzen Bildschirm …
   Konzept von Excel … unten die Arbeitsmappen, wo ich mir die Schränke zuschalten kann … Spalten, Zeilen und Pflege“).
   Oben eine Leiste (wie im Plan), darunter die Mappe bis zum Fensterrand: Blattkopf des Schranks, Raster (Zeilennummern,
   feste Kopfzeile und erste Spalten, dünne Gitterlinien, flache Zellen, einzeilige Zeilen), unten die Blattreiter.
   Excel-Grün nur im Raster (aktive Zelle, Markierung, aktives Blatt). Feste Zellen deckend – sonst scheint beim
   waagrechten Scrollen durch, was darunter liegt. */
#view-kabelmessungen {
  --km-gitter: #e1e5eb; --km-gitter-stark: #c9d0da; --km-kopf-zelle: #f3f5f8;
  --km-xl: #107c41; --km-xl-soft: #e3f1e8; --km-xl-kopf: #d7eadd; --km-zn: 46px;
}
html[data-theme="dark"] #view-kabelmessungen {
  --km-gitter: #343b44; --km-gitter-stark: #46505c; --km-kopf-zelle: #262b32;
  --km-xl: #4cc38a; --km-xl-soft: #1f3a2c; --km-xl-kopf: #24402f;
}
body.km-vollbild[data-app-view="kabelmessungen"]:not(#_) #view-kabelmessungen > .km.km-tabellenmodus { flex: 1 1 auto; height: auto; min-height: 0; }
.km.km-tabellenmodus { display: flex; flex-direction: column; gap: 8px; box-sizing: border-box; height: calc(100dvh - var(--km-pm-oben, 76px)); min-height: 440px; padding: 10px 16px 12px; }

/* Leiste: eine Zeile – Tabelle | Plan, Stand, Suche, rechts der Kopf */
.km-filter.km-tm-leiste { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; flex: 0 0 auto; }
.km-tm-leiste > .km-stand-chips { flex: 0 1 auto; min-width: 0; max-width: 100%; overflow-x: auto; scrollbar-width: none; }
.km-tm-leiste > .km-stand-chips::-webkit-scrollbar { display: none; }
.km-tm-leiste > .km-suche { flex: 1 1 200px; max-width: 320px; }
.km-tm-leiste > .km-kopf { margin-left: auto; }

/* Kopf kompakt: Fortschritt, Kabel | Einheiten, Aktionen (bei Einheiten eine eigene Zeile über deren Filtern) */
#view-kabelmessungen .km-kopf { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px 10px; min-width: 0; }
.km > .km-kopf { justify-content: flex-start; }
.km > .km-kopf .km-aktionen { margin-left: auto; }
#view-kabelmessungen .km-kopf .km-kennzahl { display: inline-grid; grid-template-columns: auto auto; align-items: baseline; gap: 2px 7px; min-width: 0; }
#view-kabelmessungen .km-kopf .km-kennzahl b { font: 700 16px/1.1 var(--km-font-display); }
#view-kabelmessungen .km-kopf .km-kennzahl small { color: var(--km-text-2); font-size: 12px; white-space: nowrap; }
#view-kabelmessungen .km-kopf .km-kennzahl i { height: 4px; }
#view-kabelmessungen .km-kopf .km-aktionen { display: inline-flex; flex-wrap: nowrap; gap: 6px; }
.km-mappe-wahl button { min-width: 72px; }
.km-mappe-wahl button[aria-selected="true"] { background: var(--km-accent-soft); color: var(--km-accent); }

/* Mappe: Blattkopf, Raster, Blattreiter in einem Rahmen */
.km-tm-mappe { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; overflow: hidden; border: 1px solid var(--km-gitter-stark); border-radius: 10px;
  background: var(--km-surface); box-shadow: var(--km-shadow); }
.km-tm-blatt { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; flex: 0 0 auto; box-sizing: border-box; min-height: 42px; padding: 5px 10px;
  border-bottom: 1px solid var(--km-gitter-stark); background: var(--km-surface-2); }
.km-tm-name { display: inline-flex; align-items: baseline; gap: 8px; min-width: 0; margin: 0; padding: 2px 4px; border: 0; border-radius: 6px; background: transparent;
  color: var(--km-text); text-align: left; }
button.km-tm-name { cursor: pointer; }
.km-tm-name b { font: 700 15px/1.2 var(--km-font-display); white-space: nowrap; }
.km-tm-name small { color: var(--km-text-3); font-size: 12px; white-space: nowrap; }
button.km-tm-name:hover b { color: var(--km-accent); text-decoration: underline; text-underline-offset: 3px; }
button.km-tm-name:focus-visible { outline: 2px solid var(--km-accent); outline-offset: 1px; }
.km-tm-blatt-rechts { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; }
.km-tm-blatt .km-mini.km-tm-hilfe { width: 26px; height: 26px; border: 1px solid var(--km-border-strong); border-radius: 99px; font-size: 13px; font-weight: 700; }
.km-tm-flaeche { position: relative; display: flex; flex: 1 1 auto; min-height: 0; }
.km-tm-flaeche > .km-leer { flex: 1 1 auto; }
#view-kabelmessungen .km-tabelle-rahmen.km-tm-rahmen { flex: 1 1 auto; max-height: none; min-height: 0; border: 0; border-radius: 0; box-shadow: none; overscroll-behavior: contain;
  scroll-padding: 29px 0 0 calc(var(--km-zn) + 150px); }
.km-tm-flaeche > .km-pm-panel { top: 8px; right: 8px; width: min(640px, calc(100% - 16px)); max-height: calc(100% - 16px); }
.km-tm-flaeche > .km-pm-panel.breit { width: min(980px, calc(100% - 16px)); }
.km-tm-panel > .km-panel + .km-panel { margin-top: 10px; }

/* Raster */
.km-tabelle.km-xl { min-width: 1180px; font-size: 13px; }
.km-xl col.c-zn { width: var(--km-zn); } .km-xl col.c-nr { width: 13%; } .km-xl col.c-gegen { width: 13%; } .km-xl col.c-typ { width: 14%; } .km-xl col.c-art { width: 8%; }
.km-xl col.c-ohm { width: 7%; } .km-xl col.c-iso { width: 8%; } .km-xl col.c-datum { width: 10%; } .km-xl col.c-name { width: 12%; } .km-xl col.c-akt { width: 72px; }
.km-xl thead th { height: 28px; padding: 0 8px; border-right: 1px solid var(--km-gitter); border-bottom: 1px solid var(--km-gitter-stark); background: var(--km-kopf-zelle);
  color: var(--km-text-2); font-size: 12px; font-weight: 600; text-align: center; }
.km-xl thead :is(.km-nr, .km-gegen) { text-align: left; }
.km-xl thead th.km-sp:hover { background: var(--km-xl-kopf); color: var(--km-xl); }
.km-xl thead th.aktiv { background: var(--km-xl-kopf); color: var(--km-xl); box-shadow: inset 0 -2px 0 var(--km-xl); }
.km-xl td, .km-xl tbody th { height: 28px; padding: 0; border-right: 1px solid var(--km-gitter); border-bottom: 1px solid var(--km-gitter); }
.km-xl .km-zn { position: sticky; left: 0; z-index: 2; box-sizing: border-box; padding: 0 4px; border-right-color: var(--km-gitter-stark); background: var(--km-kopf-zelle);
  color: var(--km-text-3); font-size: 11.5px; font-variant-numeric: tabular-nums; text-align: center; }
.km-xl thead .km-zn.km-ecke { z-index: 5; padding: 0; }
.km-xl .km-nr { left: var(--km-zn); padding: 0 8px; }
.km-xl .km-nr > div { gap: 6px; }
.km-xl .km-nr b { font-size: 13px; }
/* die Kabel-Nr. hat Vorrang – Kennzeichen (Stammkabel, nicht in der Kabelliste) kürzen sich zuerst */
.km-xl .km-nr > div > b { flex: 0 0 auto; }
.km-xl .km-nr .km-tag { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.km-xl .km-gegen { padding: 0 8px; overflow: hidden; }
.km-xl .km-gegen small { display: flex; align-items: center; gap: 6px; min-width: 0; color: var(--km-text-2); font-size: 12px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.km-xl .km-gegen small .km-nr-gegen { flex: 0 4 auto; min-width: 42px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.km-xl .km-gegen small .km-nr-gegen:empty { display: none; }
.km-xl .km-gegen small .km-markierung { flex: 0 1 auto; min-width: 28px; box-sizing: border-box; height: 16px; padding: 0 6px; overflow: hidden; font-size: 10.5px; line-height: 16px;
  text-overflow: ellipsis; white-space: nowrap; }
.km-xl .km-akt { padding: 0 4px; text-align: right; }
.km-xl .km-akt .km-mini { width: 24px; height: 24px; }
.km-xl .km-akt .km-mini svg { width: 15px; height: 15px; }
@media (hover: hover) and (pointer: fine) {
  .km-xl .km-akt .km-mini:not(.an) { opacity: 0; }
  .km-xl tr:is(:hover, :focus-within) .km-akt .km-mini { opacity: 1; }
}
.km-xl .km-leerzeile td { height: 44px; padding-left: 14px; }
.km-xl .km-neu td { padding: 10px 12px; }   /* „+ Kabel“ und Messgerät behalten ihren Innenabstand */
.km-xl .km-geraet td { padding: 8px 12px 10px; }
/* flache Zellen; aktive Zelle mit grünem Rahmen innen (nichts verschiebt sich) */
#view-kabelmessungen .km-xl .km-zelle { height: 27px; padding: 0 7px; border: 0; border-radius: 0; background: transparent; font-size: 13px; line-height: 27px; }
#view-kabelmessungen .km-xl .km-zelle:hover:not(:disabled) { border-color: transparent; }
#view-kabelmessungen .km-xl .km-zelle:focus { box-shadow: inset 0 0 0 2px var(--km-xl); background: var(--km-surface); }
#view-kabelmessungen .km-xl .km-zelle.warn { background: var(--km-rot-soft); }
/* leeres Datum wie eine leere Excel-Zelle: kein „tt.mm.jjjj“, der Kalender erst beim Überfahren bzw. in der aktiven Zelle
   (:invalid = leer – das Feld trägt dafür required, aria-required="false") */
#view-kabelmessungen .km-xl .km-zelle[type="date"]:invalid:not(:focus)::-webkit-datetime-edit { color: transparent; }
#view-kabelmessungen .km-xl .km-zelle[type="date"]:not(:focus):not(:hover)::-webkit-calendar-picker-indicator { opacity: 0; }
#view-kabelmessungen .km-zelle[type="date"]:is(:invalid, :user-invalid):not(:focus) { box-shadow: none; }
/* Markierung wie Excel: grün getönt, Rahmen um den Bereich – als Schatten innen (Linien bleiben 1 px, nichts springt) */
#view-kabelmessungen .km-xl :is(td, th).km-sel { --o: 0; --u: 0; --l: 0; --r: 0; background: var(--km-xl-soft);
  box-shadow: inset 0 calc(var(--o) * 2px) 0 var(--km-xl), inset 0 calc(var(--u) * -2px) 0 var(--km-xl), inset calc(var(--l) * 2px) 0 0 var(--km-xl), inset calc(var(--r) * -2px) 0 0 var(--km-xl); }
#view-kabelmessungen .km-xl :is(td, th).km-sel-o { --o: 1; }
#view-kabelmessungen .km-xl :is(td, th).km-sel-u { --u: 1; }
#view-kabelmessungen .km-xl :is(td, th).km-sel-l { --l: 1; border-left: 0; }
#view-kabelmessungen .km-xl :is(td, th).km-sel-r { --r: 1; border-right: 1px solid var(--km-gitter); }
#view-kabelmessungen .km-xl :is(td, th).km-sel .km-zelle { background: transparent; }
/* feste Zellen deckend: Zeilenkopf bleibt Kopf (auch beim Überfahren), markierte Zeile ohne Durchscheinen */
.km-xl .km-z .km-zn, .km-xl .km-z:hover .km-zn { background: var(--km-kopf-zelle); }
.km-xl .km-z.markiert :is(td, th) { background: color-mix(in srgb, var(--km-accent) 12%, var(--km-surface)); }
.km-xl .km-z.markiert .km-zn { background: color-mix(in srgb, var(--km-accent) 18%, var(--km-kopf-zelle)); }
.km-xl .km-z .km-zn.aktiv { background: var(--km-xl-kopf); color: var(--km-xl); font-weight: 700; box-shadow: inset -2px 0 0 var(--km-xl); }
#view-kabelmessungen .km-xl .km-neu-zeile :is(.km-zn, .km-nr) { animation: none; }   /* stärker als die Aufleucht-Regel – feste Zellen bleiben deckend */

/* Blattreiter */
.km-tm-reiterleiste { display: flex; align-items: stretch; flex: 0 0 auto; height: 36px; border-top: 1px solid var(--km-gitter-stark); background: var(--km-surface-3); }
.km-tm-nav { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 1px; padding: 0 4px; border-right: 1px solid var(--km-gitter); }
.km-tm-nav .km-mini { width: 28px; height: 28px; }
#view-kabelmessungen .km-tm-bst { flex: 0 0 auto; align-self: center; box-sizing: border-box; width: auto; max-width: 180px; height: 26px; margin: 0 6px; padding: 0 6px;
  border: 1px solid var(--km-border-strong); border-radius: 7px; background: var(--km-surface); color: var(--km-text); font-size: 12.5px; }
.km-tm-reiter { position: relative; display: flex; flex: 1 1 auto; align-items: stretch; min-width: 0; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; overscroll-behavior-x: contain; }
.km-tm-reiter::-webkit-scrollbar { display: none; }
.km-tm-reiter > button { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 6px; max-width: 220px; height: 100%; margin: 0; padding: 0 12px; border: 0;
  border-right: 1px solid var(--km-gitter); border-radius: 0; background: transparent; color: var(--km-text-2); font-size: 12.5px; font-weight: 600; white-space: nowrap; cursor: pointer; }
.km-tm-reiter > button > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.km-tm-reiter > button:hover { background: var(--km-surface-2); color: var(--km-text); }
.km-tm-reiter > button.gruppiert { background: var(--km-surface); color: var(--km-text); box-shadow: inset 0 -3px 0 var(--km-border-strong); }
.km-tm-reiter > button.aktiv { background: var(--km-surface); color: var(--km-xl); font-weight: 700; box-shadow: inset 0 -3px 0 var(--km-xl); }
.km-tm-reiter > button:focus-visible { outline: 2px solid var(--km-accent); outline-offset: -2px; }
.km-tm-reiter > button.ohne-treffer { opacity: .5; }
.km-tm-reiter > button em { flex: 0 0 auto; min-width: 18px; padding: 0 5px; border-radius: 99px; background: var(--km-accent-soft); color: var(--km-accent); font-size: 11px;
  font-style: normal; font-weight: 700; line-height: 17px; text-align: center; }
.km-tm-reiter > button.ohne-treffer em { background: var(--km-surface-2); color: var(--km-text-3); }
.km-tm-punkt { flex: 0 0 auto; box-sizing: border-box; width: 8px; height: 8px; border: 1.5px solid var(--km-border-strong); border-radius: 99px; }
.km-tm-reiter > button.teil .km-tm-punkt { border-color: var(--km-warn); background: var(--km-warn); }
.km-tm-reiter > button.fertig .km-tm-punkt { border-color: var(--km-gruen); background: var(--km-gruen); }
@keyframes km-neu-reiter { 0%, 45% { background: var(--km-neu); } 100% { background: transparent; } }
.km-tm-reiter > button.km-neu-reiter { animation: km-neu-reiter 6s ease-out 1; }
.km-tm-keine { align-self: center; padding: 0 12px; color: var(--km-text-3); font-size: 12.5px; }
.km-tm-reiterleiste > .km-tm-neu { flex: 0 0 auto; align-self: center; width: 30px; height: 30px; margin: 0 4px; }
/* Menü „Alle Blätter“: bei vielen Kabelschränken scrollt es in sich */
.km-menue { max-height: min(70vh, 560px); overflow-y: auto; overscroll-behavior: contain; }

/* schmalere Fenster: die Aktionen nur als Symbol (Name im Hinweis), damit die Leiste einzeilig bleibt */
@media (max-width: 1600px) {
  .km-tm-leiste .km-aktionen .km-knopf { width: 30px; padding: 0; }
  .km-tm-leiste .km-aktionen .km-knopf :is(.km-lang, .km-kurz) { display: none; }
}
@media (max-width: 1100px) {
  .km-tm-blatt-rechts .km-knopf { width: 30px; padding: 0; }
  .km-tm-blatt-rechts .km-knopf span { display: none; }
}
@media (pointer: coarse) {
  .km-xl td, .km-xl tbody th { height: 34px; }
  #view-kabelmessungen .km-xl .km-zelle { height: 33px; line-height: 33px; }
  .km-tm-reiterleiste { height: 42px; }
}
@media (max-width: 760px) {
  #view-kabelmessungen { --km-zn: 34px; }
  .km.km-tabellenmodus { gap: 6px; min-height: 0; padding: 8px 10px 10px; }
  .km-filter.km-tm-leiste { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 6px 8px; }
  .km-tm-leiste > .km-chips.km-ansicht { grid-column: 1; grid-row: 1; justify-content: flex-start; }
  .km-tm-leiste > .km-chips.km-ansicht button { flex: 0 0 auto; min-width: 0; padding: 0 10px; }
  .km-tm-leiste > .km-suche.km-tm-suche { grid-column: 2 / -1; grid-row: 1; min-width: 0; max-width: none; }
  .km-tm-leiste > .km-chips.km-stand-chips { grid-column: 1 / 3; grid-row: 2; }
  /* Kopf aufgelöst: Fortschritt (mit „speichert … / gespeichert“) rechts neben dem Stand, darunter Kabel | Einheiten und
     die Aktionen – nichts bricht um, auch nicht, wenn der Speicherstand dazukommt (der Satz steht im Hinweis) */
  #view-kabelmessungen .km-tm-leiste > .km-kopf { display: contents; }
  #view-kabelmessungen .km-tm-leiste .km-kopf .km-kennzahl { grid-column: 3; grid-row: 2; grid-template-columns: auto; gap: 1px; align-self: center; justify-items: end; }
  #view-kabelmessungen .km-tm-leiste .km-kopf .km-kennzahl small { font-size: 11px; line-height: 1.1; }   /* gestapelt höchstens 38 px – die Zeile wächst nicht */
  #view-kabelmessungen .km-tm-leiste .km-kopf .km-kennzahl i { width: 100%; }
  #view-kabelmessungen .km-tm-leiste .km-kopf .km-kennzahl .km-sub-zahl { display: none; }   /* „speichert … / gespeichert“ bleibt */
  .km-tm-leiste .km-mappe-wahl { grid-column: 1 / 3; grid-row: 3; justify-self: start; }
  .km-tm-leiste .km-mappe-wahl button { min-width: 0; padding: 0 12px; }
  #view-kabelmessungen .km-tm-leiste .km-kopf .km-aktionen { grid-column: 3; grid-row: 3; justify-self: end; margin-left: 0; }
  .km-tm-leiste .km-aktionen .km-knopf { width: 34px; height: 34px; }
  /* Blattkopf in zwei Zeilen: Name und Stand – darunter Messgerät und Aktionen */
  .km-tm-blatt { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; grid-template-areas: "wahl name stand" "geraet geraet rechts"; gap: 4px 8px; padding: 5px 8px; }
  .km-tm-blatt > .km-wahl { grid-area: wahl; }
  .km-tm-blatt > .km-tm-name { grid-area: name; }
  .km-tm-blatt > .km-gk-stand { grid-area: stand; font-size: 12px; }
  .km-tm-blatt > .km-gk-geraet { grid-area: geraet; justify-self: start; max-width: 100%; }
  .km-tm-blatt > .km-tm-blatt-rechts { grid-area: rechts; margin-left: 0; }
  /* Reiter: Blättern per Wischen, die Liste bleibt */
  .km-tm-nav [data-km-tm-blaettern] { display: none; }
  .km-tm-flaeche > .km-pm-panel { left: 8px; right: 8px; width: auto; }   /* Import usw. mit gleichem Rand links und rechts */
  .km-tm-name small { display: none; }
  .km-tm-blatt-rechts { gap: 4px; }
  .km-tm-blatt-rechts .km-knopf { width: 32px; padding: 0; }
  .km-tm-blatt-rechts .km-knopf span { display: none; }
  .km-tabelle.km-xl { min-width: 980px; }
  .km-xl col.c-nr { width: 112px; } .km-xl col.c-gegen { width: 112px; }
  #view-kabelmessungen .km-xl .km-zelle { font-size: 16px; }   /* sonst zoomt iOS beim Antippen */
  #view-kabelmessungen .km-tm-bst { max-width: 104px; margin: 0 4px; }
  .km-tm-nav { padding: 0 2px; }
  .km-tm-nav .km-mini { width: 30px; }
}

/* ---------- v969: Einheiten als Mappe (wie die Kabel), Markierungsleiste schwebt, Entfernen rot.
   Anwender 10.11.2026: „für die Übersicht Einheit … genau dasselbe … im selben Stil“; Häkchen „nur beim Doppelklick“ (die
   Leiste der Markierung schob das Raster nach unten); „dass das X dann irgendwie so rot ist … das lösche ich dann“. */
.km-tm-flaeche > .km-auswahl { position: absolute; top: auto; right: 12px; bottom: 12px; left: 12px; z-index: 8; max-height: calc(100% - 24px); overflow: auto;
  overscroll-behavior: contain; box-shadow: 0 12px 32px -10px rgba(15, 26, 42, .32), var(--km-shadow); }
html[data-theme="dark"] .km-tm-flaeche > .km-auswahl { box-shadow: 0 12px 32px -10px rgba(0, 0, 0, .6); }
.km-tabelle.km-xl { margin-bottom: var(--km-leiste, 0px); }   /* Höhe der schwebenden Leiste (leisteRaum) – das letzte Kabel lässt sich darüber scrollen */
/* Entfernen (weitere Adergruppe, weitere/eigene Zeile): rot und immer zu sehen; mit Werten erst „Entfernen?“ */
#view-kabelmessungen .km-mini.km-weg { color: var(--km-rot); opacity: 1; }
#view-kabelmessungen .km-mini.km-weg:hover, #view-kabelmessungen .km-mini.km-weg:focus-visible { border-color: var(--km-rot); background: var(--km-rot-soft); color: var(--km-rot); }
#view-kabelmessungen .km-mini.km-weg.bereit { display: inline-flex; align-items: center; width: max-content; max-width: none; gap: 4px; padding: 0 8px; border-color: var(--km-rot); background: var(--km-rot); color: #ffffff; font-size: 12px; font-weight: 650; white-space: nowrap; }
#view-kabelmessungen .km-mini.km-weg.bereit span { line-height: 1; }
#view-kabelmessungen .km-xl .km-akt .km-mini.km-weg.bereit { position: absolute; top: 50%; right: 4px; z-index: 3; transform: translateY(-50%); }   /* wächst nach links, das Raster wird nicht breiter */
.km-xl tbody .km-akt { position: relative; overflow: visible; }   /* „Entfernen?“ wächst nach links über die Nachbarzelle, das Raster wird nicht breiter */

/* Einheiten-Raster */
.km-tabelle.km-xl.einheiten { min-width: 1000px; }
.km-xl.einheiten col.c-armatur { width: 15%; } .km-xl.einheiten col.c-einheit { width: 24%; } .km-xl.einheiten col.c-element { width: 17%; }
.km-xl.einheiten col.c-ohm2 { width: 11%; } .km-xl.einheiten col.c-datum { width: 12%; } .km-xl.einheiten col.c-name { width: 15%; }
.km-xl.einheiten tbody .km-einheit { position: sticky; left: var(--km-zn); z-index: 2; padding: 0; background: var(--km-surface); }
.km-xl.einheiten thead .km-einheit { position: sticky; left: var(--km-zn); z-index: 4; }
.km-xl.einheiten .km-z.teil .km-einheit .km-zelle { padding-left: 22px; }
.km-xl.einheiten .km-z.entfaellt .km-einheit, .km-xl.einheiten .km-z:hover .km-einheit { background: var(--km-surface-2); }
.km-xl.einheiten .km-z.markiert .km-einheit { background: color-mix(in srgb, var(--km-accent) 12%, var(--km-surface)); }
/* Platzhalter („z. B. AF02 X1“, „z. B. 4x1x1,4“) nur in der aktiven Zelle – leere Zellen bleiben leer wie in Excel; die
   Einheit zeigt ihren Standardnamen als Platzhalter und bleibt deshalb ausgenommen */
#view-kabelmessungen .km-xl .km-zelle:not(:focus):not([data-km-efeld="einheit"])::placeholder { color: transparent; }
.km-xl .km-element { padding: 0 8px; overflow: hidden; color: var(--km-text-2); font-size: 12px; white-space: nowrap; text-overflow: ellipsis; }
.km-xl .km-kabelarmatur { padding: 0; }
.km-xl .km-kabelarmatur .km-armatur { gap: 0; }
.km-xl .km-kabelarmatur .km-armatur .km-mini { flex: 0 0 auto; width: 24px; height: 24px; margin-right: 2px; }
@media (hover: hover) and (pointer: fine) {
  .km-xl .km-kabelarmatur .km-armatur .km-mini { opacity: 0; }
  .km-xl tr:is(:hover, :focus-within) .km-kabelarmatur .km-armatur .km-mini { opacity: 1; }
}
@media (max-width: 760px) {
  .km-tm-flaeche > .km-auswahl { right: 8px; bottom: 8px; left: 8px; }
  .km-tabelle.km-xl.einheiten { min-width: 900px; }
  .km-xl.einheiten col.c-einheit { width: 150px; }
  /* Einheiten: kein Tabelle | Plan – die Suche über die ganze erste Zeile */
  .km-tm-leiste-einheiten > .km-suche.km-tm-suche { grid-column: 1 / -1; }
}

/* v970: „?“ = Panel „Bedienung und Hinweise“ (statt Toast) */
.km-hilfe-liste { display: grid; gap: 8px; margin: 0; padding: 0 0 0 18px; color: var(--km-text); font-size: 13.5px; line-height: 1.5; }
.km-hilfe-liste li::marker { color: var(--km-xl); }
.km-tm-blatt .km-mini.km-tm-hilfe[aria-pressed="true"] { border-color: var(--km-xl); background: color-mix(in srgb, var(--km-xl) 14%, transparent); color: var(--km-xl); }
