/* ESG Pro Check – Oberfläche auf Basis des ESG ProCheck Design-Systems (tokens.css).
   Rot #C20000 nur als Akzent, Anthrazit/Weiß-Kanvas, weiche mehrlagige Schatten,
   Core Sans A. Die App-Variablen mappen auf die semantischen ProCheck-Tokens,
   damit Light/Dark automatisch schalten. */
:root{
  /* --esg-red, --esg-red-soft kommen direkt aus dem ProCheck-DS */
  --esg-red-dark:var(--esg-red-hover);

  --bg:var(--surface-app);
  --surface:var(--surface-card);
  --surface-2:var(--surface-secondary);
  --line:var(--border-subtle);
  --line-2:var(--border-default);
  --text:var(--text-strong);
  --text-2:var(--text-body);
  --text-3:var(--text-muted);
  --ok:var(--esg-success);
  --warn:var(--esg-warning);
  --bad:var(--esg-danger);

  /* Statusflächen (Tints) – ProCheck-Tokens (tragen in Light & Dark) */
  --ok-soft:var(--esg-success-soft);
  --ok-border:var(--esg-success-border);
  --ok-text:var(--esg-success);
  --warn-soft:var(--esg-warning-soft);
  --warn-border:var(--esg-warning-border);
  --warn-text:var(--esg-warning);
  --bad-soft:var(--esg-danger-soft);
  --bad-border:var(--esg-danger-border);
  --bad-text:var(--esg-danger);
  --info:var(--esg-info);
  --info-soft:var(--esg-info-soft);

  /* Akzent-/Aktions-Hilfstokens (aus ProCheck abgeleitet) */
  --accent-contrast:var(--text-on-accent);
  --accent-border:var(--esg-red-border);
  --accent-subtle:var(--esg-red-soft);
  --ring-focus:var(--focus-ring);
  --ring-danger:0 0 0 3px var(--esg-danger-soft);
  /* --border-strong, --surface-sunken kommen direkt aus dem ProCheck-DS */
  --surface-hover:var(--surface-hover-neutral);
  --surface-active:var(--surface-secondary);
  --action-bg:var(--esg-ink);
  --action-text:var(--surface-card);
  --neutral-500:var(--esg-gray-500);
  --neutral-600:var(--esg-gray-500);
  --neutral-700:var(--text-strong);

  /* Startseiten-Hintergrund */
  --bg-grad-a:var(--surface-app);
  --bg-grad-b:var(--surface-secondary);

  --ctrl-h:44px;
  --radius:var(--radius-md);
  /* --radius-lg, --shadow-card kommen direkt aus dem ProCheck-DS (16px / Karten-Schatten) */
  --shadow-1:var(--shadow-xs);
  --shadow-2:var(--shadow-sm);
  --font:var(--font-sans);
  /* #4c – einheitliche Inhaltsbreite fuer ALLE Hauptansichten */
  --page-max:1180px;

  /* ---------- Zentrales Prüfworkflow-Raster (eine Quelle der Wahrheit für ALLE Prüfarten) ----------
     Statt individueller Abstände je Prüfart/Unterseite hängen Header, Schrittleiste, Inhaltsspalte,
     Karten, Formulare und die untere Navigation an diesen Tokens. Wer hier etwas ändert, ändert es
     überall gleich. */
  --wf-max:1360px;            /* Desktop-Gesamtbreite (Schrittleiste + Inhalt) */
  --wf-nav:250px;            /* Breite der Schritt-Seitenleiste (Desktop) */
  --wf-content-max:940px;    /* max. Textbreite innerhalb der Inhaltsspalte (verhindert überbreite Zeilen) */
  --wf-gutter:36px;          /* horizontaler Innenabstand der Inhaltsspalte (Desktop) */
  --wf-gutter-m:16px;        /* … mobil */
  --wf-gap:20px;             /* vertikaler Abstand zwischen Karten/Bereichen */
  --wf-gap-lg:28px;          /* … zwischen größeren Abschnitten */
  --wf-panel-pad:30px;       /* Innenabstand der Schritt-Hauptkarte (Desktop) */
  --wf-panel-pad-m:20px;     /* … mobil */
  --wf-card-radius:14px;     /* EIN Radius für alle Inhalts-Unterkarten */
  --wf-card-pad:20px;        /* EIN Innenabstand für alle Inhalts-Unterkarten */
  --wf-field-gap:18px;       /* vertikaler Abstand zwischen Formularfeldern */
  --wf-col-gap:20px;         /* Spaltenabstand im 2-Spalten-Formular */

  /* Status-Pillen (appweites Designsystem): EINE gemeinsame Form für jede kurze Status-/
     Ergebnis-/Sync-Anzeige (.badge, .jn, .save-state, .crm-status, .gd-chip, .gd-connstate,
     .gd-op-badge) – Farbsemantik bleibt je Klasse eigenständig (unterschiedliche Bedeutungen),
     nur Form/Größe ist zentral. Längere Hinweistexte (.hint u. ä.) bleiben bewusst außen vor. */
  --pill-radius:999px;
  --pill-h:22px;
  --pill-pad-x:10px;
  --pill-font:12px;
  --pill-weight:700;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;padding:0}
body{
  font-family:var(--font);background:var(--bg);color:var(--text);
  font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
h1,h2,h3{letter-spacing:-.02em}

/* ---------- Header ----------
   Echtes App-Shell-Layout: der Header steht fest (Fenster-fixiert statt nur sticky-im-Fluss),
   .workspace darunter ist der einzige scrollende Bereich (siehe dort). So bewegt sich beim
   Scrollen nie die ganze Oberfläche, und iOS bekommt sein natives elastisches Scrollverhalten
   im Inhaltsbereich, ohne den Header/die Navigation mitzuziehen. */
.app-header{
  display:flex;align-items:center;justify-content:space-between;gap:16px;box-sizing:border-box;min-height:72px;
  background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);
  border-bottom:1px solid var(--border-subtle);padding:14px 28px;
  position:fixed;top:0;left:0;right:0;z-index:230;
  padding-top:calc(14px + env(safe-area-inset-top,0px));
}
.app-brand{display:flex;align-items:center;gap:14px}
.brand-logo{display:flex;align-items:center;height:34px;line-height:0}
.brand-logo svg{height:34px;width:auto;display:block;border-radius:0}   /* eckig, nie abgerundet */
/* Logo führt überall zur Startseite – dezente Rückmeldung statt verspielter Animation */
.brand-logo,.glogo{transition:opacity .15s ease,transform .15s ease}
.brand-logo:hover,.glogo:hover{opacity:.82}
.brand-logo:active,.glogo:active{transform:scale(.96);opacity:.75}
.brand-logo:focus-visible,.glogo:focus-visible{outline:2px solid var(--esg-red);outline-offset:3px;border-radius:6px}
@media (prefers-reduced-motion:reduce){.brand-logo,.glogo{transition:none}.brand-logo:active,.glogo:active{transform:none}}

/* ---------- ProCheck-Produktzeichen + Lockup (Marken-Guide) ---------- */
/* Anthrazit-Kachel mit weißem „P"; invertiert in Dark automatisch (esg-ink schaltet um) */
.pc-tile{fill:var(--esg-ink)}
.pc-fg{fill:var(--surface-card)}
.brand-lockup{display:inline-flex;align-items:center;gap:10px;line-height:0}
.brand-lockup .lk-esg{display:inline-flex;height:26px;margin-right:4px}
.brand-lockup .lk-esg svg{height:26px;width:auto;display:block;border-radius:0}
.brand-lockup .lk-div{width:1px;align-self:stretch;min-height:26px;background:var(--border-default);margin:0 6px;flex:none}
.brand-lockup .lk-p{display:inline-flex;width:26px;height:26px;flex:none}
.brand-lockup .lk-p svg{width:26px;height:26px;display:block}
.brand-lockup .lk-word{font-weight:700;font-size:17px;letter-spacing:-.01em;color:var(--text-strong);line-height:1}
.brand-lockup.lg .lk-esg,.brand-lockup.lg .lk-esg svg{height:34px}
.brand-lockup.lg .lk-p{width:34px;height:34px}.brand-lockup.lg .lk-p svg{width:34px;height:34px}
.brand-lockup.lg .lk-word{font-size:22px}
.brand-divider{width:1px;height:28px;background:var(--line-2)}
.brand-page{display:flex;flex-direction:column;line-height:1.12}
.brand-eyebrow{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);margin-bottom:2px}
.brand-title{font-weight:700;font-size:17px;letter-spacing:-.01em;color:var(--text-strong)}
.brand-sub{color:var(--text-3);font-size:12.5px;font-weight:400;margin-top:1px}
.app-actions{display:flex;gap:10px;align-items:center}

/* ---------- Buttons (einheitliche Höhe) ---------- */
.btn{
  font-family:var(--font);height:var(--ctrl-h);padding:0 18px;border-radius:var(--radius);
  border:1px solid var(--line-2);background:var(--surface);color:var(--text);
  font-size:14.5px;font-weight:500;cursor:pointer;transition:.16s ease;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;
}
.btn:hover{background:var(--surface-2)}
.btn:active{transform:scale(.985)}
.btn.primary{background:var(--esg-red);border-color:var(--esg-red);color:var(--accent-contrast)}
.btn.primary:hover{background:var(--esg-red-dark);border-color:var(--esg-red-dark)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--text-2)}
.btn.ghost:hover{background:var(--surface-2);color:var(--text)}
.btn.sm{height:34px;padding:0 12px;font-size:13px}
.btn.icon{width:var(--ctrl-h);padding:0}
.btn.icon svg{width:19px;height:19px}
.theme-fab{position:fixed;top:20px;right:20px;z-index:210;width:42px;height:42px;background:var(--surface);border:1px solid var(--line-2);box-shadow:var(--shadow-sm)}
.theme-fab:hover{background:var(--surface-2)}
.gate-fabs{position:fixed;top:20px;right:20px;z-index:210;display:flex;align-items:center;gap:10px}
.gate-fabs .btn.icon{width:42px;height:42px;background:var(--surface);border:1px solid var(--line-2);box-shadow:var(--shadow-sm)}
.gate-fabs .btn.icon:hover{background:var(--surface-2)}
.gate-claim{font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--esg-red);margin:0 0 20px}

/* ---------- Einstellungen ---------- */
/* Einstellungen erben Breite/Abstände vom umgebenden .home-wrap (#settingsWrap) → gleiche App-Shell wie Home */
.set-wrap{max-width:none;margin:0;padding:0}
.set-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:26px;flex-wrap:wrap}
.set-version{flex:none;font-size:12px;font-weight:600;color:var(--text-3);background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:999px;padding:5px 12px;white-space:nowrap}
/* Hell/Dunkel/System als hochwertiger Pillen-Switcher – feste Maße je Segment, nur Hintergrund/
   Farbe ändern sich beim Aktivieren, damit nichts springt. */
.theme-switch{display:inline-flex;flex-wrap:wrap;gap:2px;background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:999px;padding:3px;margin:14px 0 22px;width:max-content;max-width:100%}
.theme-switch button{display:flex;align-items:center;gap:6px;padding:8px 15px;border:none;background:none;border-radius:999px;font-size:13px;font-weight:600;color:var(--text-2);cursor:pointer;font-family:var(--font);transition:background .15s ease,color .15s ease;white-space:nowrap}
.theme-switch button.on{background:var(--esg-red-soft);color:var(--esg-red)}
.theme-switch .ts-ic{display:inline-flex;width:15px;height:15px;flex:none}
.theme-switch .ts-ic svg{width:15px;height:15px}
@media (max-width:420px){.theme-switch button{padding:8px 11px;font-size:12.5px}}
.set-head h2{font-size:26px;font-weight:700}
.set-controls{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:22px}
.set-seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:3px;gap:2px}
.set-segbtn{font-family:var(--font);border:none;background:transparent;color:var(--text-2);height:36px;padding:0 16px;border-radius:9px;cursor:pointer;font-size:13.5px;font-weight:500;transition:.14s;
  display:inline-grid;justify-items:center;align-content:center}
/* Breite immer für den fetten (aktiven) Zustand reservieren, damit beim Umschalten
   nichts springt: unsichtbare fette Kopie des Labels bestimmt die Spaltenbreite. */
.set-segbtn::after{content:attr(data-label);font-weight:600;height:0;overflow:hidden;visibility:hidden;pointer-events:none}
.set-segbtn:hover{color:var(--text)}
.set-segbtn.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1);font-weight:600}
@media (max-width:820px),(max-height:500px){
  /* Prüfart-/Abschnitts-Umschalter (Anlagenprüfung/Maschinenprüfung/… · Besichtigen/Erproben/…)
     liefen bisher über den rechten Rand hinaus (kein Wrap, kein Schrumpfen durch das implizite
     min-width:auto der Flex-Kinder). Jetzt kontrolliert innerhalb der Pille horizontal scrollbar
     statt über den Viewport hinauszuragen – Größe und Formatierung der einzelnen Segmente
     (aktiv/inaktiv) bleiben dabei unverändert, es springt nichts. */
  .set-seg{max-width:100%;flex-wrap:wrap;row-gap:2px}
  .set-seg::-webkit-scrollbar{display:none}
  .set-segbtn{flex:none}
}
.set-card{padding:22px 22px 22px}
.set-editor-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.set-head-actions{display:flex;gap:8px;flex-wrap:wrap}
.set-status{font-size:12.5px;font-weight:600;color:var(--text-3)}
.set-status.dirty{color:var(--warn)}
.set-cat{border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:16px;background:var(--surface-2)}
.set-cat-head{display:flex;gap:10px;align-items:center;margin-bottom:12px}
.set-catname{margin:0;font-weight:600;height:40px}
.set-item{display:flex;gap:10px;align-items:center;margin-bottom:8px}
.set-item .set-itemtext{margin:0;height:40px}
.set-x{flex:none;width:40px;height:40px;border:1px solid var(--line-2);background:var(--surface);border-radius:9px;cursor:pointer;color:var(--bad);font-weight:700;font-size:13px}
.set-x:hover{background:var(--bad-soft);border-color:var(--bad-border)}
.set-add{margin-top:6px}
#setAddCat{margin-top:4px}
.link{background:none;border:none;color:var(--esg-red);cursor:pointer;font:inherit;font-weight:500;padding:0}
.link:hover{text-decoration:underline}

/* ---------- Prüfart-Chip im Header ---------- */
.pruefart-chip{
  display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 12px;border-radius:999px;
  background:var(--surface-2);border:1px solid var(--line);font-size:13px;font-weight:500;color:var(--text-2);cursor:pointer;
}
.pruefart-chip b{color:var(--text);font-weight:600}
.pruefart-chip:hover{border-color:var(--line-2)}
.pruefart-chip .dot{width:8px;height:8px;border-radius:50%;background:var(--esg-red)}

/* ---------- Tabs ---------- */
.tabs{
  display:flex;flex-wrap:wrap;gap:4px;background:transparent;padding:14px 24px 0;
  max-width:1120px;margin:0 auto;
}
.tab{
  font-family:var(--font);border:none;background:transparent;color:var(--text-2);
  height:38px;padding:0 13px 0 7px;border-radius:999px;cursor:pointer;font-size:13.5px;font-weight:500;
  transition:.14s;display:inline-flex;align-items:center;gap:8px;
}
.tnum{
  width:23px;height:23px;flex:none;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:600;background:var(--surface);border:1px solid var(--line-2);color:var(--text-3);transition:.14s;
}
.tab:hover{background:var(--surface-2);color:var(--text)}
.tab:hover .tnum{border-color:var(--text-3)}
.tab.active{background:var(--surface-2)}
.tab.active .tlbl{color:var(--text);font-weight:600}
.tab.active .tnum{background:var(--action-bg);border-color:var(--action-bg);color:var(--action-text)}
.tab.done:not(.active) .tnum{background:var(--ok);border-color:var(--ok);color:#fff}
.tab[hidden]{display:none}

/* ---------- Durchgängiger Prüf-Wizard (§8/§9): EINE schmale Hinweiszeile unter #tabs, siehe
   renderWizardBar() in js/app.js. KEINE eigene Navigation – Vor/Zurück laufen ausschließlich
   über die untere #stepBar. Nur ein Hinweistext + eine kleine fachliche Aktion (Wizard
   starten/verlassen), niemals Zurück/Weiter. Kein eigenes Panel, treibt nur switchTab() an. */
/* Sitzt in der Inhaltsspalte (.ws-main) direkt über der Schritt-Hauptkarte und ist links bündig
   zum Karteninhalt (gleicher Gutter wie .app-main). Optik = dezente Hinweiszeile im ESG-Ton, klar
   als Teil derselben Oberfläche erkennbar, nie als Fremdmodul. */
.wiz-bar{margin:0;padding:24px var(--wf-gutter) 0;max-width:none}
.wiz-bar-row{display:flex;align-items:center;justify-content:space-between;gap:10px 14px;flex-wrap:wrap;
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--wf-card-radius);padding:8px 8px 8px 14px}
.wiz-bar .hint{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2);font-weight:500;line-height:1.35}
.wiz-bar .hint svg{width:16px;height:16px;color:var(--esg-red);flex:none}
/* die eine kleine fachliche Aktion (Wizard starten/verlassen) klar als Button, aber dezent */
.wiz-bar .btn{flex:none;height:32px;padding:0 12px;font-size:12.5px;background:var(--surface);border:1px solid var(--line-2);color:var(--text-2)}
.wiz-bar .btn:hover{background:var(--surface);border-color:var(--border-strong);color:var(--text)}
.wiz-bar .btn svg{width:15px;height:15px}
@media (max-width:900px),(max-height:500px){.wiz-bar{padding:14px var(--wf-gutter-m) 0}}

/* ---------- App-Shell: linke Seitenleiste + Inhaltsspalte (Referenz-Layout) ----------
   Eigene, feste Schale wie .gate: .workspace steht fest unterhalb des fixierten Headers und
   scrollt nur sich selbst (überall dieselbe App-Struktur: fester Header + fester Bereich +
   ein einziger scrollender Inhaltsbereich, keine verschachtelten Scrollbereiche, kein
   Body-Scroll mehr). -webkit-overflow-scrolling sorgt für natives, flüssiges iOS-Momentum-
   Scrolling; overflow-x:hidden verhindert horizontales Scrollen. */
.workspace{
  display:grid;grid-template-columns:var(--wf-nav) minmax(0,1fr);align-items:start;max-width:var(--wf-max);margin:0 auto;padding:0 24px;
  position:fixed;left:0;right:0;bottom:0;top:calc(72px + env(safe-area-inset-top,0px));
  overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;
}
.workspace > .tabs{flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:2px;position:sticky;top:0;max-width:none;margin:0;padding:26px 18px 26px 0;height:max-content}
.workspace > .tabs::before{content:"Prüfschritte";display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);padding:0 12px 12px}
.nw-workspace > .tabs::before{content:"Schritte"}
.workspace .tab{width:100%;height:auto;min-height:40px;justify-content:flex-start;padding:9px 12px;border-radius:10px;position:relative;font-size:14px}
.workspace .tab:hover{background:var(--surface-hover-neutral);color:var(--text)}
.workspace .tab.active{background:var(--surface-selected)}
.workspace .tab.active .tlbl{color:var(--esg-red);font-weight:600}
.workspace .tab.active .tnum{background:var(--surface);border-color:var(--line-2);color:var(--text-3)}
.workspace .tab.active::before{content:"";position:absolute;left:-18px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--esg-red)}
/* Inhaltsspalte: klammert Wizard-Hinweis + Prüfschritte, damit der .workspace-Grid genau ZWEI
   Kinder hat (Schrittleiste + diese Spalte). Als flex-column, damit die untere Aktionsleiste
   (.step-bar) via margin-top:auto in JEDEM Schritt konsistent am unteren Rand sitzt. */
.workspace > .ws-main{min-width:0;display:flex;flex-direction:column;min-height:calc(100vh - 72px);border-left:1px solid var(--line)}
.ws-main > .app-main{max-width:none;margin:0;padding:26px 0 calc(14px + env(safe-area-inset-bottom,0px)) var(--wf-gutter);display:flex;flex-direction:column;flex:1 0 auto}
/* Sticky-Footer: bei kurzem Inhalt nach unten schieben, bei langem Inhalt sticky sichtbar bleiben */
.ws-main > .app-main > .step-bar{margin-top:auto}
@media (max-width:900px),(max-height:500px){
  /* Einspaltig; minmax(0,1fr) erlaubt Schrumpfen unter die Inhalts-Min-Breite (kein Horizontal-Überlauf) */
  .workspace{grid-template-columns:minmax(0,1fr);padding:0;max-width:100%}
  .workspace > .tabs{position:static;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:14px 16px 2px;top:auto;min-width:0}
  .workspace > .tabs::before{display:none}
  .workspace .tab{width:auto;flex:0 0 auto}
  .workspace .tab.active::before{display:none}
  .workspace > .ws-main{border-left:none;min-width:0;min-height:calc(100dvh - 118px)}
  .ws-main > .app-main{padding:22px var(--wf-gutter-m) calc(14px + env(safe-area-inset-bottom,0px));min-width:0}
}

/* ---------- Panels ---------- */
.app-main{max-width:var(--page-max);margin:0 auto;padding:22px 24px 100px}
.panel{
  display:none;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-lg);padding:var(--wf-panel-pad);box-shadow:var(--shadow-card);
  animation:rise .28s cubic-bezier(.2,.7,.3,1);
}
.panel.active{display:block}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.panel h2{margin:0 0 6px;font-size:23px;font-weight:600;letter-spacing:-.02em}
.panel .lead{color:var(--text-2);margin:0 0 var(--wf-gap-lg);max-width:66ch;font-size:14.5px;line-height:1.55}
.hint{color:var(--text-3);font-size:13px;line-height:1.5}
.section-title{font-size:13px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;margin:0 0 14px}

/* ---------- Formulare / einheitliche Controls ---------- */
.field-label{display:block;margin-bottom:var(--wf-field-gap);font-size:13px;font-weight:500;color:var(--text-2)}
label{display:block;margin-bottom:var(--wf-field-gap);font-size:13px;font-weight:500;color:var(--text-2)}
input,select,textarea{
  font-family:var(--font);width:100%;height:var(--ctrl-h);margin-top:7px;
  padding:0 14px;border:1px solid var(--line-2);border-radius:var(--radius);
  font-size:15px;background:var(--surface);color:var(--text);transition:.15s;
}
textarea{height:auto;min-height:96px;padding:11px 14px;line-height:1.5;resize:vertical}
input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--esg-red);box-shadow:var(--ring-focus)}
/* Select: gleiche Höhe/Optik wie Input, eigener Chevron */
select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;padding-right:38px;cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%236e6e73' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat:no-repeat;background-position:right 14px center;
}
input[type=date]{cursor:pointer}
input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.6}
/* iOS zoomt beim Fokussieren automatisch in JEDES Eingabefeld mit Schrift <16px hinein und
   verschiebt/verzerrt dabei das Layout – appweiter, zentraler Fix statt Einzelkorrekturen an
   den ~10 Stellen mit kleinerer Schrift (13.5–15px). Bewusstes Vergrößern (Pinch/Systemschrift)
   bleibt über die Viewport-Meta weiterhin möglich, nur das AUTOMATISCHE Hineinzoomen entfällt. */
@media (max-width:820px),(max-height:500px){
  input,select,textarea{font-size:16px!important}
}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--wf-gap) var(--wf-col-gap)}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.card-group{border:1px solid var(--line);border-radius:var(--wf-card-radius);padding:var(--wf-card-pad);background:var(--surface)}
.card-group > .cg-title{font-size:12px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:16px}
.card-group > label:last-child,.card-group > *:last-child > label:last-child{margin-bottom:0}
.card-group > .hint:last-child{margin-top:2px}
/* Volle-Breite-Formularkarten (Desktop): Felder in ZWEI Spalten, lange Felder/Adressen über beide.
   Nur Karten mit .fld-grid – Karten innerhalb von .grid2 (z. B. Prüfobjekt) bleiben bewusst einspaltig,
   damit sie nicht zu schmalen Doppelspalten zerfallen. So wird die Desktop-Breite genutzt, ohne dass
   kurze Felder wie „Kunden Nr." absurd breit werden. */
@media (min-width:901px){
  .card-group.fld-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--wf-col-gap);align-items:end}
  .card-group.fld-grid > label{margin-bottom:var(--wf-field-gap)}
  .card-group.fld-grid > .cg-title,
  .card-group.fld-grid > .hint,
  .card-group.fld-grid > .fld-wide,
  .card-group.fld-grid > .row2,
  .card-group.fld-grid > .grid2{grid-column:1 / -1}
}
.check-inline{display:flex;align-items:center;gap:10px;font-weight:500;color:var(--text)}
.check-inline input{width:20px;height:20px;margin:0;accent-color:var(--esg-red)}

/* ---------- Prüfart-Gate (Startauswahl) ---------- */
.gate{position:fixed;inset:0;z-index:200;background:var(--surface-app);display:block;overflow:auto;-webkit-overflow-scrolling:touch}
.gate[hidden]{display:none}
/* Home-Topbar */
.home-topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:16px;box-sizing:border-box;min-height:72px;
  padding:14px 28px;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-bottom:1px solid var(--border-subtle)}
.home-topbar .gate-fabs{position:static}
.home-wrap{max-width:var(--page-max);margin:0 auto;padding:34px 28px 90px}
/* Mobile Hauptnavigation: dezente untere Leiste mit den wichtigsten Hauptaktionen –
   ergänzt das seitliche Menü (für alles Weitere „Mehr"), ersetzt es nicht. Nur ≤820px sichtbar. */
.bnav{display:none}
@media (max-width:820px),(max-height:500px){
  /* Schwebende iOS-Pille statt kantiger Vollbreiten-Leiste: seitlicher Abstand zum Rand,
     eigener Abstand zur Safe Area/Home-Anzeige (nicht am Rand klebend), Glasmaterial,
     dezenter Schatten. Aktive Auswahl als sanft eingefärbte Kapsel im Button selbst. */
  .bnav{
    display:flex;position:fixed;left:16px;right:16px;bottom:calc(14px + env(safe-area-inset-bottom,0px));
    z-index:230;border-radius:26px;gap:2px;
    background:var(--glass-bg-strong);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);
    border:1px solid var(--border-subtle);box-shadow:var(--shadow-xl);
    padding:6px;
  }
  .bnav button{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
    min-height:52px;border:none;background:none;color:var(--text-3);cursor:pointer;font-family:var(--font);
    border-radius:18px;transition:color .15s ease,background .15s ease,transform .12s ease}
  .bnav button svg{width:21px;height:21px}
  .bnav-tx{font-size:10px;font-weight:600;letter-spacing:.01em}
  .bnav button.active{color:var(--esg-red);background:var(--esg-red-soft)}
  .bnav button:active{transform:scale(.93)}
  /* Platz für die schwebende Leiste + ihren Abstand zum Rand freihalten */
  .home-wrap{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
  .gate{scroll-padding-bottom:96px}
  /* Während ein Feld fokussiert ist (Tastatur eingeblendet): Leiste ausblenden, sie darf das
     aktive Feld nie verdecken; der freigehaltene Platz wird währenddessen ebenfalls nicht gebraucht. */
  body.kb-open .bnav{display:none}
  body.kb-open .home-wrap{padding-bottom:34px}
}
/* Querformat/sehr niedrige Viewports: Pille etwas flacher, damit sie nicht unnötig viel von der
   knappen Höhe beansprucht. */
@media (max-height:430px){
  .bnav{padding:4px}
  .bnav button{min-height:40px;gap:1px}
  .bnav button svg{width:18px;height:18px}
  .bnav-tx{font-size:9px}
}
@media (prefers-reduced-motion:reduce){.bnav button{transition:none}}
.home-hero{margin:0 0 30px}
.gate-card.soon{opacity:.92}
.gate-card.soon:hover{border-color:var(--line-2)}
.soon-badge{display:inline-block;margin-left:8px;font-size:10.5px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:1px 8px;vertical-align:middle}
/* Platzhalter-Ansicht (vorbereitete Module) – gleiche feste Schale wie .workspace, da auch hier
   der (jetzt fenster-fixierte) .app-header darüber steht. */
.module-placeholder{max-width:720px;margin:60px auto;padding:0 24px;
  position:fixed;left:0;right:0;bottom:0;top:calc(72px + env(safe-area-inset-top,0px));
  overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}
.stub-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-card);padding:40px 40px 34px;text-align:center}
.stub-ic{width:60px;height:60px;border-radius:16px;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;background:var(--surface-secondary);color:var(--text-strong)}
.stub-ic svg{width:28px;height:28px;display:block}
.stub-card h2{margin:0 0 8px;font-size:26px;font-weight:600}
.stub-card .lead{margin:0 auto 22px;max-width:56ch}
.stub-note{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:16px 20px;color:var(--text-2);font-size:14.5px;text-align:left;line-height:1.55}
.stub-meta{margin:16px 0 26px;font-size:12.5px;color:var(--text-3)}
.stub-meta code{background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:1px 7px;font-size:12px;color:var(--text-2)}
.home-topbar .glogo{display:flex;align-items:center;height:34px;line-height:0}
.home-hero .gate-claim{margin:0 0 10px}
.home-hero h1.gate-headline{font-size:30px;font-weight:800;letter-spacing:-.02em;line-height:1.1;margin:0 0 10px;color:var(--text-strong)}
.home-hero p{color:var(--text-2);margin:0;font-size:15.5px;max-width:70ch;line-height:1.55}

/* ---------- Home-Dashboard ---------- */
.home{display:flex;flex-direction:column;gap:30px}
.home-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.kpi{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:18px 20px;box-shadow:var(--shadow-card)}
.kpi-val{font-size:32px;font-weight:800;letter-spacing:-.02em;color:var(--text-strong);line-height:1.05;font-variant-numeric:tabular-nums}
.kpi-val.sm{font-size:16px;font-weight:700;padding-top:8px}
.kpi-lbl{margin-top:6px;font-size:12.5px;font-weight:600;color:var(--text-3);letter-spacing:.02em}
.home-block-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}
.home-block-head h2{font-size:18px;font-weight:700;letter-spacing:-.01em;color:var(--text-strong)}
.home-tools{flex:0 0 auto}
.home-search{flex:0 0 auto;width:240px;min-width:0}
.home-sortsel{min-width:160px;max-width:200px}
.qa-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.qa-card{display:flex;align-items:center;gap:16px;text-align:left;background:var(--surface-card);border:1px solid var(--border-subtle);
  border-radius:var(--radius-lg);padding:18px 20px;cursor:pointer;box-shadow:var(--shadow-card);transition:var(--transition-colors,.16s),transform var(--dur-fast,.14s) var(--ease-standard,ease);font-family:var(--font)}
.qa-card:hover{border-color:var(--border-strong);transform:translateY(-2px);box-shadow:var(--shadow-md)}
.qa-card .gc-ic{width:44px;height:44px;flex:none;border-radius:12px;background:var(--surface-secondary);color:var(--text-strong);display:flex;align-items:center;justify-content:center;transition:var(--transition-colors,.16s)}
.qa-card .gc-ic svg{width:22px;height:22px;display:block}
.qa-card:hover .gc-ic{background:var(--esg-red-soft);color:var(--esg-red)}
.qa-tx{flex:1;min-width:0}
.qa-card h3{margin:0 0 3px;font-size:15.5px;font-weight:700;color:var(--text-strong)}
.qa-card p{margin:0;color:var(--text-3);font-size:12.5px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.qa-go{flex:none;width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:18px;background:var(--surface-secondary)}
.qa-card:hover .qa-go{color:var(--esg-red);background:var(--esg-red-soft)}
.qa-card.soon{opacity:.75;cursor:default}
.qa-card.soon:hover{transform:none;border-color:var(--border-subtle);box-shadow:var(--shadow-card)}
/* Nachweisbericht / Regiezettel: 1:1 wie die anderen Kacheln – einziger Unterschied: Blau statt Rot */
.home-start .qa-card.qa-doc::before{background:#2563eb}
.home-start .qa-card.qa-doc .gc-ic{background:rgba(37,99,235,.12);color:#2563eb}
.home-start .qa-card.qa-doc:hover .qa-go{background:rgba(37,99,235,.12);color:#2563eb}
[data-theme="dark"] .home-start .qa-card.qa-doc .gc-ic{background:rgba(96,165,250,.16);color:#60a5fa}

/* Entwurfsliste */
.draft-list{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface-card);box-shadow:var(--shadow-card)}
/* Feste letzte Spalte (150px) statt auto: sonst berechnen Kopf (leer) und Zeile (Buttons)
   als getrennte Grid-Container unterschiedliche fr-Breiten → Kopf und Inhalt driften auseinander. */
.draft-head,.draft-row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1.4fr) 42px minmax(0,.9fr) 62px 52px 112px 150px 100px 118px;gap:12px;align-items:center;padding:12px 18px}
.draft-head{font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--text-3);background:var(--surface-sunken);border-bottom:1px solid var(--border-subtle)}
/* Kopfzeile: Spalten klar abgrenzen – Trennlinie sitzt am linken Zellrand (im gap) */
.draft-head > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.draft-head > span + span{border-left:1px solid var(--line)}
/* Linksbündige Spalten: gleicher Einzug in Kopf UND Zeile → Text exakt untereinander, Divider mit Luft.
   .draft-row hat für Sub/Bearbeiter/Geändert/Status eigene nth-child-Indizes (2,4,6,7), weil ETC+Fotos
   in .d-flags gebündelt sind (ein Direktkind statt zwei) – für die Grid-Auto-Platzierung macht das dank
   .d-flags{display:contents} keinen Unterschied (siehe unten), wohl aber für nth-child, das die reine
   DOM-Struktur zählt. Der Kopf (.draft-head) ist unverändert, deshalb eigene Selektorliste. */
.draft-head > span:nth-child(2),.draft-head > span:nth-child(4),.draft-head > span:nth-child(7),.draft-head > span:nth-child(8){padding-left:12px}
.draft-row > span:nth-child(2),.draft-row > span:nth-child(4),.draft-row > span:nth-child(6),.draft-row > span:nth-child(7){padding-left:12px}
/* Art / ETC / Fotos zentriert – Kopf und Zelleninhalt exakt untereinander */
.draft-head > span:nth-child(3),.draft-head > span:nth-child(5),.draft-head > span:nth-child(6){text-align:center}
.draft-row .d-art,.draft-row .d-etc,.draft-row .d-fotos{display:flex;justify-content:center;align-items:center}
/* .d-flags bündelt ETC+Fotos nur für die mobile mobile Kartenansicht (enges Nebeneinander per Flexbox,
   siehe @media unten). Auf dem Desktop-Tisch löst „display:contents" die Hülle für die Grid-Platzierung
   auf – .d-etc/.d-fotos bleiben dort exakt wie zuvor zwei eigene Spalten mit Ja/Nein-Anzeige. */
.draft-row .d-flags{display:contents}
.d-flag{display:none}
.draft-row .d-upd .d-upd-ic{display:none}
.draft-row{border-bottom:1px solid var(--border-subtle);font-size:13.5px;transition:background var(--dur-fast,.14s)}
.draft-row:last-child{border-bottom:none}
.draft-row:hover{background:var(--surface-hover)}
.draft-row .d-name{font-weight:600;color:var(--text-strong);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.draft-row .d-name:hover{color:var(--esg-red)}
.draft-row .d-sub,.draft-row .d-be{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.draft-row .d-art{color:var(--text-2)}
.d-art-ic{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:7px;background:var(--surface-secondary);color:var(--text-2)}
.d-art-ic svg{width:16px;height:16px;display:block}
.draft-row .d-status{min-width:0;display:flex;align-items:center}
/* Status/Ergebnis-Pille: vertikal zentriert (inline-flex, NICHT inline-block – sonst sitzt der Text
   über line-height oben an und wirkt abgeschnitten), einzeilig, schrumpft nicht unter den Inhalt.
   Nur der eigentliche Text (.b-tx) kürzt bei echten Langtexten sauber mit „…" – kurze Status wie
   „In Bearbeitung" werden dank ausreichend breiter Spalte immer vollständig gezeigt. */
.draft-row .d-status .badge{flex:0 1 auto;min-width:0;max-width:100%}
.draft-row .d-upd{color:var(--text-3);font-size:12.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.jn{display:inline-flex;align-items:center;height:var(--pill-h);font-size:var(--pill-font);font-weight:var(--pill-weight);line-height:1;padding:0 var(--pill-pad-x);border-radius:var(--pill-radius);white-space:nowrap}
.jn-y{background:var(--esg-red-soft);color:var(--esg-red)}
.jn-n{background:var(--surface-2);color:var(--text-3)}
[data-theme="dark"] .jn-n{background:rgba(255,255,255,0.06)}
.draft-row .d-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end}
.d-menu{width:32px;height:32px;border:1px solid var(--line-2);background:var(--surface);border-radius:9px;cursor:pointer;color:var(--text-2);font-size:16px;line-height:1}
.d-menu:hover{background:var(--surface-2);color:var(--text)}
.draft-empty{padding:34px;text-align:center;color:var(--text-3);font-size:14px}
/* Zentrale Status-Pille: feste Höhe/Radius über --pill-* (Design-Tokens oben in :root),
   kein Umbruch – kürzt bei zu wenig Platz sauber mit Ellipse statt mehrzeilig zu wachsen. */
.badge{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:var(--pill-h);max-width:100%;padding:0 var(--pill-pad-x);
  border-radius:var(--pill-radius);font-size:var(--pill-font);font-weight:var(--pill-weight);line-height:1.35;
  white-space:nowrap;box-sizing:border-box}
/* Optionaler Text-Träger: kürzt echte Langtexte, während die Pille als flex-Container den Text
   sauber zentriert hält. line-height gibt den Unterlängen (g, j, p, y) Platz – KEIN overflow:hidden
   auf der Pille selbst, das würde die Unterlängen unten abschneiden. */
.badge .b-tx{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.35}
.badge.b-ok{background:var(--ok-soft);color:var(--ok-text)}
.badge.b-warn{background:var(--warn-soft);color:var(--warn-text)}
.badge.b-bad{background:var(--bad-soft);color:var(--bad-text)}
.badge.b-info{background:var(--info-soft);color:var(--info)}
.badge.b-neutral{background:var(--surface-secondary);color:var(--text-2)}
/* Kontextmenü */
.ctx-menu{position:fixed;z-index:400;min-width:170px;background:var(--surface-raised);border:1px solid var(--border-default);border-radius:12px;box-shadow:var(--shadow-lg);padding:6px;animation:esg-scale-in .13s var(--ease-out,ease)}
.ctx-menu button{display:block;width:100%;text-align:left;border:none;background:transparent;color:var(--text);font-family:var(--font);font-size:13.5px;padding:9px 12px;border-radius:8px;cursor:pointer}
.ctx-menu button:hover{background:var(--surface-hover-neutral)}
.ctx-menu button.danger{color:var(--bad)}
.ctx-menu button.danger:hover{background:var(--bad-soft)}
.ctx-menu.wide{min-width:230px}
.ctx-menu .ctx-title{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);padding:8px 12px 4px}
.ctx-menu .ctx-sep{height:1px;background:var(--border-subtle);margin:6px 4px}
.ctx-menu button.sel{background:var(--surface-selected);color:var(--esg-red);font-weight:600}
.ctx-menu .uc-role{color:var(--text-3);font-weight:500}
.ctx-menu-backdrop{display:none}
/* Mobil: appweite Kontextmenüs (Entwürfe/Protokolle, Benutzer & Rollen, „Mehr") als Bottom-Sheet –
   verhindert, dass ein Menü nahe des unteren Bildschirmrands (z. B. der Benutzer-Chip im Menü)
   unterhalb des sichtbaren Bereichs und damit unbedienbar landet. Ein zentraler Fix für alle Stellen. */
@media (max-width:820px),(max-height:500px){
  .ctx-menu-backdrop{display:block;position:fixed;inset:0;z-index:390;background:rgba(0,0,0,.32)}
  .ctx-menu{left:0!important;right:0;top:auto!important;bottom:0!important;width:auto!important;min-width:0;max-height:70vh;overflow-y:auto;
    border-radius:16px 16px 0 0;padding:8px 8px calc(8px + env(safe-area-inset-bottom));
    box-shadow:0 -10px 40px rgba(0,0,0,.25);animation:esgsUp .16s ease-out}
  .ctx-menu::before{content:"";display:block;width:36px;height:4px;background:var(--border-subtle);border-radius:2px;margin:2px auto 8px}
  .ctx-menu button{padding:12px 12px;font-size:14.5px;min-height:44px}
}
@media (prefers-reduced-motion:reduce){.ctx-menu{animation:none}}

/* Benutzer-Chip */
.user-chip{display:inline-flex;align-items:center;gap:9px;height:40px;padding:0 12px 0 8px;border-radius:var(--radius-full);border:1px solid var(--line-2);background:var(--surface);cursor:pointer;font-family:var(--font)}
.user-chip:hover{background:var(--surface-2)}
.user-chip .uc-av{width:26px;height:26px;flex:none;border-radius:50%;background:var(--esg-ink);color:var(--surface-card);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;background-size:cover;background-position:center;background-repeat:no-repeat;overflow:hidden}
.user-chip .uc-tx{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}
.user-chip .uc-name{font-size:12.5px;font-weight:600;color:var(--text-strong)}
.user-chip .uc-role{font-size:10.5px;color:var(--text-3)}
@media (max-width:640px){.user-chip .uc-tx{display:none}.user-chip{padding:0 8px}}

/* Home: „Neue Prüfung starten" prominent */
.home-start .qa-card{padding:20px 22px}
.home-start .qa-card .gc-ic{width:48px;height:48px}
.home-start .qa-card .gc-ic svg{width:24px;height:24px}
.home-start .qa-card h3{font-size:16px}
.draft-head.done,.draft-row .badge.b-done{--x:0}
.badge.b-done{background:var(--surface-secondary);color:var(--text-2)}

/* ---------- 4-Farben-Schrittstatus (Sidebar-Nummern) ---------- */
.tab.st-empty .tnum{background:var(--surface);border-color:var(--line-2);color:var(--text-3)}
.tab.st-partial .tnum{background:var(--warn)!important;border-color:var(--warn)!important;color:#fff!important}
.tab.st-error .tnum{background:var(--bad)!important;border-color:var(--bad)!important;color:#fff!important}
.tab.st-ok .tnum{background:var(--ok)!important;border-color:var(--ok)!important;color:#fff!important}
.workspace .tab.active .tnum{box-shadow:0 0 0 3px var(--surface-selected)}
.tab.st-ok .tlbl::after{content:"";display:inline-block;width:5px;height:5px}
/* aktiver Schritt behält Rot-Label, Nummer zeigt Status */
.workspace .tab.st-error.active .tlbl{color:var(--bad)}
/* Prüfobjekt gesperrt, bis Stammdaten vollständig sind (§4) – rein visuelle Rückmeldung, die
   eigentliche Sperre sitzt in switchTab(); Klick bleibt möglich (zeigt den Hinweis-Toast). */
.tab.tab-locked{opacity:.55}
.tab.tab-locked .tnum::after{content:"🔒";position:absolute;font-size:9px;right:-2px;bottom:-2px}
.tab.tab-locked .tnum{position:relative}

/* ---------- Einheitliche Schritt-Aktionsleiste (Sticky-Footer: immer unten im Fenster sichtbar) ---------- */
.step-bar{position:sticky;bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:20;display:flex;align-items:center;gap:16px;margin:var(--wf-gap-lg) 0 0;padding:10px 12px 10px 18px;
  background:var(--glass-bg-strong);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);
  border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}
.step-bar[hidden]{display:none}
.step-bar .sb-mid{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}
.step-bar .sb-pos{font-size:13px;font-weight:700;color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.step-bar .sb-status{font-size:12px;font-weight:600}
.step-bar .sb-status::before{content:"●";margin-right:6px}
.step-bar .sb-status.ok{color:var(--ok)}
.step-bar .sb-status.partial{color:var(--warn)}
.step-bar .sb-actions{display:flex;gap:8px;flex:none}
/* „Weiter" ist die klare primäre Aktion – hoher Kontrast über die neutrale Aktionsfarbe (Anthrazit/
   invertiert in Dark), damit Rot für Abschluss & echte Akzente reserviert bleibt (§16). „Zurück"
   bleibt als ghost dezent. */
.step-bar #sbNext{background:var(--action-bg);border-color:var(--action-bg);color:var(--action-text);font-weight:600}
.step-bar #sbNext:hover{opacity:.9;background:var(--action-bg);border-color:var(--action-bg)}
.step-bar .btn.primary.ready{box-shadow:0 0 0 3px var(--ok-soft)}
@media (max-width:640px){.step-bar{flex-wrap:wrap;gap:10px}.step-bar .sb-mid{order:-1;flex-basis:100%}.step-bar .sb-actions{flex:1;justify-content:flex-end}}

/* ---------- Toast ---------- */
.esg-toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(18px);background:#1d1d1f;color:#fff;
  padding:10px 18px;border-radius:var(--radius-full);font-size:13px;font-weight:600;box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:1000}
.esg-toast:empty{display:none}
[data-theme="dark"] .esg-toast{background:#2c2c2e;color:#fff}
.esg-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- Anmeldung / Ersteinrichtung ---------- */
.auth{position:fixed;inset:0;z-index:250;background:linear-gradient(160deg,var(--bg-grad-a),var(--bg-grad-b));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;overflow:auto;-webkit-overflow-scrolling:touch}
.auth[hidden]{display:none}
.auth-card{width:100%;max-width:420px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);padding:30px 30px 28px}
.auth-brand{display:flex;align-items:center;gap:13px;margin-bottom:22px}
.auth-p{width:44px;height:44px;flex:none;display:inline-flex}.auth-p svg{width:44px;height:44px}
.auth-eyebrow{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.auth-tagline{font-size:16px;font-weight:700;color:var(--text-strong);letter-spacing:-.01em}
.auth-h{font-size:22px;font-weight:800;letter-spacing:-.02em;margin:0 0 6px;color:var(--text-strong)}
.auth-sub{color:var(--text-2);font-size:14px;margin:0 0 20px;line-height:1.5}
.auth-card label{display:block;margin-bottom:14px;font-size:13px;font-weight:500;color:var(--text-2)}
.auth-msg{color:var(--bad);font-size:13px;font-weight:600;min-height:18px;margin:2px 0 8px}
.auth-go{width:100%;height:46px;margin-top:4px}
.auth-sso{width:100%;height:42px;margin-top:10px;font-size:13px}
.auth-foot{font-size:12px;color:var(--text-3);text-align:center}

/* ---------- Benutzer & Rechte (Dialog) ---------- */
.ua-box{width:min(1040px,96vw);height:min(88vh,860px)}
.ua-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-subtle)}
.ua-head b{font-size:16px}
.ua-head-actions{display:flex;gap:8px}
/* Modus-Umschalter Benutzer/Rollen */
.ua-modes{display:inline-flex;gap:4px;background:var(--surface-secondary);border-radius:10px;padding:3px}
.ua-modebtn{border:none;background:none;font:inherit;font-size:13px;font-weight:600;color:var(--text-2);padding:6px 16px;border-radius:8px;cursor:pointer}
.ua-modebtn.on{background:var(--surface-card);color:var(--esg-red);box-shadow:var(--shadow-card)}
.ua-view{flex:1;display:flex;flex-direction:column;min-height:0}
/* Rollenverwaltung */
.ua-roles{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:14px}
.ua-role-card{border:1px solid var(--border-subtle);border-radius:12px;padding:14px 16px;background:var(--surface-card)}
.ua-role-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.ua-role-label{font-weight:700;font-size:14px;height:34px;max-width:220px}
.ua-role-tag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 7px;border-radius:5px;background:var(--surface-secondary);color:var(--text-3)}
.ua-role-use{font-size:12px;color:var(--text-3)}
.ua-role-sp{flex:1}
.ua-role-perms{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:4px 14px;border-top:1px solid var(--border-subtle);padding-top:12px}
/* Toolbar: Suche + Filter */
.ua-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 20px;border-bottom:1px solid var(--border-subtle)}
.ua-search{flex:1 1 260px;min-width:200px;max-width:420px}
.ua-filter{font-size:12.5px;color:var(--text-2);white-space:nowrap}
/* Tabelle + Detail gestapelt in einer scrollbaren Spalte */
.ua-body{flex:1;display:block;overflow-y:auto;min-height:0}
.ua-tablewrap{padding:8px 20px 0}
.ua-table{width:100%;border-collapse:collapse;font-size:13px}
.ua-table thead th{text-align:left;font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3);padding:8px 12px;border-bottom:1px solid var(--border-subtle);white-space:nowrap}
.ua-table tbody td{padding:9px 12px;border-bottom:1px solid var(--border-subtle);vertical-align:middle;color:var(--text-2)}
.ua-trow{cursor:pointer}
.ua-trow:hover td{background:var(--surface-hover-neutral)}
.ua-trow.sel td{background:var(--surface-selected)}
.ua-trow.sel .ua-c-name b{color:var(--esg-red)}
.ua-c-name{display:flex;align-items:center;gap:10px}
.ua-avatar{flex:none;width:32px;height:32px;border-radius:50%;background:var(--esg-red-soft);color:var(--esg-red);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;background-size:cover;background-position:center;overflow:hidden}
.ua-c-nn{display:flex;flex-direction:column;min-width:0}
.ua-c-name b{color:var(--text-strong);font-size:13.5px}
.ua-c-user{display:block;font-size:11.5px;color:var(--text-3)}
.ua-sig-info{font-size:13px;color:var(--text-2);margin:12px 0 4px;line-height:1.5}
.ua-sig-info .hint{color:var(--text-3)}
.ua-c-pn{color:var(--text-strong)}
.ua-dim{color:var(--text-3)}
.ua-yes{color:var(--ok-text);font-weight:600}
.ua-no{color:var(--text-3)}
.ua-empty{padding:22px 12px;text-align:center;color:var(--text-3)}
.ua-role-badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--surface-secondary);color:var(--text-2);white-space:nowrap}
.ua-role-Administrator{background:var(--esg-red-soft);color:var(--esg-red)}
.ua-role-Prüfer{background:rgba(37,99,235,.13);color:#2563eb}
.ua-role-Controller{background:rgba(13,148,136,.14);color:#0d9488}
.ua-st{display:inline-block;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:6px;white-space:nowrap}
.ua-st-ok{background:var(--ok-soft);color:var(--ok-text)}
.ua-st-warn{background:rgba(202,138,4,.16);color:#a16207}
.ua-st-neutral{background:var(--surface-secondary);color:var(--text-3)}
.ua-detail-empty{padding:24px 22px;color:var(--text-3)}
/* Prüferdaten im Detail */
.ua-pruefer-h{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:700;color:var(--text-strong);margin:20px 0 8px;padding-top:16px;border-top:1px solid var(--border-subtle)}
.ua-namewarn{font-size:12px;color:#8a5a00;margin:-4px 0 12px}
.ua-sig{margin:12px 0 4px}
.ua-sig-lbl{display:block;font-size:12px;color:var(--text-2);font-weight:500;margin-bottom:6px}
.ua-sig-canvas-wrap{position:relative;height:96px;border:1px dashed var(--border-strong,#c9c9cf);border-radius:11px;background:var(--surface-card);overflow:hidden}
.ua-sig-canvas-wrap canvas{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}
.ua-sig-canvas-wrap .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:13px;pointer-events:none}
.ua-sig-actions{display:flex;align-items:center;gap:8px;margin-top:8px}
.ua-list{border-right:1px solid var(--border-subtle);overflow-y:auto;padding:10px}
.ua-u{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;border:none;background:transparent;border-radius:10px;padding:10px 12px;cursor:pointer;font-family:var(--font);margin-bottom:2px}
.ua-u:hover{background:var(--surface-hover-neutral)}
.ua-u.on{background:var(--surface-selected)}
.ua-u.on .ua-u-name{color:var(--esg-red)}
.ua-u-name{font-size:14px;font-weight:600;color:var(--text-strong)}
.ua-off{font-size:10.5px;font-weight:700;color:var(--warn);text-transform:uppercase}
.ua-u-role{font-size:12px;color:var(--text-3)}
.ua-detail{overflow-y:auto;padding:20px 22px}
.ua-d-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.ua-inl{display:inline-flex;flex-direction:column;font-size:12px;color:var(--text-2);font-weight:500;margin:0 12px 12px 0}
.ua-inl input,.ua-inl select{margin-top:5px;height:40px}
.ua-meta{font-size:12px;color:var(--text-3);text-align:right;line-height:1.5}
.ua-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:6px 0 18px;padding-bottom:16px;border-bottom:1px solid var(--border-subtle)}
.ua-perms-h{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:700;color:var(--text-strong);margin-bottom:12px}
.ua-perms{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px}
.ua-perm{margin:0;font-weight:400;font-size:13.5px}
.ua-danger{margin-top:20px;padding-top:16px;border-top:1px solid var(--border-subtle)}
.ctx-user{padding:2px 12px 8px}.ctx-user b{display:block;font-size:14px;color:var(--text-strong)}.ctx-user .uc-role{font-size:12px;color:var(--text-3)}
.ro-note{background:var(--info-subtle);border:1px solid var(--info-border);color:var(--info-text);border-radius:var(--radius-lg);padding:16px 20px;font-size:14px;line-height:1.5}
@media (max-width:640px){.ua-box{width:100vw;height:100vh;border-radius:0}.ua-body{grid-template-columns:1fr}.ua-list{border-right:none;border-bottom:1px solid var(--border-subtle);max-height:150px}.ua-perms{grid-template-columns:1fr}}

/* Dark-Mode: Karten anheben (nicht zu dunkel) + Icon-Kacheln kontrastreich */
[data-theme="dark"] .kpi,[data-theme="dark"] .qa-card,[data-theme="dark"] .draft-list,
[data-theme="dark"] .gate-card{background:var(--surface-raised);border-color:var(--border-default)}
[data-theme="dark"] .qa-card .gc-ic,[data-theme="dark"] .stub-ic,[data-theme="dark"] .gate-card .gc-ic{background:rgba(255,255,255,0.07);color:var(--text-strong)}
[data-theme="dark"] .qa-go{background:rgba(255,255,255,0.06)}
[data-theme="dark"] .draft-row:hover{background:rgba(255,255,255,0.04)}
@media (max-width:1000px){.home-kpis{grid-template-columns:repeat(2,1fr)}}
@media (max-width:820px),(max-height:500px){
  /* Bug (16.07.2026): .home-block-head stellt Überschrift (h2) und Werkzeugleiste (Suche +
     Import-Button, .pc-bar.home-tools) per justify-content:space-between in EINE Zeile. Die
     Suche allein braucht schon min-width:200px – zusammen mit dem Button und der Überschrift
     passt das auf keinem Telefon nebeneinander. Die Leiste lief unsichtbar über den rechten
     Rand hinaus. Jetzt: Überschrift oben, Werkzeugleiste darunter über die volle Breite –
     „Suche, Filter und Aktionen sinnvoll untereinander". Zentral an EINER Stelle behoben, wirkt
     dadurch auf jeden Home-Abschnitt (Entwürfe, Zuletzt bearbeitet, Statistiken, Aufgaben, …). */
  .home-block-head{flex-wrap:wrap}
  .home-block-head .pc-bar,.home-block-head .home-tools{flex:1 1 100%;width:100%}
  .home-search{flex:1 1 auto;width:auto}
  .home-sortsel{display:none}

  /* Entwurfs-/Protokoll-Karte – strukturell neu aufgebaut (nicht nur CSS-Korrekturen):
     oben Icon+Titel+Status, darunter Kunde/Objekt, dann der Fortschrittsbalken über volle
     Breite, danach kompakte Metadaten (ETC, Fotos, zuletzt bearbeitet), Aktionen zuletzt.
     Jede Spur ist per minmax(0,…) begrenzt – vorher konnte die Status-Badge-Spalte (auto),
     bei langen Ergebnistexten wie „Bestanden mit leichten Mängeln", über ihre Spaltenbreite
     hinauswachsen und Titel/Icon bedrängen bzw. verdecken. Keine absolute Positionierung,
     keine festen Höhen – alle Texte brechen sauber um, auch bei sehr langen Kunden-/
     Objektnamen. Jede Zeile ist eine eigenständige, sichtbar abgesetzte Karte. */
  .draft-list{background:transparent;border:none;box-shadow:none;display:flex;flex-direction:column;gap:10px}
  .draft-head{display:none}
  /* 4 gleichwertige, nie über 0 hinaus schrumpfbare Spuren (statt einer „auto"-Spur für die
     Status-Badge) – vorher konnte die Badge-Spalte bei langen Ergebnistexten wie „Bestanden mit
     leichten Mängeln" über ihre Breite hinauswachsen und Titel/Icon bedrängen bzw. verdecken.
     Icon/Titel/Status oben, Kunde/Objekt darunter, Fortschritt über volle Breite, danach ETC/
     Fotos/zuletzt-bearbeitet als drei gleich breite kompakte Metadaten-Felder, zuletzt Aktionen.
     Keine absolute Positionierung, keine festen Höhen – alle Texte brechen sauber um. */
  /* Kompaktere Variante (zwei Alternativen intern verglichen, bevor diese hier gewählt wurde):
     (a) verworfen – Metadaten weiterhin als drei gestapelte Label/Wert-Kästen: liest sich klar,
         kostet aber pro Karte eine ganze Zeile mehr Höhe als nötig.
     (b) verworfen – Kunde/Objekt in dieselbe Zeile wie der Titel quetschen: spart eine Zeile,
         wirkt bei langen Namen aber sofort überladen und bricht uneinheitlich.
     (c) gewählt – Metadaten in EINER kompakten Inline-Zeile („ETC Ja · Fotos Nein · 16.7. 20:56"),
         Fortschrittsbalken über volle Breite mit Prozentzahl daneben statt darunter, engere
         Innenabstände/Zeilenabstände. Spart gegenüber der Vorversion durchgehend eine ganze
         Zeile Höhe, ohne Informationen zu verlieren oder Inhalte zu quetschen. */
  .draft-row{
    grid-template-columns:28px minmax(0,1fr) minmax(0,1fr) minmax(0,1.5fr);
    grid-template-areas:
      "art name name status"
      ". sub sub sub"
      "prog prog prog prog"
      ". flags flags upd"
      "actions actions actions actions";
    column-gap:10px;row-gap:7px;padding:12px 14px;
    background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);
    box-shadow:var(--shadow-card);
  }
  .draft-row .d-art{grid-area:art;justify-content:flex-start;align-self:start;margin-top:2px}
  .draft-row .d-art .d-art-ic{width:24px;height:24px}
  .draft-row .d-art .d-art-ic svg{width:14px;height:14px}
  .draft-row .d-name{grid-area:name;min-width:0;font-size:14.5px;white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:1.28}
  /* Status: kleine, feste Pille oben rechts – bricht nie um, kürzt bei Bedarf sauber mit „…" */
  .draft-row .d-status{grid-area:status;justify-self:end;align-self:start;min-width:0;max-width:100%;display:flex}
  .draft-row .d-status .badge{font-size:10.5px}
  /* Zweite Zeile: nur noch das konkrete Prüfobjekt (Kunde steht bereits im Titel) – ohne Objekt keine Zeile/Lücke */
  .draft-row .d-sub{grid-area:sub;min-width:0;font-size:12px;white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:1.3}
  .draft-row .d-sub:empty{display:none}
  /* Fortschritt: volle Breite, etwas höher, Prozentzahl sauber daneben statt in eigener Zeile */
  .draft-row .d-prog{grid-area:prog;display:flex;align-items:center;gap:8px;min-width:0}
  .draft-row .d-prog .esg-prog{flex:1;width:auto;height:10px;border-radius:5px;margin-right:0;
    background:var(--surface-sunken);box-shadow:inset 0 0 0 1px var(--border-subtle)}
  .draft-row .d-prog .esg-prog-fill{border-radius:5px;background:linear-gradient(90deg,var(--esg-red) 0%,#e0453f 100%)}
  .draft-row .d-prog .esg-prog-template .esg-prog-fill{background:linear-gradient(90deg,#2563eb 0%,#3b82f6 100%)}
  .draft-row .d-prog .esg-prog-pct{flex:none;font-size:12.5px;font-weight:700;color:var(--text-strong);font-variant-numeric:tabular-nums}
  /* ETC/Fotos: nur als kleine Pille, wenn tatsächlich vorhanden – links, dicht beieinander (Flexbox
     statt Grid-Spalten, damit sie sich nicht an die Spaltenbreite hängen und Lücken reißen). Auf dem
     Desktop-Tisch (oben: display:contents) bleiben es zwei eigene Ja/Nein-Spalten wie zuvor. */
  .draft-row .d-flags{grid-area:flags;display:flex;gap:6px;flex-wrap:wrap;align-items:center;min-width:0;justify-self:start}
  .draft-row .d-etc,.draft-row .d-fotos{display:flex;align-items:center}
  .draft-row .d-etc.is-off,.draft-row .d-fotos.is-off{display:none}
  .draft-row .d-etc .jn,.draft-row .d-fotos .jn{display:none}
  .draft-row .d-flag{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:10.5px;font-weight:700;color:var(--text-2);background:var(--surface-sunken);border:1px solid var(--border-subtle);white-space:nowrap}
  /* Zuletzt bearbeitet: rechts, Datum+Uhrzeit bleiben immer in einer Zeile */
  .draft-row .d-upd{grid-area:upd;justify-self:end;display:flex;align-items:center;gap:4px;min-width:0;font-size:11.5px;line-height:1.3;white-space:nowrap;color:var(--text-2)}
  .draft-row .d-upd .d-upd-ic{display:inline-flex;flex:none;width:12px;height:12px;color:var(--text-3)}
  .draft-row .d-upd .d-upd-ic svg{width:12px;height:12px;display:block}
  .draft-row .d-be{display:none}   /* Bearbeiter: nicht in der geforderten Kernliste, Platz für das Wichtige */
  /* Fortsetzen als klare Hauptaktion rechts, „Mehr" als sekundäre Aktion daneben */
  .draft-row .d-actions{grid-area:actions;justify-content:flex-end;gap:8px}
}
.gate-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.gate-card{
  background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:34px 28px;cursor:pointer;
  box-shadow:var(--shadow-2);transition:.18s;text-align:left;
}
.gate-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-card);border-color:var(--esg-red)}
.gate-card .gc-ic{width:48px;height:48px;border-radius:13px;background:var(--surface-secondary);color:var(--text-strong);
  display:flex;align-items:center;justify-content:center;margin-bottom:18px;transition:var(--transition-colors,.16s)}
.gate-card .gc-ic svg{width:23px;height:23px;display:block}
.gate-card:hover .gc-ic{background:var(--esg-red-soft);color:var(--esg-red)}
.gate-card h3{margin:0 0 6px;font-size:20px;font-weight:600}
.gate-card p{margin:0;color:var(--text-2);font-size:14px}
@media (max-width:680px){.gate-cards{grid-template-columns:1fr}}

/* ---------- Dropzone ---------- */
.dropzone{border:1.5px dashed var(--line-2);border-radius:16px;padding:44px;text-align:center;background:var(--surface);transition:.18s;cursor:pointer}
.dropzone.sm{padding:26px}
.dropzone:hover{border-color:var(--esg-red);background:var(--surface)}
.dropzone.drag{border-color:var(--esg-red);background:var(--esg-red-soft)}
.dz-icon{width:54px;height:54px;margin:0 auto 12px;border-radius:14px;background:var(--surface-2);color:var(--esg-red);display:flex;align-items:center;justify-content:center;font-size:24px}
.dz-icon svg{width:26px;height:26px}
/* Kompakte Datei-Leiste (ersetzt die Dropzone nach dem Import) */
.filebar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border:1px solid var(--line);border-radius:14px;padding:12px 16px;background:var(--surface);box-shadow:var(--shadow-1)}
.filebar .fb-ic{font-size:20px;flex:none}
.filebar .fb-name{font-weight:600;color:var(--text-strong);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}
.filebar .fb-actions{display:flex;gap:8px;flex:none;margin-left:auto}
.filebar .fb-del{color:var(--esg-red)}
.filebar .fb-del:hover{border-color:var(--esg-red);background:var(--esg-red-soft)}

.summary{margin-top:24px;border:1px solid var(--line);border-radius:16px;padding:22px 24px;background:var(--surface);box-shadow:var(--shadow-1)}
.summary h3{margin:0 0 16px;font-size:16px;font-weight:600;display:flex;align-items:center;gap:8px}
.summary h3::before{content:"✓";color:#fff;background:var(--ok);width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px}
.summary .stat{display:inline-flex;flex-direction:column;margin:0 30px 14px 0}
.summary .stat b{font-size:26px;font-weight:600;line-height:1.1}
.summary .stat span{font-size:12.5px;color:var(--text-3)}
.summary table{border-collapse:collapse;font-size:14px;margin-top:6px}
.summary td{padding:4px 18px 4px 0}
.summary td:first-child{color:var(--text-3)}
.summary .ok-msg{color:var(--ok);font-weight:500;margin-top:12px;font-size:14px}
.summary .err-msg{color:var(--bad);font-weight:600}

/* ---------- Prüfgrundlagen-Karten ---------- */
.bigcheck-list{display:flex;flex-direction:column;gap:10px}
.bigcheck{display:flex;align-items:center;gap:13px;border:1px solid var(--line-2);border-radius:12px;padding:0 16px;height:60px;cursor:pointer;transition:.14s;margin:0;font-weight:500}
.bigcheck:hover{border-color:var(--border-strong)}
.bigcheck.on{border-color:var(--esg-red);background:var(--esg-red-soft)}
.bigcheck input{width:20px;height:20px;margin:0;accent-color:var(--esg-red)}
.bigcheck span{display:flex;flex-direction:column;line-height:1.3}
.bigcheck small{color:var(--text-3);font-weight:400;font-size:12.5px}

/* ---------- Checklisten ---------- */
.checklist-kat{display:flex;flex-direction:column;gap:16px}
.cl-cat{border:1px solid var(--line);border-radius:var(--wf-card-radius);overflow:hidden}
.cl-cat-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;background:var(--surface-2);padding:11px 16px;font-weight:600;font-size:14px}
.cl-cat-head .mini{margin:0}
.cl-cat-title{flex:1 1 auto;min-width:0}
.cl-bulk{display:inline-flex;gap:6px;flex:none}
.cl-bulk button{font-family:var(--font);font-size:11px;font-weight:600;line-height:1;padding:6px 9px;border-radius:8px;border:1px solid var(--line-2);background:var(--surface);color:var(--text-2);cursor:pointer;transition:.12s;white-space:nowrap}
.cl-bulk button:hover{background:var(--surface-2)}
.cl-bulk .clb-ok:hover{border-color:var(--ok);color:var(--ok)}
.cl-bulk .clb-nok:hover{border-color:var(--bad);color:var(--bad)}
.cl-bulk .clb-na:hover{border-color:var(--neutral-500);color:var(--text)}
.cl-item{display:flex;align-items:center;gap:14px;padding:11px 16px}
.cl-item:not(:last-child){border-bottom:1px solid var(--line)}
.cl-item .cl-name{flex:1;font-weight:400;font-size:14.5px}
.cl-item.custom .cl-name{display:flex;align-items:center;gap:8px}
.cl-item .cust-tag{font-size:10px;font-weight:600;color:var(--text-3);border:1px solid var(--line-2);border-radius:5px;padding:1px 5px;text-transform:uppercase}
.cl-tools{display:flex;gap:6px}
.cl-tools button{border:none;background:transparent;color:var(--text-3);cursor:pointer;font-size:14px;padding:4px;border-radius:6px}
.cl-tools button:hover{background:var(--surface-2);color:var(--text)}
/* Pro-Prüfpunkt-Aktionen (Bemerkung/Foto/Mangel je Prüfpunkt, §14) */
.cl-actions{display:flex;gap:2px;flex:none}
.cl-act{position:relative;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;background:transparent;color:var(--text-3);cursor:pointer;border-radius:8px}
.cl-act:hover{background:var(--surface-2);color:var(--text)}
.cl-act.has{color:var(--accent,#c00)}
.cl-act.on{background:var(--warn-soft,#fdf1d8);color:var(--warn,#a05a00)}
.cl-act svg{width:15px;height:15px}
.cl-act-n{position:absolute;top:-2px;right:-2px;background:var(--accent,#c00);color:#fff;font-size:9px;font-weight:700;line-height:1;border-radius:7px;min-width:14px;height:14px;display:flex;align-items:center;justify-content:center;padding:0 3px}
.cl-item.cl-note-row{display:block;padding:0 16px 12px}
.cl-note-inp{width:100%;box-sizing:border-box;margin-top:0;min-height:56px;resize:vertical;font-size:13.5px}
.seg{display:inline-flex;border:1px solid var(--line-2);border-radius:9px;overflow:hidden;background:var(--surface);flex:none}
.seg button{font-family:var(--font);border:none;background:var(--surface);height:34px;padding:0 12px;cursor:pointer;font-weight:500;font-size:12.5px;color:var(--text-2);transition:.12s;border-left:1px solid var(--line)}
.seg button:first-child{border-left:none}
.seg button:hover{background:var(--surface-2)}
.seg button.sel-ok{background:var(--ok);color:#fff}
.seg button.sel-nok{background:var(--bad);color:#fff}
.seg button.sel-na{background:var(--neutral-500);color:#fff}
.cl-add{display:flex;gap:10px;margin-top:6px}
.cl-add input{margin-top:0}
.cat-add-row{padding:10px 16px;background:var(--surface-sunken)}
.cust-inp{margin-top:0;height:auto;min-height:0;resize:none;overflow:hidden;line-height:1.4;padding:7px 10px}
/* Checkliste auf Mobil: Frage über den Antwort-Buttons statt nebeneinander gequetscht –
   die OK/Nicht ok/entf.-Reihe lief bisher über den rechten Rand hinaus. Eigene Fragen bekommen
   ein größeres, mehrzeiliges Eingabefeld statt eines zusammengedrückten einzeiligen Felds. */
@media (max-width:820px),(max-height:500px){
  .cl-item{flex-direction:column;align-items:stretch;gap:10px}
  .cl-item .cl-name{font-size:15px}
  .seg{width:100%;align-self:stretch}
  .seg button{flex:1;height:44px;font-size:13.5px;padding:0 6px}
  .cl-item.custom{position:relative;padding-right:44px}
  .cl-item.custom .cl-tools{position:absolute;top:11px;right:16px}
  .cust-inp{font-size:16px;min-height:40px}
  .cl-actions{align-self:flex-end}
  .cl-note-inp{font-size:16px}
}

/* ---------- Protokollierung / Ergebnis ---------- */
.result-banner{display:flex;align-items:center;gap:14px;border-radius:14px;padding:16px 20px;margin-bottom:22px;font-weight:500}
.result-banner .rb-ic{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;flex:none;color:#fff}
.result-banner .rb-title{font-size:16px;font-weight:600}
.result-banner .rb-sub{font-size:13px;color:var(--text-2)}
.result-ok{background:var(--ok-soft);border:1px solid var(--ok-border)}
.result-ok .rb-ic{background:var(--ok)}
.result-warn{background:var(--warn-soft);border:1px solid var(--warn-border)}
.result-warn .rb-ic{background:var(--warn)}
.result-bad{background:var(--bad-soft);border:1px solid var(--bad-border)}
.result-bad .rb-ic{background:var(--bad)}
.notice{display:flex;gap:10px;align-items:flex-start;background:var(--warn-soft);border:1px solid var(--warn-border);color:var(--warn-text);border-radius:12px;padding:12px 16px;margin:14px 0;font-size:14px}
.notice::before{content:"!";flex:none;width:20px;height:20px;border-radius:50%;background:var(--warn);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:13px}
.protolist{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--wf-card-radius);overflow:hidden}
.protolist .cl-item{padding:12px 16px}
.protolist .cl-item:not(:last-child){border-bottom:1px solid var(--line)}

/* ---------- Nachweisbericht ---------- */
.nw-main{padding-top:28px}
.nw-intro{max-width:1120px;margin:0 auto;padding:26px 24px 4px}
.nw-intro h2{font-size:24px;font-weight:600}
.nw-tabs{margin-top:4px}
.nw-panels{padding-top:18px}
.nw-navrow{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:30px;padding-top:22px;border-top:1px solid var(--line)}
.nw-navrow > span{flex:0 0 auto}
/* Validierung */
.nw-invalid input,.nw-invalid textarea,input.nw-invalid,textarea.nw-invalid,select.nw-invalid{border-color:var(--esg-red)!important;box-shadow:var(--ring-danger)!important}
.tab.has-error .tnum{background:var(--esg-red);border-color:var(--esg-red);color:#fff}
.nw-err-banner{background:var(--bad-soft);border:1px solid var(--bad-border);border-radius:12px;padding:14px 18px;margin:0 0 18px;color:var(--bad-text);font-size:14px}
.nw-err-banner b{color:var(--bad-text)}
.nw-err-banner ul{margin:8px 0 0;padding-left:20px}
.nw-err-banner li{margin:3px 0}
.nw-regie{margin-top:6px}
.nw-regie-head,.nw-regie-row{display:grid;grid-template-columns:1fr 180px 68px 80px 72px 34px;gap:10px;align-items:start}
.nw-regie-head{font-size:11.5px;color:var(--text-3);font-weight:600;padding:0 2px 8px;border-bottom:1px solid var(--line)}
.nw-regie-head span:nth-child(n+3){text-align:right}
.nw-regie-row{padding:10px 0;border-bottom:1px solid var(--line)}
.nw-regie-row input,.nw-regie-row textarea{margin-top:0}
.nw-regie-row textarea{min-height:44px;height:44px}
.nw-regie-row input[data-rk="menge"],.nw-regie-row input[data-rk="stunden"]{text-align:right;font-variant-numeric:tabular-nums}
.nw-summe{height:44px;display:flex;align-items:center;justify-content:flex-end;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text)}
.nw-del{height:44px;border:1px solid var(--line-2);background:var(--surface);border-radius:9px;cursor:pointer;color:var(--bad);font-weight:700}
.nw-del:hover{background:var(--bad-soft);border-color:var(--bad-border)}
.nw-gesamt{display:flex;justify-content:flex-end;gap:12px;align-items:baseline;margin-top:14px;font-size:14px;color:var(--text-2)}
.nw-gesamt b{font-size:18px;color:var(--text)}
.nw-calc{display:flex;gap:26px;flex-wrap:wrap;margin:14px 0 4px;padding:12px 16px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;font-size:14px;color:var(--text-2)}
.nw-calc b{color:var(--text);font-variant-numeric:tabular-nums}
.nw-sonder{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.nw-sonder .check-inline{margin:0;font-weight:400}
@media (max-width:820px),(max-height:500px){.nw-regie-head{display:none}.nw-regie-row{grid-template-columns:1fr 1fr;gap:8px}}

/* ---------- Feststellungen ---------- */
.findings-empty{border:1px solid var(--ok-border);background:var(--ok-soft);color:var(--ok-text);border-radius:12px;padding:14px 18px;font-weight:500;margin-bottom:22px}
.findings-card{border:1px solid var(--line);border-radius:var(--wf-card-radius);overflow:hidden;margin-bottom:var(--wf-gap)}
.findings-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--surface-2);border-bottom:1px solid var(--line);font-weight:600;font-size:14px}
.finding{display:flex;align-items:center;gap:12px;padding:10px 16px}
.finding:not(:last-child){border-bottom:1px solid var(--line)}
.finding-ic{width:10px;height:10px;border-radius:3px;flex:none}
.finding-ic.sev-schwer{background:var(--esg-red)}
.finding-ic.sev-leicht{background:var(--warn)}
.finding-ic.sev-hinweis{background:var(--info)}
.finding-text{flex:1;margin:0;height:38px}
.finding-sev{width:170px;flex:none;margin:0;height:38px}
.findings-note{padding:8px 16px;background:var(--warn-soft);color:var(--warn-text);font-size:12.5px;font-weight:500;border-top:1px solid var(--line)}

/* ---------- Bausteine ---------- */
.bausteine{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-8px 0 22px}
.bl-label{font-size:12.5px;color:var(--text-3);font-weight:500;margin-right:2px}
.chip{font-family:var(--font);border:1px solid var(--line-2);background:var(--surface);color:var(--text);height:32px;padding:0 13px;border-radius:999px;cursor:pointer;font-size:13px;font-weight:500;transition:.14s}
.chip:hover{border-color:var(--esg-red);color:var(--esg-red);background:var(--esg-red-soft)}
.chip.clear{color:var(--text-3)}
.chip.clear:hover{border-color:var(--line-2);color:var(--text);background:var(--surface-2)}

/* ---------- Fotos ---------- */
.fotolist{display:flex;flex-direction:column;gap:18px;margin-top:22px}
/* Drei getrennte Fotoboxen: Prüfobjekt · Prüfplakette · Allgemeine Fotos */
.foto-box{border:1px solid var(--line);border-radius:var(--wf-card-radius);background:var(--surface);overflow:hidden}
.foto-box-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 18px;background:var(--surface-2);border-bottom:1px solid var(--line)}
.foto-box .fbx-t{display:flex;align-items:baseline;gap:10px;min-width:0}
.foto-box .fbx-title{font-weight:700;font-size:14.5px;color:var(--text-strong)}
.foto-box .fbx-count{font-size:12px;color:var(--text-3);white-space:nowrap}
.foto-box-body{padding:16px 18px;display:flex;flex-direction:column;gap:14px}
.foto-box-empty{color:var(--text-3);font-size:13px;line-height:1.5}
.foto-box-body .foto-card{box-shadow:none}
.foto-group-head{display:flex;align-items:center;gap:12px;margin:14px 0 2px}
.foto-group-head:first-child{margin-top:0}
.fg-badge{display:inline-flex;align-items:center;height:24px;padding:0 12px;border-radius:999px;color:#fff;font-size:12px;font-weight:600;letter-spacing:.02em}
.fg-count{font-size:12.5px;color:var(--text-3)}
.fg-anlagenbild{background:var(--neutral-700)}
.fg-pruefplakette{background:var(--neutral-600)}
.fg-mangel{background:var(--esg-red)}
.fg-hinweis{background:var(--warn)}
.fg-thermografie{background:var(--info)}
.foto-card{display:flex;gap:18px;border:1px solid var(--line);border-radius:var(--wf-card-radius);padding:16px;background:var(--surface)}
.foto-thumb{position:relative;width:150px;height:150px;flex:none;border-radius:12px;overflow:hidden;background:var(--surface-2);display:flex;align-items:center;justify-content:center}
.foto-thumb .thumb-edit{position:absolute;left:6px;right:6px;bottom:6px;height:28px;border:none;border-radius:8px;background:rgba(17,17,17,.72);color:#fff;font-family:var(--font);font-size:11.5px;font-weight:600;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity .15s}
.foto-thumb:hover .thumb-edit{opacity:1}
@media (hover:none){.foto-thumb .thumb-edit{opacity:1}}
.foto-thumb .thumb-edit:hover{background:var(--esg-red)}

/* ---------- Annotationseditor ---------- */
.imgedit{position:fixed;inset:0;z-index:1200;background:var(--scrim);display:flex;align-items:center;justify-content:center;padding:20px;animation:esg-fade-in .16s ease}
.ie-box{display:flex;flex-direction:column;width:min(1000px,96vw);height:min(88vh,860px);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);overflow:hidden}
.ie-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--border-subtle);background:var(--surface-card)}
.ie-tset{display:inline-flex;gap:4px;align-items:center;padding:3px;background:var(--surface-secondary);border:1px solid var(--border-subtle);border-radius:11px}
.ie-actset{gap:4px}
.ie-b{width:38px;height:38px;border:none;background:transparent;border-radius:9px;cursor:pointer;color:var(--text-2);font-family:var(--font);font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center}
.ie-b[data-a="clear"]{width:auto;padding:0 12px;font-size:12.5px}
.ie-b svg{width:19px;height:19px}
.ie-b:hover{background:var(--surface-card);color:var(--text)}
.ie-b.tool.on{background:var(--surface-card);color:var(--esg-red);box-shadow:var(--shadow-sm)}
.ie-color{width:26px;height:26px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}
.ie-color.on{border-color:var(--surface-card);box-shadow:0 0 0 2px var(--text-strong)}
.ie-spacer{flex:1}
.ie-stage{flex:1;display:flex;align-items:center;justify-content:center;background:var(--surface-sunken);overflow:hidden;padding:14px}
.ie-canvas{touch-action:none;cursor:crosshair;border-radius:6px;box-shadow:var(--shadow-lg);max-width:100%;max-height:100%;background:#fff}
.ie-hint{padding:9px 14px;text-align:center;font-size:12px;color:var(--text-3);border-top:1px solid var(--border-subtle)}
@media (max-width:640px){
  .imgedit{padding:0}
  .ie-box{width:100vw;height:100dvh;max-width:100vw;border-radius:0}
  .ie-tools{gap:5px;padding:calc(8px + env(safe-area-inset-top,0px)) 10px 8px;justify-content:center}
  .ie-b{width:36px;height:36px}
  .ie-stage{padding:8px}
  .ie-hint{padding-bottom:calc(9px + env(safe-area-inset-bottom,0px))}
}
.foto-thumb img{width:100%;height:100%;object-fit:cover}
.foto-fields{flex:1;display:flex;flex-direction:column;min-width:0}
.foto-fields .ff-row{display:grid;grid-template-columns:200px 1fr;gap:14px}
.foto-fields label{margin-bottom:12px}
.ff-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.ff-hint{font-size:12px;color:var(--text-3)}
.chip.ai{border-color:var(--accent-border);color:var(--esg-red);background:var(--esg-red-soft)}
.chip.ai:hover{background:var(--accent-subtle)}
.ai-box{width:100%;border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--surface-2);margin-top:4px}
.ai-head{font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:10px;display:flex;align-items:center;gap:6px}
.ai-head::before{content:"✨"}
.ai-box textarea,.ai-box input{background:var(--surface)}
.ai-actions{display:flex;gap:10px;margin-top:10px}
.cat-prev{display:flex;align-items:center;gap:16px;margin-top:14px}
.cat-prev img{width:120px;height:90px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.cat-prev-lbl{font-size:13px;font-weight:600;color:var(--ok);margin-bottom:8px}
.req{color:var(--esg-red);font-weight:700}
.etc-struct{margin-top:26px;padding-top:24px;border-top:1px solid var(--line)}
.foto-tools{display:flex;flex-direction:column;gap:8px}
.foto-tools button{font-family:var(--font);border:1px solid var(--line-2);background:var(--surface);border-radius:9px;width:38px;height:38px;cursor:pointer;font-weight:600;transition:.14s;flex:none}
.foto-tools button:hover{background:var(--surface-2)}
.foto-tools .del{color:var(--bad);border-color:var(--bad-border)}
.foto-fields select,.foto-fields input,.foto-fields textarea{max-width:100%;box-sizing:border-box}
/* Foto-Karte responsive: auf schmalen Screens sauber einspaltig gestapelt (zentral für alle Prüfarten) */
@media (max-width:720px){
  .foto-card{flex-wrap:wrap;gap:12px;padding:14px}
  .foto-thumb{width:100%;height:200px}
  .foto-fields{flex:1 1 100%;min-width:0;width:100%}
  .foto-fields .ff-row{grid-template-columns:1fr;gap:0}
  .foto-tools{flex-direction:row;order:3;width:100%;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);padding-top:12px}
  .foto-tools button{width:44px;height:44px}
}

/* ---------- Messwerte (moderne Tabelle) ---------- */
.mtable-wrap{border:1px solid var(--line);border-radius:var(--wf-card-radius);overflow:auto;max-height:70vh}
table.mtable{border-collapse:separate;border-spacing:0;width:100%;font-size:13px;min-width:1000px}
table.mtable th,table.mtable td{padding:10px 14px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--line)}
table.mtable tbody tr:last-child td{border-bottom:none}
table.mtable thead th{position:sticky;top:0;background:var(--surface-2);color:var(--text-3);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.05em;z-index:2;border-bottom:1px solid var(--line-2)}
table.mtable tbody tr:hover{background:var(--surface-hover)}
table.mtable tr.grp td{background:var(--surface-active);font-weight:600;color:var(--text);white-space:normal}
table.mtable td.num{font-variant-numeric:tabular-nums}
table.mtable td.mc-nr{color:var(--text-3);font-variant-numeric:tabular-nums}
.badge.ok{background:var(--ok-soft);color:var(--ok-text)}
.badge.bad{background:var(--bad-soft);color:var(--bad-text)}
.mw-multi{white-space:normal;line-height:1.4}

/* ---------- Unterschrift ---------- */
.sign-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.sign-pad-card{border:1px solid var(--line);border-radius:var(--wf-card-radius);padding:var(--wf-card-pad);background:var(--surface)}
.sign-pad-card h4{margin:0 0 12px;font-size:14px;font-weight:600}
.sign-canvas-wrap{position:relative;border:1px dashed var(--line-2);border-radius:12px;background:#fcfcfd;overflow:hidden}
.sign-canvas-wrap canvas{display:block;width:100%;height:180px;touch-action:none;cursor:crosshair}
.sign-canvas-wrap .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:14px;pointer-events:none}
.sign-actions{display:flex;gap:10px;margin-top:12px}

/* ---------- XML/ETC Tree-View ---------- */
.xt{border:1px solid var(--line);border-radius:var(--wf-card-radius);overflow:hidden}
.xt-toolbar{display:flex;gap:12px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.xt-search{flex:1;margin:0;height:40px}
.xt-tools{display:flex;gap:8px}
.xt-body{display:grid;grid-template-columns:1.4fr 1fr;height:min(72vh,680px)}
.xt-tree{overflow-y:auto;overflow-x:auto;height:100%;padding:8px 0;border-right:1px solid var(--line)}
.xt-node{}
.xt-row{display:flex;align-items:center;gap:8px;padding:5px 12px;cursor:pointer;border-radius:8px;margin:0 6px;font-size:13.5px}
.xt-row:hover{background:var(--surface-2)}
.xt-row.sel{background:var(--esg-red-soft);box-shadow:inset 0 0 0 1px var(--accent-border)}
.xt-tog{width:14px;color:var(--text-3);font-size:10px;flex:none;text-align:center}
.xt-ic{flex:none;width:16px;height:16px;line-height:0;display:inline-flex;align-items:center;justify-content:center}
.xt-ic svg{display:block}
.xt-tag{font-weight:600;color:var(--text);font-size:12px}
.xt-name{color:var(--text);font-weight:500}
.xt-id{font-size:11px;color:var(--text-3);background:var(--surface-2);border:1px solid var(--line);border-radius:5px;padding:0 6px}
.xt-count{margin-left:auto;font-size:11px;color:var(--text-3);background:var(--surface-2);border-radius:999px;padding:1px 8px}
.xt-detail{overflow-y:auto;height:100%;padding:18px 20px;background:var(--surface)}
.xt-detail-empty,.xt-empty{color:var(--text-3);font-size:14px;padding:20px 4px}
.xt-empty{border:1px dashed var(--line-2);border-radius:14px;text-align:center;padding:40px}
.xt-d-head{display:flex;align-items:center;gap:8px;margin-bottom:16px;font-size:15px}
.xt-d-head .xt-d-sub{margin-left:auto;color:var(--text-3);font-size:12px;font-weight:400}
.xt-attr{display:grid;grid-template-columns:120px 1fr;align-items:center;gap:10px;margin-bottom:10px;font-size:12.5px;color:var(--text-2);font-weight:500}
.xt-attr input{margin:0;height:38px}
@media (max-width:820px),(max-height:500px){.xt-body{grid-template-columns:1fr}.xt-tree{border-right:none;border-bottom:1px solid var(--line)}}

/* ---------- Vorschau / Ausgabe ---------- */
.pv-actions{display:flex;align-items:center;gap:14px}
.lang-switch{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2)}
.lang-switch select{width:auto;min-width:120px;margin:0}
.config-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--line);border-radius:14px;padding:16px 20px;margin-bottom:18px;background:var(--surface-2)}
.config-bar b{display:block;font-size:14px;margin-bottom:2px}
.config-bar .hint{display:block}
.config-actions{display:flex;gap:10px;flex:none}
.preview-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.preview-wrap{background:transparent;border-radius:16px}
.pdf-preview{width:100%;height:80vh;border:1px solid var(--line);border-radius:14px;background:#525659;box-shadow:var(--shadow-2);display:block}

@media (max-width:820px),(max-height:500px){
  .grid2,.grid3,.checklist-kat,.sign-grid{grid-template-columns:1fr}
  .panel{padding:var(--wf-panel-pad-m)}
  .panel h2{font-size:21px}
}

/* ---------- Phase 3: Dateiname, Verlauf, Home-Ausbau ---------- */
.brand-file{font-size:10.5px;color:var(--text-3);font-variant-numeric:tabular-nums;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:340px}
@media (max-width:760px){.brand-file{display:none}}

/* Änderungsverlauf */
.hist-box{width:min(560px,94vw);height:auto;max-height:min(70vh,640px)}
.hist-sub{padding:10px 20px 0;font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}
.hist-list{padding:12px 20px 20px;overflow-y:auto}
.hist-row{display:flex;align-items:baseline;gap:14px;padding:9px 2px;border-bottom:1px solid var(--border-subtle);font-size:13.5px}
.hist-row:last-child{border-bottom:none}
.hist-act{font-weight:600;color:var(--text-strong);flex:none;min-width:110px}
.hist-user{color:var(--text-2);flex:1}
.hist-at{color:var(--text-3);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}

/* Zuletzt bearbeitet */
.recent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.recent-chip{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;padding:13px 15px;background:var(--surface-card);
  border:1px solid var(--border-subtle);border-radius:var(--radius-lg);cursor:pointer;font-family:var(--font);box-shadow:var(--shadow-card);transition:var(--transition-colors,.15s)}
.recent-chip:hover{border-color:var(--border-strong);background:var(--surface-hover)}
.recent-chip .rc-name{font-size:13.5px;font-weight:600;color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.recent-chip .rc-sub{font-size:11.5px;color:var(--text-3);font-variant-numeric:tabular-nums}
[data-theme="dark"] .recent-chip{background:var(--surface-raised);border-color:var(--border-default)}

/* Statistiken */
.stat-rows{display:flex;flex-direction:column;gap:12px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow-card)}
[data-theme="dark"] .stat-rows{background:var(--surface-raised);border-color:var(--border-default)}
.stat-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.stat-lbl{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);min-width:110px}
.stat-pill{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 12px;border-radius:999px;background:var(--surface-secondary);color:var(--text-2);font-size:12.5px;font-weight:500}
.stat-pill b{font-size:13.5px;color:var(--text-strong);font-variant-numeric:tabular-nums}
.stat-pill.ok{background:var(--ok-soft);color:var(--ok-text)}.stat-pill.ok b{color:var(--ok-text)}
.stat-pill.warn{background:var(--warn-soft);color:var(--warn-text)}.stat-pill.warn b{color:var(--warn-text)}
.stat-pill.bad{background:var(--bad-soft);color:var(--bad-text)}.stat-pill.bad b{color:var(--bad-text)}

/* Hinweise */
.notice-list{display:flex;flex-direction:column;gap:8px}
.home-notice{display:block;width:100%;text-align:left;padding:12px 16px;background:var(--warn-soft);border:1px solid var(--warn-border);
  border-radius:12px;color:var(--warn-text);font-family:var(--font);font-size:13.5px;font-weight:500;cursor:pointer;transition:filter .15s}
.home-notice:hover{filter:brightness(.97)}

/* Aufgaben */
.task-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow-card)}
[data-theme="dark"] .task-card{background:var(--surface-raised);border-color:var(--border-default)}
.task-add{display:flex;gap:10px;margin-bottom:6px}
.task-add input{margin:0;height:40px;flex:1}
.task-add .btn{height:40px;flex:none}
.task-list{display:flex;flex-direction:column}
.task-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 2px;border-bottom:1px solid var(--border-subtle)}
.task-row:last-child{border-bottom:none}
.task-row .check-inline{margin:0;font-weight:400;font-size:14px}
.task-row.done .check-inline span{text-decoration:line-through;color:var(--text-3)}
.task-empty{padding:10px 2px;color:var(--text-3);font-size:13px}

/* ---------- Gesamt-Überarbeitung: Home-Menü, Kacheln, Dateiname, Mobile ---------- */
/* Home-Topbar links: Burger + Logo */
.home-topbar .ht-left{display:flex;align-items:center;gap:12px}

/* Home-Shell: einklappbares linkes Menü + Inhalt */
.home-shell{display:flex;align-items:flex-start}
.home-menu{width:236px;flex:none;position:sticky;top:73px;align-self:flex-start;padding:22px 10px 22px 18px;max-height:calc(100vh - 73px);overflow-y:auto}
.home-menu nav{display:flex;flex-direction:column;gap:2px}
.home-menu button{display:block;width:100%;text-align:left;border:none;background:transparent;font-family:var(--font);
  font-size:13.5px;font-weight:500;color:var(--text-2);padding:9px 12px;border-radius:10px;cursor:pointer;transition:var(--transition-colors,.14s)}
.home-menu button:hover{background:var(--surface-hover-neutral);color:var(--text-strong)}
.home-menu .hm-sep{height:1px;background:var(--border-subtle);margin:10px 4px}
.home-shell .home-wrap{flex:1;min-width:0}
/* Klapp-Chevron im Menü (Desktop) – ersetzt den Hamburger im Kopf; Logo bleibt überall gleich links */
.home-menu .hm-collapse{display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin:0 0 14px auto;
  border:1px solid var(--line-2);background:var(--surface);border-radius:13px;cursor:pointer;color:var(--text-2);box-shadow:var(--shadow-xs,0 1px 2px rgba(0,0,0,.05));
  transition:transform .22s var(--ease-standard,ease),background .14s,color .14s,box-shadow .14s,border-color .14s}
.home-menu .hm-collapse svg{width:23px;height:23px}
.home-menu .hm-collapse:hover{background:var(--surface-2);color:var(--esg-red);border-color:var(--esg-red-soft);box-shadow:var(--shadow-sm,0 2px 6px rgba(0,0,0,.08))}
.home-menu .hm-collapse:active{transform:scale(.94)}
/* Mobiler Menü-Button lebt rechts in den Fabs (nicht mehr vor dem Logo) */
.hm-drawer-btn{display:none}
.home-menu-scrim{display:none}
@media (max-width:900px),(max-height:500px){
  .home-menu{position:fixed;left:0;top:0;bottom:0;z-index:320;width:min(280px,82vw);max-height:none;background:var(--surface-card);
    border-right:1px solid var(--border-default);box-shadow:var(--shadow-xl);padding-top:24px;transform:translateX(-105%);transition:transform .22s var(--ease-standard,ease)}
  .gate.hm-open .home-menu{transform:none}
  .gate.hm-collapsed .home-menu{display:block;width:min(280px,82vw)}
  .home-menu-scrim{display:block;position:fixed;inset:0;z-index:310;background:var(--scrim)}
  .home-menu-scrim[hidden]{display:none}
  /* Mobil: Menü-Button rechts in den Fabs; Klapp-Chevron im Drawer ausblenden */
  .hm-drawer-btn{display:inline-flex}
  .home-menu .hm-collapse{display:none}
}

/* Prüfkacheln: hochwertiger, klar klickbar, dezentes ESG-Rot */
.home-start .qa-card{position:relative;overflow:hidden;padding:22px 22px;border-color:var(--border-subtle);
  background:linear-gradient(180deg,var(--surface-card) 0%,var(--surface-sunken) 140%)}
.home-start .qa-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--esg-red);opacity:.85;transition:width .15s}
.home-start .qa-card.soon::before{background:var(--border-strong)}
.home-start .qa-card:hover{border-color:var(--esg-red)}
.home-start .qa-card:hover::before{width:4px}
.home-start .qa-card .gc-ic{width:50px;height:50px;border-radius:13px;background:var(--esg-red-soft);color:var(--esg-red)}
.home-start .qa-card.soon .gc-ic{background:var(--surface-secondary);color:var(--text-3)}
.home-start .qa-card h3{font-size:16.5px}
.home-start .qa-card:hover .qa-go{color:var(--esg-red);background:var(--esg-red-soft)}
[data-theme="dark"] .home-start .qa-card{background:linear-gradient(180deg,var(--surface-raised) 0%,var(--surface-card) 140%)}
[data-theme="dark"] .home-start .qa-card .gc-ic{background:rgba(255,80,80,.14);color:var(--esg-red)}

/* Dateiname-Kasten (Stammdaten) */
.fname-card{margin-bottom:22px;border-left:3px solid var(--esg-red);background:linear-gradient(180deg,var(--surface-card),var(--surface-sunken) 240%)}
.fname-card input{font-variant-numeric:tabular-nums;font-weight:600}
.fname-card .hint{margin:2px 0 12px}
[data-theme="dark"] .fname-card{background:var(--surface-raised)}

/* Header-Aktionen: reduziert – Vorschau/PDF auf Desktop, Rest im „Mehr"-Menü */
#btnMore{display:inline-flex;font-size:20px;font-weight:700}
.hdr-hidden{display:none}
.btn.hdr-home{display:inline-flex;align-items:center;gap:7px}
.btn.hdr-home svg{width:17px;height:17px}
/* Aktueller Schritt als ruhige Unterzeile der Prüfart */
.brand-step{font-size:12px;color:var(--text-3);font-weight:500;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:44vw}
.brand-step:empty{display:none}
/* Kompakter Speicherstatus im Header */
.save-state{display:inline-flex;align-items:center;gap:6px;height:var(--pill-h);padding:0 var(--pill-pad-x);
  border-radius:var(--pill-radius);font-size:var(--pill-font);font-weight:var(--pill-weight);
  color:var(--text-2);background:var(--surface-secondary);white-space:nowrap}
.save-state .ss-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);flex:none}
.save-state.flash .ss-dot{animation:ssFlash 1.2s ease}
/* Zustände: ausstehend (gelb, pulsiert), gesichert (grün), Fehler (rot) */
.save-state.st-ok{background:var(--ok-soft);color:var(--ok-text)}
.save-state.st-ok .ss-dot{background:var(--ok)}
.save-state.st-pending{background:var(--warn-soft);color:var(--warn-text)}
.save-state.st-pending .ss-dot{background:var(--warn);animation:ssPulse 1s ease-in-out infinite}
.save-state.st-err{background:var(--bad-soft);color:var(--bad-text)}
.save-state.st-err .ss-dot{background:var(--bad)}
@keyframes ssPulse{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes ssFlash{0%{box-shadow:0 0 0 0 var(--ok-soft)}60%{box-shadow:0 0 0 5px transparent}100%{box-shadow:0 0 0 0 transparent}}
@media (max-width:820px),(max-height:500px){
  .app-header{padding:10px 14px;gap:10px}
  /* Marke schrumpfbar, Titel kürzt – verhindert Header-Überlauf */
  .app-brand{min-width:0;flex:1 1 auto}
  .brand-page{min-width:0;flex:1 1 auto}
  .brand-title{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .app-actions{gap:6px;flex:0 0 auto}
  .hdr-wide{display:none}
  /* Mobiler Prüfkopf: nur Logo (=Home) + Prüfart + Aktionsmenü. Rest raus. */
  .brand-step{display:none}
  .save-state{display:none}
  #btnOverview{display:none}
  .brand-lockup .lk-word{display:none}
  .brand-lockup .lk-div{margin:0 2px}
}

/* Schrittnummer als hochwertiger Kreis in den Panel-Überschriften (alle Prüfarten) */
.panel h2{display:flex;align-items:center;gap:14px}
.panel h2 .step-no{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  border-radius:50%;background:var(--surface-secondary);color:var(--text-3);border:1.5px solid var(--line-2);
  font-size:15px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums;
  transition:background .18s var(--ease-standard,ease),color .18s,border-color .18s}
/* Statusabhängige Färbung (spiegelt den Verlauf: aktiv=rot, fertig=grün, Fehler=rot, unvollständig=gelb, neu=grau) */
.panel h2 .step-no.st-active{background:var(--esg-red-soft,#fbe3e3);color:var(--esg-red);border-color:transparent}
.panel h2 .step-no.st-ok{background:var(--ok-soft);color:var(--ok-text);border-color:transparent}
.panel h2 .step-no.st-partial{background:var(--warn-soft);color:var(--warn-text);border-color:transparent}
.panel h2 .step-no.st-error{background:var(--bad-soft);color:var(--bad-text);border-color:transparent}
[data-theme="dark"] .panel h2 .step-no.st-active{background:rgba(194,0,0,.20)}
@media (max-width:820px),(max-height:500px){
  .panel h2{gap:11px}
  .panel h2 .step-no{width:29px;height:29px;font-size:13.5px}
}

/* Benutzerbereich unten in der Schritt-Seitenleiste (verkleinert sich im Kompakt-Modus) */
.tabs .nav-user{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);display:flex}
.tabs .nav-user .user-chip{width:100%;justify-content:flex-start}
.workspace.nav-compact .tabs .nav-user{justify-content:center}
.workspace.nav-compact .tabs .nav-user .user-chip{width:auto}
.workspace.nav-compact .tabs .nav-user .user-chip .uc-tx{display:none}
@media (max-width:900px),(max-height:500px){ .tabs .nav-user{display:none} }
/* Benutzerbereich unten im Home-Seitenmenü / mobilen Drawer (Name + Rolle immer sichtbar) */
.home-menu .hm-user{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);padding-left:12px}
.home-menu .hm-user .user-chip{width:100%;justify-content:flex-start;height:auto;padding:8px 10px}
.home-menu .hm-user .user-chip .uc-tx{display:flex}

/* Prüfschritte mobil: horizontale, scrollbare Chip-Leiste (nichts ragt heraus) */
@media (max-width:900px),(max-height:500px){
  .workspace > .tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:12px 16px 8px;gap:6px}
  .workspace > .tabs::-webkit-scrollbar{display:none}
  .workspace .tab{flex:none;white-space:nowrap}
}

/* PDF-Vorschau mobil */
@media (max-width:820px),(max-height:500px){
  .pdf-preview{height:62vh}
  .preview-toolbar{flex-wrap:wrap;gap:10px}
  .pv-actions{flex-wrap:wrap}
  .config-bar{flex-direction:column;align-items:stretch}
  .config-actions{flex:1 1 auto;flex-wrap:wrap;width:100%}
  .config-actions .btn{flex:1 1 auto;min-width:0}
}
/* Formular-Raster mobil */
@media (max-width:640px){
  .row2,.grid3{grid-template-columns:1fr}
  .home-wrap{padding:22px 16px 70px}
  .home-topbar{padding:10px 14px}
  .draft-head{display:none}
}
/* Off-Canvas-Drawer darf nie horizontales Scrollen erzeugen */
.gate{overflow-x:hidden}

/* ---------- Einheitliche Navigation: Premium-Menü + Kompakt-Modus ---------- */
/* Home-Menü: ruhig, hochwertig, klare Zustände */
.home-menu{padding:24px 12px 24px 20px}
.home-menu .hm-caption{font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3);padding:0 12px 10px}
.home-menu nav{gap:1px}
.home-menu button{display:flex;align-items:center;gap:11px;font-size:13.5px;font-weight:500;color:var(--text-2);padding:9px 12px;border-radius:10px;
  transition:background var(--dur-fast,.14s) var(--ease-standard,ease),color var(--dur-fast,.14s)}
.home-menu .hm-ic{width:19px;height:19px;flex:none;display:inline-flex;color:var(--text-3);transition:color .14s}
.home-menu .hm-ic svg{width:19px;height:19px}
.home-menu .hm-tx{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-menu button:hover{background:var(--surface-hover-neutral);color:var(--text-strong)}
.home-menu button:hover .hm-ic{color:var(--text-strong)}
.home-menu button.active{background:var(--surface-selected);color:var(--esg-red);font-weight:600}
.home-menu button.active .hm-ic{color:var(--esg-red)}
/* Einklappen (Desktop): kompakte Icon-Leiste – Chevron & Icons bleiben sichtbar (wie in der Prüfung) */
@media (min-width:901px) and (min-height:501px){
  .home-menu{transition:width .22s var(--ease-standard,ease),padding .22s var(--ease-standard,ease)}
  .gate.hm-collapsed .home-menu{width:66px;padding-left:10px;padding-right:10px}
  .gate.hm-collapsed .home-menu .hm-collapse{transform:rotate(180deg);align-self:center;margin:0 0 10px}
  .gate.hm-collapsed .home-menu .hm-caption{visibility:hidden;height:0;padding:0;margin:0;overflow:hidden}
  .gate.hm-collapsed .home-menu button{justify-content:center;padding:9px 0}
  .gate.hm-collapsed .home-menu .hm-tx{display:none}
  .gate.hm-collapsed .home-menu .hm-user{padding-left:0;justify-content:center}
  .gate.hm-collapsed .home-menu .hm-user .user-chip{width:auto;justify-content:center;padding:6px}
  .gate.hm-collapsed .home-menu .hm-user .uc-tx{display:none}
}

/* Prüfschritte: Einklapp-Knopf + Kompakt-Modus (nur Zahlen, Statusfarben bleiben) */
.workspace{grid-template-columns:auto minmax(0,1fr)}
.workspace > .tabs{width:250px;transition:width .22s var(--ease-standard,ease)}
.nav-collapse{align-self:flex-end;width:30px;height:30px;margin:0 6px 6px 0;border:1px solid var(--line-2);background:var(--surface);
  border-radius:9px;cursor:pointer;color:var(--text-3);display:inline-flex;align-items:center;justify-content:center;transition:transform .22s var(--ease-standard,ease),background .14s}
.nav-collapse svg{width:15px;height:15px}
.nav-collapse:hover{background:var(--surface-2);color:var(--text)}
.workspace.nav-compact .nav-collapse{transform:rotate(180deg);align-self:center;margin:0 0 6px}
.workspace.nav-compact > .tabs{width:66px;padding-right:10px}
.workspace.nav-compact > .tabs::before{visibility:hidden;height:0;padding:0}
.workspace.nav-compact .tab{justify-content:center;padding:9px 0}
.workspace.nav-compact .tab .tlbl{display:none}
.workspace.nav-compact .tab.active::before{left:-10px}
@media (max-width:900px),(max-height:500px){
  .workspace{grid-template-columns:1fr}
  .workspace > .tabs{width:auto}
  .nav-collapse{display:none}
  .workspace.nav-compact > .tabs{width:auto;padding:12px 16px 8px}
  .workspace.nav-compact .tab{justify-content:flex-start;padding:9px 12px}
  .workspace.nav-compact .tab .tlbl{display:inline}
}

/* Maschinen-Messwerte (feste Messfelder) */
.mm-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;max-width:680px;margin-top:6px}
.mm-field{display:flex;flex-direction:column;gap:7px;font-size:13.5px;font-weight:600;color:var(--text-2)}
.mm-field .mm-unit{color:var(--text-3);font-weight:400}
@media (max-width:640px){.mm-grid{grid-template-columns:1fr}}

/* ===================== Messgeräte-Bereich (Geräteanbindung) ===================== */
/* Einheitliches Seitenraster: gleiche Breite, gleiche Ränder auf allen Inhaltsseiten
   (Startseite/Detailseiten, Vorlagen, Kunden, Wissenskompendium). */
.gd-wrap,.vt-wrap,.wk-wrap{max-width:var(--page-max);margin:0 auto;padding:26px 24px 60px;font-family:var(--font)}
.gd-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}
/* Kundenbereich-Tabs (Kunden/Standorte/Aufträge/Protokolle/Übersicht, §5) – eigener
   Abstand zum darunterliegenden Tab-Inhalt, sonst identisch zu .set-seg. */
.kv-tabs{margin-bottom:18px}
.gd-eyebrow{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--esg-red)}
.gd-title{margin:4px 0 6px;font-size:30px;font-weight:800;color:var(--text-strong);letter-spacing:-.01em}
.gd-sub{margin:0;max-width:640px;color:var(--text-2);font-size:14px;line-height:1.5}
.gd-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:28px}
.gd-kpi{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:16px 14px;box-shadow:var(--shadow-card)}
.gd-kpi-v{font-size:26px;font-weight:800;color:var(--text-strong);line-height:1}
.gd-kpi-l{margin-top:6px;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3)}
.gd-sec-title{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);margin:26px 0 12px}
.gd-adapters{display:flex;flex-direction:column;gap:12px}
.gd-adapter{display:flex;align-items:center;gap:16px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow-card)}
.gd-ad-ic{flex:none;width:46px;height:46px;border-radius:12px;background:var(--esg-red-soft);color:var(--esg-red);display:flex;align-items:center;justify-content:center}
.gd-ad-ic svg{width:24px;height:24px}
.gd-ad-tx{flex:1;min-width:0}
.gd-ad-tx b{display:block;font-size:15px;color:var(--text-strong)}
.gd-ad-tx>span{display:block;font-size:12.5px;color:var(--text-2);margin-top:2px}
.gd-caps{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.gd-cap{font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:3px 8px;border-radius:6px;background:var(--surface-secondary);color:var(--text-2)}
.gd-cap-file{background:transparent;border:1px dashed var(--border-strong);color:var(--text-3)}
.gd-ad-status{flex:none;display:flex;align-items:center;gap:8px}
/* Fester Radius statt 999px: bei einzeiligem Text weiterhin volle Pillenform (Radius ≥ halbe
   Höhe wird vom Browser automatisch auf 50% gekappt), bricht der Text mehrzeilig um (z. B.
   „● PROFITEST MXTRA verbunden" auf schmalen Displays), bleibt es eine ruhige, gleichmäßig
   gerundete Statuskarte statt einer gedehnten Stadion-Form. */
.gd-chip{font-size:11.5px;font-weight:700;padding:5px 10px;border-radius:13px;white-space:normal}
.gd-chip-on{background:var(--ok-soft);color:var(--ok-text)}
.gd-chip-off{background:var(--surface-secondary);color:var(--text-3)}
.gd-chip-wait{background:var(--surface-secondary);color:var(--text-3)}
.gd-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.gd-act{display:flex;align-items:center;gap:14px;text-align:left;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:18px 20px;cursor:pointer;box-shadow:var(--shadow-card);font-family:var(--font);transition:border-color .15s,transform .14s}
.gd-act:hover{border-color:var(--border-strong);transform:translateY(-2px);box-shadow:var(--shadow-md)}
.gd-act-ic{flex:none;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center}
.gd-act-ic svg{width:22px;height:22px}
.gd-act-ic.gd-in{background:var(--esg-red-soft);color:var(--esg-red)}
.gd-act-ic.gd-out{background:rgba(37,99,235,.12);color:#2563eb}
.gd-act-tx b{display:block;font-size:15px;color:var(--text-strong)}
.gd-act-tx span{display:block;font-size:12.5px;color:var(--text-2);margin-top:2px}
.gd-log{display:flex;flex-direction:column;gap:8px}
.gd-log-row{display:flex;gap:12px;align-items:flex-start;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:12px 14px}
.gd-log-dir{flex:none;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center}
.gd-log-dir svg{width:16px;height:16px}
.gd-log-dir.gd-in{background:var(--esg-red-soft);color:var(--esg-red)}
.gd-log-dir.gd-out{background:rgba(37,99,235,.12);color:#2563eb}
.gd-log-t{font-size:13.5px;color:var(--text-strong);display:flex;align-items:center;gap:8px}
.gd-log-m{font-size:12px;color:var(--text-2);margin-top:2px}
.gd-log-w{font-size:11px;color:var(--text-3);margin-top:3px;font-variant-numeric:tabular-nums}
.gd-empty{padding:18px;text-align:center;color:var(--text-3);font-size:13px;background:var(--surface-sunken);border-radius:var(--radius-md)}

/* Wizard-Modal */
.gd-modal-ov{position:fixed;inset:0;background:rgba(15,15,20,.55);display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;z-index:9000;overflow:auto}
.gd-modal{width:100%;max-width:720px;background:var(--surface-card);border-radius:16px;box-shadow:0 24px 60px rgba(0,0,0,.3);overflow:hidden}
.wz-head{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 0}
.wz-head h2{margin:0;font-size:20px;font-weight:800;color:var(--text-strong)}
.wz-x{border:none;background:var(--surface-secondary);color:var(--text-2);width:32px;height:32px;border-radius:9px;font-size:15px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.wz-x svg{width:17px;height:17px}
.wz-x:hover{background:var(--surface-hover);color:var(--text-strong)}
.wz-steps{display:flex;gap:8px;padding:16px 24px 0}
.wz-step{flex:1;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--text-3);padding-bottom:12px;border-bottom:2px solid var(--border-subtle)}
.wz-step.on{color:var(--text-strong);border-bottom-color:var(--esg-red)}
.wz-step.done{color:var(--text-2);border-bottom-color:var(--esg-red)}
.wz-num{flex:none;width:20px;height:20px;border-radius:50%;background:var(--surface-secondary);color:var(--text-3);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.wz-step.on .wz-num,.wz-step.done .wz-num{background:var(--esg-red);color:#fff}
.wz-body{padding:20px 24px 24px}
.wz-lead{margin:0 0 16px;color:var(--text-2);font-size:13.5px;line-height:1.5}
.wz-drop{border:2px dashed var(--border-strong);border-radius:14px;padding:30px 20px;text-align:center;color:var(--text-2);cursor:pointer;transition:border-color .15s,background .15s}
.wz-drop.over{border-color:var(--esg-red);background:var(--esg-red-soft)}
.wz-drop-ic{width:40px;height:40px;margin:0 auto 10px;color:var(--esg-red)}
.wz-drop-ic svg{width:100%;height:100%}
.wz-drop-hint{font-size:11.5px;color:var(--text-3);margin-top:8px}
.wz-fileok{margin-top:16px;background:var(--surface-sunken);border-radius:12px;padding:16px 18px}
.wz-fok-t{font-weight:700;color:var(--ok-text);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.wz-fok-ad{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-3);background:var(--surface-card);padding:2px 8px;border-radius:6px}
.wz-kv{display:flex;justify-content:space-between;gap:16px;font-size:12.5px;padding:5px 0;border-top:1px solid var(--border-subtle)}
.wz-kv:first-of-type{border-top:none}
.wz-kv span{color:var(--text-3)}
.wz-kv b{color:var(--text-strong);text-align:right}
.wz-warn{margin-top:10px;background:rgba(178,80,0,.1);color:var(--warn,#b25000);border-radius:8px;padding:8px 12px;font-size:12.5px}
.wz-err{margin-top:12px;background:var(--esg-red-soft);color:var(--esg-red);border-radius:8px;padding:10px 14px;font-size:13px;font-weight:600}
.wz-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:22px;padding-top:16px;border-top:1px solid var(--border-subtle)}
.wz-done{text-align:center;padding:10px 0 6px}
.wz-done-ic{width:54px;height:54px;margin:0 auto 12px;border-radius:50%;background:var(--ok-soft);color:var(--ok-text);display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800}
.wz-done h3{margin:0 0 6px;font-size:18px;color:var(--text-strong)}
.wz-count{font-size:11.5px;color:var(--text-3)}

/* Import-Vorschau */
.imp-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.imp-stat{background:var(--surface-sunken);border-radius:10px;padding:12px 14px;text-align:center}
.imp-stat b{display:block;font-size:22px;font-weight:800;line-height:1;color:var(--text-strong)}
.imp-stat span{font-size:11px;color:var(--text-3);margin-top:5px;display:block}
.imp-stat.imp-new b{color:var(--ok-text)}
.imp-stat.imp-dup b{color:var(--text-2)}
.imp-stat.imp-conf b{color:var(--warn,#b25000)}
.imp-stat.imp-err b{color:var(--esg-red)}
.imp-filter{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;font-size:12.5px;color:var(--text-2)}
.imp-filter label{display:flex;align-items:center;gap:7px;cursor:pointer}
.imp-search{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.imp-search-inp{position:relative;flex:1;min-width:0}
.imp-search-ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-3);pointer-events:none;display:inline-flex}
.imp-search-ic svg{width:16px;height:16px}
.imp-search-inp input{width:100%;box-sizing:border-box;padding:8px 10px 8px 34px;border:1px solid var(--border-subtle);border-radius:9px;background:var(--surface-sunken);color:var(--text-strong);font-family:var(--font);font-size:13px}
.imp-search-inp input:focus{outline:none;border-color:var(--esg-red)}
.imp-search select{flex:none;box-sizing:border-box;padding:8px 10px;border:1px solid var(--border-subtle);border-radius:9px;background:var(--surface-sunken);color:var(--text-strong);font-family:var(--font);font-size:13px;max-width:42%}
.imp-list{max-height:320px;overflow:auto;border:1px solid var(--border-subtle);border-radius:10px}
.imp-row{display:grid;grid-template-columns:22px 92px 1fr auto;gap:10px;align-items:center;padding:7px 12px;border-bottom:1px solid var(--border-subtle);font-size:12.5px;cursor:pointer}
.imp-row:hover{background:var(--surface-hover)}
.imp-row:last-child{border-bottom:none}
.imp-ic{width:20px;height:20px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:var(--surface-secondary);color:var(--text-3)}
.imp-row.l-create .imp-ic{background:var(--ok-soft);color:var(--ok-text)}
.imp-row.l-conf .imp-ic,.imp-row.l-err .imp-ic{background:var(--esg-red-soft);color:var(--esg-red)}
.imp-type{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-3)}
.imp-name{color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.imp-note{color:var(--text-3);font-size:11.5px;white-space:nowrap}
/* Baum-Gruppierung (§11/§13): reine Kontext-Beschriftung für einen Pfad-Zweig, dessen eigener
   Eintrag herausgefiltert wurde, aber ein tieferer Treffer noch sichtbar ist – nicht klickbar. */
.imp-group{padding:5px 12px;font-size:11px;font-weight:600;color:var(--text-3);border-bottom:1px solid var(--border-subtle);background:var(--surface-secondary)}
.imp-detail{padding:8px 12px 10px 12px;font-size:12px;color:var(--text-2);background:var(--surface-secondary);border-bottom:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:3px}
.imp-detail div b{color:var(--text-3);font-weight:600;margin-right:4px}

/* Export */
.exp-list{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.exp-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border-subtle);border-radius:10px;cursor:pointer}
.exp-item b{color:var(--text-strong);font-size:14px}
.exp-meta{display:block;font-size:12px;color:var(--text-3);margin-top:2px}
.exp-prev{margin-top:14px}
.exp-prev summary{cursor:pointer;font-size:12.5px;color:var(--text-2);font-weight:600}
.exp-prev pre{margin-top:10px;max-height:240px;overflow:auto;background:var(--surface-sunken);border-radius:8px;padding:12px;font-size:11px;line-height:1.45;white-space:pre-wrap;word-break:break-word;color:var(--text-2)}

@media (max-width:720px){
  .gd-kpis{grid-template-columns:repeat(2,1fr)}
  .gd-actions{grid-template-columns:1fr}
  .gd-adapter{flex-wrap:wrap}
  .imp-stats{grid-template-columns:repeat(2,1fr)}
  .imp-row{grid-template-columns:22px 1fr;gap:6px}
  .imp-type,.imp-note{display:none}
  .imp-search{flex-direction:column;align-items:stretch}
  .imp-search select{max-width:100%}
}

/* ===================== Stammdaten-Verwaltung ===================== */
.gd-kpis-btn{width:100%;border:none;background:none;padding:0;cursor:pointer;text-align:left;font-family:var(--font)}
.gd-kpis-btn:hover .gd-kpi{border-color:var(--border-strong)}
.st-toolbar{display:flex;align-items:center;gap:8px;margin:6px 0 14px}
.st-tool-sp{flex:1}
.st-split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:16px;align-items:start}
.st-tree{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:8px;max-height:64vh;overflow:auto;box-shadow:var(--shadow-card)}
.st-node{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:13px}
.st-node:hover{background:var(--surface-hover)}
.st-node.sel{background:var(--esg-red-soft)}
.st-caret{flex:none;width:18px;height:18px;border:none;background:none;color:var(--text-3);cursor:pointer;font-size:11px;padding:0}
.st-caret.empty{cursor:default}
.st-typ{flex:none;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 6px;border-radius:5px;background:var(--surface-secondary);color:var(--text-3)}
.st-typ-kunde{background:rgba(37,99,235,.14);color:#2563eb}
.st-typ-objekt{background:rgba(124,58,237,.14);color:#7c3aed}
.st-typ-verteiler{background:var(--esg-red-soft);color:var(--esg-red)}
.st-typ-stromkreis{background:rgba(178,80,0,.14);color:var(--warn,#b25000)}
.st-typ-messpunkt{background:var(--ok-soft);color:var(--ok-text)}
.st-name{flex:1;min-width:0;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-badge{flex:none;font-size:11px;color:var(--text-3)}
.st-detail{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-card);min-height:200px}
.st-detail-empty{color:var(--text-3);font-size:13px;text-align:center;padding:40px 10px}
.st-crumbs{font-size:11.5px;color:var(--text-3);margin-bottom:12px}
.st-cr{color:var(--border-strong);margin:0 2px}
.st-d-head{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.st-typ.big{font-size:11px;padding:4px 9px}
.st-ext{font-size:11px;color:var(--text-3);font-family:ui-monospace,monospace}
.st-fld{display:flex;flex-direction:column;gap:5px;margin-bottom:12px;font-size:12px;font-weight:600;color:var(--text-2)}
.st-fld input{font-size:13.5px;font-weight:400;padding:9px 11px;border:1px solid var(--border-subtle);border-radius:8px;background:var(--surface-sunken);color:var(--text-strong);font-family:var(--font)}
.st-fld input:focus{outline:none;border-color:var(--esg-red)}
.st-d-actions{display:flex;gap:8px;margin:6px 0 8px;flex-wrap:wrap}
.btn.danger{color:var(--esg-red)}
.btn.danger:hover{background:var(--esg-red-soft)}
.st-sec{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);margin:20px 0 10px;padding-top:14px;border-top:1px solid var(--border-subtle)}
.st-meas{border:1px solid var(--border-subtle);border-radius:10px;overflow:hidden}
.st-meas-h,.st-meas-r{display:grid;grid-template-columns:1fr 1fr 1fr auto 26px;gap:8px;align-items:center;padding:7px 10px;font-size:12px}
.st-meas-h{background:var(--surface-sunken);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-3)}
.st-meas-r{border-top:1px solid var(--border-subtle)}
.st-meas-r span:first-child{color:var(--text-2);font-weight:600}
.st-meas-r .st-mx.icon-btn{border:none;background:none;color:var(--text-3);width:26px;height:26px}
.st-meas-r .st-mx.icon-btn svg{width:15px;height:15px}
.st-meas-r .st-mx.icon-btn:hover{color:var(--esg-red);background:var(--esg-red-soft)}
.exp-item.exp-objekt{margin-left:24px;border-style:dashed}
@media (max-width:820px),(max-height:500px){
  .st-split{grid-template-columns:1fr}
  .st-tree{max-height:42vh}
  .st-meas-h,.st-meas-r{grid-template-columns:1fr 1fr auto 22px}
  .st-meas-h span:nth-child(3),.st-meas-r span:nth-child(3){display:none}
}

/* ===================== Geräte-Verbindung, Toast, Editor-Ausbau ===================== */
.gd-conn{flex:none;display:flex;flex-direction:column;gap:6px;min-width:230px}
.gd-conn-row{display:flex;align-items:center;justify-content:flex-end;gap:8px}
.gd-conn-lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-3);margin-right:auto}
.gd-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);background:var(--text-strong);color:var(--surface-card);padding:12px 18px;border-radius:10px;font-size:13px;max-width:520px;box-shadow:0 12px 34px rgba(0,0,0,.3);opacity:0;transition:opacity .25s,transform .25s;z-index:9500}
.gd-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
/* Typ-Badges (zusätzliche Ebenen) */
.st-typ-standort{background:rgba(13,148,136,.16);color:#0d9488}
.st-typ-betriebsmittel{background:rgba(202,138,4,.16);color:#a16207}
.st-typ-rcd{background:rgba(5,150,105,.14);color:#059669}
/* Editor */
.st-hint{font-size:12px;color:var(--text-3);margin:2px 0 12px}
.st-node[draggable]{cursor:grab}
.st-node.dragging{opacity:.5}
.st-node.drop-ok{outline:2px solid var(--ok-text);outline-offset:-2px;background:var(--ok-soft)}
.st-node.drop-no{outline:2px dashed var(--esg-red);outline-offset:-2px}
.st-d-actions2{margin-top:0;border-top:1px dashed var(--border-subtle);padding-top:12px}
.st-val{margin:0 0 14px;border-radius:10px;padding:12px 14px;font-size:13px}
.st-val.ok{background:var(--ok-soft);color:var(--ok-text);display:flex;align-items:center;gap:9px}
.st-val.ok .st-val-ic{display:inline-flex;align-items:center;justify-content:center;flex:none}
.st-val-ic svg{width:16px;height:16px}
.st-val-row .st-val-ic{display:inline-flex;align-items:center;justify-content:center}
.st-val-row .st-val-ic svg{width:15px;height:15px}
.st-val.warn{background:rgba(178,80,0,.1);color:var(--warn,#b25000)}
.st-val.bad{background:var(--esg-red-soft);color:var(--esg-red)}
.st-val-list{margin-top:10px;display:flex;flex-direction:column;gap:4px;max-height:200px;overflow:auto}
.st-val-row{display:grid;grid-template-columns:20px 1fr auto;gap:8px;align-items:center;font-size:12px;cursor:pointer;padding:4px 6px;border-radius:6px;color:var(--text-2)}
.st-val-row:hover{background:var(--surface-hover)}
.st-val-ic{font-weight:700;text-align:center}
.st-val-row.error .st-val-ic{color:var(--esg-red)}
.st-val-row.warn .st-val-ic{color:var(--warn,#b25000)}
.st-val-path{color:var(--text-3);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}
@media (max-width:820px),(max-height:500px){
  /* Bug (16.07.2026), gefunden bei 768px (Tablet-Hochformat): .gd-conn wechselt hier auf
     width:100%, aber .gd-adapter selbst wurde erst ab max-width:720px umbruchfähig (flex-wrap:
     wrap) – zwischen 721–820px blieb die Zeile also NOWRAP, während .gd-conn schon volle Breite
     verlangte. .gd-ad-tx (Gerätename + Beschreibung) wurde dadurch auf wenige Pixel zusammen-
     gequetscht und brach zeichenweise um. Beide Regeln müssen an derselben Schwelle umschalten. */
  .gd-adapter{flex-wrap:wrap}
  .gd-conn{min-width:0;width:100%}
  .gd-conn-row{justify-content:space-between}
}

/* ===================== Struktur-Editor (ESGStruct) ===================== */
.se-root{display:flex;flex-direction:column;gap:12px;font-family:var(--font)}
.se-root.se-full{position:fixed;inset:0;z-index:8000;background:var(--surface-sunken);padding:16px 22px;overflow:auto;gap:10px}
.se-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.se-head-act{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.se-mtabs{display:none}
/* Vollbild bringt im Smartphone-Hochformat kaum Mehrwert – Schaltfläche dort ausblenden,
   im Querformat (auch bei schmaler Breite) weiterhin anbieten. */
@media (max-width:820px) and (orientation:portrait){
  #seFull{display:none}
}
/* ===================================================================
   ProCheck-Bedienleiste (.pc-bar) – EINE Einheit für Suche + Filter + Aktionen.
   Eine Karte um die gesamte Leiste; darin sitzen alle Bedienelemente
   (Suchfeld, Auswahlfeld, Button) ohne eigenen Rahmen-um-Rahmen und mit
   exakt gleicher Höhe (34px) und Rundung (12px).
   Gilt einheitlich für alle Tabellen: Struktur-Editor, Vorlagen, Kunden,
   Wissenskompendium, Startseite. `.se-*` bleibt als Alias bestehen.
   =================================================================== */
.pc-bar,.se-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:12px;padding:8px 10px;box-shadow:var(--shadow-card)}
.pc-sp,.se-tb-sp{flex:1}
.pc-count{font-size:12.5px;color:var(--text-3);white-space:nowrap;padding:0 4px}
/* Auswahlfeld in der Leiste: nur Layout am Wrapper – die Optik macht .esgs-btn */
.pc-sel{flex:0 0 auto;min-width:150px;max-width:230px}
.pc-bar .esgs-btn,.se-toolbar .esgs-btn{height:34px;min-height:34px;border-radius:12px;padding:0 8px 0 12px;font-size:13px;background:var(--surface-sunken)}
.pc-bar .esgs-btn:hover,.se-toolbar .esgs-btn:hover{background:var(--surface-card)}
.pc-bar .esgs-chev,.se-toolbar .esgs-chev{width:15px;height:15px}
/* Suchfeld – exakt dieselbe Höhe/Rundung wie die Buttons daneben (.btn.sm = 34px) */
.pc-search,.se-search{position:relative;flex:1 1 240px;min-width:200px;max-width:360px;display:flex;align-items:center;height:34px}
.pc-search input,.se-search input{width:100%;height:34px;box-sizing:border-box;margin:0;padding:0 34px 0 34px;
  border:1px solid var(--border-subtle);border-radius:12px;background:var(--surface-sunken);
  color:var(--text-strong);font-family:var(--font);font-size:13px;line-height:normal;
  transition:border-color .12s ease,box-shadow .12s ease,background .12s ease}
.pc-search input::placeholder,.se-search input::placeholder{color:var(--text-3)}
.pc-search input:hover,.se-search input:hover{border-color:var(--border-strong,#c9c9cf)}
.pc-search input:focus,.se-search input:focus{outline:none;border-color:var(--esg-red);background:var(--surface-card);box-shadow:0 0 0 3px var(--esg-red-soft)}
.pc-search .se-search-ic,.se-search-ic{position:absolute;left:0;top:0;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-3);pointer-events:none}
.pc-search .se-search-ic svg,.se-search-ic svg{width:15px;height:15px;stroke:currentColor;fill:none}
/* Ohne transform zentrieren: .icon-btn:active{transform:scale(.94)} würde ein
   translateY(-50%) überschreiben – das ✕ sprang beim Klicken nach unten. */
.pc-search .se-qx,.se-search .se-qx{position:absolute;right:3px;top:0;bottom:0;margin:auto 0;width:28px;height:28px;min-width:0;
  border:none;background:none;color:var(--text-3);cursor:pointer;border-radius:9px;
  display:inline-flex;align-items:center;justify-content:center;padding:0}
.pc-search .se-qx svg,.se-search .se-qx svg{width:14px;height:14px;stroke:currentColor;fill:none}
.pc-search .se-qx:hover,.se-search .se-qx:hover{background:var(--surface-hover);color:var(--esg-red)}
.pc-search .se-qx:focus-visible,.se-search .se-qx:focus-visible{outline:none;box-shadow:0 0 0 2px var(--esg-red-soft)}
.se-menuwrap{position:relative}
.se-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:40;min-width:240px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:10px;box-shadow:var(--shadow-md);padding:6px}
.se-split{display:grid;grid-template-columns:minmax(240px,1.2fr) 6px minmax(260px,1fr);align-items:stretch;gap:0}
/* Editorhöhe: --se-h (Standard ~doppelt so hoch wie früher), per Ziehgriff stufenlos & gespeichert */
.se-root{--se-h:920px}
.se-tree{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:12px 0 0 12px;padding:8px;overflow:auto;height:var(--se-h);min-height:280px;box-shadow:var(--shadow-card)}
.se-root.se-full .se-tree,.se-root.se-full .se-detail{height:calc(100vh - 210px)}
.se-tree:focus{outline:none;box-shadow:0 0 0 2px var(--esg-red-soft) inset}
.se-divider{cursor:col-resize;background:var(--border-subtle);border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle)}
.se-divider:hover{background:var(--esg-red)}
.se-detail{background:var(--surface-card);border:1px solid var(--border-subtle);border-left:none;border-radius:0 12px 12px 0;padding:18px;overflow:auto;height:var(--se-h);min-height:280px;box-shadow:var(--shadow-card)}
/* Horizontaler Ziehgriff für die Gesamthöhe (analog zur Spaltenbreite) */
.se-hdiv{display:flex;align-items:center;justify-content:center;height:14px;margin:4px 0 0;cursor:row-resize;border-radius:7px;background:transparent}
.se-hdiv:hover,.se-hdiv:focus-visible{background:var(--esg-red-soft);outline:none}
.se-hdiv span{display:block;width:64px;height:4px;border-radius:2px;background:var(--border-strong,#c9c9cf)}
.se-hdiv:hover span,.se-hdiv:focus-visible span{background:var(--esg-red)}
body.se-resizing{user-select:none}
/* Technische Felder – Raster */
.se-attrgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin:2px 0 12px}
/* Durchsuchbares Kombinationsfeld (Katalogwert wählen ODER eigenen Wert eintippen) */
.se-cb{position:relative;display:block}
.se-cb input{width:100%;padding-right:30px}
.se-cb-arrow{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--text-3);cursor:pointer;border-radius:6px}
.se-cb-arrow:hover{color:var(--esg-red);background:var(--esg-red-soft)}
.se-cb-arrow svg{width:15px;height:15px;stroke:currentColor;fill:none}
.se-cb-list{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 3px);max-height:230px;overflow:auto;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:10px;box-shadow:var(--shadow-md);padding:4px;display:block}
.se-cb-list[hidden]{display:none}
.se-cb-i{display:block;padding:6px 9px;border-radius:7px;font-size:13.5px;color:var(--text-strong);cursor:pointer}
.se-cb-i:hover,.se-cb-i.cur{background:var(--esg-red-soft);color:var(--esg-red)}
.se-cb-i.on{font-weight:650}
.se-cb-none{display:block;padding:7px 9px;font-size:12.5px;color:var(--text-3);line-height:1.4}
.se-cb-own{font-style:normal;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--esg-red);background:var(--esg-red-soft);border-radius:4px;padding:1px 5px;margin-left:5px}
/* ================= Eigene Auswahlfelder (ersetzen native <select>) ================= */
.esgs{position:relative;display:inline-block;vertical-align:middle}
/* select.js übernimmt die Klassen des <select> auf den Wrapper (für Breite/Layout).
   Damit würden Rahmen/Hintergrund der alten Select-Optik einen ZWEITEN Kasten um das
   eigene Auswahlfeld ziehen. Hier wird jede geerbte Dekoration neutralisiert –
   Layout (Breite, Flex) bleibt erhalten. Doppelte Klasse = höhere Spezifität. */
.esgs.esgs{background:none;border:0;padding:0;box-shadow:none;border-radius:0;height:auto;min-height:0}
.esgs-native{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important;padding:0!important;margin:0!important;border:0!important;clip:rect(0 0 0 0)!important;overflow:hidden!important}
.esgs-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:38px;
  padding:0 10px 0 12px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:10px;
  font:inherit;font-size:14px;color:var(--text-strong);cursor:pointer;text-align:left;transition:border-color .12s,box-shadow .12s}
.esgs-btn:hover{border-color:var(--border-strong,#c9c9cf)}
.esgs-btn:focus-visible,.esgs-btn.open{outline:none;border-color:var(--esg-red);box-shadow:0 0 0 3px var(--esg-red-soft)}
.esgs-btn:disabled{opacity:.55;cursor:not-allowed}
.esgs-lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.esgs-lbl.ph{color:var(--text-3)}
.esgs-chev{flex:none;width:16px;height:16px;color:var(--text-3);transition:transform .15s}
.esgs-btn.open .esgs-chev{transform:rotate(180deg);color:var(--esg-red)}
/* Popup */
.esgs-pop{position:fixed;z-index:10050;background:var(--surface-card);border:1px solid var(--border-subtle);
  border-radius:12px;box-shadow:var(--shadow-lg,0 12px 34px rgba(0,0,0,.18));padding:5px;min-width:190px;
  max-height:320px;display:flex;flex-direction:column;animation:esgsIn .12s ease-out}
@keyframes esgsIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.esgs-pop{animation:none}}
.esgs-search{padding:3px 3px 5px}
.esgs-search input{width:100%;height:34px;padding:0 10px;border:1px solid var(--border-subtle);border-radius:8px;
  font:inherit;font-size:13.5px;background:var(--surface-secondary);color:var(--text-strong)}
.esgs-search input:focus{outline:none;border-color:var(--esg-red);background:var(--surface-card)}
.esgs-list{overflow:auto;min-height:0}
.esgs-grp{padding:7px 10px 3px;font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3)}
.esgs-opt{padding:8px 10px;border-radius:8px;font-size:14px;color:var(--text-strong);cursor:pointer;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.esgs-opt:hover,.esgs-opt.cur{background:var(--surface-hover)}
.esgs-opt.sel{background:var(--esg-red-soft);color:var(--esg-red);font-weight:600}
.esgs-opt.dis{opacity:.45;cursor:not-allowed}
.esgs-empty{padding:12px 10px;font-size:13px;color:var(--text-3);text-align:center}
/* Mobil: als Bottom-Sheet – gut mit dem Daumen bedienbar */
@media (max-width:560px){
  .esgs-pop.sheet{left:0!important;right:0;top:auto!important;bottom:0;width:auto!important;max-height:70vh;
    border-radius:16px 16px 0 0;padding:8px 8px calc(8px + env(safe-area-inset-bottom));
    box-shadow:0 -10px 40px rgba(0,0,0,.25);animation:esgsUp .16s ease-out}
  .esgs-pop.sheet .esgs-opt{padding:12px 12px;font-size:15px}
  .esgs-pop.sheet .esgs-search input{height:40px}
}
@keyframes esgsUp{from{transform:translateY(100%)}to{transform:none}}

/* ---------- Eigenes Datumsfeld (datepicker.js) ---------- */
.esgdp{display:block;position:relative;width:100%;margin-top:7px}
.esgdp-native{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important;padding:0!important;margin:0!important;border:0!important;clip:rect(0 0 0 0)!important;overflow:hidden!important}
/* Schaltfläche in Optik/Höhe wie ein normales Eingabefeld */
.esgdp-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:var(--ctrl-h);margin:0;
  padding:0 14px;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius);
  font:inherit;font-size:15px;color:var(--text);cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s}
.esgdp-btn:hover{border-color:var(--border-strong)}
.esgdp-btn:focus-visible,.esgdp-btn.open{outline:none;border-color:var(--esg-red);box-shadow:var(--ring-focus)}
.esgdp-btn:disabled{opacity:.55;cursor:not-allowed}
.esgdp-lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.esgdp-lbl.ph{color:var(--text-3)}
.esgdp-ic{flex:none;width:17px;height:17px;color:var(--text-3)}
.esgdp-btn.open .esgdp-ic{color:var(--esg-red)}
/* Kalender-Popup */
.esgdp-pop{position:fixed;z-index:10050;width:280px;box-sizing:border-box;background:var(--surface-card);border:1px solid var(--border-subtle);
  border-radius:14px;box-shadow:var(--shadow-lg,0 12px 34px rgba(0,0,0,.18));padding:10px;animation:esgsIn .12s ease-out}
.esgdp-head{display:flex;align-items:center;gap:4px;margin-bottom:6px}
.esgdp-nav{flex:none;width:32px;height:32px;display:flex;align-items:center;justify-content:center;padding:0;background:none;border:0;border-radius:9px;color:var(--text-2);cursor:pointer}
.esgdp-nav:hover{background:var(--surface-hover);color:var(--text-strong)}
.esgdp-nav svg{width:18px;height:18px}
.esgdp-title{flex:1;height:32px;padding:0 8px;background:none;border:0;border-radius:9px;font:inherit;font-size:14px;font-weight:700;color:var(--text-strong);cursor:pointer}
.esgdp-title:hover:not(:disabled){background:var(--surface-hover)}
.esgdp-title:disabled{cursor:default}
.esgdp-wd{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:2px}
.esgdp-wd span{text-align:center;font-size:11px;font-weight:700;color:var(--text-3);padding:4px 0}
.esgdp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.esgdp-day{height:34px;padding:0;display:flex;align-items:center;justify-content:center;background:none;border:1px solid transparent;border-radius:9px;font:inherit;font-size:13.5px;color:var(--text-strong);cursor:pointer}
.esgdp-day:hover:not(:disabled){background:var(--surface-hover)}
.esgdp-day.oth{color:var(--text-3)}
.esgdp-day.today{border-color:var(--border-strong,#c9c9cf)}
.esgdp-day.cur{background:var(--surface-hover)}
.esgdp-day.sel,.esgdp-day.sel:hover{background:var(--esg-red);border-color:var(--esg-red);color:#fff;font-weight:700}
.esgdp-day:disabled{opacity:.35;cursor:not-allowed}
.esgdp-mgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:2px 0}
.esgdp-cell{height:44px;padding:0;display:flex;align-items:center;justify-content:center;background:none;border:1px solid transparent;border-radius:10px;font:inherit;font-size:13.5px;color:var(--text-strong);cursor:pointer}
.esgdp-cell:hover:not(:disabled){background:var(--surface-hover)}
.esgdp-cell.cur{background:var(--esg-red-soft);color:var(--esg-red);font-weight:700}
.esgdp-cell:disabled{opacity:.35;cursor:not-allowed}
.esgdp-foot{display:flex;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border-subtle)}
.esgdp-act{flex:1;height:34px;background:var(--surface-secondary);border:1px solid var(--border-subtle);border-radius:9px;font:inherit;font-size:13px;font-weight:600;color:var(--text-strong);cursor:pointer}
.esgdp-act:hover{background:var(--surface-hover)}
.esgdp-act.clr{color:var(--esg-red)}
@media (max-width:560px){
  .esgdp-pop.sheet{left:0!important;right:0;top:auto!important;bottom:0;width:auto!important;
    border-radius:16px 16px 0 0;padding:12px 12px calc(12px + env(safe-area-inset-bottom));
    box-shadow:0 -10px 40px rgba(0,0,0,.25);animation:esgsUp .16s ease-out}
  .esgdp-pop.sheet .esgdp-day{height:40px;font-size:15px}
}
/* Struktur- und Feldkataloge (Einstellungen)
   Bug (16.-17.07.2026): eine bloße 1fr-Spur erlaubt dem Grid, über den Container hinauszuwachsen,
   wenn ein Kind es „braucht" – hier zog die Werkzeugleiste (.fk-edit-h: Titel+Zähler+Suchfeld+
   Filter+zwei lange Buttonlabel wie „Mit Messgerät synchronisieren" unwrapped in einer Zeile) die
   Spur über die 1180px-Seitenbreite hinaus, sichtbar nur auf Desktop/iPad-Querformat (auf schmalen
   Mobilbreiten griff bereits vorher ein Fix, s. Media-Query unten). minmax(0,1fr) + flex-wrap auf
   .fk-edit-h beheben das auf JEDER Breite, nicht nur unterhalb eines Breakpoints. */
.fk-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:16px;align-items:start}
.fk-mtabs{display:none}   /* nur mobil sichtbar (Segmentsteuerung Kategorien/Werte), s. Media-Query unten */
.fk-list{display:flex;flex-direction:column;gap:12px;max-height:560px;overflow:auto}
.fk-grp-h{font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);margin:0 0 5px}
.fk-cat{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:9px;padding:7px 10px;font:inherit;font-size:13px;color:var(--text-2);cursor:pointer}
.fk-cat:hover{background:var(--surface-hover);border-color:var(--border-subtle)}
.fk-cat.on{background:var(--esg-red-soft);border-color:var(--esg-red);color:var(--esg-red);font-weight:600}
.fk-cat b{font-size:11px;font-weight:700;color:var(--text-3);font-variant-numeric:tabular-nums}
.fk-cat.on b{color:var(--esg-red)}
.fk-edit{min-width:0;border:1px solid var(--border-subtle);border-radius:12px;padding:14px 16px;background:var(--surface-card)}
.fk-edit-h{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px}
.fk-edit-h .fk-search,.fk-edit-h .fk-filter{min-width:0}
.fk-cnt{font-size:12px;color:var(--text-3)}
.fk-add{display:flex;gap:8px;margin-bottom:10px}
.fk-rows{display:flex;flex-direction:column;gap:5px;max-height:460px;overflow:auto}
.fk-row{display:grid;grid-template-columns:1fr auto auto auto auto auto;gap:6px;align-items:center;padding:3px 4px;border-radius:8px}
.fk-row:hover{background:var(--surface-hover)}
.fk-row.off{opacity:.5}
.fk-row.off .fk-val{text-decoration:line-through}
.fk-actions{display:contents}
.fk-val{height:32px;padding:0 9px;border:1px solid transparent;border-radius:7px;font:inherit;font-size:13.5px;background:transparent;color:var(--text-strong)}
.fk-val:hover,.fk-val:focus{border-color:var(--border-subtle);background:var(--surface-card);outline:none}
.fk-badge{font-size:9.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3);background:var(--surface-secondary);border-radius:4px;padding:1px 5px}
.fk-badges{display:inline-flex;gap:3px;align-items:center}
.fk-badge.mxtra{color:#fff;background:var(--accent,#c20000)}
.fk-badge.user{color:var(--warn-text,#a60);background:var(--warn-soft,rgba(200,120,0,.12))}
.fk-badge.dev{color:var(--text-3);background:transparent;border:1px solid var(--line);font-weight:600}
.fk-search{font:inherit;font-size:12px;padding:4px 8px;border:1px solid var(--line);border-radius:7px;background:var(--card,var(--bg));color:var(--text-1);width:120px}
.fk-filter{font:inherit;font-size:12px;padding:4px 6px;border:1px solid var(--line);border-radius:7px;background:var(--card,var(--bg));color:var(--text-1)}
/* Katalog-Synchronisationsvorschau */
.fk-sync-list{max-height:44vh;overflow:auto;margin:8px 0}
.fk-sync-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-bottom:1px solid var(--line);cursor:pointer}
.fk-sync-row input{flex:0 0 auto}
.fk-sync-lbl{flex:1}
.fk-sync-dev{font-size:11px;color:var(--text-3)}
.fk-sync-stat{font-size:12px;color:var(--text-2);white-space:nowrap}
.fk-sync-stat .add{color:var(--ok-text,#2a9d5c)}
.fk-sync-stat .dup{color:var(--warn-text,#a60)}
.fk-sync-added{display:flex;flex-wrap:wrap;gap:4px;padding:0 6px 8px 30px}
.fk-sync-added span{font-size:11px;padding:1px 6px;border-radius:5px;background:var(--accent-subtle,rgba(194,0,0,.08));color:var(--accent,#c20000)}
.fk-sync-unmapped{margin:8px 0;font-size:12.5px}
.fk-sync-unmapped summary{cursor:pointer;color:var(--text-2)}
.fk-sync-unmapped-list{margin-top:6px;max-height:20vh;overflow:auto;font-size:11.5px;color:var(--text-3)}
.fk-sync-unmapped-list>div{padding:2px 0}
/* Drei-Wege-Herkunft: Hersteller-Standard */
.fk-badge.hersteller{color:var(--text-2);background:var(--surface-secondary);border:1px solid var(--line)}
.fk-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
/* Bereinigungs-Vorschau */
.fk-clean-list{max-height:46vh;overflow:auto;margin:8px 0;border:1px solid var(--line);border-radius:9px}
.fk-clean-row{padding:8px 10px;border-bottom:1px solid var(--line)}
.fk-clean-row:last-child{border-bottom:0}
.fk-clean-row.hot{background:var(--warn-soft,rgba(200,120,0,.06))}
.fk-clean-lbl{display:inline-block;min-width:220px}
.fk-clean-stat{font-size:12px;color:var(--text-2)}
.fk-clean-stat .rm{color:var(--esg-red,#c20000);font-weight:600}
.fk-clean-stat .reclass{color:var(--warn-text,#a60)}
.fk-clean-removed{margin-top:4px;font-size:11.5px;color:var(--text-3);line-height:1.5}
/* Gerätekatalog-Übersicht (105) */
.fk-ov-list{max-height:60vh;overflow:auto;margin:8px 0}
.fk-ov-sec{border:1px solid var(--line);border-radius:9px;margin-bottom:8px;overflow:hidden}
.fk-ov-sec>summary{cursor:pointer;padding:9px 12px;font-weight:600;background:var(--surface-secondary);list-style:none}
.fk-ov-sec>summary::-webkit-details-marker{display:none}
.fk-ov-sec>summary.warn{color:var(--warn-text,#a60)}
.fk-ov-sec>summary.ok{color:var(--ok-text,#2a9d5c)}
.fk-ov-grp{padding:2px 0}
.fk-ov-grp-h{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);padding:6px 12px 2px}
.fk-ov-row{display:grid;grid-template-columns:44px minmax(180px,1.4fr) auto;gap:8px;align-items:baseline;padding:5px 12px;border-top:1px solid var(--line);font-size:12.5px}
.fk-ov-row.warn{background:var(--warn-soft,rgba(200,120,0,.06))}
.fk-ov-no{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:11px}
.fk-ov-nm{min-width:0}
.fk-ov-bind{color:var(--accent,#c20000);font-size:11px;font-weight:600}
.fk-ov-fn{color:var(--text-3);font-size:11px}
.fk-ov-ct{color:var(--text-2);font-size:11.5px;white-space:nowrap}
.fk-ov-sample{grid-column:2 / -1;color:var(--text-3);font-size:11px;line-height:1.4}
.fk-ov-none{padding:10px 12px;color:var(--text-3);font-size:12.5px}
@media (max-width:820px),(max-height:500px){
  /* Ab 17.07.2026: Mobil zeigt – wie der Struktur-Editor (.se-mtabs/.se-split.mtab-*) – immer nur
     EINE Spalte auf einmal (Kategorieliste ODER Werte-Editor), umgeschaltet über eine Segment-
     steuerung (.fk-mtabs, wiederverwendet .se-mtabs-Optik). Vorher wurden beide Spalten gestapelt
     dargestellt (Liste als horizontale Chip-Reihe + Editor darunter) – uneinheitlich zum einzigen
     anderen Dreispalten-Muster der App. min-width:0 auf der Grid-Spur bleibt zusätzlich nötig,
     s. o. bei .fk-layout (dort jetzt unbedingt, nicht mehr nur hier). */
  .fk-layout{grid-template-columns:minmax(0,1fr);gap:10px}
  .fk-mtabs{display:flex;gap:4px;background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:12px;padding:4px;margin-bottom:10px}
  .fk-mtabs button{flex:1 1 0;display:flex;align-items:center;justify-content:center;gap:6px;border:none;background:transparent;padding:9px 8px;border-radius:9px;font-size:13.5px;font-weight:600;color:var(--text-3);cursor:pointer;min-height:40px}
  .fk-mtabs button.on{background:var(--surface-card);color:var(--text-strong);box-shadow:var(--shadow-card)}
  .fk-layout.mtab-list .fk-edit,.fk-layout.mtab-edit .fk-list{display:none}
  .fk-list{max-height:min(66vh,640px)}
  .fk-search{flex:1 1 140px}
  .fk-filter{flex:1 1 140px}
  .fk-ov-row{grid-template-columns:36px 1fr}
  .fk-ov-ct{grid-column:2}
  /* Katalogwerte als Karten statt als enges 6-Spalten-Raster (Wert + 4 winzige Icon-Buttons
     nebeneinander passte auf keinem iPhone) – Wert/Herkunft oben, Aktionen darunter in einer
     gleich breiten Reihe. */
  .fk-rows{gap:10px}
  .fk-row{grid-template-columns:1fr;gap:8px;padding:12px 14px;border:1px solid var(--border-subtle);border-radius:12px;background:var(--surface-card)}
  .fk-row:hover{background:var(--surface-card)}
  .fk-val{width:100%;box-sizing:border-box;height:44px;border:1px solid var(--border-subtle);background:var(--surface-sunken);padding:0 12px}
  .fk-badges{flex-wrap:wrap}
  .fk-actions{display:flex;gap:6px}
  .fk-actions .icon-btn{flex:1;width:auto;height:40px}
  .fk-actions .icon-btn svg{width:18px;height:18px}
}
/* ===== Prüfsequenzen im Struktur-Editor (getrennt von der elektrischen Struktur) ===== */
.icon-btn.xs{width:22px;height:22px;padding:0}.icon-btn.xs svg{width:13px;height:13px}
.se-seq{margin-top:14px;border:1px solid var(--line);border-radius:11px;padding:10px;background:var(--surface-secondary)}
.se-seq-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.se-seq-h>b{font-size:13.5px}
.se-seq-note{font-size:11px;color:var(--text-3)}
.se-seq-compat{margin-left:auto;font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px}
.se-seq-compat.on{color:var(--ok-text,#2a9d5c);background:var(--ok-soft,rgba(42,157,92,.12))}
.se-seq-compat.off{color:var(--text-3);background:var(--card,var(--bg))}
.se-seqc{background:var(--card,var(--bg));border:1px solid var(--line);border-radius:9px;padding:8px 10px;margin-bottom:8px}
.se-seqc-h{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.se-seq-name{flex:0 1 auto;font:inherit;font-weight:600;font-size:13px;border:1px solid transparent;border-radius:6px;padding:3px 6px;background:transparent;color:var(--text-1);min-width:140px}
.se-seq-name:hover,.se-seq-name:focus{border-color:var(--line);background:var(--bg)}
.se-seq-meta{font-size:11px;color:var(--text-3)}
.se-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.se-step{display:flex;gap:8px;align-items:flex-start;padding:6px 8px;border-radius:8px;font-size:12.5px}
.se-step.hint{background:var(--warn-soft,rgba(200,120,0,.07))}
.se-step.meas{background:var(--accent-subtle,rgba(194,0,0,.05))}
.se-step-mv{display:flex;flex-direction:column;gap:1px;flex:none}
.se-step-badge{flex:none;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 6px;border-radius:5px;color:#fff;background:var(--text-3)}
.se-step-badge.bes{background:#3a7bd5}.se-step-badge.hint{background:#c78a1a}.se-step-badge.meas{background:var(--accent,#c20000)}
.se-step-tx{padding-top:2px}
.se-step-body{flex:1;min-width:0}
.se-step-title{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.se-step-sub{font-size:11px;color:var(--text-3)}
.se-p-list,.se-r-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}
.se-p,.se-r{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:2px 7px}
.se-p-cat{color:var(--text-3);font-size:10.5px}
.se-p-val,.se-r-val{font-weight:600}
.se-p-edit{font:inherit;font-size:11.5px;padding:1px 4px;border:1px solid var(--line);border-radius:5px;background:var(--card,var(--bg));color:var(--text-1)}
.se-r-lim{color:var(--text-3)}.se-r-ok{color:var(--ok-text,#2a9d5c);font-weight:700}
.se-raw{margin-top:4px;font-size:10.5px}
.se-raw summary{cursor:pointer;color:var(--text-3)}
.se-raw-kv{display:inline-block;margin:2px 6px 0 0;color:var(--text-3);background:var(--surface-secondary);border-radius:4px;padding:1px 5px}
.se-seq-tmplbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11.5px;color:var(--text-3);margin-top:4px}
/* Erweiterte Detailansicht */
.se-ex{margin-top:12px;border-top:1px dashed var(--line);padding-top:8px}
.se-ex>summary{cursor:pointer;font-size:12.5px;font-weight:600;color:var(--text-2)}
.se-ex-body{margin-top:8px;display:flex;flex-direction:column;gap:10px}
.se-ex-grp{border:1px solid var(--line);border-radius:9px;overflow:hidden}
.se-ex-h{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);padding:6px 10px;background:var(--surface-secondary)}
.se-ex-row{display:flex;gap:8px;align-items:baseline;padding:5px 10px;border-top:1px solid var(--line);font-size:12.5px}
.se-ex-k{flex:0 0 130px;color:var(--text-3)}
.se-ex-v{flex:1;min-width:0;word-break:break-word}
.se-ex-org{font-size:10px;font-weight:700;text-transform:uppercase;padding:1px 5px;border-radius:4px;color:var(--text-2);background:var(--surface-secondary)}
.se-ex-org.mxtra{color:#fff;background:var(--accent,#c20000)}.se-ex-org.user{color:var(--warn-text,#a60);background:var(--warn-soft,rgba(200,120,0,.12))}
.se-ex-ok{color:var(--ok-text,#2a9d5c)}.se-ex-bad{color:var(--warn-text,#a60);font-weight:600}
/* ===== MXTRA-Direkttransfer: Modus-Badge, Vorschau, Verlauf, Sicherungen ===== */
.gd-opbadge{margin-left:auto;font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding:3px 10px;border-radius:20px;color:#fff}
.gd-opbadge.read{background:#2f7bbf}.gd-opbadge.write{background:var(--accent,#c20000)}.gd-opbadge.compare{background:#7a5cc2}.gd-opbadge.restore{background:#c78a1a}
.gd-prog-step.failed .gd-prog-dot{background:var(--esg-red,#c20000);box-shadow:0 0 0 3px rgba(194,0,0,.18)}
.gd-prog-step.failed .gd-prog-lbl{color:var(--esg-red,#c20000)}
/* Exportvorschau */
.gd-xp-kpis{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.gd-xp-warn{background:var(--warn-soft,rgba(200,120,0,.12));color:var(--warn-text,#a60);border-radius:8px;padding:8px 10px;font-size:12.5px;margin:6px 0}
.gd-xp-ok{background:var(--ok-soft,rgba(42,157,92,.1));color:var(--ok-text,#2a9d5c);border-radius:8px;padding:8px 10px;font-size:12.5px;margin:6px 0}
.gd-xp-chg{font-size:12.5px;margin:6px 0}
.gd-xp-add{color:var(--ok-text,#2a9d5c);margin-top:3px}.gd-xp-rm{color:var(--esg-red,#c20000);margin-top:3px}
.gd-xp-tree{margin-top:8px;font-size:12px}
.gd-xp-tree summary{cursor:pointer;color:var(--text-2)}
.gd-xp-treebody{max-height:34vh;overflow:auto;margin-top:6px;border:1px solid var(--line);border-radius:8px;padding:6px}
.gd-xp-node{padding:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gd-xp-typ{font-size:10px;text-transform:uppercase;color:var(--text-3);margin-right:5px}
/* Direktimport-Info */
.di-info{background:var(--surface-secondary);border-radius:9px;padding:9px 11px;font-size:12.5px;line-height:1.7;margin:6px 0}
.di-ok{color:var(--ok-text,#2a9d5c);font-weight:600}.di-warn{color:var(--warn-text,#a60);font-weight:600}
/* Verlauf + Sicherungen */
.gd-th{display:flex;flex-direction:column;gap:4px}
.gd-th-empty{color:var(--text-3);font-size:12.5px;padding:8px 2px}
.gd-th-row{display:grid;grid-template-columns:auto auto 1fr;gap:8px;align-items:baseline;padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-size:12px}
.gd-th-row.ok{border-left:3px solid var(--ok-text,#2a9d5c)}.gd-th-row.bad{border-left:3px solid var(--esg-red,#c20000)}.gd-th-row.warn{border-left:3px solid var(--warn-text,#a60)}.gd-th-row.muted{border-left:3px solid var(--line)}
.gd-th-op{font-weight:700}
.gd-th-res{font-size:10.5px;font-weight:700;text-transform:uppercase;padding:1px 6px;border-radius:5px}
.gd-th-res.ok{color:var(--ok-text,#2a9d5c);background:var(--ok-soft,rgba(42,157,92,.12))}.gd-th-res.bad{color:#fff;background:var(--esg-red,#c20000)}.gd-th-res.warn{color:var(--warn-text,#a60);background:var(--warn-soft,rgba(200,120,0,.12))}.gd-th-res.muted{color:var(--text-3);background:var(--surface-secondary)}
.gd-th-meta{color:var(--text-2)}
.gd-th-detail{grid-column:1 / -1;color:var(--text-3);font-size:11px}
.gd-th-backups{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}
.gd-th-bk-h{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);margin-bottom:5px}
.gd-th-bk{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12.5px;flex-wrap:wrap}
.gd-th-bk-nm{font-weight:600}.gd-th-bk-sz{color:var(--text-3);font-size:11px}
.gd-th-bk .btn.xs,.gd-th-bk .btn.xs{margin-left:auto}
.gd-th-bk [data-bkdel]{margin-left:0}
.btn.xs{font-size:11px;padding:3px 8px}
.gd-op-active{outline:2px solid var(--accent,#c20000);outline-offset:2px;border-radius:12px}
.gd-busy{opacity:.55;pointer-events:none}
/* Fortschritts-Heartbeat + „nicht schließen"-Warnung + Ausnahme-Dialog */
.gd-prog-live{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line);font-size:12.5px}
.gd-prog-comm{font-weight:700;color:var(--accent,#c20000)}
.gd-prog-elapsed{color:var(--text-3);font-variant-numeric:tabular-nums}
.gd-prog-nowarn{margin-top:10px;background:var(--warn-soft,rgba(200,120,0,.12));color:var(--warn-text,#a60);border-radius:9px;padding:9px 11px;font-size:12.5px;line-height:1.5}
.gd-prog-write .gd-modal{outline:2px solid var(--accent,#c20000);outline-offset:0}
.gd-recover-msg{font-size:13.5px;line-height:1.6;background:var(--warn-soft,rgba(200,120,0,.1));border-radius:10px;padding:12px 14px}
.gd-recover-bk{margin:12px 0;font-size:13px;line-height:1.8;border:1px solid var(--line);border-radius:9px;padding:10px 12px}
.gd-recover-status{min-height:22px;margin:8px 0;font-size:12.5px}
.gd-rec-wait{color:var(--text-2)}.gd-rec-ok{color:var(--ok-text,#2a9d5c);font-weight:600}.gd-rec-bad{color:var(--esg-red,#c20000);font-weight:600}
/* Klartext-Hinweis über den Direkt-Aktionen (warum gesperrt + was zu tun ist) */
.gd-dirhint{border-radius:9px;padding:9px 12px;font-size:12.5px;line-height:1.6;margin-bottom:10px}
.gd-dirhint.nodev{background:var(--surface-secondary);color:var(--text-2);border:1px solid var(--line)}
.gd-dirhint.busy{background:var(--accent-subtle,rgba(194,0,0,.08));color:var(--accent,#c20000);border:1px solid var(--accent,#c20000)}
.gd-op:disabled{opacity:.5;cursor:not-allowed}
.gd-op.gd-nodev{filter:grayscale(.6)}
.gd-th-backups>summary{cursor:pointer;list-style:none}
.gd-th-backups>summary::-webkit-details-marker{display:none}
/* Größenbewertung (Ampel) in der Exportvorschau */
.gd-xp-ampel{border-radius:10px;padding:10px 12px;margin:8px 0;border:1px solid var(--line)}
.gd-xp-ampel.gruen{background:var(--ok-soft,rgba(42,157,92,.1));border-color:var(--ok-text,#2a9d5c)}
.gd-xp-ampel.gelb{background:var(--warn-soft,rgba(200,120,0,.12));border-color:var(--warn-text,#a60)}
.gd-xp-ampel.rot{background:var(--accent-subtle,rgba(194,0,0,.1));border-color:var(--esg-red,#c20000)}
.gd-xp-ampel-h{font-weight:800;font-size:13px}
.gd-xp-ampel.gruen .gd-xp-ampel-h{color:var(--ok-text,#2a9d5c)}
.gd-xp-ampel.gelb .gd-xp-ampel-h{color:var(--warn-text,#a60)}
.gd-xp-ampel.rot .gd-xp-ampel-h{color:var(--esg-red,#c20000)}
.gd-xp-ampel-tx{font-size:12.5px;line-height:1.55;margin-top:3px}
.gd-xp-ampel-m{font-size:11.5px;color:var(--text-2);margin-top:6px;line-height:1.5}
.gd-xp-ack{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.5;background:var(--warn-soft,rgba(200,120,0,.08));border:1px solid var(--warn-text,#a60);border-radius:9px;padding:9px 11px;margin:6px 0;cursor:pointer}
.gd-xp-ack input{margin-top:2px;flex:none}
.gd-xp-nostop{font-size:12px;line-height:1.5;color:var(--warn-text,#a60);background:var(--warn-soft,rgba(200,120,0,.08));border-radius:8px;padding:8px 10px;margin:8px 0}
/* Fortschritt nach Zeilen/Bytes */
.gd-prog-bar{height:6px;border-radius:4px;background:var(--surface-secondary);overflow:hidden;margin-top:8px}
.gd-prog-bar>i{display:block;height:100%;background:var(--accent,#c20000);width:0;transition:width .2s}
.gd-prog-num{font-size:11.5px;color:var(--text-2);margin-top:4px;font-variant-numeric:tabular-nums}
.se-node{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:7px;cursor:pointer;font-size:13px;user-select:none}
.se-node:hover{background:var(--surface-hover)}
.se-node.sel{background:var(--esg-red-soft)}
.se-node.drop-ok{outline:2px solid var(--ok-text);outline-offset:-2px;background:var(--ok-soft)}
.se-node.drop-no{outline:2px dashed var(--esg-red);outline-offset:-2px}
/* Auf-/Zuklappen: größerer, moderner Chevron mit weicher Drehung */
.se-caret{flex:none;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;
  border:none;border-radius:7px;background:none;color:var(--text-3);cursor:pointer;padding:0;
  transition:background .12s ease,color .12s ease}
.se-caret svg{width:15px;height:15px;stroke:currentColor;fill:none;transition:transform .16s cubic-bezier(.4,0,.2,1)}
.se-caret.open svg{transform:rotate(90deg)}
.se-caret:hover{background:var(--surface-hover);color:var(--esg-red)}
.se-caret:focus-visible{outline:none;background:var(--esg-red-soft);color:var(--esg-red);box-shadow:0 0 0 2px var(--esg-red-soft)}
.se-caret.empty{cursor:default;pointer-events:none;visibility:hidden}
@media (prefers-reduced-motion:reduce){.se-caret svg{transition:none}}
.se-name{flex:1;min-width:0;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.se-name mark{background:var(--esg-red-soft);color:var(--esg-red);border-radius:3px;padding:0 1px}
.se-id{flex:none;font-size:10.5px;color:var(--text-3);font-family:ui-monospace,monospace;background:var(--surface-secondary);padding:1px 6px;border-radius:5px}
.se-id.dup{background:var(--esg-red-soft);color:var(--esg-red)}
.se-badge{flex:none;font-size:10.5px;color:var(--text-3);background:var(--surface-secondary);padding:1px 6px;border-radius:5px}
.se-node-meta{padding:0 8px 4px 34px;font-size:11px;color:var(--text-3);user-select:none}
.se-empty{padding:24px;text-align:center;color:var(--text-3);font-size:13px}
.se-statusbar{display:flex;justify-content:space-between;gap:12px;font-size:11.5px;color:var(--text-3);padding:0 4px}
.se-selinfo{color:var(--esg-red);font-weight:700}
.se-dupwarn{color:var(--esg-red);font-size:11px;font-weight:700;margin-top:4px}
.se-sec{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);margin:16px 0 8px}
.se-rowflds{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.se-rowflds .st-fld{margin-bottom:8px}
/* Kontextmenü */
.se-ctx{position:fixed;z-index:9600;min-width:200px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:10px;box-shadow:0 14px 40px rgba(0,0,0,.28);padding:6px}
.se-ctx-i,.se-fav-ins{display:block;width:100%;text-align:left;border:none;background:none;padding:8px 12px;border-radius:7px;font-size:13px;color:var(--text-strong);cursor:pointer;font-family:var(--font)}
.se-ctx-i{display:flex;align-items:center;gap:9px}
.se-ctx-ic{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;flex:none;color:var(--text-3)}
.se-ctx-ic svg{width:17px;height:17px}
.se-ctx-i:hover:not(:disabled),.se-fav-ins:hover{background:var(--surface-hover)}
.se-ctx-i:disabled{color:var(--text-3);cursor:default}
.se-ctx-i:disabled .se-ctx-ic{opacity:.5}
.se-ctx-i.danger{color:var(--esg-red)}
.se-ctx-i.danger .se-ctx-ic{color:var(--esg-red)}
.se-ctx-sep{height:1px;background:var(--border-subtle);margin:5px 0}
.se-ctx-backdrop{display:none}
/* Mobil: Kontextmenü als Bottom-Sheet – gleiches Muster/Timing wie .esgs-pop.sheet */
@media (max-width:820px),(max-height:500px){
  .se-ctx-backdrop{display:block;position:fixed;inset:0;z-index:9590;background:rgba(0,0,0,.32)}
  .se-ctx{left:0!important;right:0;top:auto!important;bottom:0;width:auto!important;min-width:0;max-height:70vh;overflow-y:auto;
    border-radius:16px 16px 0 0;padding:8px 8px calc(8px + env(safe-area-inset-bottom));
    box-shadow:0 -10px 40px rgba(0,0,0,.25);animation:esgsUp .16s ease-out}
  .se-ctx::before{content:"";display:block;width:36px;height:4px;background:var(--border-subtle);border-radius:2px;margin:2px auto 8px}
  .se-ctx-i{padding:12px 12px;font-size:14.5px;min-height:44px}
}
@media (prefers-reduced-motion:reduce){.se-ctx{animation:none}}

/* ---- Touchfreundliche Alternative zu Drag-and-drop: "Verschieben nach …" ---- */
.se-mv-backdrop{position:fixed;inset:0;z-index:9700;background:rgba(0,0,0,.32)}
.se-mv{position:fixed;z-index:9701;left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,92vw);max-height:74vh;display:flex;flex-direction:column;
  background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.32);padding:14px;gap:10px;animation:rise .16s ease-out}
.se-mv-grip{display:none}
.se-mv-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.se-mv-head h3{font-size:16px;font-weight:700;color:var(--text-strong)}
.se-mv-search{display:flex;align-items:center;gap:8px;background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:10px;padding:0 10px;height:38px;flex:none}
.se-mv-search input{border:none;background:none;flex:1;height:100%;font-size:14px;color:var(--text-strong)}
.se-mv-search input:focus{outline:none}
.se-mv-list{overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:2px}
.se-mv-i{display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:none;background:none;padding:9px 10px;border-radius:9px;font-size:13.5px;color:var(--text-strong);cursor:pointer;font-family:var(--font)}
.se-mv-i:hover{background:var(--surface-hover)}
.se-mv-i svg{width:17px;height:17px;flex:none;color:var(--text-3)}
@media (max-width:820px),(max-height:500px){
  .se-mv{left:0;right:0;top:auto;bottom:0;transform:none;width:auto;max-width:100%;max-height:78vh;border-radius:18px 18px 0 0;
    padding:8px 10px calc(10px + env(safe-area-inset-bottom));animation:esgsUp .16s ease-out}
  .se-mv-grip{display:block;width:36px;height:4px;background:var(--border-subtle);border-radius:2px;margin:2px auto 4px}
  .se-mv-i{padding:12px 10px;font-size:14.5px;min-height:44px}
  .se-mv-search input{font-size:15px}
}
@media (prefers-reduced-motion:reduce){.se-mv{animation:none}}
.se-fav-row{display:flex;align-items:center;gap:4px}
.se-fav-ins span{color:var(--text-3);font-size:11px}
.se-fav-row .se-fav-del.icon-btn{flex:none;border:none;background:none;color:var(--text-3);width:28px;height:28px}
.se-fav-row .se-fav-del.icon-btn svg{width:15px;height:15px}
.se-fav-row .se-fav-del.icon-btn:hover{color:var(--esg-red);background:var(--esg-red-soft)}
/* Massenanlage-Vorschau */
.se-bulk{max-width:600px}
.se-preview{border:1px solid var(--border-subtle);border-radius:10px;overflow:hidden;background:var(--surface-sunken)}
.se-prev-row{display:flex;justify-content:space-between;gap:10px;padding:6px 12px;border-bottom:1px solid var(--border-subtle);font-size:12.5px}
.se-prev-row:last-child{border-bottom:none}
.se-prev-name{color:var(--text-strong);font-weight:600}
.se-prev-id{color:var(--text-3);font-family:ui-monospace,monospace}
.se-prev-more{padding:7px 12px;font-size:11.5px;color:var(--text-3);background:var(--surface-secondary)}
@media (max-width:820px),(max-height:500px){
  /* Tablet/Smartphone: „Struktur" und „Details" werden über die Segmentsteuerung
     (.se-mtabs) einzeln angezeigt statt untereinander gequetscht – siehe .se-split.mtab-*. */
  .se-mtabs{display:flex;gap:4px;background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:12px;padding:4px}
  .se-mtabs button{flex:1 1 0;display:flex;align-items:center;justify-content:center;gap:6px;border:none;background:transparent;padding:9px 8px;border-radius:9px;font-size:13.5px;font-weight:600;color:var(--text-3);cursor:pointer;min-height:40px}
  .se-mtabs button .esg-ic{width:16px;height:16px}
  .se-mtabs button.on{background:var(--surface-card);color:var(--text-strong);box-shadow:var(--shadow-card)}
  .se-split{grid-template-columns:1fr!important;gap:10px}
  .se-divider{display:none}
  .se-detail{border-left:1px solid var(--border-subtle);border-radius:12px}
  .se-tree{border-radius:12px}
  .se-tree,.se-detail{height:auto;max-height:min(58vh,540px);min-height:220px}
  .se-root.se-full .se-tree,.se-root.se-full .se-detail{height:100%;max-height:none}
  /* Nur der aktive Reiter ist sichtbar und bekommt die volle verfügbare Höhe. */
  .se-split.mtab-tree .se-detail,.se-split.mtab-detail .se-tree{display:none}
  .se-split.mtab-tree .se-tree,.se-split.mtab-detail .se-detail{max-height:min(66vh,640px)}
  .se-root.se-full .se-split.mtab-tree .se-tree,.se-root.se-full .se-split.mtab-detail .se-detail{height:100%;max-height:none}
  .se-hdiv{display:none}
  .se-rowflds{grid-template-columns:1fr 1fr}
  .se-attrgrid{grid-template-columns:1fr}

  /* Vollbild auf Mobil (v. a. Querformat, da im Hochformat ohnehin ausgeblendet/deaktiviert):
     Kopf/Bedienleiste auf ein Minimum reduzieren, Baum/Details bekommen die maximale Resthöhe.
     Der Vollbild-Umschalter dient hier zugleich als schwebender Schließen-Button rechts oben. */
  .se-root.se-full{display:flex;flex-direction:column;gap:6px;
    padding:calc(8px + env(safe-area-inset-top,0px)) calc(8px + env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) calc(8px + env(safe-area-inset-left,0px))}
  .se-root.se-full .se-head{flex:none;padding-right:46px}
  .se-root.se-full .gd-eyebrow{display:none}
  .se-root.se-full .gd-title{font-size:16.5px}
  .se-root.se-full #seBack{display:none}
  .se-root.se-full #seFull{position:absolute;top:calc(8px + env(safe-area-inset-top,0px));right:calc(8px + env(safe-area-inset-right,0px));
    z-index:8010;width:38px;height:38px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;
    background:var(--surface-card);box-shadow:var(--shadow-card);border:1px solid var(--border-subtle)}
  .se-root.se-full #seFull .se-full-lbl{display:none}
  .se-root.se-full .se-toolbar{flex:none;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .se-root.se-full .se-toolbar>*{flex:none}
  .se-root.se-full .se-mtabs{flex:none}
  .se-root.se-full .se-split{flex:1;min-height:0}
  .se-root.se-full .se-statusbar{flex:none}
}

/* ---- Export-Assistent: Layout-Fix + neue Schritte ---- */
.exp-item{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--border-subtle);border-radius:12px;cursor:pointer}
.exp-item.on{border-color:var(--esg-red);background:var(--esg-red-soft)}
.exp-item.exp-dis{opacity:.55;cursor:default}
.exp-item input[type=radio]{flex:none;width:18px;height:18px;margin:0}
.exp-item .exp-tx{flex:1;min-width:0}
.exp-item .exp-tx b{display:block;color:var(--text-strong);font-size:14px}
.exp-badge{flex:none;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:3px 8px;border-radius:6px}
.exp-badge.on{background:var(--ok-soft);color:var(--ok-text)}
.exp-badge.off{background:var(--surface-secondary);color:var(--text-3)}
.expt-tree{max-height:300px;overflow:auto;border:1px solid var(--border-subtle);border-radius:10px}
.expt-row{display:flex;align-items:center;gap:9px;padding:6px 10px;border-bottom:1px solid var(--border-subtle);cursor:pointer;font-size:13px}
.expt-row:last-child{border-bottom:none}
.expt-row.on{background:var(--esg-red-soft)}
.expt-row input{flex:none}
.expt-name{flex:1;min-width:0;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.expt-meta{flex:none;font-size:11px;color:var(--text-3)}
.exp-okline{margin:8px 0;color:var(--ok-text);font-size:12.5px;font-weight:600}
.exp-pv{max-height:220px;overflow:auto;border:1px solid var(--border-subtle);border-radius:10px;padding:8px;background:var(--surface-sunken);font-size:12px}
.exp-pv-row{padding:2px 0;color:var(--text-2);white-space:nowrap}
.exp-pv-id{color:var(--text-3);font-family:ui-monospace,monospace;font-size:10.5px}

/* ---- Ebenen-Icons im Struktur-Editor ---- */
.se-ic{flex:none;width:24px;height:24px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-secondary);color:var(--text-2)}
.se-ic svg{width:15px;height:15px}
.se-ic.big{width:32px;height:32px}.se-ic.big svg{width:19px;height:19px}
.se-ic-kunde{background:rgba(37,99,235,.13);color:#2563eb}
.se-ic-standort{background:rgba(13,148,136,.14);color:#0d9488}
.se-ic-objekt{background:rgba(124,58,237,.14);color:#7c3aed}
.se-ic-maschine{background:rgba(219,39,119,.13);color:#db2777}
.se-ic-verteiler{background:var(--esg-red-soft);color:var(--esg-red)}
.se-ic-rcd{background:rgba(5,150,105,.14);color:#059669}
.se-ic-stromkreis{background:rgba(178,80,0,.14);color:var(--warn,#b25000)}
.se-ic-betriebsmittel{background:rgba(161,98,7,.15);color:#a16207}
.se-ic-messpunkt{background:var(--ok-soft);color:var(--ok-text)}
.st-d-head{display:flex;align-items:center;gap:10px}
.st-d-type{font-size:15px;color:var(--text-strong)}

/* ---- Struktur-Auswahl beim Prüfungsstart ---- */
.sc-modal{max-width:600px}
.sc-list{display:flex;flex-direction:column;gap:10px}
.sc-opt{display:flex;align-items:center;gap:14px;text-align:left;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:12px;padding:15px 16px;cursor:pointer;font-family:var(--font);transition:border-color .15s,transform .14s,box-shadow .15s}
.sc-opt:hover:not(.sc-dis){border-color:var(--esg-red);transform:translateY(-1px);box-shadow:var(--shadow-md)}
.sc-opt.sc-dis{opacity:.5;cursor:default}
.sc-ic{flex:none;width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:var(--surface-secondary);color:var(--text-2)}
.sc-ic svg{width:22px;height:22px}
.sc-ic-etc{background:var(--esg-red-soft);color:var(--esg-red)}
.sc-ic-struct{background:rgba(124,58,237,.14);color:#7c3aed}
.sc-ic-last{background:rgba(37,99,235,.13);color:#2563eb}
.sc-ic-blank{background:var(--surface-secondary);color:var(--text-3)}
.sc-tx{flex:1;min-width:0}
.sc-tx b{display:block;font-size:14.5px;color:var(--text-strong)}
.sc-tx span{display:block;font-size:12.5px;color:var(--text-2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-go{flex:none;color:var(--text-3);font-size:22px}

/* ===================== Menü: mehr Luft + Tooltips ===================== */
.home-menu nav{gap:3px}
.home-menu .hm-caption{margin-top:22px}
.home-menu nav > .hm-caption:first-child{margin-top:0}
.home-menu button{padding:10px 12px}
.home-menu .hm-sep{margin:16px 4px}
.hm-tip{position:fixed;z-index:9800;max-width:240px;background:var(--text-strong);color:var(--surface-card);font-size:12px;line-height:1.4;padding:8px 11px;border-radius:9px;box-shadow:0 10px 30px rgba(0,0,0,.28);pointer-events:none;opacity:0;transform:translateY(3px);transition:opacity .12s,transform .12s}
.hm-tip.show{opacity:1;transform:translateY(0)}
.hm-tip::before{content:"";position:absolute;left:-5px;top:14px;border:5px solid transparent;border-right-color:var(--text-strong)}
[data-theme="dark"] .hm-tip{background:var(--surface-raised);color:var(--text-strong);border:1px solid var(--border-subtle)}
[data-theme="dark"] .hm-tip::before{border-right-color:var(--surface-raised)}
/* Erklärungs-Ersatz für Touch: der Hover-Tooltip (.hm-tip) funktioniert nur mit Maus – auf
   Geräten ohne Hover (Touch) gibt es stattdessen einen kleinen Info-Button, der die gleiche
   Erklärung in einem Dialog zeigt. Kein Antipp-Timer mehr, also auch kein hängenbleibender Rest. */
.hm-info{display:none}
@media (hover:none){
  .hm-info{display:inline-flex;align-items:center;justify-content:center;flex:none;width:26px;height:26px;
    margin-left:auto;border-radius:50%;color:var(--text-3)}
  .hm-info svg{width:16px;height:16px;stroke:currentColor;fill:none}
  .hm-info:active{background:var(--surface-hover);color:var(--text-strong)}
}

/* ===================== Struktur-Auswahl (Picker) ===================== */
.sp-modal{max-width:820px}
.sp-search{position:relative;margin-bottom:12px}
.sp-search input{width:100%;box-sizing:border-box;padding:9px 32px 9px 12px;border:1px solid var(--border-subtle);border-radius:9px;background:var(--surface-sunken);color:var(--text-strong);font-family:var(--font);font-size:13.5px}
.sp-search input:focus{outline:none;border-color:var(--esg-red)}
.sp-split{display:grid;grid-template-columns:1.3fr 1fr;gap:14px;align-items:stretch}
.sp-tree{border:1px solid var(--border-subtle);border-radius:12px;padding:8px;max-height:44vh;overflow:auto;background:var(--surface-card)}
.sp-node{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:13px}
.sp-node:hover{background:var(--surface-hover)}
.sp-node.sel{background:var(--esg-red-soft)}
.sp-node .se-caret{flex:none;width:24px;height:24px;padding:0}
.sp-name{flex:1;min-width:0;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sp-id{flex:none;font-size:10.5px;color:var(--text-3);font-family:ui-monospace,monospace;background:var(--surface-secondary);padding:1px 6px;border-radius:5px}
.sp-prev{border:1px solid var(--border-subtle);border-radius:12px;padding:14px;background:var(--surface-sunken);max-height:44vh;overflow:auto}
.sp-prev-empty{color:var(--text-3);font-size:13px;text-align:center;padding:40px 8px}
.sp-prev-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.sp-prev-name{font-weight:700;color:var(--text-strong);font-size:14px}
.sp-prev-type{font-size:11.5px;color:var(--text-3)}
.sp-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:14px}
.sp-stat{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:9px;padding:8px 10px}
.sp-stat b{display:block;font-size:18px;font-weight:800;color:var(--text-strong);line-height:1}
.sp-stat span{font-size:10.5px;color:var(--text-3);text-transform:uppercase;letter-spacing:.03em}
.sp-prev-lbl{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);margin-bottom:6px}
.sp-mini{font-size:12px}
.sp-mini-row{display:flex;align-items:center;gap:7px;padding:2px 0;color:var(--text-2);white-space:nowrap}
.sp-mini-row .se-ic{width:20px;height:20px}.sp-mini-row .se-ic svg{width:13px;height:13px}
.sp-mini-more{color:var(--text-3);font-size:11px;padding:4px 0}
@media (max-width:720px){.sp-split{grid-template-columns:1fr}.sp-prev{max-height:200px}}

/* ===================== Vorlagen-Verwaltung (Tabelle) ===================== */
/* Vorlagen/Kunden nutzen die gemeinsame .pc-bar (siehe oben) – hier nur der Außenabstand */
.vt-toolbar{margin:8px 0 14px}
.vt-tablewrap{border:1px solid var(--border-subtle);border-radius:14px;overflow:auto;background:var(--surface-card);box-shadow:var(--shadow-card)}
.vt-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed;min-width:1080px}
.vt-table thead th{text-align:left;font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3);padding:12px 14px;border-bottom:1px solid var(--border-subtle);white-space:nowrap;cursor:pointer;user-select:none}
.vt-table thead th.vt-desc,.vt-table thead th.vt-act{cursor:default}
.vt-table thead th.sorted{color:var(--text-strong)}
.vt-table thead th.vt-num{text-align:right}
.vt-table tbody td{padding:11px 14px;border-bottom:1px solid var(--border-subtle);vertical-align:middle;color:var(--text-2);overflow:hidden}
.vt-table tbody tr:last-child td{border-bottom:none}
.vt-row:hover{background:var(--surface-hover)}
.vt-name{overflow:hidden}
.vt-name b{display:block;color:var(--text-strong);font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vt-by{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vt-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-3)}
.vt-num{text-align:right}
.vt-num b{display:block;color:var(--text-strong);font-size:13.5px;line-height:1.3}
/* Element-Aufschlüsselung: umbruchfähige Chips mit voller Bezeichnung */
.vt-parts{display:flex;flex-wrap:wrap;gap:3px;justify-content:flex-end;margin-top:4px}
.vt-chip{display:inline-block;max-width:100%;padding:1px 6px;border-radius:6px;font-size:10px;line-height:1.6;font-weight:600;background:var(--surface-secondary);color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vt-chip-objekt{background:rgba(124,58,237,.12);color:#7c3aed}
.vt-chip-maschine{background:rgba(219,39,119,.12);color:#db2777}
.vt-chip-standort{background:rgba(13,148,136,.13);color:#0d9488}
.vt-chip-verteiler{background:var(--esg-red-soft);color:var(--esg-red)}
.vt-chip-rcd{background:rgba(5,150,105,.13);color:#059669}
.vt-chip-stromkreis{background:rgba(178,80,0,.12);color:var(--warn,#b25000)}
.vt-chip-betriebsmittel{background:rgba(161,98,7,.14);color:#a16207}
.vt-chip-messpunkt{background:var(--ok-soft);color:var(--ok-text)}
.vt-scope{display:block;font-size:10.5px;color:var(--text-3)}
.vt-date{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12px;color:var(--text-3)}
.vt-art{display:inline-block;max-width:100%;font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--surface-secondary);color:var(--text-2)}
.vt-art-anlage{background:var(--esg-red-soft);color:var(--esg-red)}
.vt-art-maschine{background:rgba(124,58,237,.14);color:#7c3aed}
.vt-art-wallbox{background:rgba(37,99,235,.13);color:#2563eb}

/* ---- Prüfart einer Struktur (Baum, Auswahl, Detailansicht) ---- */
/* Fixierte Kontextknoten (Kunde/Standort aus dem Auftrag) im Prüfungs-Editor */
.se-fixed{flex:none;font-size:9.5px;font-weight:700;letter-spacing:.03em;padding:2px 7px;border-radius:5px;white-space:nowrap;
  background:var(--surface-sunken);color:var(--text-3);border:1px solid var(--border-subtle);text-transform:uppercase}
.se-art{flex:none;font-size:9.5px;font-weight:700;letter-spacing:.02em;padding:2px 7px;border-radius:5px;white-space:nowrap;
  background:var(--surface-secondary);color:var(--text-3)}
.se-art-anlage{background:var(--esg-red-soft);color:var(--esg-red)}
.se-art-maschine{background:rgba(124,58,237,.14);color:#7c3aed}
.se-art-wallbox{background:rgba(37,99,235,.13);color:#2563eb}
.se-art-mix{background:rgba(202,138,4,.16);color:#a16207}
.se-artwarn{margin:0 0 14px;padding:9px 11px;border-radius:9px;font-size:12.5px;line-height:1.5;
  background:rgba(202,138,4,.1);border:1px solid rgba(202,138,4,.3);color:#8a5a00}
.st-fld-hint{font-weight:400;color:var(--text-3)}
/* Struktur-Auswahl: Elemente mit gemischten Prüfarten sind sichtbar, aber nicht wählbar */
.sp-node-mixed{opacity:.6;cursor:not-allowed}
.sp-node-mixed:hover{background:none}
.sp-mixed{flex:none;font-size:9.5px;font-weight:700;padding:2px 6px;border-radius:5px;background:rgba(202,138,4,.16);color:#a16207;white-space:nowrap}
.vt-status{font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:6px}
.vt-status-aktiv{background:var(--ok-soft);color:var(--ok-text)}
.vt-status-archiviert{background:var(--surface-secondary);color:var(--text-3)}
.vt-act{white-space:nowrap;text-align:right;overflow:visible}
.vt-actbtns{display:flex;justify-content:flex-end;gap:6px}
.vt-use,.vt-more{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;cursor:pointer;border:1px solid var(--border-subtle);background:var(--surface-card);color:var(--text-2);line-height:1;flex:0 0 auto}
.vt-use{border-color:var(--esg-red);background:var(--esg-red-soft);color:var(--esg-red)}
.vt-use svg{width:17px;height:17px}
.vt-use:hover{background:var(--esg-red);color:#fff}
.vt-more svg{width:17px;height:17px}
.vt-more:hover{border-color:var(--border-strong)}
.vt-empty{text-align:center;color:var(--text-3);padding:40px 10px;font-size:13.5px}
.vt-foot{display:flex;align-items:center;gap:12px;margin-top:14px}
.vt-page-size{font-size:12.5px;color:var(--text-3)}
.vt-page-size select{margin-left:6px;padding:5px 8px;border:1px solid var(--border-subtle);border-radius:7px;background:var(--surface-card);color:var(--text-strong);font-family:var(--font)}
.vt-pager{display:flex;align-items:center;gap:10px}
.vt-page{font-size:12.5px;color:var(--text-2)}
@media (max-width:720px){.gd-wrap,.vt-wrap,.wk-wrap{padding:18px 14px 50px}.pc-search{max-width:none}}

/* ============================================================
   Icon-System (einheitliche Stroke-SVGs) + Icon-Buttons
   ============================================================ */
.esg-ic{display:inline-flex;align-items:center;justify-content:center;width:1.15em;height:1.15em;flex:none;line-height:0;vertical-align:middle}
.esg-ic svg{width:100%;height:100%;display:block}
.btn .esg-ic{width:18px;height:18px}
.btn.sm .esg-ic{width:16px;height:16px}
/* Quadratischer Icon-Button für Tabellen/Toolbars – einheitliche Größe/Hover */
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;border:1px solid var(--border-subtle);background:var(--surface-card);color:var(--text-2);cursor:pointer;transition:.15s ease;flex:none;padding:0}
.icon-btn svg{width:18px;height:18px}
.icon-btn:hover{background:var(--surface-hover);color:var(--text-strong);border-color:var(--border-strong)}
.icon-btn:active{transform:scale(.94)}
.icon-btn:disabled{opacity:.4;cursor:default}
.icon-btn.primary{border-color:var(--esg-red);background:var(--esg-red-soft);color:var(--esg-red)}
.icon-btn.primary:hover{background:var(--esg-red);color:#fff;border-color:var(--esg-red)}
.icon-btn.danger:hover{border-color:var(--esg-red);background:var(--esg-red-soft);color:var(--esg-red)}
.icon-btn.sm{width:30px;height:30px}.icon-btn.sm svg{width:16px;height:16px}

/* ============================================================
   Dialogsystem (ESGDialog) – ESG-CI, ersetzt native Popups
   ============================================================ */
body.esgd-lock{overflow:hidden}
.esgd-ov{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:24px;
  background:rgba(17,18,22,.44);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  opacity:0;transition:opacity .16s ease}
.esgd-ov.show{opacity:1}
.esgd{width:100%;max-width:440px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:16px;
  box-shadow:0 24px 70px rgba(0,0,0,.32);overflow:hidden;transform:translateY(8px) scale(.98);opacity:0;
  transition:transform .18s cubic-bezier(.2,.8,.25,1),opacity .18s ease;font-family:var(--font)}
.esgd-ov.show .esgd{transform:none;opacity:1}
.esgd-head{display:flex;align-items:center;gap:12px;padding:20px 20px 0}
.esgd-ic{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:11px;flex:none}
.esgd-ic svg{width:21px;height:21px}
.esgd-ic-info{background:var(--info-soft);color:var(--info)}
.esgd-ic-success{background:var(--ok-soft);color:var(--ok-text)}
.esgd-ic-warning,.esgd-ic-danger{background:var(--warn-soft);color:var(--warn-text)}
.esgd-ic-error{background:var(--esg-red-soft);color:var(--esg-red)}
.esgd-ic-question{background:var(--info-soft);color:var(--info)}
.esgd-title{flex:1;margin:0;font-size:17px;font-weight:800;color:var(--text-strong);line-height:1.25}
.esgd-x{border:none;background:none;color:var(--text-3);width:30px;height:30px;border-radius:8px;cursor:pointer;flex:none;display:inline-flex;align-items:center;justify-content:center;margin:-4px -4px 0 0}
.esgd-x svg{width:18px;height:18px}
.esgd-x:hover{background:var(--surface-hover);color:var(--text-strong)}
.esgd-body{padding:14px 20px 4px}
/* Der Einzug für Kopfzeilen-Ausrichtung (Icon+Titel) gehört nur auf den Fließtext (.esgd-msg),
   NICHT auf den ganzen Body – sonst rutscht bei prompt() auch das Eingabefeld ein und wirkt
   schmaler/eingerückt gegenüber den Aktions-Buttons im Fuß, die weiterhin bei 20px stehen. */
.esgd-head + .esgd-body .esgd-msg{padding-left:50px}
.esgd-msg{font-size:14px;line-height:1.55;color:var(--text-2)}
.esgd-field{margin-top:14px}
.esgd-lbl{display:block;font-size:12.5px;font-weight:600;color:var(--text-2);margin-bottom:6px}
.esgd-input{width:100%;box-sizing:border-box;height:auto;margin:0;padding:10px 12px;border:1px solid var(--border-default);border-radius:10px;
  background:var(--surface-card);color:var(--text-strong);font-family:var(--font);font-size:14px}
textarea.esgd-input{min-height:90px;line-height:1.5;resize:vertical}
.esgd-input:focus{outline:none;border-color:var(--esg-red);box-shadow:var(--shadow-ring,0 0 0 3px var(--esg-red-soft))}
.esgd-input.invalid{border-color:var(--esg-red)}
.esgd-err{margin-top:7px;font-size:12.5px;color:var(--esg-red)}
.esgd-foot{display:flex;justify-content:flex-end;gap:10px;padding:18px 20px 20px}
.esgd-foot .btn{min-width:96px}
.btn.danger-solid{background:var(--esg-red);border-color:var(--esg-red);color:#fff}
.btn.danger-solid:hover{background:var(--esg-red-dark);border-color:var(--esg-red-dark)}
@media (max-width:520px){
  .esgd-ov{align-items:flex-end;padding:0}
  .esgd{max-width:none;border-radius:18px 18px 0 0;transform:translateY(100%)}
  .esgd-ov.show .esgd{transform:none}
  .esgd-foot{flex-direction:column-reverse}
  .esgd-foot .btn{width:100%}
}

/* ============================================================
   Vollbild-Unterschrift (ESGDialog.signFullscreen) – appweit für alle
   Unterschriftsfelder (Prüfer/Kunde in app.js, ESG-Mitarbeiter/Kunde im
   Nachweisbericht). Eigenes Overlay statt Browser-Standarddialog; nutzt die
   volle Bildschirmfläche zum Zeichnen, bleibt aber seitenverhältnistreu
   (drawContain) und ist rotationsfest (Striche liegen normalisiert 0..1 vor). */
.sigfs-ov{position:fixed;inset:0;z-index:10500;display:flex;background:var(--surface-app);
  opacity:0;transition:opacity .16s ease}
.sigfs-ov.show{opacity:1}
.sigfs{display:flex;flex-direction:column;width:100%;height:100%;font-family:var(--font)}
.sigfs-head{display:flex;align-items:center;gap:12px;padding:calc(14px + env(safe-area-inset-top,0px)) 18px 10px;flex:none}
.sigfs-title{flex:1;margin:0;font-size:17px;font-weight:800;color:var(--text-strong)}
.sigfs-x{border:none;background:var(--surface-sunken);color:var(--text-2);width:36px;height:36px;border-radius:50%;cursor:pointer;flex:none;display:inline-flex;align-items:center;justify-content:center}
.sigfs-x svg{width:18px;height:18px}
.sigfs-x:hover{background:var(--surface-hover);color:var(--text-strong)}
.sigfs-canvas-wrap{position:relative;flex:1;min-height:0;margin:0 18px 10px;border:1.5px dashed var(--border-default);border-radius:14px;background:var(--surface-card);overflow:hidden}
.sigfs-canvas{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}
.sigfs-ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:15px;pointer-events:none}
.sigfs-foot{display:flex;align-items:center;gap:10px;padding:10px 18px calc(14px + env(safe-area-inset-bottom,0px));flex:none;flex-wrap:wrap}
.sigfs-foot .btn svg{width:15px;height:15px;margin-right:5px;vertical-align:-3px;stroke:currentColor;fill:none}
.sigfs-foot .btn:disabled{opacity:.45;cursor:default}
.sigfs-sp{flex:1}
@media (max-width:820px),(max-height:500px){
  .sigfs-head{padding:calc(8px + env(safe-area-inset-top,0px)) 14px 6px}
  .sigfs-title{font-size:15.5px}
  .sigfs-canvas-wrap{margin:0 10px 8px}
  .sigfs-foot{padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px));gap:8px}
  .sigfs-foot .btn{padding:8px 12px;font-size:13px}
  .sigfs-sp{flex-basis:100%;height:0}
  .sigfs-foot [data-sigfs="cancel"],.sigfs-foot [data-sigfs="ok"]{flex:1;min-width:0}
}

/* Toast (vereinheitlicht, mit Icon) */
.esgd-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);z-index:10050;
  display:flex;align-items:center;gap:10px;background:var(--text-strong);color:var(--surface-card);
  padding:12px 18px;border-radius:12px;font-size:13.5px;max-width:min(520px,92vw);box-shadow:0 14px 40px rgba(0,0,0,.32);
  opacity:0;transition:opacity .25s,transform .25s;font-family:var(--font)}
.esgd-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.esgd-toast-ic{display:inline-flex;flex:none}.esgd-toast-ic svg{width:18px;height:18px}
.esgd-toast-success .esgd-toast-ic{color:#4ade80}
.esgd-toast-error .esgd-toast-ic{color:#fca5a5}
.esgd-toast-warning .esgd-toast-ic{color:#fcd34d}

/* PWA: „Neue Version verfügbar" – höchster z-index der App, damit der Hinweis IMMER sichtbar
   bleibt: über Header, unterer Navigation und jedem offenen Dialog (auch der Vollbild-Unterschrift,
   dem bisher höchsten Overlay bei 10500). */
.pwa-update-toast{position:fixed;left:50%;top:14px;transform:translateX(-50%) translateY(-14px);z-index:10600;
  display:flex;align-items:center;gap:12px;background:var(--surface-raised);color:var(--text-strong);
  border:1px solid var(--border-default);padding:9px 9px 9px 16px;border-radius:18px;font-size:13.5px;font-weight:500;
  max-width:min(420px,92vw);box-shadow:0 14px 40px rgba(0,0,0,.28);opacity:0;transition:opacity .2s ease,transform .2s ease;
  font-family:var(--font);padding-top:calc(9px + env(safe-area-inset-top,0px))}
.pwa-update-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.pwa-update-toast button{white-space:nowrap;flex:none}
.pwa-update-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.pwa-update-ver{font-size:11.5px;font-weight:600;color:var(--text-3);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (prefers-reduced-motion:reduce){.pwa-update-toast{transition:none}}
@media (max-width:520px){.pwa-update-toast{left:12px;right:12px;transform:translateY(-14px);max-width:none}
  .pwa-update-toast.show{transform:translateY(0)}}

/* ---- Icon-Sizing für umgestellte Glyph-Buttons (Konsistenz) ---- */
.d-menu svg,.set-x svg,.nw-del svg,.cl-tools button svg,.foto-tools button svg,.ie-b svg{width:16px;height:16px}
.qa-go svg{width:19px;height:19px}
.d-menu,.set-x,.nw-del,.cl-tools button,.foto-tools button{display:inline-flex;align-items:center;justify-content:center}
/* Suchfelder mit führendem Lupen-Icon (Picker + Vorlagen) */
.sp-search{display:flex;align-items:center}
.sp-search-ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-3);pointer-events:none;display:inline-flex}
.sp-search-ic svg{width:16px;height:16px}
.sp-search input{padding-left:36px}
.sp-search .se-qx{position:absolute;right:8px;top:0;bottom:0;margin:auto 0;width:26px;height:26px;border:none;background:none;color:var(--text-3);cursor:pointer;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;padding:0}
.sp-search .se-qx svg{width:15px;height:15px}
.sp-search .se-qx:hover{background:var(--surface-hover);color:var(--text-strong)}

/* ---- Radio/Checkbox global zurücksetzen: NICHT als Full-Width-Feld rendern ---- */
input[type=radio],input[type=checkbox]{width:auto;height:auto;min-width:0;margin:0;padding:0;accent-color:var(--esg-red);cursor:pointer;flex:none}

/* ---- Export-Assistent · Schritt 2: Teilstruktur wählen (Baum) ---- */
.expt-tree{border:1px solid var(--border-subtle);border-radius:12px;overflow:auto;max-height:46vh;background:var(--surface-card);margin:2px 0 4px}
.expt-row{display:flex;align-items:center;gap:11px;padding:10px 14px;cursor:pointer;font-size:13.5px;border-bottom:1px solid var(--border-subtle);transition:background .12s}
.expt-row:last-child{border-bottom:none}
.expt-row:hover{background:var(--surface-hover)}
.expt-row.on{background:var(--esg-red-soft)}
.expt-row input[type=radio]{width:18px;height:18px}
.expt-name{flex:1;min-width:0;color:var(--text-strong);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.expt-meta{flex:none;font-size:11px;color:var(--text-3)}
.st-typ-maschine{background:rgba(219,39,119,.14);color:#db2777}

/* Kurzer Erklärungstext unter einer Home-Block-Überschrift */
.home-block-sub{margin:-4px 0 12px;font-size:12.5px;color:var(--text-3);line-height:1.5;max-width:70ch}

/* Leichter Zusatz-Hinweis neben einer Messgerät-Sektionsüberschrift */
.gd-sec-hint{font-weight:500;text-transform:none;letter-spacing:0;color:var(--text-3);font-size:12px;margin-left:2px}

/* ---- Einstellungen: Prüfer- & Firmendaten ---- */
.set-profile .set-sec{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);margin:18px 0 10px}
.set-profile .set-sec:first-of-type{margin-top:6px}
.pf-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}
.set-profile .st-fld{display:flex;flex-direction:column;margin:0 0 12px}
.set-profile .st-fld > span{font-size:12.5px;font-weight:600;color:var(--text-2);margin-bottom:6px}
.set-profile .st-fld input{width:100%;box-sizing:border-box;height:auto;margin:0;padding:9px 12px;border:1px solid var(--border-default);border-radius:9px;background:var(--surface-card);color:var(--text-strong);font-family:var(--font);font-size:14px}
.set-profile .st-fld input:focus{outline:none;border-color:var(--esg-red);box-shadow:0 0 0 3px var(--esg-red-soft)}
.pf-sig{margin-top:2px}
.pf-sig-row{display:flex;align-items:center;gap:12px}
.pf-sig-img{max-height:56px;max-width:200px;border:1px solid var(--border-subtle);border-radius:8px;background:#fff;padding:4px}
.pf-preview{margin:2px 0 4px}
.pf-pv{border:1px solid var(--border-subtle);border-radius:10px;padding:12px 14px;background:var(--surface-sunken);font-size:12.5px;line-height:1.5}
.pf-pv b{color:var(--esg-red);display:block;margin-bottom:2px}
.pf-pv span{color:var(--text-2)}
.pf-foot{display:flex;align-items:center;justify-content:flex-end;gap:14px;margin-top:16px;padding-top:14px;border-top:1px solid var(--border-subtle)}
.pf-foot .set-status{margin-right:auto}
@media (max-width:640px){.pf-grid{grid-template-columns:1fr}}

/* Vollbild-Struktureditor innerhalb einer Prüfung */
.se-ins-ov{position:fixed;inset:0;z-index:10000;background:var(--surface-app,var(--surface));overflow-y:auto;overflow-x:hidden;padding:22px 26px}
/* Editor-Popups ÜBER dem Prüfungs-Editor-Vollbild: Kontextmenü (.se-ctx, Basis z 9600),
   „Verschieben nach …" (.se-mv, 9701) und Massenanlegen (.gd-modal-ov, 9000) hängen als
   Geschwister NACH #seInsOv am <body> – ohne diese Anhebung liegen sie HINTER dem Overlay
   (z 10000) und wirken „kaputt" (Regression 20.07.2026: Rechtsklick-Menü unsichtbar).
   Bewusst per Geschwister-Selektor statt global: ein weltweiter z-Bump von .gd-modal-ov
   würde die Select-/Datums-Popups (z 10050) in ALLEN App-Modals begraben. */
#seInsOv ~ .se-ctx-backdrop, #seInsOv ~ .se-mv-backdrop{z-index:10790}
#seInsOv ~ .se-ctx, #seInsOv ~ .se-mv, #seInsOv ~ .gd-modal-ov{z-index:10800}
.se-ins-ov .se-root{max-width:var(--page-max);margin:0 auto}
/* Vollbild-Fix: im Vollbild soll der Editor die ECHTE volle Fläche nutzen, nicht die normale
   Inhaltsbreite (--page-max) – ohne diese Ausnahme bleibt .se-root.se-full trotz
   position:fixed;inset:0 optisch auf 1180px zentriert (gleiche Spezifität, diese Regel gewinnt
   sonst, da sie später im Stylesheet steht). Padding der Hülle wird zusätzlich entfernt, damit
   sich nicht zwei Innenabstände (.se-ins-ov + .se-full) aufaddieren. */
.se-ins-ov.se-full-active{padding:0}
.se-ins-ov .se-root.se-full{max-width:none;margin:0}
@media (max-width:720px){.se-ins-ov{padding:12px}}
.struct-edit-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* #4b – SVG-Icons in Ergebnis-Banner & Import-Liste (statt Glyphen) */
.result-banner .rb-ic svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2}
.imp-ic svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2}

/* #4d – Messgerät: 8-Schritt-Ablauf */
.gd-flow{position:relative;margin-top:6px;display:flex;flex-direction:column;gap:14px}
.gd-step{position:relative;display:grid;grid-template-columns:44px 1fr;gap:16px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:14px;padding:18px 20px;box-shadow:var(--shadow-1)}
.gd-step-n{width:34px;height:34px;border-radius:50%;background:var(--esg-red,#C20000);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex:none;font-variant-numeric:tabular-nums}
.gd-step-main{min-width:0}
.gd-step-h{margin-bottom:12px}
.gd-step-t{margin:0;font-size:16px;font-weight:650;color:var(--text-strong);letter-spacing:-.01em}
.gd-step-d{margin:3px 0 0;font-size:13px;line-height:1.5;color:var(--text-2)}
.gd-step-body{min-width:0}
.gd-step-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.gd-step-actions.gd-log-head{justify-content:flex-end;margin-bottom:8px}
.gd-step .btn svg{width:17px;height:17px;margin-right:7px;vertical-align:-3px;stroke:currentColor;fill:none}
.gd-step .btn.sm svg{width:15px;height:15px;margin-right:5px}
/* Schritt 2 – Statusübersicht */
.gd-statgrid{display:flex;flex-direction:column;gap:9px}
.gd-stat-row{display:flex;align-items:center;gap:11px;font-size:13px}
.gd-stat-dot{width:9px;height:9px;border-radius:50%;flex:none}
.gd-stat-dot.on{background:var(--ok,#16a34a);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok,#16a34a) 22%,transparent)}
.gd-stat-dot.off{background:var(--text-3,#9aa4b2)}
.gd-stat-lbl{color:var(--text-2);flex:1;min-width:0}
.gd-stat-val{color:var(--text-strong);font-weight:600}
@media (max-width:640px){.gd-step{grid-template-columns:36px 1fr;gap:12px;padding:15px 15px}.gd-step-n{width:30px;height:30px;font-size:14px}.gd-stat-row{flex-wrap:wrap}}

/* Variante B – schlanker Kopf-/Messpunkt-Editor (Maschine & E-Ladestation) */
.me-body{max-width:var(--page-max);margin:0 auto;padding:6px 0 40px;display:flex;flex-direction:column;gap:16px}
.me-body .btn svg{width:16px;height:16px;margin-right:6px;vertical-align:-3px;stroke:currentColor;fill:none}
.me-body .btn.sm svg{width:15px;height:15px;margin-right:5px}
.me-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:14px;padding:18px 20px;box-shadow:var(--shadow-1)}
.me-card-h{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px;flex-wrap:wrap}
.me-card-h h2{margin:0;font-size:16px;font-weight:650;color:var(--text-strong);letter-spacing:-.01em}
.me-card-h p{margin:3px 0 0;font-size:12.5px;color:var(--text-2);line-height:1.45}
.me-card-act{display:flex;gap:8px;flex-wrap:wrap;flex:none}
.me-kopf{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px 16px}
.me-fld{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:var(--text-2)}
.me-fld input{font-weight:400}
/* Messpunkt-Tabelle */
.me-tbl{display:flex;flex-direction:column;gap:6px;min-width:0}
.me-tr{display:grid;grid-template-columns:38px 1fr 2fr 1fr 1fr 92px auto;gap:8px;align-items:center}
.me-th{font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3);padding:0 2px 4px}
.me-th span{padding:0 4px}
.me-nr{font-variant-numeric:tabular-nums;color:var(--text-3);font-size:13px;text-align:center;font-weight:600}
.me-in{width:100%;height:36px;padding:0 10px;border:1px solid var(--border-subtle);border-radius:8px;background:var(--surface-card);color:var(--text-strong);font-family:var(--font);font-size:13px}
.me-in:focus{outline:none;border-color:var(--esg-red);box-shadow:0 0 0 3px var(--esg-red-soft)}
.me-sel{padding-right:6px}
.me-rowact{display:flex;gap:4px;align-items:center}
.me-empty{padding:22px;text-align:center;color:var(--text-3);font-size:13px;border:1px dashed var(--border-subtle);border-radius:10px}
.mm-editbar{display:flex;justify-content:flex-end;margin:0 0 12px}
.mm-editbar .btn svg{width:15px;height:15px;margin-right:6px;vertical-align:-3px;stroke:currentColor;fill:none}
@media (max-width:820px),(max-height:500px){
  .me-tr{grid-template-columns:30px 1fr 1fr 84px;grid-auto-rows:auto;row-gap:4px}
  .me-th{display:none}
  .me-tr .me-in[data-f="text"]{grid-column:2 / -1}
  .me-rowact{grid-column:1 / -1;justify-content:flex-end}
}

/* Einstellungen – Kategorie-Layout (Sidebar + Panels) */
.set-layout{display:grid;grid-template-columns:248px 1fr;gap:22px;align-items:start;margin-top:18px}
.set-nav{display:flex;flex-direction:column;gap:6px;position:sticky;top:14px}
.set-navbtn{display:flex;align-items:center;gap:12px;text-align:left;width:100%;padding:12px 14px;border:1px solid transparent;border-radius:12px;background:none;cursor:pointer;color:var(--text-2);transition:.15s ease}
.set-navbtn:hover{background:var(--surface-hover)}
.set-navbtn.on{background:var(--surface-card);border-color:var(--border-subtle);box-shadow:var(--shadow-1)}
.set-nav-ic{width:34px;height:34px;flex:none;display:flex;align-items:center;justify-content:center;border-radius:9px;background:var(--surface-secondary);color:var(--text-2)}
.set-navbtn.on .set-nav-ic{background:var(--esg-red-soft);color:var(--esg-red)}
.set-nav-ic svg{width:18px;height:18px}
.set-nav-tx{display:flex;flex-direction:column;min-width:0}
.set-nav-tx b{font-size:13.5px;font-weight:600;color:var(--text-strong);letter-spacing:-.01em}
.set-navbtn.on .set-nav-tx b{color:var(--esg-red)}
.set-nav-tx span{font-size:11.5px;color:var(--text-3);line-height:1.3}
.set-panels{min-width:0}
.set-panel .set-card{margin:0}
/* Nur-Ansicht: Bereich ist sichtbar, aber ohne Bearbeitungsrecht nicht bedienbar.
   Der Inhalt bleibt lesbar; Eingaben/Aktionen sind gesperrt und Bearbeiten-Schaltflächen ausgeblendet. */
.set-robanner{display:flex;align-items:center;gap:8px;margin:0 0 14px;padding:10px 13px;border-radius:11px;
  background:rgba(47,116,192,.09);border:1px solid rgba(47,116,192,.28);color:#1c4e80;font-size:13px;line-height:1.45}
:root[data-theme=dark] .set-robanner{background:rgba(47,116,192,.14);border-color:rgba(47,116,192,.42);color:#bcd8f2}
/* Navigation (Prüfart-/Abschnitts-Reiter, Katalogliste) bleibt klickbar – nur das
   Bearbeiten ist gesperrt: Eingabefelder nicht editierbar, Bearbeiten-Aktionen ausgeblendet. */
.set-ro .set-ro-body input,.set-ro .set-ro-body select,.set-ro .set-ro-body textarea{pointer-events:none;background:var(--surface-sunken);color:var(--text-2)}
.set-ro .set-ro-body .pf-foot,.set-ro .set-ro-body .set-head-actions,.set-ro .set-ro-body .set-add,.set-ro .set-ro-body .set-x,.set-ro .set-ro-body .fk-add,.set-ro .set-ro-body .pf-sig-actions,.set-ro .set-ro-body [data-fk],.set-ro .set-ro-body #fkReset{display:none}
.set-card .set-sec{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);margin:18px 0 10px}
.pf-save svg{width:15px;height:15px;margin-right:6px;vertical-align:-3px;stroke:currentColor;fill:none}
.set-head-actions .btn svg{width:14px;height:14px;margin-right:5px;vertical-align:-2px;stroke:currentColor;fill:none}
/* Unterschrift-Pad in den Einstellungen */
.pf-sigpad{margin-top:2px}
.pf-sig-canvas-wrap{position:relative;border:1px dashed var(--border-strong,var(--line-2));border-radius:12px;background:#fcfcfd;overflow:hidden;max-width:460px}
.pf-sig-canvas-wrap canvas{display:block;width:100%;height:170px;touch-action:none;cursor:crosshair}
.pf-sig-canvas-wrap .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:14px;pointer-events:none}
.pf-sig-actions{display:flex;gap:8px;margin-top:10px}
.pf-sig-actions .btn svg{width:15px;height:15px;margin-right:6px;vertical-align:-3px;stroke:currentColor;fill:none}
.set-mobile-head{display:none;align-items:center;gap:12px;margin-bottom:16px}
.set-mobile-back{display:inline-flex;align-items:center;gap:2px;border:none;background:var(--surface-sunken);
  border-radius:999px;padding:9px 14px 9px 10px;font-size:14px;font-weight:600;color:var(--text-strong);
  cursor:pointer;font-family:var(--font)}
.set-mobile-back svg{width:18px;height:18px}
#setMobileTitle{font-size:16.5px;font-weight:800;color:var(--text-strong)}
@media (max-width:820px),(max-height:500px){
  /* Der Kategorie-Switcher (Prüfer & Unterschrift / Firmendaten / Prüfkataloge / Struktur- und
     Feldkataloge) ragte zeitweise als horizontal scrollender Streifen über den Rand hinaus oder
     zwang die Labels in eine Zeile. Nur 4 Einträge – auf schmalen Breiten werden sie stattdessen
     untereinander als volle Zeilen dargestellt (wie am Desktop), keine Scrollbarkeit nötig,
     jede Zeile ist eine volle, bequem antippbare Touchfläche mit vollständig lesbarem Label. */
  /* minmax(0,1fr) statt 1fr, aus demselben Grund wie bei .fk-layout weiter unten: eine reine 1fr-
     Spur darf über den Container hinaus wachsen, wenn ein verschachtelter Inhalt (z. B. die
     Feldkataloge) es „verlangt" – 0 als Minimum erzwingt echtes Schrumpfen. */
  .set-layout{grid-template-columns:minmax(0,1fr);gap:14px}
  .set-nav{flex-direction:column;overflow-x:visible;position:static;padding-bottom:0;gap:6px}
  .set-navbtn{flex:none;width:100%;min-width:0;max-width:none;box-sizing:border-box;flex-direction:row;align-items:center;text-align:left;gap:12px;padding:12px 14px;min-height:44px}
  .set-nav-ic{margin:0}
  .set-nav-tx{align-items:flex-start;min-width:0}
  .set-nav-tx b{white-space:normal;font-size:13.5px;line-height:1.3;text-align:left}
  .set-nav-tx span{display:block;white-space:normal;font-size:11.5px;line-height:1.3}
  /* Prüfer & Unterschrift / Firmendaten / Prüfkataloge / Struktur- und Feldkataloge öffnen sich
     mobil als eigene Unterseite, die von rechts hereinsliddet, statt einfach unterhalb der
     Auswahlliste zu erscheinen und langes Scrollen zu erzeugen. Die Auswahlliste bleibt darunter
     unverändert erhalten – „Zurück" schiebt die Unterseite nur wieder weg, ohne Re-Render, damit
     Scrollposition und Zustand der Liste erhalten bleiben. */
  .set-wrap{position:relative}
  .set-mobile-head{display:flex;align-items:center;gap:10px;padding:14px 4px 16px;margin-bottom:0}
  /* Zentrale Layoutregel für JEDE mobile Einstellungs-Unterseite (Prüfer & Unterschrift,
     Firmendaten, Prüfkataloge, Struktur- und Feldkataloge, künftige weitere): die Unterseite
     beginnt IMMER unterhalb des festen App-Headers (.home-topbar, 72px) – kein Sonderabstand
     pro Seite, ein einziger top-Wert für alle. Header und mobile Navigation bleiben davor/
     darüber unverändert sichtbar bzw. fest stehen. */
  .set-panels{
    position:fixed;left:0;right:0;bottom:0;top:calc(72px + env(safe-area-inset-top,0px));
    z-index:250;background:var(--surface-app);
    overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;
    transform:translateX(100%);transition:transform .28s cubic-bezier(.2,.8,.25,1);
    padding:0 16px calc(100px + env(safe-area-inset-bottom,0px));
  }
  .set-wrap.set-mobile-detail .set-panels{transform:translateX(0)}
  /* Während einer aktiven Wischgeste übernimmt JS die Position direkt (inline transform,
     keine Transition) – siehe wireSwipeNav(). */
  .set-panels.set-dragging{transition:none}
  .set-mobile-back{min-height:44px;min-width:44px}
}
@media (prefers-reduced-motion:reduce){.set-panels{transition:none}}

/* Struktur-Auswahl → „Entwurf auswählen": Tabellenansicht im selben Fenster */
.sc-modal.sc-modal-wide{max-width:860px}
.scd-bar{display:flex;align-items:center;gap:9px;padding:0 12px;height:40px;border:1px solid var(--border-subtle);border-radius:10px;background:var(--surface-card);margin-bottom:14px}
.scd-bar svg{width:17px;height:17px;stroke:var(--text-3);fill:none;flex:none}
.scd-bar input{flex:1;border:none;outline:none;background:none;font-family:var(--font);font-size:13.5px;color:var(--text-strong);height:100%}
.scd-tablewrap{max-height:52vh;overflow:auto;border:1px solid var(--border-subtle);border-radius:12px}
.scd-table{width:100%;border-collapse:collapse;font-size:13px}
.scd-table thead th{position:sticky;top:0;background:var(--surface-secondary);text-align:left;font-weight:650;color:var(--text-2);font-size:11.5px;letter-spacing:.02em;padding:10px 12px;cursor:pointer;white-space:nowrap;user-select:none;border-bottom:1px solid var(--border-subtle)}
.scd-table thead th:hover{color:var(--text-strong)}
.scd-table thead th.scd-sort{color:var(--esg-red)}
.scd-table thead th.scd-sort[data-dir="up"]::after{content:" ↑"}
.scd-table thead th.scd-sort[data-dir="down"]::after{content:" ↓"}
.scd-table tbody td{padding:9px 12px;border-bottom:1px solid var(--border-subtle);color:var(--text-strong);vertical-align:middle}
.scd-table tbody tr:last-child td{border-bottom:none}
.scd-table tbody tr:hover td{background:var(--surface-hover)}
.scd-name{font-weight:600;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scd-when{color:var(--text-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.scd-prog{display:inline-block;width:74px;height:7px;border-radius:4px;background:var(--surface-secondary);overflow:hidden;vertical-align:middle;margin-right:8px}
.scd-prog span{display:block;height:100%;background:var(--esg-red);border-radius:4px}
.scd-table td i{font-style:normal;font-size:11.5px;color:var(--text-2);font-variant-numeric:tabular-nums}
.scd-empty{padding:26px;text-align:center;color:var(--text-3);font-size:13px}
@media (max-width:720px){.sc-modal.sc-modal-wide{max-width:100%}.scd-name{max-width:120px}.scd-table td .btn{white-space:nowrap}}

/* Start-Chooser: Akzentfarben für „Neu erstellen", „Entwurf auswählen", „Vorlage" */
.sc-ic-new{background:var(--esg-red-soft);color:var(--esg-red)}
.sc-ic-draft{background:rgba(22,163,74,.13);color:#16a34a}
.sc-ic-vorlage{background:rgba(217,119,6,.14);color:#d97706}

/* Modul-Karten: Nachweis (qa-doc) bekommt blauen Auswahl-/Hover-Rand statt rot */
.home-start .qa-card.qa-doc:hover{border-color:#2563eb}
.home-start .qa-card.qa-doc:hover .gc-ic{background:rgba(37,99,235,.12);color:#2563eb}
[data-theme="dark"] .home-start .qa-card.qa-doc:hover{border-color:#60a5fa}
[data-theme="dark"] .home-start .qa-card.qa-doc:hover .gc-ic{background:rgba(96,165,250,.16);color:#60a5fa}
/* Karten IMMER gleich groß – unabhängig von Titel-Umbruch und Ansichtsbreite */
.home-start .qa-card{min-height:126px;box-sizing:border-box}
.home-start .qa-card h3{line-height:1.25;min-height:2.5em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ============================================================
   ZENTRALE LAYOUT-STABILITÄT
   Gleiche Breite, Ränder, Scrollbar & Höhe für ALLE Bereiche
   (Home, Prüfstrukturen, Vorlagen, Messgerät, Einstellungen und
   künftige Ansichten) + stabile Menü-Logik. Bewusst zentral, damit
   neue Seiten automatisch dasselbe Raster verwenden.
   ============================================================ */

/* 1) Scrollbar-Platz IMMER reservieren → kein horizontaler Sprung beim
      Wechsel zwischen kurzen und langen Seiten. */
.gate{scrollbar-gutter:stable}

/* 2) Ein einziges Inhaltsraster: #settingsWrap ist nur transparenter Host;
      die gemountete Ansicht erbt Breite + Ränder vom .home-wrap. Damit haben
      Home und alle Unterseiten identische Ränder und Breite (kein Sprung). */
.home-shell #settingsWrap > .gd-wrap,
.home-shell #settingsWrap > .vt-wrap,
.home-shell #settingsWrap > .wk-wrap,
.home-shell #settingsWrap > .set-wrap{max-width:none;margin:0;padding-left:0;padding-right:0;padding-top:0}
@media (max-width:720px){
  .home-shell #settingsWrap > .vt-wrap,
  .home-shell #settingsWrap > .wk-wrap{padding-left:0;padding-right:0}
}

/* 3) Stabile Mindesthöhe des Inhalts: kurze Seiten kollabieren nicht →
      Fußzeile/Scrollposition springen beim Ansichtswechsel nicht. */
.home-shell > .home-wrap{min-height:calc(100vh - 72px)}

/* 4) Kopfzeile feste Höhe (kein Springen durch unterschiedliche Inhalte). */
.home-topbar{height:72px;min-height:72px}

/* 5) Menütexte NIE mit „…" abschneiden – bei Bedarf sauber zweizeilig,
      Icon bleibt oben/harmonisch ausgerichtet. */
.home-menu .hm-tx{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.28;overflow-wrap:break-word;word-break:normal}
.home-menu button{align-items:center;min-height:40px}

/* 6) Klapp-Chevron: identische Größe, Klickfläche & Ausrichtung in beiden
      Zuständen (rechtsbündig, gleiche Ränder – nur der Pfeil dreht sich,
      die Breitenänderung des Menüs ist animiert, kein Sprung). */
@media (min-width:901px) and (min-height:501px){
  .home-menu .hm-collapse{margin:0 0 14px auto;flex:none}
  .gate.hm-collapsed .home-menu .hm-collapse{align-self:auto;margin:0 0 14px auto;transform:rotate(180deg)}
  .gate.hm-collapsed .home-menu{padding-left:11px;padding-right:11px}
  /* im eingeklappten Zustand die Icon-Buttons zentrieren, Chevron bleibt rechts */
  .gate.hm-collapsed .home-menu button{min-height:40px}
}

/* Bestandsaufnahme: eigenständiger Prozess in blauer Farbwelt – auch als „in Vorbereitung"
   klar blau (Stripe, Icon, Hover), damit sofort als eigener Bereich erkennbar. */
.home-start .qa-card.qa-doc.soon{opacity:1;cursor:pointer}
.home-start .qa-card.qa-doc.soon::before{background:#2563eb}
.home-start .qa-card.qa-doc.soon .gc-ic{background:rgba(37,99,235,.12);color:#2563eb}
.home-start .qa-card.qa-doc.soon:hover{border-color:#2563eb;transform:translateY(-2px);box-shadow:var(--shadow-md)}
.home-start .qa-card.qa-doc.soon:hover::before{width:4px}
.home-start .qa-card.qa-doc.soon:hover .qa-go{background:rgba(37,99,235,.12);color:#2563eb}
[data-theme="dark"] .home-start .qa-card.qa-doc.soon .gc-ic{background:rgba(96,165,250,.16);color:#60a5fa}
[data-theme="dark"] .home-start .qa-card.qa-doc.soon:hover{border-color:#60a5fa}
/* Blaue Platzhalterseite (Stub) für Bestandsaufnahme */
.stub-doc .stub-ic{background:rgba(37,99,235,.12);color:#2563eb}
[data-theme="dark"] .stub-doc .stub-ic{background:rgba(96,165,250,.16);color:#60a5fa}

/* Zentrale Fortschrittsanzeige (ESGProgress.bar) – EIN Design überall.
   Maße/Beschriftung identisch zur Entwurfsauswahl; nur die Farbe unterscheidet
   Bearbeitungsstand (rot) von Vorlagen-Vollständigkeit (blau). */
.esg-prog{display:inline-block;width:74px;height:7px;border-radius:4px;background:var(--surface-secondary);overflow:hidden;vertical-align:middle;margin-right:8px}
.esg-prog-fill{display:block;height:100%;border-radius:4px;background:var(--esg-red)}
.esg-prog-template .esg-prog-fill{background:#2563eb}
.esg-prog-pct{font-size:11.5px;color:var(--text-2);font-variant-numeric:tabular-nums}
/* Fortschritts-Spalte in der Entwurfstabelle (Start/Übersicht).
   Die frühere Sonderregel für <640px (grid-column/-row fest verdrahtet) ist entfernt: sie
   widersprach dem einheitlichen Kartenlayout, das ab max-width:820px per grid-template-areas
   gilt (siehe oben) und deckt bereits alle Telefonbreiten inkl. iPhone SE ab. */
.draft-row .d-prog{display:flex;align-items:center;min-width:0}

/* Vorlagen-Tabelle: Spalte „Vollständigkeit" (zentrale Fortschrittskomponente) */
.vt-table thead th.vt-prog{cursor:default}
.vt-table td.vt-prog{white-space:nowrap}

/* „Zuletzt bearbeitet"-Karten: Status + Fortschrittsbalken in einer Fußzeile */
.recent-chip .rc-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;margin-top:6px}
.recent-chip .rc-prog{display:flex;align-items:center;white-space:nowrap;flex:none}
.recent-chip .rc-prog .esg-prog{width:56px;margin-right:6px}

/* Kunden-Stammdaten: Bearbeiten-Formular + Import-Assistent */
.ku-form{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}
.ku-form .ku-wide{grid-column:1 / -1}
.ku-form textarea{width:100%;border:1px solid var(--border-subtle);border-radius:9px;padding:9px 12px;font-family:var(--font);font-size:13.5px;color:var(--text-strong);background:var(--surface-card);resize:vertical}
.ku-form textarea:focus{outline:none;border-color:var(--esg-red);box-shadow:0 0 0 3px var(--esg-red-soft)}
.ki-dup{margin:16px 0 4px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.ki-dup > span{font-size:13px;color:var(--text-2)}
.ki-result{display:flex;flex-direction:column;gap:14px}
.ki-stats{display:flex;gap:10px;flex-wrap:wrap}
.ki-stat{flex:1;min-width:96px;background:var(--surface-secondary);border:1px solid var(--border-subtle);border-radius:12px;padding:12px 14px;text-align:center}
.ki-stat-v{font-size:22px;font-weight:750;font-variant-numeric:tabular-nums}
.ki-stat-l{font-size:11px;color:var(--text-3);margin-top:2px;text-transform:uppercase;letter-spacing:.03em;font-weight:600}
.ki-log{max-height:38vh;overflow:auto;border:1px solid var(--border-subtle);border-radius:12px}
.ku-menu{position:fixed;z-index:10001}
@media (max-width:640px){.ku-form{grid-template-columns:1fr}}

/* Stammdaten Schritt 1: „Kunde auswählen" als großer, unübersehbarer Hauptbutton statt
   kleinem Dropdown – volle Breite, gut sichtbares Icon, zeigt nach der Auswahl den Kundennamen. */
/* Kompakter, dezenter gehalten (vorher wirkte der Button übergroß/dominant): gleiche Optik und
   Abstände wie die übrigen großen Auswahlfelder der App (vgl. .set-navbtn – Icon-Kachel + Titel/
   Untertitel, ~60px Zeilenhöhe), nur mit rotem Rand/Soft-Hintergrund als primärer Akzent statt
   schierer Größe. Bleibt über die volle Breite und deutlich über der iOS-Mindesttouchfläche (44px). */
.kunde-hero{margin-bottom:18px}
.kunde-hero-btn{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:1.5px solid var(--esg-red);
  border-radius:13px;background:var(--esg-red-soft);cursor:pointer;font-family:var(--font);text-align:left;transition:box-shadow .15s ease}
.kunde-hero-btn:hover{box-shadow:0 0 0 3px var(--esg-red-soft)}
.kunde-hero-btn .khb-ic{flex:none;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;
  background:var(--esg-red);color:var(--accent-contrast)}
.kunde-hero-btn .khb-ic svg{width:18px;height:18px;stroke:currentColor;fill:none}
.kunde-hero-btn .khb-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.kunde-hero-btn .khb-main{font-size:14.5px;font-weight:700;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kunde-hero-btn .khb-main.khb-placeholder{color:var(--esg-red)}
.kunde-hero-btn .khb-sub{font-size:12px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kunde-hero-btn .khb-chev{flex:none;display:flex;color:var(--text-3)}
.kunde-hero-btn .khb-chev svg{width:16px;height:16px;stroke:currentColor;fill:none}
/* ================= Wissenskompendium ================= */
.wk-loading{padding:60px 20px;text-align:center;color:var(--text-2);font-size:14px}
.wk-loading svg{width:18px;height:18px;vertical-align:-4px;margin-right:6px;stroke:currentColor;fill:none}
.wk-topbar{margin:16px 0 18px}
.wk-search{flex:1 1 240px;min-width:200px;max-width:420px}
.wk-topbar .btn svg{width:15px;height:15px;margin-right:6px;vertical-align:-3px;stroke:currentColor;fill:none}
.wk-layout{display:grid;grid-template-columns:288px 1fr;gap:26px;align-items:start}
.wk-nav{position:sticky;top:14px;max-height:calc(100vh - 108px);overflow:auto;display:flex;flex-direction:column;gap:10px}
.wk-navtabs{display:flex;gap:4px;background:var(--surface-secondary);border-radius:10px;padding:3px}
.wk-navtab{flex:1;border:none;background:none;padding:7px 8px;border-radius:8px;font:inherit;font-size:12.5px;font-weight:600;color:var(--text-2);cursor:pointer}
.wk-navtab.on{background:var(--surface-card);color:var(--esg-red);box-shadow:var(--shadow-1)}
.wk-catsel{width:100%}
.wk-toc{display:flex;flex-direction:column;gap:1px}
.wk-toc-i{display:flex;gap:8px;align-items:baseline;text-align:left;width:100%;border:none;background:none;padding:6px 8px;border-radius:8px;cursor:pointer;color:var(--text-2);font:inherit;font-size:13px;line-height:1.3}
.wk-toc-i:hover{background:var(--surface-hover);color:var(--text-strong)}
.wk-toc-i.on{background:var(--esg-red-soft);color:var(--esg-red);font-weight:600}
.wk-toc-num{flex:none;font-variant-numeric:tabular-nums;color:var(--text-3);font-size:11.5px;min-width:26px}
.wk-toc-i.on .wk-toc-num{color:var(--esg-red)}
.wk-toc-t{min-width:0}
.wk-lvl-1{font-weight:650;color:var(--text-strong);margin-top:6px}
.wk-lvl-3,.wk-lvl-4{padding-left:18px;font-size:12.5px}
.wk-navempty{color:var(--text-3);font-size:12.5px;padding:14px 8px}
/* Artikel */
.wk-main{min-width:0}
.wk-article{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:16px;padding:28px 32px 34px;box-shadow:var(--shadow-1)}
.wk-crumb{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--esg-red);margin-bottom:8px}
.wk-art-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}
.wk-art-head h2{margin:0;font-size:23px;font-weight:700;letter-spacing:-.01em;color:var(--text-strong);line-height:1.2}
.wk-h-num{color:var(--esg-red);font-variant-numeric:tabular-nums}
.wk-fav svg{width:18px;height:18px;stroke:currentColor;fill:none}
.wk-fav.on{color:#d97706;border-color:#f0c886}.wk-fav.on svg{fill:#f5b845;stroke:#d97706}
.wk-body{font-size:14.5px;line-height:1.62;color:var(--text-strong)}
.wk-body p{margin:0 0 12px}
.wk-body ul{margin:0 0 12px;padding-left:22px}.wk-body li{margin:3px 0}
.wk-body mark,.wk-result mark{background:#ffe9a8;color:inherit;border-radius:3px;padding:0 1px}
.wk-ovlead{color:var(--text-3);font-size:13px}
.wk-overview{list-style:none;margin:8px 0 4px;padding:0;display:flex;flex-direction:column;gap:6px}
.wk-overview li{margin:0}
.wk-ovlink{display:flex;align-items:baseline;gap:9px;width:100%;text-align:left;background:var(--surface-2,#f6f7f9);border:1px solid var(--border-subtle);border-radius:9px;padding:9px 12px;font:inherit;font-size:14px;color:var(--text-strong);cursor:pointer}
.wk-ovlink:hover{border-color:var(--esg-red);background:var(--esg-red-soft)}
.wk-ovlink .wk-toc-num{color:var(--text-3);font-variant-numeric:tabular-nums;min-width:2.4em;font-weight:600}
.wk-xref{background:var(--esg-red-soft);color:var(--esg-red);border:none;border-radius:6px;padding:1px 7px;font:inherit;font-size:.92em;cursor:pointer;font-weight:500}
.wk-xref:hover{text-decoration:underline}
.wk-figs{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin:20px 0 6px}
.wk-fig{margin:0;border:1px solid var(--border-subtle);border-radius:12px;overflow:hidden;background:#fff}
.wk-fig img{display:block;width:100%;height:auto;cursor:zoom-in;background:#fff}
.wk-fig figcaption{font-size:11.5px;color:var(--text-3);padding:7px 10px;border-top:1px solid var(--border-subtle)}
.wk-tags{display:flex;flex-wrap:wrap;gap:7px;margin:20px 0 0}
.wk-tag{background:var(--surface-secondary);border:1px solid var(--border-subtle);border-radius:999px;padding:3px 11px;font-size:12px;color:var(--text-2);cursor:pointer}
.wk-tag:hover{border-color:var(--esg-red);color:var(--esg-red)}
.wk-pager{display:flex;justify-content:space-between;gap:12px;margin-top:24px;padding-top:16px;border-top:1px solid var(--border-subtle)}
/* Suche */
.wk-searchhead{font-size:14px;color:var(--text-2);margin-bottom:14px}
.wk-result{display:block;width:100%;text-align:left;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:12px;padding:14px 16px;margin-bottom:10px;cursor:pointer;font:inherit}
.wk-result:hover{border-color:var(--esg-red);box-shadow:var(--shadow-md)}
.wk-result-t{font-size:14.5px;font-weight:650;color:var(--text-strong)}
.wk-result-cat{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.03em;margin:2px 0 6px}
.wk-result-s{font-size:13px;color:var(--text-2);line-height:1.5}
/* KI-Assistent */
.wk-assist{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:16px;padding:20px 22px;box-shadow:var(--shadow-1);display:flex;flex-direction:column;min-height:460px}
.wk-assist-head{margin-bottom:14px}.wk-assist-head b{font-size:16px}.wk-assist-head span{display:block;font-size:12.5px;color:var(--text-3);margin-top:3px}
.wk-assist-head b svg{width:17px;height:17px;vertical-align:-3px;margin-right:4px;stroke:currentColor;fill:none}
/* Sicherheitsnetz: kein Icon im Assistenten darf jemals überdimensioniert rendern */
.wk-assist svg{max-width:22px;max-height:22px}
.wk-msg svg{width:16px;height:16px;vertical-align:-3px;stroke:currentColor;fill:none}
.wk-chat{flex:1;overflow:auto;display:flex;flex-direction:column;gap:12px;padding:6px 2px 12px;max-height:calc(100vh - 340px)}
.wk-msg{max-width:88%;padding:11px 14px;border-radius:14px;font-size:13.5px;line-height:1.55}
.wk-msg-bot{align-self:flex-start;background:var(--surface-secondary);color:var(--text-strong);border-bottom-left-radius:4px}
.wk-msg-user{align-self:flex-end;background:var(--esg-red);color:#fff;border-bottom-right-radius:4px}
.wk-ans-src{margin-top:8px;font-size:12px;color:var(--text-3)}
.wk-ans-rel{margin-top:8px;font-size:12px;color:var(--text-3);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.wk-ans-figs{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.wk-msg-fig{max-width:150px;height:auto;border-radius:8px;border:1px solid var(--border-subtle);cursor:zoom-in;background:#fff}
.wk-ask{display:flex;gap:8px;align-items:center;border-top:1px solid var(--border-subtle);padding-top:12px}
.wk-ask input{flex:1;height:40px;padding:0 14px;border:1px solid var(--border-subtle);border-radius:10px;font:inherit;font-size:14px;background:var(--surface-card);color:var(--text-strong)}
.wk-ask input:focus{outline:none;border-color:var(--esg-red);box-shadow:0 0 0 3px var(--esg-red-soft)}
.wk-ask .icon-btn.rec{background:var(--esg-red-soft);color:var(--esg-red);border-color:var(--esg-red)}
/* Grafik-Zoom */
.wk-zoom-ov{position:fixed;inset:0;z-index:10002;background:rgba(20,20,22,.82);display:flex;align-items:center;justify-content:center;padding:30px;overflow:auto}
.wk-zoom-stage{max-width:96vw;max-height:92vh;display:flex;align-items:center;justify-content:center}
.wk-zoom-stage img{max-width:96vw;max-height:92vh;background:#fff;border-radius:8px;transition:transform .12s ease;cursor:zoom-in;transform-origin:center}
.wk-zoom-x{position:fixed;top:18px;right:20px;width:42px;height:42px;border-radius:11px;border:none;background:rgba(255,255,255,.14);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}
.wk-zoom-x svg{width:20px;height:20px;stroke:currentColor;fill:none}
/* Filterleiste */
.wk-filters{display:contents}
.wk-f{display:flex;flex-direction:column;gap:3px;min-width:150px;flex:1 1 150px;max-width:260px}
.wk-f>span{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3)}
.wk-fsel{flex:0 0 auto;min-width:150px;max-width:230px}
.wk-assistbtn .wk-ab-ic{margin-right:6px}.wk-assistbtn .wk-ab-ic svg{width:15px;height:15px;vertical-align:-3px;stroke:currentColor;fill:none}
/* Quellen-Panel */
.wk-source{display:flex;gap:14px;align-items:flex-start;background:var(--surface-secondary);border:1px solid var(--border-subtle);border-radius:12px;padding:12px 15px;margin:0 0 20px}
.wk-source-badge{flex:none;display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--esg-red);padding-top:2px}
.wk-source-badge svg{width:14px;height:14px;stroke:currentColor;fill:none}
.wk-source-rows{display:grid;grid-template-columns:1fr;gap:3px;min-width:0}
.wk-source-row{display:flex;gap:8px;font-size:12.5px;line-height:1.45}
.wk-source-row>span{flex:none;color:var(--text-3);min-width:88px}
.wk-source-row>b{color:var(--text-strong);font-weight:600;min-width:0}
/* Zwischenüberschriften, Bildunterschriften, Listen */
.wk-subh{font-size:16px;font-weight:700;color:var(--text-strong);margin:22px 0 8px;letter-spacing:-.005em}
.wk-cap{font-size:12px;color:var(--text-3);font-style:italic;margin:-6px 0 16px}
.wk-body ol.wk-ol{margin:0 0 12px;padding-left:24px}.wk-body ol.wk-ol li{margin:4px 0}
.wk-body ul.wk-ul-plain{list-style:none;padding-left:4px}
.wk-body ul.wk-ul-plain>li{margin:4px 0}
/* Hinweis-/Warnboxen */
.wk-note{display:flex;gap:11px;align-items:flex-start;border-radius:12px;padding:13px 16px;margin:16px 0;font-size:13.5px;line-height:1.55;border:1px solid}
.wk-note-ic{flex:none;width:20px;height:20px;display:flex;align-items:center;justify-content:center;margin-top:1px}
.wk-note-ic svg{width:18px;height:18px;stroke:currentColor;fill:none}
.wk-note-b{min-width:0}.wk-note-b p{margin:0 0 6px}.wk-note-b p:last-child{margin:0}
.wk-note-hint{background:#eef6ff;border-color:#c7e0f7;color:#1c3d5a}
.wk-note-hint .wk-note-ic{color:#2f74c0}
.wk-note-warning{background:#fff5ec;border-color:#f6cfa3;color:#7a4410}
.wk-note-warning .wk-note-ic{color:#e07b1a}
.wk-note-example{background:var(--surface-secondary);border-color:var(--border-subtle);color:var(--text-2)}
/* Echte Tabellen (responsive) */
.wk-table-wrap{overflow-x:auto;margin:16px 0;border:1px solid var(--border-subtle);border-radius:12px;-webkit-overflow-scrolling:touch}
.wk-table{border-collapse:collapse;width:100%;font-size:13px;min-width:min(560px,100%)}
.wk-table th,.wk-table td{border:1px solid var(--border-subtle);padding:8px 11px;text-align:left;vertical-align:top;line-height:1.4}
.wk-table thead th{background:var(--surface-secondary);color:var(--text-strong);font-weight:700;font-size:12px}
.wk-table tbody tr:nth-child(even){background:var(--surface-secondary)}
.wk-table tbody td:first-child{font-weight:600;color:var(--text-strong)}
/* Norm-Kennzeichnung */
.wk-doc-badge{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-2);background:var(--surface-secondary);border:1px solid var(--border-subtle);border-radius:5px;padding:1px 7px;margin-right:8px;vertical-align:1px}
.wk-doc-badge-norm{color:#8a5a00;background:#fff3da;border-color:#f0d59a}
.wk-crumb-norm{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.05em;color:#8a5a00;background:#fff3da;border:1px solid #f0d59a;border-radius:5px;padding:0 6px;margin-right:2px}
.wk-article-norm{border-top:3px solid #e6a935}
.wk-normbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;background:#fff9ef;border:1px solid #f0d59a;border-radius:10px;padding:9px 13px;margin:0 0 16px}
.wk-normbar-tag{flex:none;font-size:10.5px;font-weight:800;letter-spacing:.04em;color:#fff;background:#e6a935;border-radius:5px;padding:2px 8px}
.wk-normbar-t{font-size:12.5px;color:#6b4a10}.wk-normbar-t b{color:#5a3d0a}
.wk-normbar-note{flex-basis:100%;font-size:11px;color:#9a7a3a}
/* Beschriftete Zusatz-Panels */
.wk-panel{border:1px solid var(--border-subtle);border-left-width:4px;border-radius:10px;padding:11px 15px;margin:14px 0;background:var(--surface-card)}
.wk-panel-l{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;margin-bottom:6px;color:var(--text-2)}
.wk-panel-l svg{width:14px;height:14px;stroke:currentColor;fill:none}
.wk-panel-b{font-size:14px;line-height:1.58;color:var(--text-strong)}
.wk-panel-b p{margin:0 0 8px}.wk-panel-b p:last-child{margin:0}
.wk-panel-b ul{margin:2px 0 0;padding-left:20px}.wk-panel-b li{margin:3px 0}
.wk-panel-sum{border-left-color:var(--text-3)}
.wk-panel-norm{border-left-color:#6b7686;background:var(--surface-secondary)}.wk-panel-norm .wk-panel-l{color:#4a5563}
.wk-panel-praxis{border-left-color:#2f74c0;background:#eef6ff}.wk-panel-praxis .wk-panel-l{color:#2660a8}
.wk-panel-procheck{border-left-color:var(--esg-red);background:var(--esg-red-soft)}.wk-panel-procheck .wk-panel-l{color:var(--esg-red)}
.wk-panel-related{border-left-color:#7a869a}.wk-panel-related .wk-panel-l{color:#5b6675}
.wk-panel-fundstelle{border-left-color:#e6a935;background:#fff9ef}.wk-panel-fundstelle .wk-panel-l{color:#8a5a00}
.wk-panel-links{border-left-color:#5b8a5b}.wk-panel-links .wk-panel-l{color:#3f6b3f}
.wk-linklist{display:flex;flex-direction:column;gap:6px}
.wk-xlink{display:block;width:100%;text-align:left;background:var(--surface-secondary);border:1px solid var(--border-subtle);border-radius:9px;padding:8px 12px;font:inherit;font-size:13px;color:var(--text-strong);cursor:pointer}
.wk-xlink:hover{border-color:var(--esg-red);background:var(--esg-red-soft)}
.wk-xlink b{display:inline-block;font-size:11px;font-weight:700;color:var(--esg-red);margin-right:8px}
/* Bibliothek (Alle Dokumente) */
.wk-lib-intro{font-size:13.5px;color:var(--text-2);margin:0 0 18px}
.wk-lib-group{margin:0 0 22px}
.wk-lib-h{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-2);margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--border-subtle)}
.wk-lib-n{display:inline-flex;min-width:18px;height:18px;padding:0 5px;align-items:center;justify-content:center;font-size:11px;border-radius:9px;background:var(--surface-secondary);color:var(--text-3);letter-spacing:0}
.wk-lib-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.wk-lib-card{display:flex;flex-direction:column;gap:4px;text-align:left;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:13px;padding:15px 16px;cursor:pointer;font:inherit;position:relative}
.wk-lib-card:hover{border-color:var(--esg-red);box-shadow:var(--shadow-md)}
.wk-lib-card-norm{border-top:3px solid #e6a935}
.wk-lib-badge{align-self:flex-start;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-2);background:var(--surface-secondary);border:1px solid var(--border-subtle);border-radius:5px;padding:1px 7px;margin-bottom:4px}
.wk-lib-title{font-size:15px;font-weight:700;color:var(--text-strong);line-height:1.25}
.wk-lib-sub{font-size:12px;color:var(--text-2);line-height:1.35}
.wk-lib-meta{font-size:11px;color:var(--text-3);margin-top:3px}
/* Bibliothek in der Navigation */
.wk-backlib,.wk-crumb-lib{background:none;border:none;font:inherit;cursor:pointer;color:var(--esg-red);padding:0}
.wk-backlib{font-size:12.5px;font-weight:600;margin:0 0 10px;padding:4px 2px}
.wk-backlib:hover,.wk-crumb-lib:hover{text-decoration:underline}
.wk-navgroup{margin:0 0 12px}
.wk-navgroup-h{display:flex;align-items:center;gap:6px;font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);margin:0 0 5px}
.wk-navgroup-n{display:inline-flex;min-width:16px;height:16px;padding:0 4px;align-items:center;justify-content:center;font-size:10px;border-radius:8px;background:var(--surface-secondary)}
.wk-navdoc{display:flex;flex-direction:column;gap:1px;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:9px;padding:7px 9px;cursor:pointer;font:inherit}
.wk-navdoc:hover{background:var(--surface-hover);border-color:var(--border-subtle)}
.wk-navdoc-t{font-size:13px;font-weight:600;color:var(--text-strong)}
.wk-navdoc-m{font-size:11px;color:var(--text-3)}
.wk-ref-doc{display:inline-block;font-size:10px;font-weight:700;color:var(--esg-red);background:var(--esg-red-soft);border-radius:5px;padding:0 5px;margin-left:6px;vertical-align:1px}
/* Gruppierte Suche */
.wk-searchscope{font-size:12px;color:var(--text-3);font-weight:400}
.wk-clearfilt{margin-left:8px;background:var(--surface-secondary);border:1px solid var(--border-subtle);border-radius:7px;padding:2px 9px;font:inherit;font-size:12px;color:var(--text-2);cursor:pointer}
.wk-clearfilt:hover{border-color:var(--esg-red);color:var(--esg-red)}
.wk-sgroup{margin:0 0 18px}
.wk-sgroup-h{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;color:var(--text-strong);padding:6px 0;border-bottom:2px solid var(--esg-red-soft);margin-bottom:10px}
.wk-sgroup-tag{font-size:9.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#fff;background:var(--esg-red);border-radius:5px;padding:2px 7px}
.wk-sgroup-n{margin-left:auto;font-size:11px;font-weight:600;color:var(--text-3)}
.wk-dgroup{margin:0 0 12px 2px}
.wk-dgroup-h{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--text-strong);margin:0 0 7px}
.wk-dgroup-tag{font-size:9px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-2);background:var(--surface-secondary);border:1px solid var(--border-subtle);border-radius:4px;padding:1px 6px}
.wk-cgroup{margin:0 0 10px 4px;padding-left:10px;border-left:2px solid var(--border-subtle)}
.wk-cgroup-h{font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3);margin:0 0 6px}
/* Suche: Dokument-Badge */
.wk-result-doc{display:inline-block;font-size:10.5px;font-weight:700;color:var(--esg-red);background:var(--esg-red-soft);border-radius:5px;padding:1px 6px;margin-left:6px;vertical-align:1px}
.wk-searchfilt{color:var(--text-3);font-size:12px}
/* KI-Assistent: Quellen-Chips, Anhänge, Beispiele */
.wk-ex{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.wk-ex-b{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:999px;padding:4px 11px;font:inherit;font-size:12px;color:var(--text-2);cursor:pointer}
.wk-ex-b:hover{border-color:var(--esg-red);color:var(--esg-red)}
.wk-ans-text{font-size:14px;line-height:1.6;color:var(--text-strong)}
.wk-ans-attach{margin:10px 0 4px}
.wk-ans-attach .wk-note{margin:10px 0}
.wk-ans-attach .wk-table-wrap{margin:10px 0}
.wk-ans-fig{max-width:260px;border:1px solid var(--border-subtle);border-radius:10px;margin:10px 0 0}
.wk-ans-srclabel{margin:12px 0 5px;font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3)}
.wk-ans-srcs{display:flex;flex-direction:column;gap:6px}
.wk-src-chip{display:block;width:100%;text-align:left;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:10px;padding:8px 12px;font:inherit;cursor:pointer}
.wk-src-chip:hover{border-color:var(--esg-red);background:var(--esg-red-soft)}
.wk-src-chip b{display:block;font-size:12px;color:var(--esg-red)}
.wk-src-chip span{display:block;font-size:12.5px;color:var(--text-2)}
.wk-ans-none{font-size:13.5px;color:var(--text-2);line-height:1.55}
.wk-ans-none svg{width:16px;height:16px;vertical-align:-3px;stroke:currentColor;fill:none;color:#e07b1a}
.wk-mic svg{width:18px;height:18px;stroke:currentColor;fill:none}
@media (prefers-color-scheme:dark){
  .wk-note-hint{background:rgba(47,116,192,.12);border-color:rgba(47,116,192,.4);color:#bcd8f2}
  .wk-note-warning{background:rgba(224,123,26,.12);border-color:rgba(224,123,26,.42);color:#f2c79a}
}
:root[data-theme=dark] .wk-note-hint{background:rgba(47,116,192,.12);border-color:rgba(47,116,192,.4);color:#bcd8f2}
:root[data-theme=dark] .wk-note-warning{background:rgba(224,123,26,.12);border-color:rgba(224,123,26,.42);color:#f2c79a}
:root[data-theme=light] .wk-note-hint{background:#eef6ff;border-color:#c7e0f7;color:#1c3d5a}
:root[data-theme=light] .wk-note-warning{background:#fff5ec;border-color:#f6cfa3;color:#7a4410}
@media (max-width:900px),(max-height:500px){
  .wk-wrap{padding:22px 16px 70px}
  .wk-layout{grid-template-columns:1fr;gap:14px}
  .wk-nav{position:static;max-height:300px;border:1px solid var(--border-subtle);border-radius:12px;padding:10px}
  .wk-article{padding:20px 18px 26px}
  .wk-figs{grid-template-columns:1fr 1fr}
  .wk-f{max-width:none}
}
@media (max-width:560px){
  .wk-figs{grid-template-columns:1fr}.wk-msg{max-width:94%}
  .wk-source{flex-direction:column;gap:8px}
  .wk-source-row{flex-direction:column;gap:0}.wk-source-row>span{min-width:0}
  /* Tabellen als Karten (nur einfache Tabellen mit einer Kopfzeile) */
  .wk-table-cards{min-width:0}
  .wk-table-cards thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .wk-table-cards tbody tr{display:block;border:1px solid var(--border-subtle);border-radius:10px;margin:0 0 10px;padding:4px 6px}
  .wk-table-cards tbody tr:nth-child(even){background:transparent}
  .wk-table-cards td{display:flex;justify-content:space-between;gap:12px;border:none;border-bottom:1px dashed var(--border-subtle);padding:7px 6px;text-align:right}
  .wk-table-cards td:last-child{border-bottom:none}
  .wk-table-cards td::before{content:attr(data-label);font-weight:700;color:var(--text-3);text-align:left;font-size:11.5px}
  .wk-table-cards td:first-child{font-size:14px}
}

/* ===== Messgerät: appweite Status-Pill (Topbar) ===== */
.dev-pill{display:inline-flex;align-items:center;gap:8px;height:42px;box-sizing:border-box;padding:0 14px;border-radius:999px;flex:none;
  border:1px solid var(--line);background:var(--panel,var(--bg));color:var(--text-2);cursor:pointer;
  font-size:12.5px;font-weight:600;white-space:nowrap;line-height:1;transition:background .15s,border-color .15s,color .15s}
.dev-pill:hover{border-color:var(--line-2,var(--line))}
.dev-pill .dev-pill-dot{width:9px;height:9px;border-radius:50%;background:var(--text-3);flex:0 0 auto}
.dev-pill.is-connected{color:var(--ok-text);border-color:var(--ok-border);background:var(--ok-soft)}
.dev-pill.is-connected .dev-pill-dot{background:var(--ok)}
.dev-pill.is-checking{color:var(--warn-text);border-color:var(--warn-border);background:var(--warn-soft)}
.dev-pill.is-checking .dev-pill-dot{background:var(--warn);animation:devPulse 1s ease-in-out infinite}
.dev-pill.is-standby{color:var(--warn-text);border-color:var(--warn-border);background:var(--warn-soft)}
.dev-pill.is-standby .dev-pill-dot{background:var(--warn)}
.dev-pill.is-disconnected{color:var(--text-3)}
.dev-pill.is-disconnected .dev-pill-dot{background:var(--text-3)}
@keyframes devPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}
@media (max-width:560px){.dev-pill .dev-pill-tx{display:none}.dev-pill{width:42px;padding:0;justify-content:center}}

/* ===== Messgerät: Gerätedaten-Karte + Übertragungsweg ===== */
.gd-devcard{border:1px solid var(--line);border-radius:14px;padding:16px 18px;background:var(--panel,var(--bg))}
.gd-devcard-head{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.gd-devcard-badge{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:14px;font-size:12px;font-weight:700;border:1px solid var(--line)}
.gd-devcard-badge .dot{width:9px;height:9px;border-radius:50%;background:var(--text-3)}
.gd-devcard-badge.is-connected{color:var(--ok-text);border-color:var(--ok-border);background:var(--ok-soft)}
.gd-devcard-badge.is-connected .dot{background:var(--ok)}
.gd-devcard-badge.is-checking,.gd-devcard-badge.is-standby{color:var(--warn-text);border-color:var(--warn-border);background:var(--warn-soft)}
.gd-devcard-badge.is-checking .dot,.gd-devcard-badge.is-standby .dot{background:var(--warn)}
.gd-devcard-badge.is-disconnected{color:var(--text-3)}
.gd-devcard-model{font-weight:800;font-size:15px;color:var(--text)}
.gd-devcard-note{width:100%;font-size:12px;color:var(--warn-text);margin-top:2px}
.gd-devgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 22px}
.gd-devfield{display:flex;flex-direction:column;gap:2px;min-width:0}
.gd-devfield .k{font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--text-3)}
.gd-devfield .v{font-size:14px;color:var(--text);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.gd-devfield .v.muted{color:var(--text-3)}
.gd-transfer{display:inline-flex;align-items:center;gap:8px;margin-top:14px;padding:7px 12px;border-radius:10px;
  border:1px dashed var(--line-2,var(--line));font-size:12.5px;font-weight:600;color:var(--text-2)}
.gd-transfer .tw-dot{width:8px;height:8px;border-radius:50%;background:var(--accent,#c00)}

/* ===== Messgerät: klare Trennung Direktverbindung vs. ETC-Datei ===== */
.gd-section{border:1px solid var(--line);border-radius:16px;padding:18px 20px;margin-top:18px;background:var(--panel,var(--bg))}
.gd-section-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:14px}
.gd-section-badge{flex:0 0 auto;width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:15px;background:var(--accent-subtle,var(--ok-soft));color:var(--accent,var(--text));border:1px solid var(--line)}
.gd-section-head h2{margin:0 0 3px;font-size:17px;font-weight:800;color:var(--text)}
.gd-section-head p{margin:0;font-size:13px;color:var(--text-2);line-height:1.45}
.gd-capbanner{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.gd-capbanner .cap{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:15px;font-size:12px;font-weight:600;border:1px solid var(--line)}
.gd-capbanner .cap-ok{color:var(--ok-text);border-color:var(--ok-border);background:var(--ok-soft)}
.gd-capbanner .cap-dev{color:var(--warn-text);border-color:var(--warn-border);background:var(--warn-soft)}
.gd-subcard{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-top:12px;background:var(--bg)}
.gd-subcard-t{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-3);margin-bottom:12px}
.gd-ops{display:grid;gap:10px;margin-top:12px}
.gd-op{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:13px 15px;border-radius:12px;
  border:1px solid var(--line);background:var(--bg);cursor:pointer;transition:border-color .15s,background .15s}
.gd-op:hover{border-color:var(--accent-border,var(--line-2,var(--line)))}
.gd-op.is-dev{opacity:.92}
.gd-op-ic{flex:0 0 auto;width:34px;height:34px;color:var(--text-2)}
.gd-op-ic svg{width:22px;height:22px}
.gd-op-tx{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.gd-op-tx b{font-size:14px;color:var(--text);font-weight:700}
.gd-op-tx span{font-size:12.5px;color:var(--text-2);line-height:1.4}
.gd-op-badge{flex:0 0 auto;padding:4px 10px;border-radius:13px;font-size:11px;font-weight:700;border:1px solid var(--line);white-space:normal}
.gd-op-badge.ok{color:var(--ok-text);border-color:var(--ok-border);background:var(--ok-soft)}
.gd-op-badge.dev{color:var(--warn-text);border-color:var(--warn-border);background:var(--warn-soft)}
.gd-hint-small{margin:12px 2px 0;font-size:12px;color:var(--text-3);line-height:1.5}
@media (max-width:560px){.gd-op{flex-wrap:wrap}.gd-op-badge{order:3}}

/* ===== Messgerät: Device-Connector-Status + Badge ===== */
.gd-connstate{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:13px;font-size:11.5px;font-weight:700;border:1px solid var(--line);text-transform:none;letter-spacing:0}
.gd-connstate::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--text-3)}
.gd-connstate.is-on{color:var(--ok-text);border-color:var(--ok-border);background:var(--ok-soft)}
.gd-connstate.is-on::before{background:var(--ok)}
.gd-connstate.is-off{color:var(--text-3)}
.gd-connstate.is-checking{color:var(--warn-text);border-color:var(--warn-border);background:var(--warn-soft)}
.gd-connstate.is-checking::before{background:var(--warn);animation:devPulse 1s ease-in-out infinite}
.gd-connstate.is-warn{color:var(--warn-text);border-color:var(--warn-border);background:var(--warn-soft)}
.gd-connstate.is-warn::before{background:var(--warn)}
.gd-op-badge.conn{color:var(--accent,#c00);border-color:var(--accent-border,var(--line));background:var(--accent-subtle,transparent)}

/* ===== Direktweg-Diagnose (welcher Adapter/Port/Endpoint wird tatsächlich genutzt) ===== */
.gd-diag{margin:10px 0 2px;border:1px solid var(--line);border-radius:10px;padding:8px 11px;font-size:12.5px;background:var(--bg)}
.gd-diag-row{display:grid;grid-template-columns:minmax(150px,32%) 1fr;gap:10px;padding:5px 0;border-bottom:1px dashed var(--line)}
.gd-diag-row:last-of-type{border-bottom:0}
.gd-diag-k{color:var(--text-3);font-weight:600}
.gd-diag-v{overflow-wrap:anywhere}
.gd-diag-v code{font-size:11.5px;padding:1px 5px;border-radius:5px;background:var(--code-bg,rgba(127,127,127,.12))}
.gd-diag-ok{color:var(--ok-text,#0a0);font-weight:700}
.gd-diag-no{color:var(--warn-text,#c60);font-weight:700}
.gd-diag-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px}
.gd-fld{display:flex;flex-direction:column;gap:4px;margin:10px 0;font-size:12.5px;font-weight:600;color:var(--text-2)}
.gd-fld input{font:inherit;font-weight:500;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card,var(--bg));color:var(--text-1)}
.gd-cap{max-height:26vh;overflow:auto;white-space:pre-wrap;word-break:break-all;font-size:11px;line-height:1.45;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--bg);margin:6px 0}

/* ===== Echte Fortschrittsanzeige (Lesen/Schreiben) ===== */
.gd-prog{list-style:none;margin:6px 0;padding:0;display:flex;flex-direction:column;gap:2px}
.gd-prog-step{display:flex;align-items:center;gap:11px;padding:9px 6px;font-size:13.5px;color:var(--text-3);border-radius:8px}
.gd-prog-step .gd-prog-dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--line);flex:0 0 auto;position:relative;transition:all .2s}
.gd-prog-step .gd-prog-lbl{font-weight:600}
.gd-prog-step .gd-prog-info{margin-left:auto;font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}
.gd-prog-step.active{color:var(--text-1);background:var(--warn-soft,rgba(200,120,0,.08))}
.gd-prog-step.active .gd-prog-dot{border-color:var(--warn,#c60);animation:devPulse 1s ease-in-out infinite}
.gd-prog-step.done{color:var(--text-2)}
.gd-prog-step.done .gd-prog-dot{border-color:var(--ok,#2a9d5c);background:var(--ok,#2a9d5c)}
.gd-prog-step.done .gd-prog-dot::after{content:"";position:absolute;left:3px;top:0px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}

/* ===== Gerätevalidierungs-Bericht (Element · Feld · Wert · erwartet · Korrektur) ===== */
.gd-val-list{max-height:46vh;overflow:auto;margin:8px 0}
.gd-val-head{font-weight:700;font-size:13px;margin:12px 0 6px;padding:8px 11px;border-radius:9px}
.gd-val-head.err{color:var(--warn-text);background:var(--warn-soft);border:1px solid var(--warn-border)}
.gd-val-head.warn{color:var(--text-2);background:var(--bg);border:1px solid var(--line)}
.gd-val-row{display:grid;grid-template-columns:minmax(120px,34%) 1fr;gap:10px;padding:8px 11px;border:1px solid var(--line);border-radius:9px;margin-bottom:6px;font-size:12.5px}
.gd-val-row.err{border-left:3px solid var(--warn,#c60)}
.gd-val-row.warn{border-left:3px solid var(--line-2,var(--line))}
.gd-val-el{color:var(--text-2);overflow-wrap:anywhere}
.gd-val-detail{color:var(--text);overflow-wrap:anywhere}
.gd-val-detail code{background:var(--warn-soft);padding:1px 5px;border-radius:5px;font-size:12px}
.gd-val-detail i{color:var(--accent,#c00);font-style:normal;font-weight:600}
@media (max-width:560px){.gd-val-row{grid-template-columns:1fr}}
.gd-xp-cache{font-size:11px;font-weight:700;color:var(--ok-text,#2a9d5c);background:var(--ok-soft,rgba(42,157,92,.12));border-radius:4px;padding:1px 6px}
.fk-over70{color:var(--warn-text,#a60);font-weight:700;cursor:help}

/* Exportvorschau: vier getrennte Maßstäbe (Herstellerkapazität / dokumentiert / Schutzprüfung / getestet).
   Herkunft steht IMMER am Wert – so kann keine Schätzung wie eine gesicherte Kapazität aussehen. */
.gd-lim{display:grid;gap:10px;margin:8px 0}
.gd-lim-b{border:1px solid var(--line,#dde);border-left:3px solid var(--line,#dde);border-radius:6px;padding:8px 10px;font-size:13px}
.gd-lim-b.ok{border-left-color:#2a8}
.gd-lim-b.bad{border-left-color:#c33}
.gd-lim-b.note{border-left-color:#e9a13b}
.gd-lim-b b{display:block;margin-bottom:4px}
.gd-lim-b ul{margin:4px 0 4px 18px;padding:0}
.gd-lim-b li{margin:2px 0}
.gd-lim-b p{margin:4px 0}
.gd-lim-warn{color:var(--muted,#667);font-style:italic}
.gd-src{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:9px;background:var(--chip-bg,#eef1f6);color:var(--muted,#667);font-size:11px;cursor:help;white-space:nowrap}
.gd-viol{margin:6px 0;padding:6px 8px;border-radius:5px;background:rgba(204,51,51,.08)}
.gd-viol-rat{color:var(--text,#223);font-weight:600}
.gd-xp-keep{margin-top:4px;color:#2a8;font-size:12.5px}
.gd-xp-tech,.gd-xp-limits{margin:8px 0}
.gd-xp-techbody{font-size:12px;color:var(--muted,#667);line-height:1.7;padding:6px 2px}
.fk-over70{color:#a60;font-weight:700;cursor:help}
@media (prefers-color-scheme:dark){
  .gd-src{background:rgba(255,255,255,.08)}
  .gd-viol{background:rgba(255,90,90,.12)}
}

/* ===== Messgeräteseite: der Technikerprozess ================================================
   Sechs Schritte in der Reihenfolge, in der sie draußen anfallen. Genau EIN Schritt ist
   hervorgehoben (der nächste sinnvolle); Erledigtes ist abgehakt; Gesperrtes nennt den Grund. */
.gd-proc{display:grid;gap:8px;margin:10px 0}
.gd-proc-step{display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;
  padding:12px 14px;border:1px solid var(--line,#dde);border-radius:9px;background:var(--card,#fff)}
.gd-proc-step.fertig{opacity:.72}
.gd-proc-step.fertig .gd-proc-nr{background:#2a8;color:#fff;border-color:#2a8}
.gd-proc-step.spaeter{opacity:.55}
.gd-proc-step.aktiv{border-color:#C20000;box-shadow:0 0 0 2px rgba(194,0,0,.10)}
.gd-proc-step.aktiv .gd-proc-nr{background:#C20000;color:#fff;border-color:#C20000}
.gd-proc-nr{width:30px;height:30px;border-radius:50%;border:1.5px solid var(--line,#dde);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}
.gd-proc-t{font-weight:650}
.gd-proc-x{font-size:12.5px;color:var(--muted,#667);margin-top:2px}
.gd-proc-lock{font-size:12px;color:#a60;margin-top:4px}
.gd-proc-act{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}

/* ===== Aufteilungs-Assistent ===== */
.gd-split-sec{margin:14px 0}
.gd-split-sec>b{display:block;margin-bottom:6px}
.gd-split-modes{display:grid;gap:6px}
.gd-split-mode{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:start;
  padding:9px 11px;border:1px solid var(--line,#dde);border-radius:7px;cursor:pointer}
.gd-split-mode.on{border-color:#C20000;background:rgba(194,0,0,.04)}
.gd-split-mode input{grid-row:1/3}
.gd-split-mode-t{font-weight:600}
.gd-split-mode-h{font-size:12px;color:var(--muted,#667);grid-column:2}
.gd-split-vorschlag{margin:12px 0}
.gd-split-v{padding:10px 12px;border-radius:7px;border-left:3px solid}
.gd-split-v.ok{border-left-color:#2a8;background:rgba(34,170,136,.07)}
.gd-split-v.note{border-left-color:#e9a13b;background:rgba(233,161,59,.09)}
.gd-split-v b{display:block;margin-bottom:3px}
.gd-split-hint{color:var(--muted,#667);font-size:12.5px}

/* ===== Teilprojekt-Tabelle ===== */
.gd-tp-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.gd-tp{width:100%;border-collapse:collapse;font-size:13px;min-width:640px}
.gd-tp th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.03em;
  color:var(--muted,#667);padding:6px 8px;border-bottom:1px solid var(--line,#dde);white-space:nowrap}
.gd-tp td{padding:8px;border-bottom:1px solid var(--line-soft,#eef0f4);vertical-align:top}
.gd-tp-nr{color:var(--muted,#667);white-space:nowrap}
.gd-tp-h{font-size:11.5px;color:var(--muted,#667);margin-top:2px}
.gd-tp-st{display:inline-block;padding:2px 8px;border-radius:9px;font-size:11.5px;white-space:nowrap}
.gd-tp-st.offen{background:var(--chip-bg,#eef1f6);color:var(--muted,#667)}
.gd-tp-st.aktiv{background:rgba(233,161,59,.16);color:#8a5a12}
.gd-tp-st.fertig{background:rgba(34,170,136,.16);color:#186}
.gd-amp{display:inline-block;width:10px;height:10px;border-radius:50%}
.gd-amp.gruen{background:#2a8}.gd-amp.gelb{background:#e9a13b}.gd-amp.rot{background:#c33}

/* Patch-Basis-Hinweis in der Exportvorschau */
.gd-xp-base{margin:10px 0;padding:10px 12px;border-radius:7px;border-left:3px solid}
.gd-xp-base.ok{border-left-color:#2a8;background:rgba(34,170,136,.07)}
.gd-xp-base.note{border-left-color:#e9a13b;background:rgba(233,161,59,.09)}
.gd-xp-base-tx{font-size:12.5px;color:var(--muted,#667);margin-top:3px}
.gd-xp-base-warn{font-size:12.5px;color:#8a5a12;margin-top:4px}
.gd-tech{margin:10px 0}

@media (max-width:720px){
  .gd-proc-step{grid-template-columns:28px 1fr;gap:8px}
  .gd-proc-act{grid-column:1/3;justify-content:flex-start;margin-top:6px}
  .gd-proc-act .btn{flex:1 1 auto}
}
@media (prefers-color-scheme:dark){
  .gd-tp-st.offen{background:rgba(255,255,255,.08)}
  .gd-split-mode.on{background:rgba(194,0,0,.12)}
}

/* ===== Alpha-Hinweis: sichtbar, aber einklappbar und nicht störend ===== */
.gd-alpha{margin:10px 0;border:1px solid #e9a13b;border-radius:8px;background:rgba(233,161,59,.07)}
.gd-alpha>summary{padding:9px 12px;cursor:pointer;font-weight:600;font-size:13px;list-style:none;display:flex;align-items:center;gap:8px}
.gd-alpha>summary::-webkit-details-marker{display:none}
.gd-alpha-badge{background:#e9a13b;color:#2b1c04;font-size:10px;font-weight:800;letter-spacing:.06em;padding:2px 7px;border-radius:9px}
.gd-alpha-body{padding:0 12px 11px 12px;font-size:12.5px}
.gd-alpha-body ul{margin:4px 0 8px 18px;padding:0}
.gd-alpha-body li{margin:4px 0}
.gd-alpha-perm{padding-top:6px;border-top:1px solid rgba(233,161,59,.35)}
.gd-alpha-ok{color:#186}
.gd-alpha-no{color:#8a5a12}

/* ===== Merge-Vorschau nach dem Rücklesen ===== */
.gd-mg-src{font-size:12px;color:var(--muted,#667)}
.gd-mg-kpis{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.gd-mg-sec{margin:12px 0;padding:10px 12px;border-radius:7px;border-left:3px solid #2a8;background:rgba(34,170,136,.06)}
.gd-mg-sec.conflict{border-left-color:#e9a13b;background:rgba(233,161,59,.09)}
.gd-mg-sec>b{display:block;margin-bottom:5px}
.gd-mg-list{font-size:12.5px;line-height:1.7;color:var(--muted,#667)}
.gd-mg-hint{font-size:12px;color:var(--muted,#667);margin:6px 0 0}
.gd-mg-choice{display:flex;gap:8px;align-items:flex-start;margin-top:8px;font-size:12.5px;cursor:pointer}
.gd-mg-ok{margin:12px 0;padding:9px 12px;border-radius:7px;background:rgba(34,170,136,.10);color:#186;font-size:13px}
.gd-mg-warn{margin:10px 0;padding:10px 12px;border-radius:7px;background:rgba(233,161,59,.14);color:#8a5a12;font-size:12.5px}
@media (max-width:720px){ .gd-mg-kpis{gap:6px} }
@media (prefers-color-scheme:dark){
  .gd-alpha{background:rgba(233,161,59,.12)}
  .gd-alpha-ok{color:#4dbd9a} .gd-alpha-no{color:#e9a13b}
}

/* ===================== CRM: Kunde → Standort → Auftrag (js/crmview.js) ===================== */
.crm-detail .gd-sub{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.crm-cards{display:flex;flex-direction:column;gap:16px;margin-top:18px}
.crm-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:14px;padding:16px 18px}
.crm-card-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.crm-card-h h2{font-size:15px;font-weight:800;margin:0;color:var(--text-strong)}
.crm-kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px 22px}
.crm-kv-r{display:flex;flex-direction:column;gap:1px;min-width:0;padding:6px 0;border-bottom:1px dashed var(--border-subtle)}
.crm-kv-r span{font-size:11.5px;color:var(--text-3);font-weight:600}
.crm-kv-r b{font-size:13.5px;color:var(--text-strong);font-weight:600;overflow-wrap:anywhere}
.crm-status{display:inline-flex;align-items:center;height:var(--pill-h);padding:0 var(--pill-pad-x);border-radius:var(--pill-radius);font-size:var(--pill-font);font-weight:var(--pill-weight);white-space:nowrap}
.crm-status-plan{background:var(--surface-sunken);color:var(--text-2)}
.crm-status-work{background:rgba(37,99,235,.12);color:#2563eb}
.crm-status-done{background:rgba(22,163,74,.12);color:#16a34a}
.crm-status-storno{background:rgba(194,0,0,.10);color:#c20000}
.crm-status-ok{background:var(--ok-soft);color:var(--ok-text)}
.crm-status-warn{background:var(--warn-soft);color:var(--warn-text)}
.crm-status-bad{background:var(--bad-soft);color:var(--bad-text)}
.crm-status-info{background:var(--info-soft);color:var(--info)}
.crm-status-neutral{background:var(--surface-secondary);color:var(--text-2)}
.crm-row{cursor:pointer}
.crm-row:hover td{background:var(--surface-hover)}
.crm-proto{cursor:pointer}
.crm-proto:hover td{background:var(--surface-hover)}
.crm-sub-h{font-size:12.5px;font-weight:700;color:var(--text-3);margin:12px 0 6px;text-transform:uppercase;letter-spacing:.03em}
.crm-statusseg{flex-wrap:wrap}
.crm-arten{display:flex;flex-wrap:wrap;gap:8px 14px;padding:6px 0}
.crm-art{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--text-strong);cursor:pointer}
.crm-art input{width:16px;height:16px;accent-color:var(--esg-red)}

/* ---- Breadcrumb: Kundenbereich › Kunde › Standort › Auftrag (durchgängige Navigation, §11) ---- */
.crm-crumbs{display:flex;align-items:center;flex-wrap:wrap;gap:2px 4px;margin:0 0 12px;font-size:13px}
.crm-crumb{font-family:var(--font);border:none;background:none;padding:2px 6px;border-radius:7px;cursor:pointer;color:var(--text-2);font-size:13px;font-weight:500;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.crm-crumb:hover{background:var(--surface-2);color:var(--esg-red)}
.crm-crumb-cur{color:var(--text-strong);font-weight:600;cursor:default}
.crm-crumb-cur:hover{background:none;color:var(--text-strong)}
.crm-crumb-sep{color:var(--text-3);font-size:12px}

/* ---- Detail-Reiter (Kunde/Standort/Auftrag): segmentierte Leiste + clientseitig getauschte Panels ---- */
.crm-dtabs{margin:2px 0 18px;max-width:100%;flex-wrap:wrap;overflow-x:auto}
.crm-dtab-n{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 5px;margin-left:5px;border-radius:999px;background:var(--surface-sunken);color:var(--text-3);font-size:10.5px;font-weight:700;vertical-align:middle}
.set-segbtn.on .crm-dtab-n{background:var(--esg-red-soft);color:var(--esg-red)}
.crm-dpanel[hidden]{display:none}
.crm-dpanel .crm-cards{margin-top:0}

/* ---- Übersicht-Kacheln auf den Detailseiten ---- */
.crm-ov-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.crm-ovstat{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--wf-card-radius);padding:14px 16px}
.crm-ovstat .os-n{font-size:24px;font-weight:800;color:var(--text-strong);line-height:1.1;letter-spacing:-.01em}
.crm-ovstat .os-l{font-size:12px;color:var(--text-3);font-weight:600;margin-top:3px}
.crm-ovstat.accent .os-n{color:var(--esg-red)}

@media (max-width:820px),(max-height:500px){
  .crm-kv{grid-template-columns:1fr}
  .crm-card{padding:14px}
  .crm-ov-stats{grid-template-columns:1fr 1fr}
}

/* ===================== Zuweisungen, Versionen, Diff (js/crmview.js) ===================== */
.crm-avatar{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex:none;border-radius:50%;background:var(--surface-sunken);color:var(--text-strong);font-size:12.5px;font-weight:800;letter-spacing:.02em}
.crm-asg{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px dashed var(--border-subtle)}
.crm-asg:last-child{border-bottom:none}
.crm-asg-off{opacity:.55}
.crm-asg-tx{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.crm-asg-tx b{font-size:14px;color:var(--text-strong)}
.crm-asg-tx>span{font-size:12.5px;color:var(--text-2);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.crm-asg-sub{font-size:11.5px;color:var(--text-3)}
.crm-asg-act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.crm-asg-act .btn.danger{color:#c20000}
.crm-ver{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px dashed var(--border-subtle)}
.crm-ver:last-child{border-bottom:none}
.crm-ver-sel{display:flex;align-items:center;padding-top:3px}
.crm-ver-sel input{width:16px;height:16px;accent-color:var(--esg-red)}
.crm-ver-tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.crm-ver-tx b{font-size:13.5px;color:var(--text-strong);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.crm-ver-tx>span{font-size:12px;color:var(--text-2)}
.crm-diff{display:flex;flex-direction:column;gap:6px;max-height:46vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.crm-diff-r{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border-subtle);border-radius:10px;background:var(--surface-card);cursor:pointer}
.crm-diff-r input{width:16px;height:16px;flex:none;accent-color:var(--esg-red)}
.crm-diff-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.crm-diff-tx b{font-size:13px;color:var(--text-strong)}
.crm-diff-tx span{font-size:11.5px;color:var(--text-3)}

/* ===================== Meine Aufträge (Home) ===================== */
.ma-chips{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 12px}
.ma-chip{border:1px solid var(--border-subtle);background:var(--surface-card);color:var(--text-2);border-radius:999px;padding:7px 14px;font-size:12.5px;font-weight:600;cursor:pointer;font-family:var(--font)}
.ma-chip.on{background:var(--text-strong);color:var(--surface-card);border-color:var(--text-strong)}
.ma-list{display:flex;flex-direction:column;gap:14px}
.ma-gh{font-size:12px;font-weight:800;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
.ma-gh.ma-late{color:#c20000}
.ma-group{display:flex;flex-direction:column}
.ma-card{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto auto;gap:6px 16px;align-items:center;text-align:left;width:100%;
  border:1px solid var(--border-subtle);border-radius:12px;background:var(--surface-card);padding:12px 14px;margin-bottom:8px;cursor:pointer;font-family:var(--font)}
.ma-card:hover{background:var(--surface-hover)}
.ma-c1,.ma-c2{display:flex;flex-direction:column;gap:2px;min-width:0}
.ma-c1 b{font-size:14px;color:var(--text-strong)}
.ma-c1 span,.ma-c2 span{font-size:12px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ma-c3{display:flex;flex-direction:column;gap:4px;align-items:flex-end}
.ma-role{font-size:11px;font-weight:700;color:var(--text-2);background:var(--surface-sunken);border-radius:999px;padding:2px 9px;white-space:nowrap}
.ma-role.ma-pool{color:#b25000;background:rgba(233,161,59,.14)}
.ma-c4{display:flex;flex-direction:column;gap:2px;align-items:flex-end;font-size:11.5px;color:var(--text-3)}
.ma-open{color:#b25000;font-weight:700}
@media (max-width:820px),(max-height:500px){
  .ma-card{grid-template-columns:minmax(0,1fr) auto}
  .ma-c2{display:none}
  .ma-c4{flex-direction:row;gap:8px;grid-column:1/-1;justify-content:flex-start}
}

/* ===================== Globale Suche (js/search.js) ===================== */
.gs-ov{position:fixed;inset:0;z-index:10700;background:rgba(15,15,18,.42);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding:9vh 16px 16px}
.gs-box{width:100%;max-width:640px;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:16px;box-shadow:0 30px 80px rgba(0,0,0,.35);display:flex;flex-direction:column;max-height:74vh;overflow:hidden}
.gs-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border-subtle);flex:none}
.gs-ic{display:inline-flex;color:var(--text-3);flex:none}
.gs-ic svg,.gs-back svg{width:19px;height:19px}
/* WICHTIG: margin:0 + height:auto überschreiben die globalen Formularregeln (input{margin-top:7px;
   height:44px}), die das Feld sonst nach unten aus der Mittelachse der Leiste schieben. So liegen
   Lupe, Eingabetext, Archiv-Häkchen und Esc exakt auf EINER Höhe (align-items:center der .gs-head). */
.gs-head input{flex:1;min-width:0;margin:0;height:auto;border:none;outline:none;background:transparent;font-size:16px;line-height:1.2;color:var(--text-strong);font-family:var(--font)}
/* Randloses Suchfeld in der Leiste: KEIN eigener roter Fokusring (globaler input:focus-Ring) –
   sonst wirkt nur das Feld „eingerahmt", Lupe/Archiv/Esc daneben aber nicht (uneinheitlich). Die
   ganze Suchleiste ist bereits der Fokuskontext. */
.gs-head input:focus{box-shadow:none;border:none}
/* .gs-arch ist ein <label> – globales label{margin-bottom} würde es nach oben aus der Linie ziehen. */
.gs-arch{display:inline-flex;align-items:center;gap:5px;margin:0;font-size:11.5px;color:var(--text-3);white-space:nowrap;cursor:pointer}
.gs-arch input{width:14px;height:14px;margin:0;accent-color:var(--esg-red)}
.gs-kbd{font-size:10.5px;font-weight:700;color:var(--text-3);border:1px solid var(--border-subtle);border-radius:6px;padding:2px 6px}
.gs-back{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;flex:none;border:none;background:var(--surface-sunken);border-radius:50%;color:var(--text-strong);cursor:pointer}
.gs-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:8px}
.gs-group{margin-bottom:10px}
.gs-gh{font-size:11px;font-weight:800;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;padding:6px 10px 4px}
.gs-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;border:none;background:transparent;border-radius:10px;padding:9px 10px;cursor:pointer;font-family:var(--font)}
.gs-item.on,.gs-item:hover{background:var(--surface-hover)}
.gs-item-ic{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex:none;border-radius:9px;background:var(--surface-sunken);color:var(--text-2)}
.gs-item-ic svg{width:16px;height:16px}
.gs-item-tx{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.gs-item-tx b{font-size:13.5px;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gs-item-tx span{font-size:11.5px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gs-item-go{display:inline-flex;color:var(--text-3);flex:none}
.gs-item-go svg{width:15px;height:15px}
.gs-recent{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:none;background:transparent;border-radius:10px;padding:8px 10px;cursor:pointer;color:var(--text-2);font-size:13px;font-family:var(--font)}
.gs-recent:hover{background:var(--surface-hover)}
.gs-recent svg{width:15px;height:15px;color:var(--text-3)}
.gs-empty{padding:26px 18px;text-align:center;color:var(--text-3);font-size:13px;line-height:1.5}
/* Mobil: eigene Vollbildseite statt Desktop-Popover */
.gs-ov.gs-mobile{padding:0;align-items:stretch;background:var(--surface-app);backdrop-filter:none}
.gs-ov.gs-mobile .gs-box{max-width:none;max-height:none;height:100%;border:none;border-radius:0;box-shadow:none;background:var(--surface-app)}
.gs-ov.gs-mobile .gs-head{padding:calc(10px + env(safe-area-inset-top,0px)) 14px 10px;background:var(--surface-card)}
.gs-ov.gs-mobile .gs-body{padding:10px 12px calc(24px + env(safe-area-inset-bottom,0px))}
@media (prefers-reduced-motion:reduce){.gs-ov{backdrop-filter:none}}

/* ===================== Prüfobjekt-Wizard (js/objektwizard.js) ===================== */
.owz-banner{display:flex;align-items:center;gap:14px;padding:16px 18px;margin-bottom:20px;
  border:1.5px solid var(--esg-red);border-radius:14px;background:rgba(194,0,0,.05)}
.owz-banner-ic{display:flex;align-items:center;justify-content:center;width:42px;height:42px;flex:none;
  border-radius:11px;background:var(--esg-red);color:#fff}
.owz-banner-ic svg{width:20px;height:20px}
.owz-banner-tx{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.owz-banner-tx b{font-size:15px;color:var(--text-strong)}
.owz-banner-tx span{font-size:13px;color:var(--text-2);line-height:1.4}
.owz-banner .btn{flex:none}

.owz-ov{position:fixed;inset:0;z-index:9500;background:var(--surface-app);display:flex;align-items:center;justify-content:center;padding:24px}
.owz-box{width:100%;max-width:640px;max-height:92vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  background:var(--surface-card);border-radius:20px;box-shadow:0 30px 80px rgba(0,0,0,.28);padding:26px 28px 22px;display:flex;flex-direction:column}
.owz-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.owz-eyebrow{font-size:12.5px;font-weight:800;color:var(--esg-red);text-transform:uppercase;letter-spacing:.04em}
.owz-dots{display:flex;gap:7px;margin-bottom:18px}
.owz-dot{flex:1;height:5px;border-radius:999px;background:var(--surface-sunken)}
.owz-dot.done{background:var(--esg-red);opacity:.55}
.owz-dot.on{background:var(--esg-red)}
.owz-title{font-size:24px;font-weight:800;color:var(--text-strong);margin:0 0 18px}
.owz-body{display:flex;flex-direction:column;gap:18px;flex:1}
.owz-fld{display:flex;flex-direction:column;gap:8px}
.owz-fld-lbl{font-size:14.5px;font-weight:700;color:var(--text-strong)}
.owz-in{width:100%;box-sizing:border-box;padding:14px 16px;font-size:16px;border:1.5px solid var(--border-subtle);
  border-radius:12px;background:var(--surface-card);color:var(--text-strong)}
.owz-in:focus{outline:none;border-color:var(--esg-red)}
.owz-fld-help{font-size:12.5px;color:var(--text-3);line-height:1.4}
.owz-textarea{resize:vertical;min-height:84px;font-family:var(--font)}
.owz-unit{display:flex;align-items:stretch;gap:0}
.owz-unit .owz-in{border-top-right-radius:0;border-bottom-right-radius:0}
.owz-unit-sfx{display:flex;align-items:center;padding:0 14px;font-size:15px;font-weight:700;color:var(--text-2);
  background:var(--surface-secondary);border:1.5px solid var(--border-subtle);border-left:none;border-top-right-radius:12px;border-bottom-right-radius:12px}
.owz-fld-repeat{gap:10px}
.owz-rep{display:flex;flex-direction:column;gap:10px}
.owz-rep-row{display:flex;gap:8px;align-items:flex-end;padding:10px;border:1px solid var(--border-subtle);border-radius:12px;background:var(--surface-card);flex-wrap:wrap}
.owz-rep-fld{display:flex;flex-direction:column;gap:4px;flex:1 1 140px;min-width:0}
.owz-rep-fld span{font-size:12px;color:var(--text-3);font-weight:600}
.owz-rep-in{width:100%;box-sizing:border-box;padding:10px 12px;font-size:14px;border:1.5px solid var(--border-subtle);border-radius:9px;background:var(--surface-card);color:var(--text-strong)}
.owz-rep-del{flex:none}
.owz-rep-add{align-self:flex-start}
.owz-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.owz-choice{padding:16px 14px;min-height:56px;font-size:15px;font-weight:700;color:var(--text-strong);
  border:1.5px solid var(--border-subtle);border-radius:14px;background:var(--surface-card);cursor:pointer;font-family:var(--font)}
.owz-choice:active{transform:scale(.98)}
.owz-choice.on{border-color:var(--esg-red);background:rgba(194,0,0,.08);color:var(--esg-red)}
.owz-count{display:flex;align-items:center;gap:14px}
.owz-count-btn{width:52px;height:52px;flex:none;border-radius:14px;border:1.5px solid var(--border-subtle);
  background:var(--surface-card);color:var(--text-strong);font-size:26px;font-weight:700;cursor:pointer;line-height:1}
.owz-count-btn:active{background:var(--surface-hover)}
.owz-count-in{flex:1;text-align:center;font-size:22px;font-weight:800;padding:12px;border:1.5px solid var(--border-subtle);
  border-radius:14px;background:var(--surface-card);color:var(--text-strong);min-width:0}
.owz-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:22px;padding-top:18px;border-top:1px solid var(--border-subtle)}
.owz-foot .btn{min-height:48px;padding:0 20px;font-size:15px}
.owz-step-of{font-size:12.5px;color:var(--text-3);white-space:nowrap}
@media (max-width:820px),(max-height:500px){
  .owz-ov{padding:0}
  .owz-box{max-width:none;max-height:none;height:100%;border-radius:0;box-shadow:none;
    padding:calc(20px + env(safe-area-inset-top,0px)) 18px calc(18px + env(safe-area-inset-bottom,0px))}
  .owz-title{font-size:21px}
  .owz-choices{grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion:reduce){.owz-choice{transition:none}}

/* Prüfobjekt-Wizard-Option im Einstiegs-Chooser (js/app.js openStructureChooser) – als
   empfohlener Weg optisch hervorgehoben, gleiche Touchfläche wie die übrigen sc-opt. */
.sc-opt-wizard{border-color:var(--esg-red)}
.sc-opt-wizard .sc-ic-wizard{background:var(--esg-red);color:#fff}

/* Einstellungen – Nav-Gruppenüberschrift (z. B. „Prüfworkflows" über dem Wizard-Eintrag) */
.set-nav-grp{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);margin:14px 0 2px 14px}
.set-nav-grp:first-child{margin-top:0}

/* Einstellungen – Prüfobjekt-Wizard-Konfiguration (js/settings.js wizardCfgPanelHtml) */
.wc-addbtn{display:flex;align-items:center;gap:6px;color:var(--esg-red)}
.wc-headrow{display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;margin-bottom:16px}
.wc-lbl-inline{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--text-2)}
.wc-lbl-inline input[type=text],.wc-lbl-inline input:not([type]),#wcLabel{height:38px;padding:0 12px;border:1.5px solid var(--border-subtle);border-radius:9px;background:var(--surface-card);color:var(--text-strong);font-size:14px;font-family:var(--font)}
.wc-structured{gap:6px}
.wc-key{font-size:12px;color:var(--text-3)}
.wc-key code{background:var(--surface-2);padding:2px 6px;border-radius:6px}
.wc-steps{display:flex;flex-direction:column;gap:14px}
.wc-step{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--surface-2)}
.wc-step-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.wc-step-title{flex:1;min-width:0;height:38px;padding:0 12px;border:1.5px solid var(--border-subtle);border-radius:9px;background:var(--surface-card);color:var(--text-strong);font-size:14px;font-weight:700;font-family:var(--font)}
.wc-addstep{align-self:flex-start;margin-top:14px}
.wc-field{border:1px solid var(--border-subtle);border-radius:10px;padding:10px;background:var(--surface-card);margin-bottom:10px;display:flex;flex-direction:column;gap:8px}
.wc-field-row1{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.wc-field-row1 .wc-fkey{flex:0 1 140px}
.wc-field-row1 .wc-flabel{flex:1 1 180px}
.wc-field-row2{display:flex;flex-wrap:wrap;gap:8px}
.wc-field-row2 .wc-in{flex:1 1 160px}
.wc-field-row2 .wc-num{flex:0 1 90px}
.wc-field-row3{font-size:13px}
.wc-field-row3 select,.wc-field-row3 .wc-in{height:34px;padding:0 8px;border:1.5px solid var(--border-subtle);border-radius:8px;background:var(--surface-2);color:var(--text-strong);font-size:13px;font-family:var(--font)}
.wc-field-row3 .wc-in{width:180px}
.wc-field-row4{display:flex}
.wc-optlbl{flex-direction:column;align-items:stretch;width:100%}
.wc-in{box-sizing:border-box;padding:8px 10px;border:1.5px solid var(--border-subtle);border-radius:8px;background:var(--surface-2);color:var(--text-strong);font-size:13.5px;font-family:var(--font)}
.wc-in:focus{outline:none;border-color:var(--esg-red)}
.wc-opttext,.wc-jsontext{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;resize:vertical;min-height:60px}
.wc-json-err{border-color:var(--esg-red);background:rgba(194,0,0,.06)}
.wc-chk{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-2);white-space:nowrap}
.wt-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 18px}
.wt-status{font-size:13px;font-weight:600;color:var(--text-2)}
.wt-status.ok{color:var(--ok-text)}
.wt-status.warn{color:var(--warn-text)}
.wt-actions{display:flex;gap:8px;flex-wrap:wrap}
@media (max-width:820px){
  .wc-field-row1{flex-direction:column;align-items:stretch}
  .wc-field-row1 .wc-fkey,.wc-field-row1 .wc-flabel,.wc-field-row1 .wc-ftype{flex:none;width:100%}
  .wc-field-row3 .wc-in{width:100%}
}
