
  /* ===================================================================
     enerson.tech — Oberflaeche "Schaltplan"

     Leitgedanke
       Ein Elektrobetrieb liest den ganzen Tag Schemata. Also liest sich
       auch diese Oberflaeche wie eines: ein ruhiges Raster traegt die
       Flaeche, Platten sitzen darauf und sind mit einer Klemme an der
       linken Kante angeschlossen. Haarlinien statt Kaesten.

     Die eine Regel, die alles zusammenhaelt
       Was BESCHREIBT, laeuft in der Grotesk. Was IDENTIFIZIERT oder
       MISST — Nummern, Codes, Betraege, Datum, Kuerzel — laeuft in der
       Schreibmaschinenschrift mit gleichbreiten Ziffern. Dieser Kontrast
       wird mit jeder zusaetzlichen Datenzeile staerker, statt zu ermueden.

     Farbe
       Blau ist die Leitung: alles Bedienbare, Verknuepfte, Aktive.
       Rot ist ausschliesslich der Fehler und der negative Betrag.
       Vorher war beides rot — in einer Anwendung mit Minusbetraegen in
       der Rechnung ist das eine Verwechslung, die Geld kosten kann.

     Warum das Raster grob ist
       Ein 8px-Raster liegt auf Windows-Arbeitsplaetzen mit 125 %- oder
       150 %-Skalierung auf gebrochenen Geraetepixeln und flimmert beim
       Rollen. 48px sind gross genug, dass das nicht auffaellt.

     Keine Abhaengigkeiten: Systemschriften, CSS-Verlaeufe, sonst nichts.
     =================================================================== */
  :root{
    color-scheme:light;

    /* Papier mit einem Hauch Blau — kuehler als Weiss, aber nicht kalt */
    --bg:#e9edf1;
    --panel:#ffffff;
    --ink:#0e151b;
    --ink-2:#33414d;
    /* 5.9:1 auf Weiss. Der alte Wert lag bei 4.5:1 und trug
       10.5px-Versalien — formal bestanden, praktisch zu blass. */
    --muted:#5c6874;
    --line:#b6c2cd;
    --line-soft:#dde4ea;

    /* Klemmenblau. Fuehrt, verknuepft, markiert das Aktive. */
    --accent:#0f52c8;
    --accent-soft:#e4ecfb;
    /* Muss auf --accent-soft lesbar sein, nicht auf --accent. 8.9:1. */
    --accent-ink:#0a3a91;

    --ok:#0a6f3f;   --ok-soft:#dcf1e6;
    --warn:#8a5300; --warn-soft:#fbedd6;
    --bad:#b8172c;  --bad-soft:#fbe0e3;

    --radius:3px;
    /* Bleibt eine Border-Kurzschreibweise: wird als border:var(--rail)
       benutzt. Die Klemmenbreite steht getrennt in --klemme. */
    --rail:1px solid var(--line);
    --klemme:3px;

    --schrift:-apple-system,BlinkMacSystemFont,"Segoe UI Variable Text","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,"Cascadia Mono",Consolas,"Liberation Mono",monospace;

    /* nur intern */
    --raster:#c9d4de;
    --platte:0 1px 2px rgba(14,21,27,.05);
    --senke:inset 0 1px 2px rgba(14,21,27,.09);
    --bg2:var(--bg);

    /* Gerüst (Runde 1, Entwurf B): Tokens der Anmeldemaske «Schaltplan 2.0»
       und die Abbildung des Fenstergerüsts darauf. Die alten Namen bleiben,
       damit alle Inhaltsregeln weiter greifen. */
    --band:#f1f3f8;          /* zweite, leicht abgesetzte Fläche (Menüband, Spaltenköpfe) */
    --feld:#ffffff;
    --feldrand:#7d8798;      /* 3.63:1 auf Weiss — der Feldrand der Anmeldung */
    --knopf:#0f52c8;
    --knopf-ink:#ffffff;
    --grid:rgba(15,82,200,.070);
    --grid-fine:rgba(15,82,200,.032);
    --titel:var(--knopf);
    --titel-ink:var(--knopf-ink);
    --register:var(--bg);
    --baum-aktiv:var(--accent-soft);
    --markiert:var(--accent-soft);
    --markiert-ink:var(--accent-ink);
    --status-ink:var(--accent-ink);
    /* Masse: Zeilen 18 px wie im Original (Entscheid Ivi 16.09.2026), Schieber 16–28 */
    --zeile:18px;
    --schriftgrad:12px;
    --h-titel:26px;
    --h-register:28px;
    --h-band:90px;
    --h-vorgabe:32px;
    --h-status:22px;
    --b-baum:168px;          /* Vorlage ca. 160 px; 8 px mehr, damit «Service-Rapporte F6» ungekürzt steht */

    /* 0.35.0 (C6): Bereichsfarben des Verteilers — Klemmenblau / Kupfer / Gruenspan / Violett. Nur an Ader, Schiene,
       Klemme und Balken; Text traegt NIE die Bereichsfarbe (dataviz-Regel, F). GEMESSEN 19.09.2026 (mess/kontrast.py)
       auf Weiss: 6.86 / 5.32 / 4.01 / 6.30 — alle >= 3:1 fuer Linien; Zeit laege als Text unter 4.5:1, wird nie Text.
       Leiste unten (Handy) ist das Firmenband: Nachtblau der Startseite, hautunabhaengig; --l-* sind die
       Bereichsfarben AUF Nachtblau (7.05 / 8.70 / 9.57 / 7.98), --leiste-ink 10.5:1, Weiss 15.5:1. */
    --f-auftrag:#0f52c8; --f-service:#b8470a; --f-zeit:#0a8f7c; --f-cloud:#7a3fc4;
    --leiste:#16214c; --leiste-ink:#c9d3ff; --leiste-hell:#ffffff;
    --l-auftrag:#7fb0ff; --l-service:#ffb084; --l-zeit:#5ee0c9; --l-cloud:#c6adff; --l-start:#9fb0e6;
    --vt-fira:"Fira Sans",var(--schrift);
    --vt-text:"Manrope",var(--schrift);

    /* 0.35.1 (S2): bisher fest kodierte Farben als Variablen — die Klassisch-Werte sind die bisherigen Pixel. Die
       Haeute Fokus/Nachtblau und beide Dunkelsaetze setzen sie um; der Druckblock setzt sie zurueck (G4-Regel). */
    --sammel:#1d4ed8;
    --zustand-entwurf:#b26a00; --zustand-aktiv:#1a56c4; --zustand-bezahlt:#1a7f37; --zustand-storniert:#b3261e; --zustand-import:#666;
    --schleier:rgba(8,13,18,.5); --schleier-stark:rgba(8,13,18,.66);
    --schatten:0 12px 28px -12px rgba(0,0,0,.35); --schatten-hinweis:0 12px 28px -12px rgba(0,0,0,.45);
    --schatten-gross:0 18px 56px rgba(0,0,0,.42); --schatten-schicht:-8px 0 20px rgba(0,0,0,.16); --schatten-blatt:0 -12px 40px rgba(8,13,18,.28);
    --rollrand:rgba(0,0,0,.16);
    --titel-rand:rgba(255,255,255,.55); --titel-rand-hover:rgba(255,255,255,.8); --titel-fuell-hover:rgba(255,255,255,.14);
    --titel-konto-rand:rgba(255,255,255,.45); --titel-konto-fuell:rgba(255,255,255,.12); --titel-konto-fuell-hover:rgba(255,255,255,.2);
    --titel-pfeil:rgba(255,255,255,.75); --titel-ring:rgba(255,255,255,.7); --titel-zeichen-bg:#fff; --titel-zeichen-ink:var(--knopf);
    /* Tokens der Haeute (Fokus/Nachtblau) — in Klassisch ohne eigene Wirkung */
    --zebra:var(--panel); --hover:var(--band); --chip:var(--band); --glas:transparent; --glas-rand:var(--line-soft);
    --glow:none; --glow-farbe:var(--accent); --klemme-farbe:var(--accent); --schrift-titel:var(--schrift);
  }

  /* Dunkel: gleiche Geometrie, gedrehte Leuchtdichte. Einmal definiert,
     zweimal angewandt — ueber die Systemeinstellung und ueber den
     Schalter. Die ausdrueckliche Wahl gewinnt in BEIDE Richtungen. */
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="hell"]){
      color-scheme:dark;
      --bg:#0c1116; --panel:#151d25; --ink:#e2eaf2; --ink-2:#b0bfcc;
      --muted:#8d9caa; --line:#2e3b47; --line-soft:#202a34;
      --accent:#5aa2ff; --accent-soft:#14294a; --accent-ink:#b9d5ff;
      --ok:#41d18d;   --ok-soft:#0e2a20;
      --warn:#e2a640; --warn-soft:#2f2314;
      --bad:#ff6b7a;  --bad-soft:#341620;
      --raster:#1c2732;
      --platte:0 1px 2px rgba(0,0,0,.5);
      --senke:inset 0 1px 2px rgba(0,0,0,.45);
    /* Gerüst dunkel: Werte aus Entwurf B, Markierungen gedämpft nach Entwurf C */
    --band:#10151f; --feld:#0d1119; --feldrand:#62718c; --knopf:#1450d0; --knopf-ink:#ffffff;
    --grid:rgba(120,168,255,.085); --grid-fine:rgba(120,168,255,.038);
    --markiert:#2d4a70; --markiert-ink:#eef3fa; --baum-aktiv:#1d3557; --status-ink:#b9d5ff;
    /* 0.35.0 (C6): Bereichsfarben dunkel (Satz aus Entwurf F; auf #151d25 4.59 / 4.70 / 5.37 / 4.75) */
    --f-auftrag:#3d84e8; --f-service:#c96f2e; --f-zeit:#25a381; --f-cloud:#9a6ef0;
    /* 0.35.1 (S2): Zustandsfarben mit >= 4.5:1 auf --panel (vorher #1a56c4 2.57, #b3261e 2.60, #1d4ed8 2.54, #666 2.96) */
    --sammel:#b9d5ff; --zustand-entwurf:#e2a640; --zustand-aktiv:#b9d5ff; --zustand-bezahlt:#41d18d; --zustand-storniert:#ff6b7a; --zustand-import:#8d9caa;
    }
  }
  :root[data-theme="dunkel"]{
    color-scheme:dark;
    --bg:#0c1116; --panel:#151d25; --ink:#e2eaf2; --ink-2:#b0bfcc;
    --muted:#8d9caa; --line:#2e3b47; --line-soft:#202a34;
    --accent:#5aa2ff; --accent-soft:#14294a; --accent-ink:#b9d5ff;
    --ok:#41d18d;   --ok-soft:#0e2a20;
    --warn:#e2a640; --warn-soft:#2f2314;
    --bad:#ff6b7a;  --bad-soft:#341620;
    --raster:#1c2732;
    --platte:0 1px 2px rgba(0,0,0,.5);
    --senke:inset 0 1px 2px rgba(0,0,0,.45);
    /* Gerüst dunkel: Werte aus Entwurf B, Markierungen gedämpft nach Entwurf C */
    --band:#10151f; --feld:#0d1119; --feldrand:#62718c; --knopf:#1450d0; --knopf-ink:#ffffff;
    --grid:rgba(120,168,255,.085); --grid-fine:rgba(120,168,255,.038);
    --markiert:#2d4a70; --markiert-ink:#eef3fa; --baum-aktiv:#1d3557; --status-ink:#b9d5ff;
    /* 0.35.0 (C6): Bereichsfarben dunkel (Satz aus Entwurf F; auf #151d25 4.59 / 4.70 / 5.37 / 4.75) */
    --f-auftrag:#3d84e8; --f-service:#c96f2e; --f-zeit:#25a381; --f-cloud:#9a6ef0;
    /* 0.35.1 (S2): Zustandsfarben mit >= 4.5:1 auf --panel (vorher #1a56c4 2.57, #b3261e 2.60, #1d4ed8 2.54, #666 2.96) */
    --sammel:#b9d5ff; --zustand-entwurf:#e2a640; --zustand-aktiv:#b9d5ff; --zustand-bezahlt:#41d18d; --zustand-storniert:#ff6b7a; --zustand-import:#8d9caa;
  }


  /* ====================================================================
     HAUT JE KONTO (0.35.1, S1/S3/S4, 19.09.2026) — Klassisch / Fokus / Nachtblau

     html[data-haut="fokus"|"nachtblau"]; Klassisch = KEIN Attribut, darum greift
     hier nichts und Klassisch bleibt pixelgleich (Regel). Die Wahl haengt am
     Konto (core.app_user.haut, POST /api/ich/haut) und als Vorab in localStorage
     enerson.haut, das ein 1-Zeilen-Skript im <head> VOR dem Stylesheet liest —
     so faerbt sich die Seite nie erst nach /api/ich um.

     Fokus (Entwurf C): Weiss, Haarlinien, EIN Akzent Firmenblau, Manrope,
     Menueband als flache Textknoepfe mit Piktogramm und Tastenmarke; hell und
     dunkel (Fokus-Grau) — der Modusknopf gilt wie in Klassisch.
     Nachtblau (Entwurf A): die Buehne der Startseite (Glow oben rechts, Raster),
     Glas an Titelleiste/Band/Menues, Firmenblau mit Leuchten an Fokus/aktiv,
     Fira Sans fuer Titel. IMMER dunkel — data-theme hat dort keine Wirkung
     (E-S1-1: «Hell» im Modusknopf wechselt zur Haut Klassisch hell).
     Massregeln (18-px-Zeilen, Baum, Tasten, Handy-Leiste) sind in allen drei
     gleich; die Leiste unten bleibt Nachtblau (Firmenband, --leiste*).
     Strukturregeln der Haeute stehen als Block HAUT-REGELN vor dem Handy-Block
     (gleiche Spezifitaet ueber :where(), darum gewinnen die Handy-Regeln danach
     weiter) — alles unter @media screen, der Druck sieht nur Klassisch hell.
     Kontraste GEMESSEN 19.09.2026 (mess/kontrast-0351.py und b/kontrast-*.out):
     Fokus muted 5.36 (Zebra 4.79, Chip 4.75), Feldrand #868b93 3.43, Klemme
     #2670ed auf #dfeafc 3.74; Fokus dunkel Feldrand #767b85 3.57, Klemme #5aa2ff
     4.60; Nachtblau muted 7.44 (Glas 6.30, markiert 5.00), Feldrand #5b6a92 3.52,
     Knopfrand α.38 3.50, Weiss auf Knopf #2670ed 4.54, Bereichsadern 5.09–5.96.
     ==================================================================== */
  :root[data-haut="fokus"]{
    color-scheme:light;
    --bg:#f4f4f5; --panel:#ffffff; --ink:#1b1d21; --ink-2:#44484f; --muted:#666b73;
    --line:#dcdee2; --line-soft:#ececee;
    --accent:#2670ed; --accent-soft:#eaf1fd; --accent-ink:#1a56c2;
    --ok:#137a45; --ok-soft:#e6f4ec; --warn:#8a5300; --warn-soft:#fbf1df; --bad:#c1202f; --bad-soft:#fbe4e6;
    --radius:6px; --rail:1px solid var(--line-soft); --platte:none; --senke:none; --raster:transparent;
    --schrift:"Manrope",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    --band:#ffffff; --feld:#f3f4f6; --feldrand:#868b93; --knopf:#2670ed; --knopf-ink:#ffffff;
    --grid:transparent; --grid-fine:transparent;
    --titel:#ffffff; --titel-ink:var(--ink); --register:#ffffff; --baum-aktiv:var(--accent-soft);
    --markiert:#dfeafc; --markiert-ink:#0f3f8f; --status-ink:var(--muted);
    --zebra:#f2f2f3; --hover:#eef0f3; --chip:#f0f1f3; --glas-rand:var(--line-soft); --klemme-farbe:#2670ed;
    --schatten:0 14px 36px -10px rgba(20,22,28,.22); --schatten-hinweis:0 14px 36px -10px rgba(20,22,28,.28);
    --schatten-gross:0 24px 60px -18px rgba(20,22,28,.35); --schleier:rgba(20,22,28,.4); --schleier-stark:rgba(20,22,28,.55);
    --rollrand:rgba(0,0,0,.08);
    --sammel:var(--accent-ink); --zustand-entwurf:#8a5300; --zustand-aktiv:#1a56c2; --zustand-bezahlt:#137a45;
    --zustand-storniert:#c1202f; --zustand-import:#666b73;
    --titel-rand:var(--line); --titel-rand-hover:var(--line); --titel-fuell-hover:var(--hover);
    --titel-konto-rand:transparent; --titel-konto-fuell:var(--chip); --titel-konto-fuell-hover:var(--hover);
    --titel-pfeil:var(--muted); --titel-ring:var(--panel); --titel-zeichen-bg:var(--accent); --titel-zeichen-ink:#ffffff;
    --h-titel:36px; --h-register:30px; --h-band:62px; --h-vorgabe:34px; --h-status:24px; --b-baum:184px;
  }
  /* Fokus dunkel: neutrales Grau, gleiche Geometrie — Systemwahl und Schalter wie in Klassisch */
  @media (prefers-color-scheme: dark){
    :root[data-haut="fokus"]:not([data-theme="hell"]){
      color-scheme:dark;
      --bg:#121316; --panel:#191a1d; --ink:#e8e9ec; --ink-2:#c3c6cc; --muted:#9ca0a8; --line:#2f3136; --line-soft:#26282c;
      --accent:#2670ed; --accent-soft:#1b2a47; --accent-ink:#a9c8ff;
      --ok:#41d18d; --ok-soft:#0e2a20; --warn:#e2a640; --warn-soft:#2f2314; --bad:#ff6b7a; --bad-soft:#341620;
      --band:#191a1d; --feld:#24262a; --feldrand:#767b85; --knopf:#2670ed; --knopf-ink:#ffffff;
      --titel:#191a1d; --titel-ink:#e8e9ec; --register:#191a1d;
      --baum-aktiv:#1b2a47; --markiert:#22365c; --markiert-ink:#e8eefb; --status-ink:#9ca0a8;
      --zebra:#1e1f23; --hover:#26282d; --chip:#26282d; --klemme-farbe:#5aa2ff;
      --schatten:0 14px 36px -10px rgba(0,0,0,.6); --schatten-hinweis:0 14px 36px -10px rgba(0,0,0,.6);
      --schatten-gross:0 24px 60px -18px rgba(0,0,0,.7); --schleier:rgba(0,0,0,.5); --schleier-stark:rgba(0,0,0,.66);
      --rollrand:rgba(0,0,0,.4);
      --sammel:#a9c8ff; --zustand-entwurf:#e2a640; --zustand-aktiv:#a9c8ff; --zustand-bezahlt:#41d18d;
      --zustand-storniert:#ff6b7a; --zustand-import:#9ca0a8;
      --titel-zeichen-bg:#2670ed;
      --f-auftrag:#3d84e8; --f-service:#c96f2e; --f-zeit:#25a381; --f-cloud:#9a6ef0;
    }
  }
  :root[data-haut="fokus"][data-theme="dunkel"]{
    color-scheme:dark;
    --bg:#121316; --panel:#191a1d; --ink:#e8e9ec; --ink-2:#c3c6cc; --muted:#9ca0a8; --line:#2f3136; --line-soft:#26282c;
    --accent:#2670ed; --accent-soft:#1b2a47; --accent-ink:#a9c8ff;
    --ok:#41d18d; --ok-soft:#0e2a20; --warn:#e2a640; --warn-soft:#2f2314; --bad:#ff6b7a; --bad-soft:#341620;
    --band:#191a1d; --feld:#24262a; --feldrand:#767b85; --knopf:#2670ed; --knopf-ink:#ffffff;
    --titel:#191a1d; --titel-ink:#e8e9ec; --register:#191a1d;
    --baum-aktiv:#1b2a47; --markiert:#22365c; --markiert-ink:#e8eefb; --status-ink:#9ca0a8;
    --zebra:#1e1f23; --hover:#26282d; --chip:#26282d; --klemme-farbe:#5aa2ff;
    --schatten:0 14px 36px -10px rgba(0,0,0,.6); --schatten-hinweis:0 14px 36px -10px rgba(0,0,0,.6);
    --schatten-gross:0 24px 60px -18px rgba(0,0,0,.7); --schleier:rgba(0,0,0,.5); --schleier-stark:rgba(0,0,0,.66);
    --rollrand:rgba(0,0,0,.4);
    --sammel:#a9c8ff; --zustand-entwurf:#e2a640; --zustand-aktiv:#a9c8ff; --zustand-bezahlt:#41d18d;
    --zustand-storniert:#ff6b7a; --zustand-import:#9ca0a8;
    --titel-zeichen-bg:#2670ed;
    --f-auftrag:#3d84e8; --f-service:#c96f2e; --f-zeit:#25a381; --f-cloud:#9a6ef0;
  }
  /* Die Masse der Handy- und Touch-Regeln wiederholen: der Satz oben ist spezifischer als :root im Handy-Block. */
  @media (max-width:900px){ :root[data-haut="fokus"]{--h-titel:40px;--h-register:0px} }
  @media (pointer:coarse) and (min-width:901px){ :root[data-haut="fokus"]{--h-titel:40px;--h-register:36px} }

  /* Nachtblau: immer dunkel, unabhaengig von data-theme (steht NACH beiden Dunkelsaetzen, gleiche Spezifitaet → gewinnt). */
  :root[data-haut="nachtblau"],:root[data-haut="nachtblau"][data-theme="hell"],:root[data-haut="nachtblau"][data-theme="dunkel"]{
    color-scheme:dark;
    --bg:#05070f; --bg2:#0b0a25; --panel:#0b1024; --band:#101838; --register:#070b1b; --feld:#080c1e; --feldrand:#5b6a92;
    --ink:#e6e9f2; --ink-2:#bcc4d6; --muted:#98a3ba; --line:#243260; --line-soft:#1a2448;
    --raster:rgba(255,255,255,.028);
    --accent:#2670ed; --accent-soft:#16214c; --accent-ink:#a6c8ff; --knopf:#2670ed; --knopf-ink:#ffffff;
    --titel:#0b0a25; --titel-ink:#ffffff; --baum-aktiv:#16214c; --markiert:#1c2f68; --markiert-ink:#f2f6ff; --status-ink:#a6c8ff;
    --ok:#7fd8a6; --ok-soft:#0d2a1e; --warn:#f0b957; --warn-soft:#2e2312; --bad:#ffb0b0; --bad-soft:#341620;
    --grid:rgba(58,140,255,.07); --grid-fine:rgba(58,140,255,.035);
    --radius:6px; --rail:1px solid var(--line);
    --platte:0 1px 2px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.04); --senke:inset 0 1px 2px rgba(0,0,0,.5);
    --schrift:"Manrope",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    --schrift-titel:"Fira Sans",-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
    --zebra:#0c1229; --hover:#131c3f; --chip:rgba(255,255,255,.07);
    --glas:rgba(255,255,255,.04); --glas-rand:rgba(255,255,255,.12); --glow-farbe:#3a8cff; --klemme-farbe:#3a8cff;
    --glow:0 0 0 1px rgba(58,140,255,.55),0 0 14px rgba(58,140,255,.45);
    --schatten:0 24px 60px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.06); --schatten-hinweis:0 24px 60px rgba(0,0,0,.6);
    --schatten-gross:0 24px 70px rgba(0,0,0,.7); --schatten-schicht:-8px 0 24px rgba(0,0,0,.6); --schatten-blatt:0 -12px 40px rgba(0,0,0,.6);
    --schleier:rgba(5,7,15,.6); --schleier-stark:rgba(5,7,15,.74); --rollrand:rgba(0,0,0,.45);
    --sammel:#a6c8ff; --zustand-entwurf:#f0b957; --zustand-aktiv:#a6c8ff; --zustand-bezahlt:#7fd8a6;
    --zustand-storniert:#ffb0b0; --zustand-import:#98a3ba;
    --titel-rand:rgba(255,255,255,.38); --titel-rand-hover:rgba(58,140,255,.8); --titel-fuell-hover:rgba(58,140,255,.22);
    --titel-konto-rand:rgba(255,255,255,.38); --titel-konto-fuell:rgba(255,255,255,.07); --titel-konto-fuell-hover:rgba(58,140,255,.22);
    --titel-pfeil:rgba(255,255,255,.75); --titel-ring:#0b0a25; --titel-zeichen-bg:#2670ed; --titel-zeichen-ink:#ffffff;
    /* Bereichsfarben: der dunkle Satz (5.09 / 5.20 / 5.96 / 5.26 auf --panel) — --l-* (Leiste) bleiben */
    --f-auftrag:#3d84e8; --f-service:#c96f2e; --f-zeit:#25a381; --f-cloud:#9a6ef0;
  }

  *,*::before,*::after{box-sizing:border-box}

  html{background:var(--bg)}
  body{
    margin:0;
    color:var(--ink);
    font:400 13.5px/1.5 var(--schrift);
    -webkit-font-smoothing:antialiased;
    background-color:var(--bg);
    /* Millimeterpapier, grob genug fuer skalierte Bildschirme */
    background-image:
      linear-gradient(var(--raster) 1px,transparent 1px),
      linear-gradient(90deg,var(--raster) 1px,transparent 1px);
    background-size:48px 48px,48px 48px;
    background-position:-1px -1px;
  }

  :focus-visible{
    outline:none;
    /* Doppelring: eine einzelne Linie geht auf dem Raster unter */
    box-shadow:0 0 0 3px var(--accent-soft),0 0 0 1px var(--accent);
    border-radius:var(--radius);
  }
  ::selection{background:var(--accent-soft);color:var(--accent-ink)}

  /* Kopf, Reiterzeile und Fusszeile: seit Runde 1 (0.32.0) Teil des Gerüsts, siehe Block GERÜST unten. */

  /* ------------------------------------------- Kennzahlenband */
  .cards{
    display:grid;gap:10px;margin-bottom:18px;
    grid-template-columns:repeat(auto-fit,minmax(168px,1fr));
  }
  .card{
    position:relative;
    background:var(--panel);
    border:var(--rail);
    border-radius:var(--radius);
    padding:12px 14px 11px 15px;
    box-shadow:var(--platte);
    overflow:hidden;
  }
  .card::before{
    content:"";position:absolute;left:0;top:0;bottom:0;
    width:var(--klemme);background:var(--accent);opacity:.85;
  }
  .card .k{
    color:var(--muted);
    font:600 10px/1.3 var(--mono);
    letter-spacing:.09em;text-transform:uppercase;
    margin-bottom:5px;
  }
  .card .v{
    font:600 31px/1.05 var(--mono);
    font-variant-numeric:tabular-nums slashed-zero;
    letter-spacing:-.02em;
    color:var(--ink);
  }
  /* Skalenband wie an einem Messinstrument — statisch, kostet nichts */
  .card::after{
    content:"";position:absolute;left:15px;right:14px;bottom:0;height:3px;
    background:repeating-linear-gradient(90deg,var(--line) 0 1px,transparent 1px 7px);
    opacity:.9;
  }
  .card{background:linear-gradient(180deg,var(--panel),var(--panel) 62%,var(--bg))}

  /* ---------------------------------------------------- Flaechen */
  .panel{
    position:relative;
    background:var(--panel);
    border:var(--rail);
    border-radius:var(--radius);
    box-shadow:var(--platte);
    overflow:auto;              /* traegt die klebenden Spaltenkoepfe */
  }
  /* Anschlussmarken an den Ecken, innenliegend */
  .panel::before,.panel::after{
    content:"";position:absolute;width:9px;height:9px;pointer-events:none;z-index:3;
  }
  .panel::before{top:0;left:0;border-top:2px solid var(--accent);border-left:2px solid var(--accent)}
  .panel::after{bottom:0;right:0;border-bottom:2px solid var(--line);border-right:2px solid var(--line)}

  .tools{
    display:flex;flex-wrap:wrap;align-items:center;gap:9px;
    padding:11px 14px;
    border-bottom:var(--rail);   /* genau EINE Linie, keine doppelte */
    background:var(--panel);
    font-size:12.5px;
  }
  .tools > .spacer{margin-left:auto}
  .tools strong{font-weight:650}

  /* ----------------------------------------------------- Eingabefelder */
  input,select,textarea{
    font:400 13px/1.3 var(--schrift);
    color:var(--ink);
    background:var(--bg);
    border:1px solid var(--line);
    border-radius:var(--radius);
    padding:6px 9px;
    box-shadow:var(--senke);     /* eingelassen */
  }
  input[type=search]{min-width:230px}
  textarea{line-height:1.45}
  input:focus,select:focus,textarea:focus{
    border-color:var(--accent);
    box-shadow:0 0 0 3px var(--accent-soft);
    outline:none;
  }
  label{color:var(--muted);font-size:12px}

  /* -------------------------------------------------- Schaltflaechen */
  button{
    font:500 13px/1.3 var(--schrift);
    color:var(--ink);
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:var(--radius);
    padding:6px 12px;
    cursor:pointer;
    box-shadow:var(--platte);    /* erhaben — Gegenstueck zum Feld */
    transition:background-color .1s linear,border-color .1s linear;
  }
  button:hover{background:var(--bg);border-color:var(--accent)}
  button.haupt{
    background:var(--accent);border-color:var(--accent);
    color:var(--knopf-ink);font-weight:600;
  }
  button.haupt:hover{background:var(--accent-ink);border-color:var(--accent-ink)}
  button:disabled{opacity:.5;cursor:default;box-shadow:none}

  .modus{display:inline-flex;border:var(--rail);border-radius:var(--radius);overflow:hidden}
  .modus button{border:0;border-radius:0;box-shadow:none;background:var(--panel)}
  .modus button + button{border-left:var(--rail)}
  .modus button.on{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}

  /* ------------------------------------------------------ Tabellen
     Waagerechte Haarlinien, KEINE senkrechten. Ein Vollgitter ueber
     fuenfzehn Spalten und hunderte Zeilen ist optisch laut und rendert
     Zehntausende Kanten. Die Spalten trennt die Ausrichtung. */
  table{width:100%;border-collapse:collapse;font-size:13px}
  th{
    position:sticky;top:0;z-index:2;
    text-align:left;
    padding:10px 14px;
    background:var(--panel);
    color:var(--muted);
    font:600 10px/1.3 var(--mono);
    letter-spacing:.09em;text-transform:uppercase;
    white-space:nowrap;
    border-bottom:1.5px solid var(--ink);
  }
  td{
    padding:9px 14px;
    border-bottom:1px solid var(--line-soft);
    vertical-align:top;
    white-space:nowrap;
  }
  td.wrap,td[data-wrap]{white-space:normal}
  tr:last-child td{border-bottom:0}
  /* Anleuchten von links statt flaechig einfaerben */
  tbody tr{transition:background-color .09s linear}
  tbody tr:hover td{background:linear-gradient(90deg,var(--accent-soft),transparent 62%)}
  tbody tr:hover td:first-child{box-shadow:inset var(--klemme) 0 0 0 var(--accent)}

  /* Alles Messbare in gleichbreiten Ziffern mit geschlitzter Null */
  .num,td.num,th.num{
    text-align:right;
    font-family:var(--mono);
    font-variant-numeric:tabular-nums slashed-zero;
    white-space:nowrap;
  }
  th.num{text-align:right}
  /* Negative Betraege sind rot — beide Haken, damit keiner durchfaellt */
  td.num.neg,td.num[data-vz="minus"]{color:var(--bad)}

  /* --------------------------------------------------------- Kleinteile */
  .muted{color:var(--muted)}
  .mono{font-family:var(--mono);font-variant-numeric:tabular-nums slashed-zero}

  /* Status ist immer eine Lampe, nie nur farbiger Text */
  .pill{
    display:inline-flex;align-items:center;gap:5px;
    padding:2px 8px;
    border-radius:var(--radius);
    font:600 11px/1.5 var(--mono);
    letter-spacing:.02em;
    border:1px solid var(--line);
    background:var(--bg);
    color:var(--ink-2);
  }
  .pill::before{
    content:"";width:5px;height:5px;border-radius:50%;
    background:currentColor;flex:0 0 auto;
  }
  .pill.blocker{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}
  .pill.warning{background:var(--warn-soft);color:var(--warn);border-color:var(--warn)}
  .pill.info{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--accent)}
  .pill.gut{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}

  .st-lampe{
    display:inline-block;width:7px;height:7px;border-radius:50%;
    background:var(--ok);box-shadow:0 0 0 2px var(--ok-soft);
  }

  .empty{
    padding:48px 20px;text-align:center;color:var(--muted);font-size:13.5px;
  }
  .empty::before{
    content:"";display:block;width:34px;height:34px;margin:0 auto 12px;
    border:1px solid var(--line);border-radius:var(--radius);
    background:var(--bg);box-shadow:var(--senke);
  }

  a,.clickable{
    color:var(--accent-ink);text-decoration:none;cursor:pointer;
    box-shadow:inset 0 -1px 0 var(--accent);
    transition:background-color .1s linear;
  }
  a:hover,.clickable:hover{background:var(--accent-soft)}
  td a{color:var(--accent-ink)}

  .bar{height:6px;background:var(--accent);border-radius:0;min-width:2px}
  .eintrag{padding:9px 0;border-bottom:1px solid var(--line-soft)}
  .abzuege{color:var(--muted);font-size:12px}

  /* Ablegezone fuer Dateien */
  .ablage{
    display:flex;align-items:center;justify-content:center;gap:10px;
    margin:14px;padding:26px 18px;
    border:1.5px dashed var(--line);
    border-radius:var(--radius);
    color:var(--muted);font-size:13px;
    background:var(--bg);
  }
  .ablage.bereit{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
  .ablage-zeichen{
    font:400 20px/1 var(--mono);color:var(--accent);
  }
  .ablage-knopf{padding:5px 11px}

  /* Ein einziger, zurueckhaltender Auftritt beim Laden. Mehr braucht
     ein Werkzeug nicht, das man acht Stunden am Tag benutzt. */
  @media (prefers-reduced-motion: no-preference){
    #content > *{animation:auf .2s ease both}
  }
  @keyframes auf{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
  @media (prefers-reduced-motion: reduce){*{transition:none !important;animation:none !important}}

  @media (max-width:760px){
    .cards{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}
    .card .v{font-size:23px}
  }

  @media print{
    body{background:#fff}
    .tools,.ablage,.vs-hinter{display:none}
    .panel{border:0;box-shadow:none}
  }


  /* -------------------------------------------------------- Kontomenue
     Alles, was den eigenen Zugang betrifft, an EINER Stelle: Fassung,
     Erscheinungsbild, Ansicht, Sicherheit, Abmelden. Vorher standen hier
     elf Schaltflaechen nebeneinander — das war eine Werkzeugleiste, kein
     Kopf. Ein Menue, das man kennt, schlaegt elf, die man suchen muss. */
  .konto{position:relative}
  .konto-knopf{
    display:inline-flex;align-items:center;gap:9px;
    padding:6px 11px 6px 9px;
    background:var(--panel);border:1px solid var(--line);
    border-radius:var(--radius);box-shadow:var(--platte);
    cursor:pointer;font:500 12.5px/1.3 var(--schrift);color:var(--ink);
  }
  .konto-knopf:hover{border-color:var(--accent);background:var(--bg)}
  .konto-knopf .zeichen{
    width:22px;height:22px;border-radius:50%;
    background:var(--accent);color:var(--knopf-ink);
    font:600 10.5px/22px var(--mono);text-align:center;flex:0 0 auto;
  }
  .konto-knopf .pfeil{color:var(--muted);font-size:10px;margin-left:1px}
  .konto-knopf .neu{
    width:7px;height:7px;border-radius:50%;background:var(--warn);
    box-shadow:0 0 0 3px var(--warn-soft);flex:0 0 auto;
  }

  .konto-menu{
    position:absolute;right:0;top:calc(100% + 9px);z-index:60;
    width:292px;padding:6px;
    background:var(--panel);border:1px solid var(--line);
    border-radius:var(--radius);
    box-shadow:var(--schatten),0 0 0 1px var(--line-soft);
    text-align:left;
  }
  .konto-menu[hidden]{display:none}
  .konto-kopf{padding:9px 10px 10px;border-bottom:1px solid var(--line-soft)}
  .konto-kopf .n{font-weight:650;font-size:13.5px;color:var(--ink)}
  .konto-kopf .konto-rolle-satz{margin-top:3px;white-space:normal;line-height:1.3}
  .konto-kopf .r{
    color:var(--muted);font:500 10.5px/1.5 var(--mono);
    letter-spacing:.07em;text-transform:uppercase;
  }
  .konto-abschnitt{padding:9px 10px 4px}
  .konto-abschnitt > .t{
    color:var(--muted);font:600 9.5px/1.4 var(--mono);
    letter-spacing:.11em;text-transform:uppercase;margin-bottom:6px;
  }
  .konto-wahl{display:flex;flex-wrap:wrap;gap:4px}
  .konto-wahl button{
    padding:4px 9px;font-size:11.5px;font-weight:500;
    border:1px solid var(--line);border-radius:var(--radius);
    background:var(--panel);box-shadow:none;color:var(--ink-2);
  }
  .konto-wahl button:hover{border-color:var(--accent);background:var(--bg)}
  .konto-wahl button.on{
    background:var(--accent-soft);border-color:var(--accent);
    color:var(--accent-ink);font-weight:650;
  }
  .konto-eintrag{
    display:flex;align-items:center;gap:9px;width:100%;
    padding:8px 10px;border:0;border-radius:var(--radius);
    background:none;box-shadow:none;text-align:left;
    font:500 12.5px/1.3 var(--schrift);color:var(--ink);cursor:pointer;
  }
  .konto-eintrag:hover{background:var(--accent-soft);color:var(--accent-ink)}
  .konto-eintrag .k{
    color:var(--muted);font:500 10.5px/1 var(--mono);margin-left:auto;
  }
  /* 0.37.0 (S2): Sprache im Kontomenü — Symbol wie die Piktogramme (Strich in currentColor), darunter drei Einträge mit
     Fähnchen 20×14 (CH 14×14, die Symbole bringen ihre Füllung mit) und Name; der gewählte trägt ✓ in der Kürzelspalte. */
  .konto-eintrag svg.ik{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
  .konto-eintrag svg.fl{width:20px;height:14px;flex:none;border-radius:2px;box-shadow:0 0 0 1px var(--line-soft)}
  .konto-eintrag svg.fl.quadrat{width:14px}
  .konto-eintrag.konto-sprache.on{font-weight:650}
  .konto-sprache-kopf,.konto-sprache-kopf:hover{cursor:default;background:none;color:var(--muted)}
  .konto-trenner{height:1px;background:var(--line-soft);margin:5px 2px}
  .konto-fassung{
    display:flex;align-items:center;gap:8px;
    padding:8px 10px;border-radius:var(--radius);
    font:500 11.5px/1.4 var(--mono);color:var(--muted);
  }
  .konto-fassung.veraltet{
    background:var(--warn-soft);color:var(--warn);cursor:pointer;
    font-weight:650;
  }
  .konto-fassung.veraltet:hover{filter:brightness(.97)}

  /* Die vier Zusatz-Erscheinungsbilder (Werkstatt, Bauplan, Tagwerk, Schalttafel)
     sind mit Runde 1 (0.32.0, Entscheid Ivi 16.09.2026) entfallen. Es bleibt
     «Schaltplan» hell und dunkel; ein gemerkter Schlüssel enerson.stil wird ignoriert. */

  /* ====================================================================
     STARTSEITE (Übersicht) — 0.35.0 «Verteiler» (Entwurf G + vier Stuecke aus F,
     Ivi 19.09.2026: «G als Geruest plus vier Stuecke aus F, mach alles»).
     Die Uebersicht ist der Verteiler des Betriebs: ein Beschriftungsstreifen
     «Heute» mit KLEMMEN (gefuellt = etwas liegt an und ist ein Knopf; offener
     Ring = nichts liegt an, kein Knopf), darunter die SAMMELSCHIENE (4 px,
     Verlauf der vier Bereichsfarben) und vier ABGAENGE Auftrag / Service /
     Zeit / Cloud, an deren Ader die Kennzahlen als Klemmen haengen. Keine
     Kaesten, keine Schatten, keine Versalien, keine Mittelpunkt-Ketten (Skill
     frontend-design); Farbe nur an Ader, Schiene, Klemme, Balken — Text in
     Tinte. Schriften: Fira Sans 700 und Manrope (variabel 400–600) aus
     /static/fonts (@font-face der Anmeldemaske weiter unten, kein base64);
     die Buchungsliste bleibt in der Systemschrift.
     Die fruehere Fassung (fuenf Karten .st-feld, Zustandstabelle data-zustand,
     dringendstes() ohne Aufrufer) ist mit 0.35.0 entfallen.
     ==================================================================== */
  .mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
  /* Ein Element traegt seinen Bereich in data-b; daraus --b (Ader/Klemme) und --l (Farbe auf der Nachtblau-Leiste). */
  [data-b="auftrag"]{--b:var(--f-auftrag);--l:var(--l-auftrag)}
  [data-b="service"]{--b:var(--f-service);--l:var(--l-service)}
  [data-b="zeit"]{--b:var(--f-zeit);--l:var(--l-zeit)}
  [data-b="cloud"]{--b:var(--f-cloud);--l:var(--l-cloud)}
  [data-b="start"]{--b:var(--accent);--l:var(--l-start)}

  .vt{padding:2px 0 0;font-family:var(--vt-text);color:var(--ink)}
  /* Knoepfe im Cockpit sind Text auf der Flaeche — keine Platte, kein Rahmen (die Ader ist der Rahmen). */
  .vt button{font:inherit;color:inherit;background:none;border:0;box-shadow:none;padding:0;text-align:left;cursor:pointer;border-radius:0;transition:none}
  .vt button:hover{background:none;border-color:transparent}
  /* Beschriftungsstreifen: Wochentag (Fira 700), Datum, Kalenderwoche — als getrennte Angaben, keine Mittelpunkte. */
  .vt-streifen{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 26px;padding:6px 12px 12px 2px;
    border-bottom:1px solid var(--line-soft);margin-bottom:18px}
  .vt-tag{display:flex;align-items:baseline;gap:12px;white-space:nowrap}
  .vt-tag b{font:700 19px/1.2 var(--vt-fira);color:var(--ink);letter-spacing:-.005em}
  .vt-tag span{font:500 13px/1.2 var(--vt-text);color:var(--ink-2);font-variant-numeric:tabular-nums}
  .vt-tag span + span{color:var(--muted)}
  /* Klemmen (F): 13-px-Punkt in Bereichsfarbe mit 2-px-Ring = gefuellt (Knopf); Ring in --muted = leer (5.9:1 hell,
     6.05:1 dunkel; --line haette 1.81:1). Warnfaelle (Frist, ohne Erfassung) im Warnton der Anwendung. */
  .vt-hinweise{display:flex;flex-wrap:wrap;gap:6px 22px;margin-left:auto;font:500 13px/1.3 var(--vt-text)}
  .vt-heute{display:inline-flex;align-items:center;gap:8px;padding:2px 0;color:var(--ink);font:inherit;font-variant-numeric:tabular-nums}
  .vt-heute i{width:13px;height:13px;border-radius:50%;background:var(--b);box-shadow:0 0 0 2px var(--panel);flex:none}
  .vt-heute b{font:700 15px/1 var(--vt-fira);color:var(--ink)}
  .vt-heute.warn,.vt-heute.warn b{color:var(--warn)}
  .vt-heute.leer{color:var(--muted);cursor:default}
  .vt-heute.leer i{background:none;border:2px solid var(--muted);box-shadow:none}
  button.vt-heute:hover > span{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--b)}
  button.vt-heute:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

  /* Die Sammelschiene ist die Oberkante der Abgaenge (4 px, je Segment in Bereichsfarbe); die Ader (3 px) faellt
     links aus dem Segment; Kennzahlen haengen als Klemmen daran. Kein Kasten, kein Radius, kein Schatten. */
  .vt-abgaenge{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 6px}
  .vt-abgaenge[data-n="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}
  .vt-abgaenge[data-n="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vt-abgaenge[data-n="1"]{grid-template-columns:minmax(0,1fr)}
  .vt-abgang{border-top:4px solid var(--b);border-left:3px solid var(--b);padding:10px 18px 14px 16px;min-width:0;
    display:flex;flex-direction:column;gap:14px}
  .vt-abgang h3{margin:0;font:700 15px/1.2 var(--vt-fira);color:var(--ink);letter-spacing:.005em}
  .vt-abgang h3 .vt-titel{font:inherit;color:inherit}
  .vt-abgang h3 button.vt-titel:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--b)}
  .vt-abgang h3 button.vt-titel:focus-visible{outline:2px solid var(--b);outline-offset:3px}
  .vt-abgang h3 small{display:block;font:500 11.5px/1.3 var(--vt-text);color:var(--muted);margin-top:2px;letter-spacing:0}
  /* Klemme: Zahl + Wort; ein Querstrich verbindet mit der Ader. Leitzahl (hero) 44 px, Zweitzahl 26 px, klein 22 px. */
  .vt-klemme{position:relative;display:block;width:100%;min-width:0;margin:0;color:var(--ink);font-family:var(--vt-text)}
  .vt-klemme::before{content:"";position:absolute;left:-16px;top:.72em;width:10px;height:3px;background:var(--b)}
  .vt-klemme b{display:block;font:700 26px/1.05 var(--vt-fira);color:var(--ink);font-variant-numeric:proportional-nums;letter-spacing:-.01em}
  .vt-klemme b small{font:700 15px/1 var(--vt-fira);color:var(--ink-2);margin-left:3px}
  .vt-klemme > .w{display:block;font:500 13px/1.35 var(--vt-text);color:var(--ink-2);margin-top:2px}
  .vt-klemme > em{display:block;font:500 11.5px/1.35 var(--vt-text);font-style:normal;color:var(--muted);margin-top:1px}
  .vt-klemme.hero b{font-size:44px;line-height:1;letter-spacing:-.02em}
  .vt-klemme.hero::before{top:.5em}
  .vt-klemme.hero > .w{font-size:14px;margin-top:4px;color:var(--ink)}
  .vt-klemme.hero > em{font-size:12px}
  .vt-klemme.klein b{font-size:22px}
  .vt-klemme.warn b{color:var(--warn)}
  .vt-klemme.vt-wort > .w{font-size:13.5px;color:var(--ink)}
  button.vt-klemme:hover > .w{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--b)}
  button.vt-klemme:focus-visible{outline:2px solid var(--b);outline-offset:4px}
  /* Verlaufsbalken: nur, wo eine Reihe vom Server kommt (C5). Balken <= 24 px, 2-px-Luecke, juengster betont,
     Minus (Korrekturen) rot unter der Nulllinie. */
  .vt-spark{display:block;width:100%;max-width:220px;height:34px;margin-top:8px;overflow:visible}
  .vt-spark path{fill:var(--b);opacity:.42}
  .vt-spark .jetzt{opacity:1}
  .vt-spark .neg{fill:var(--bad);opacity:.9}
  .vt-spark .null{stroke:var(--line);stroke-width:1}
  .vt-klemme > .vt-achse{display:flex;justify-content:space-between;max-width:220px;font:400 10.5px/1.2 var(--vt-text);color:var(--muted);margin-top:2px}
  .vt-klemme > .vt-legende{display:block;font:500 11px/1.3 var(--vt-text);color:var(--muted);margin-top:4px}
  /* Zweitzahlen paarweise, wenn Platz ist */
  .vt-paar{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .vt-paar .vt-klemme + .vt-klemme::before{display:none}
  .vt-paar .vt-klemme:nth-child(2n+3)::before{display:block}
  /* Liste an der Leitung (F): die juengsten Rapporte ohne Unterschrift — Nr., Betreff oder Objekt, Datum; 20-px-Zeilen. */
  .vt-liste{display:block}
  .vt-liste > span{display:block;font:500 13px/1.35 var(--vt-text);color:var(--ink-2);margin-bottom:3px}
  .vt-liste button{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;width:100%;height:20px;line-height:20px;
    font:400 12px/20px var(--vt-text);color:var(--ink-2);align-items:center}
  .vt-liste button .nr{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
  .vt-liste button .tx{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .vt-liste button .dt{color:var(--muted);font-variant-numeric:tabular-nums}
  .vt-liste button:hover .tx{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--b)}
  .vt-liste button.alle{display:block;height:auto;margin-top:4px;font:500 12px/1.4 var(--vt-text);color:var(--accent)}
  .vt-liste button.alle:hover{text-decoration:underline;text-underline-offset:3px}
  .vt-liste button:focus-visible{outline:2px solid var(--b);outline-offset:1px}
  /* Buchungsliste darunter: Aufbau wie bisher (Klick → Zeiten), Titel in Satzschreibweise; Zeilen wie jedes Grid
     (--zeile, 18 px) — GEMESSEN 19.09.2026: vorher 38.5 px ueber die allgemeine td-Regel (padding 9px 14px). */
  .st-block{margin-top:24px}
  .st-block h3{font:600 13px/1.3 var(--vt-text);letter-spacing:0;text-transform:none;color:var(--ink-2);margin:0 0 8px}
  .st-block table{font-size:var(--schriftgrad);font-family:var(--schrift)}
  .st-block th{height:var(--zeile);padding:0 8px;font:400 var(--schriftgrad)/1 var(--schrift);letter-spacing:0;text-transform:none;
    background:var(--band);color:var(--ink-2);border-bottom:1px solid var(--line)}
  .st-block td{height:var(--zeile);padding:0 8px;line-height:1.1;vertical-align:middle;border-bottom:1px solid var(--line-soft)}
  .st-block tbody tr:hover td{background:var(--band)}

  /* Schmaler Arbeitsplatz / iPad quer (1024): zwei Abgaenge je Reihe */
  @media (max-width:1180px){
    .vt-abgaenge,.vt-abgaenge[data-n="3"]{grid-template-columns:repeat(2,minmax(0,1fr))}
    .vt-abgang:nth-child(n+3){margin-top:10px}
  }
  /* Handy und iPad hoch: das Schema kippt — Steigleitung links (4 px), Abgaenge nach rechts (3 px) */
  @media (max-width:900px){
    .vt-streifen{gap:6px 16px;padding:4px 8px 10px 2px;margin-bottom:14px}
    .vt-hinweise{margin-left:0;gap:4px 16px}
    .vt-abgaenge,.vt-abgaenge[data-n="3"],.vt-abgaenge[data-n="2"]{grid-template-columns:minmax(0,1fr);border-left:4px solid var(--line);margin-left:0}
    .vt-abgang{border-top:3px solid var(--b);border-left:4px solid var(--b);margin:0 0 0 -4px;padding:8px 8px 14px 14px;gap:10px}
    .vt-abgang:nth-child(n+3){margin-top:0}
    .vt-abgang + .vt-abgang{margin-top:10px}
    .vt-klemme::before{left:-14px}
    .vt-klemme.hero b{font-size:38px}
    .st-block table{font-size:12.5px}
  }
  /* iPad hoch (701–900): zwei je Reihe, ohne Steigleitung — die Hoehe ist im Hochformat der knappe Faktor (E6) */
  @media (min-width:701px) and (max-width:900px){
    .vt-abgaenge,.vt-abgaenge[data-n="3"],.vt-abgaenge[data-n="2"]{grid-template-columns:repeat(2,minmax(0,1fr));border-left:0;gap:12px 20px}
    .vt-abgang,.vt-abgang + .vt-abgang{margin:0}
  }
  /* Telefon: Klemmen untereinander, volle Breite, › nur an gefuellten (F) */
  @media (max-width:700px){
    .vt-hinweise{flex-direction:column;align-items:stretch;gap:0;width:100%}
    .vt-heute{position:relative;width:100%;min-height:34px;padding:5px 26px 5px 0}
    button.vt-heute::after{content:"\203A";position:absolute;right:6px;top:50%;transform:translateY(-50%);font-size:18px;line-height:1;color:var(--muted)}
  }

  /* ------------------------------------------------- Planeraustausch
     Die Datei des Planers nennt bei Katalogpositionen nur die Artikelnummer.
     Ob eine Zeile erledigt ist, muss darum auf einen Blick sichtbar sein —
     nicht in einer Spalte weit rechts, sondern an der Zeile selbst. */
  .sia-kopf{display:flex;gap:26px;flex-wrap:wrap;align-items:flex-start;
    padding:14px 16px;border-bottom:var(--rail)}
  .sia-objekt{font:650 17px/1.25 var(--schrift)}
  .sia-kopf-block{min-width:190px}
  .sia-marke{font:600 10.5px/1.4 var(--mono);letter-spacing:.06em;
    text-transform:uppercase;color:var(--muted);
    border-left:var(--klemme) solid var(--accent);padding-left:7px;margin-bottom:3px}
  .sia-stand{display:flex;gap:20px;flex-wrap:wrap;align-items:baseline;
    padding:9px 16px;border-bottom:var(--rail);font-size:13px}
  .sia-stand .sia-summe{margin-left:auto;font:700 15px/1 var(--schrift);
    font-variant-numeric:tabular-nums}
  .sia-hinweis{margin:0;padding:10px 16px;font-size:12.5px;line-height:1.5;
    background:var(--warn-soft);color:var(--warn);border-bottom:var(--rail)}
  .sia-rollbereich{overflow-x:auto}
  .sia-tabelle{min-width:760px}
  .sia-tabelle tr.sia-gruppe td{background:var(--bg);font-weight:650;
    padding-top:9px;border-top:var(--rail)}
  .sia-tabelle tr.sia-gruppe .mono{color:var(--muted);margin-right:9px}
  .sia-tabelle tr.sia-offen td:first-child{box-shadow:inset var(--klemme) 0 0 var(--bad)}
  .sia-flag{font:600 10.5px/1.6 var(--mono);padding:0 5px;border-radius:3px;
    background:var(--line-soft);color:var(--muted);white-space:nowrap}
  .sia-flag.bad{background:var(--bad);color:var(--knopf-ink)}
  .sia-flag.warn{background:var(--warn);color:var(--knopf-ink)}
  .sia-preis{width:88px;text-align:right;font:inherit;
    font-variant-numeric:tabular-nums}
  .sia-ok{padding:2px 8px;font-size:12px;border:1px solid var(--line);
    background:transparent;color:inherit;border-radius:6px;cursor:pointer}
  .sia-ok:hover{border-color:var(--accent)}
  .sia-kandzelle{background:var(--bg);padding:10px 16px}
  .sia-kandliste{display:flex;flex-direction:column;gap:6px}
  .sia-kand{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
    padding:7px 10px;background:var(--panel);border:var(--rail);border-radius:7px}
  .sia-kand-text{flex:1;min-width:200px;font-weight:600}
  .sia-kand-zahlen{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;
    font-variant-numeric:tabular-nums}
  .sia-kand button{padding:4px 11px;border:1px solid var(--line);
    background:transparent;color:inherit;border-radius:7px;font:inherit;
    font-size:12.5px;cursor:pointer}
  .sia-kand button:hover{border-color:var(--accent);color:var(--accent)}

  /* ------------------------------------------------------- Offerten
     Der Editor ist EINE Seite: Kopf oben, das Zeilengitter als Baum, unten
     links die Erfassung, unten rechts der Summenblock. NPK-Zeilen aus der
     Planerdatei sind grau: Text und Nummer sind geschuetzt, nur Menge, Preis
     und Montageart lassen sich aendern. Die markierte Zeile traegt die
     Klemme links — dort greifen Alt+Pfeiltasten und „einfuegen nach". */
  .off-kopfzeile{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;
    padding:14px 16px 10px;border-bottom:var(--rail)}
  .off-titel{font:650 17px/1.3 var(--schrift)}
  .off-schalter{margin-left:auto;display:flex;gap:6px}
  .off-kopf{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
    gap:14px 22px;padding:12px 16px;border-bottom:var(--rail)}
  .off-block label{display:block;margin-bottom:7px}
  .off-wert{color:var(--ink);font-size:13px;padding:3px 0}
  .off-gitter{overflow:auto;max-height:62vh}
  .off-tabelle th{position:sticky;top:0;z-index:1}
  .off-tabelle td{vertical-align:top;white-space:normal}
  .off-tabelle tr.off-glied td{background:var(--bg);font-weight:650;border-top:var(--rail)}
  .off-tabelle tr.off-npk td{color:var(--muted)}
  .off-tabelle tr.off-npk .off-txt{color:var(--ink-2)}
  .off-tabelle tr.off-text td{font-style:italic}
  .off-tabelle tr.off-mark td:first-child{box-shadow:inset var(--klemme) 0 0 var(--accent)}
  .off-tabelle tr.off-mark td{background:var(--accent-soft)}
  .off-tabelle tr:hover td{cursor:default}
  .off-bez{min-width:260px;max-width:520px}
  .off-ma{min-width:150px;max-width:260px;font-size:12.5px}
  .off-akt{white-space:nowrap;text-align:right}
  .off-klapp{padding:0 5px;border:0;background:transparent;color:var(--accent);
    font-size:13px;cursor:pointer;line-height:1;box-shadow:none}
  .off-mini{padding:1px 6px;font-size:12px;line-height:1.4;border:1px solid var(--line);
    background:transparent;color:inherit;border-radius:4px;cursor:pointer;margin-left:2px;box-shadow:none}
  .off-mini:hover{border-color:var(--accent);color:var(--accent)}
  .off-zahl{width:84px;text-align:right;font-variant-numeric:tabular-nums;padding:3px 6px}
  .off-eh{width:52px;padding:3px 6px}
  .off-ohne{color:var(--bad)}
  .off-unten{display:grid;grid-template-columns:1fr minmax(280px,360px);gap:16px;
    padding:12px 16px;border-top:var(--rail);align-items:start}
  .off-erf{display:grid;grid-template-columns:200px 1fr 300px;gap:8px;align-items:end;margin-bottom:6px}
  .off-erf2{display:grid;grid-template-columns:100px 70px 110px 1fr 200px auto;gap:8px;align-items:end}
  .off-erf label,.off-erf2 label{display:block}
  .off-vs{margin-top:8px;padding:8px 10px;background:var(--bg);border:var(--rail);border-radius:6px;
    display:flex;flex-direction:column;gap:6px}
  .off-summen{padding:10px 12px;background:var(--bg);border:var(--rail);border-radius:6px;
    font-variant-numeric:tabular-nums}
  .off-sz{display:flex;justify-content:space-between;gap:12px;padding:3px 0}
  .off-sz-fett{font-weight:700;border-top:1px solid var(--line);margin-top:4px;padding-top:6px;font-size:14px}
  .off-textfeld{margin-bottom:14px}
  /* Runde 3 (0.24.2): Sammelposition blau wie im bisherigen Programm, Details eingerueckt; Herleitung. */
  .off-tabelle tr.off-sammel td{color:var(--sammel)}
  .off-tabelle tr.off-sammel .off-txt{color:var(--sammel);font-weight:600}
  .off-tabelle tr.off-detail td{color:var(--muted);font-size:12.5px;background:color-mix(in srgb,var(--bg) 60%,transparent)}
  .off-stueck{border-collapse:collapse;margin-top:4px;font-size:11.5px}.off-stueck th,.off-stueck td{padding:2px 6px;border-bottom:1px solid var(--line)}
.off-herl{font-size:11px;color:var(--muted);font-family:var(--mono,monospace);white-space:normal;margin-top:2px}
  .off-herl-knopf{font-size:10.5px;color:var(--accent);cursor:pointer;margin-left:4px}
  .off-vs-preis{display:flex;gap:14px;flex-wrap:wrap;align-items:baseline}
  .off-vs-preis label{display:inline-flex;gap:5px;align-items:baseline;cursor:pointer}
  .off-vs-klar{font-size:12.5px}
  .off-vs-fehl{color:var(--bad);font-size:12.5px}
  .off-wahl{width:16px;height:16px;margin:0}
  /* Steiger-Tarif (0.24.0): links der Suchbaum, rechts Liste oder Position. */
  .stg{display:grid;grid-template-columns:minmax(240px,300px) minmax(0,1fr);gap:0;align-items:start}
  /* I14 (0.33.1): dvh — mit eingeblendeter Safari-Leiste lag das Baumende sonst hinter der Statuszeile (D10); vh als Rückfall. */
  .stg-baum{border-right:var(--rail);padding:8px 0;max-height:calc(100vh - 220px);max-height:calc(100dvh - 220px);overflow:auto;font-size:12.5px}
  .stg-baum div.stg-k{padding:4px 10px;cursor:pointer;display:flex;gap:6px;align-items:baseline;white-space:nowrap}
  .stg-baum div.stg-k:hover{background:var(--bg)}
  .stg-baum div.stg-k.on{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}
  .stg-baum .stg-e2{padding-left:24px}
  .stg-baum .stg-e3{padding-left:40px;color:var(--muted)}
  .stg-baum .stg-n{margin-left:auto;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:400}
  .stg-baum .stg-pf{width:14px;display:inline-block;color:var(--muted)}
  .stg-inhalt{min-width:0}
  .stg-quelle{font-size:10.5px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 4px;margin-left:6px;vertical-align:middle}
  .stg-grau{color:var(--muted)}
  .stg-kopf{padding:16px 14px 6px;display:flex;gap:14px;align-items:flex-start}
  @media (max-width:900px){ .stg{grid-template-columns:1fr} .stg-baum{border-right:0;border-bottom:var(--rail);max-height:260px} }
  @media (max-width:1100px){
    .off-erf,.off-erf2{grid-template-columns:repeat(3,1fr)}
    .off-unten{grid-template-columns:1fr}
  }

  /* ------------------------------------------------------ Belegvorschau
     Der Browser bringt seinen eigenen PDF-Betrachter mit. Wir laden dafuer
     keine Bibliothek und bauen keinen nach — der Rahmen zeigt unmittelbar
     auf den Endpunkt, die Sitzung faehrt im Keks mit. */
  .vs-hinter{position:fixed;inset:0;z-index:200;background:var(--schleier-stark);
    display:flex;flex-direction:column;padding:min(4vh,32px) min(4vw,32px);
    animation:vs-auf .13s ease-out}
  @keyframes vs-auf{from{opacity:0}to{opacity:1}}
  .vs-fenster{flex:1;min-height:0;display:flex;flex-direction:column;
    background:var(--panel);border:var(--rail);border-radius:10px;
    overflow:hidden;box-shadow:var(--schatten-gross)}
  .vs-leiste{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
    padding:9px 12px;border-bottom:var(--rail)}
  .vs-titel{font-weight:650;margin-right:auto;white-space:nowrap;
    overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .vs-marke{font:500 11px/1.5 var(--mono);color:var(--muted);
    border-left:var(--klemme) solid var(--accent);padding-left:7px}
  .vs-leiste a,.vs-leiste button{padding:5px 11px;border:1px solid var(--line);
    background:transparent;color:inherit;border-radius:7px;font:inherit;
    font-size:13px;text-decoration:none;cursor:pointer;white-space:nowrap}
  .vs-leiste a:hover,.vs-leiste button:hover{border-color:var(--accent)}
  .vs-leiste button.zu{font-weight:600}
  .vs-rahmen{flex:1;min-height:0;width:100%;border:0;background:var(--bg)}

  /* ------------------------------------------------------ Artikelbilder
     80-px-Vorschauen aus dem Artikelkatalog (Fassung 0.22.0). In Listen klein
     neben der Nummer, in der Detailansicht in Originalgroesse, in der
     Lightbox dreifach — mehr gibt die Quelle nicht her. Kein Bild: das <img>
     entfernt sich selbst (onerror), es bleibt kein Platzhalter stehen. */
  .abild{height:30px;width:auto;max-width:44px;vertical-align:middle;margin-right:6px;
    border-radius:3px;background:#fff;object-fit:contain;cursor:zoom-in;
    border:1px solid var(--line)}
  .abild-gross{height:80px;max-width:120px;margin:0;flex:none}
  /* 0.38.0 (Runde 20): ein <img class="abild"> ohne src wartet auf die Sammelabfrage (abildLaden) — bis dahin unsichtbar,
     damit kein Rahmen ohne Bild aufblitzt. Das Layout springt beim Eintreffen wie bisher: ohne src ist das Bild 2 px breit
     (Rahmen), mit einem 66×80-Bild 26.75 px (GEMESSEN 23.09.2026, Gegenlesen Runde 20) — keine Verschlechterung. */
  .abild:not([src]){visibility:hidden}
  /* I15 (0.33.0): abildMarke() setzt hinter die Nummer im Positionsgitter ein Strich-Symbol (eigenes SVG «i-bild»),
     das nur am Handy (≤ 900 px, Regel im Handy-Block) sichtbar ist — dort ist die Miniatur seit K2 ausgeblendet und
     der Bauführer (bild.sehen, kein artikel.lesen → keine Hilfespalte) hatte keinen Weg mehr zum Bild (Gegenlesen r6).
     Das <img> bleibt am Handy als unsichtbares 1-px-Bild im Dokument, damit sein onerror weiterhin «kein Bild» meldet
     und die Marke mitnimmt (abildWeg); display:none liesse ein loading=lazy-Bild nie laden. */
  .abild-mark{display:none}
  .lb-fenster{margin:auto;width:min(92vw,520px);display:flex;flex-direction:column;
    background:var(--panel);border:var(--rail);border-radius:10px;overflow:hidden;
    box-shadow:var(--schatten-gross)}
  .lb-bild{display:flex;align-items:center;justify-content:center;padding:18px;
    background:#fff;min-height:200px}
  .lb-bild img{height:240px;width:auto;max-width:100%;object-fit:contain}
  .lb-fuss{padding:8px 12px;font-size:11.5px;border-top:var(--rail)}
  @media (max-width:560px){
    .vs-hinter{padding:0}
    .vs-fenster{border-radius:0;border:0}
    .vs-titel{font-size:14px}
  }

  /* ====================================================================
     ANMELDEMASKE «M — zweigeteilt» (0.34.2, Ivis Wahl 17.09.2026)
     Vorlage: Startseite-Entwuerfe/M-geteilt.html (CSS/Struktur 1:1, nur mit
     dem Praefix an- und auf die IDs der bisherigen Maske gelegt). Dunkel wie
     die Startseite und UNABHAENGIG vom Hell/Dunkel-Modus der Anwendung: die
     Maske bringt ihre eigenen --an-*-Tokens mit, einen Modusknopf gibt es
     nicht mehr. Die Anwendung selbst bleibt hell (Papier).

     Schriften: dieselben Dateien wie die Startseite (/static/fonts, CSP
     font-src 'self'). Manrope ist eine VARIABLE Schrift (fvar/gvar in der
     woff2, GEMESSEN 17.09.2026; die «600»-Datei ist byte-gleich mit der
     «400»-Datei) — darum EINE Regel mit font-weight 400 600, sonst rendern
     Kicker und Knoepfe in Regular.
     ==================================================================== */
  /* 0.37.0 (S14/S15b): Subsets mit Latin Extended-A (č ć š ž đ) unter denselben Dateinamen — ?f=0370 macht den Cache-Schlüssel
     neu, sonst zeigte ein Browser mit der gecachten 0.36er-Datei bis zur Revalidierung (≈ 10 h) die Ersatzschrift. */
  @font-face{font-family:"Fira Sans";font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/FiraSans-700.woff2?f=0370') format('woff2')}
  @font-face{font-family:"Manrope";font-style:normal;font-weight:400 600;font-display:swap;src:url('/static/fonts/Manrope-400.woff2?f=0370') format('woff2')}

  /* Ohne diese Regel ueberstimmt .an-feld{display:block} das hidden-Attribut
     von #l_codezeile. Gilt fuer die ganze Anwendung — sie setzt hidden sonst
     nur am Kontomenue und am Datei-Eingabefeld, beide ohnehin unsichtbar. */
  [hidden]{display:none !important}

  /* Solange die Maske steht, fuellt die Buehne den Bildschirm: Kopf und
     Fusszeile der Anwendung weg (Block GERÜST), Platte ohne Rahmen, dunkler
     Grund auch hinter dem Ueberrollen. Die Klasse setzt anmeldeMaske();
     render(), passwortMaske() und einrichtungNoetig() nehmen sie weg. */
  body.an-anmeldung{background:#05070f;background-image:none}
  html:has(body.an-anmeldung){background:#05070f}
  body.an-anmeldung #vorgabe .tools{display:none}
  body.an-anmeldung main{min-height:100dvh;padding:0;display:block}
  body.an-anmeldung main > .panel{background:none;border:0;box-shadow:none;overflow:visible;width:100%;padding:0;margin:0}
  body.an-anmeldung main > .panel::before,
  body.an-anmeldung main > .panel::after{display:none}
  body.an-anmeldung #content{padding:0}
  /* Kein Einblenden (#content > *{animation:auf}): die dunkle Buehne soll nicht aus dem hellen Grund auftauchen.
     GEMESSEN 17.09.2026 im Harness: mit der Animation blieb das Bild je nach Zeitpunkt bei ~10 % Deckkraft haengen. */
  #content > .an-buehne{animation:none}

  /* ---------- Tokens (identisch mit der Startseite) ---------- */
  .an-buehne{
    --an-bg-master:#05070f; --an-bg-primary:#0b0a25; --an-bg-secondary:#16214c;
    --an-accent:#2670ed; --an-accent-glow:#3a8cff; --an-accent-text:#5a9dff;
    --an-link:#a6c8ff; --an-muted:#bcc4d2; --an-placeholder:#b8c0ce;
    --an-text:#e6e9f2; --an-text-2:#aab3c2; --an-text-muted:#9aa3b2;
    --an-glass-bg:rgba(255,255,255,.04); --an-glass-border:rgba(255,255,255,.08);
    --an-feld-bg:rgba(255,255,255,.05); --an-feld-border:rgba(255,255,255,.14);
    --an-bad:#ffb0b0; --an-bad-border:rgba(255,120,120,.38); --an-bad-bg:rgba(255,90,90,.08);
    --an-ok:#7fd8a6;
    --an-heading:"Fira Sans",sans-serif; --an-body:"Manrope",sans-serif;
    --an-x:clamp(20px,5vw,80px); --an-container:1280px; --an-radius:12px;
    position:relative; min-height:100dvh; display:flex; flex-direction:column;
    background:var(--an-bg-master); color:var(--an-text);
    font-family:var(--an-body); font-size:16px; line-height:1.6;
    -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
    overflow-x:clip; text-align:left;
  }
  .an-buehne *,.an-buehne *::before,.an-buehne *::after{box-sizing:border-box}
  .an-buehne a{color:inherit; text-decoration:none; box-shadow:none; background:none}
  .an-buehne a:hover{background:none}
  .an-buehne img,.an-buehne svg{display:block; max-width:100%}
  .an-buehne img{height:auto}
  .an-buehne button{font:inherit; color:inherit; background:none; border:0; cursor:pointer; box-shadow:none; padding:0; border-radius:0}
  .an-buehne button:hover{background:none; border-color:transparent}
  .an-buehne :focus-visible{outline:3px solid var(--an-accent-glow); outline-offset:3px; border-radius:6px; box-shadow:none}
  .an-buehne p,.an-buehne h1,.an-buehne h2{margin:0}
  .an-ext::after{content:"\2197"; font-size:.85em; margin-left:.3em; opacity:.8}

  /* ---------- Buehne: Glow wie der Hero der Startseite ---------- */
  .an-main{position:relative; flex:1 1 auto; display:flex; isolation:isolate; overflow:hidden}
  .an-main::before{content:""; position:absolute; inset:0; z-index:-2; background:
    radial-gradient(760px 560px at 92% 16%,rgba(58,140,255,.34),transparent 62%),
    radial-gradient(1100px 700px at 80% 40%,rgba(38,112,237,.22),transparent 68%),
    radial-gradient(700px 420px at 10% 100%,rgba(22,33,76,.9),transparent 70%),
    linear-gradient(180deg,var(--an-bg-master) 0%,var(--an-bg-primary) 100%)}
  .an-main::after{content:""; position:absolute; inset:0; z-index:-1; opacity:.35;
    background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
    background-size:64px 64px;
    mask-image:radial-gradient(ellipse at 70% 40%,#000 20%,transparent 75%);
    -webkit-mask-image:radial-gradient(ellipse at 70% 40%,#000 20%,transparent 75%)}
  .an-container{width:100%; max-width:var(--an-container); margin:0 auto; padding:clamp(1.25rem,4vh,3rem) var(--an-x);
    display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,440px); align-items:center; justify-content:space-between; gap:clamp(2rem,6vw,6rem)}

  /* ---------- Linke Haelfte: Marke wie die Startseite ---------- */
  .an-marke{max-width:58ch}
  /* Logo auf weisser Platte — mit Praefix, sonst gewinnt der Reset .an-buehne a{background:none}
     (GEMESSEN 17.09.2026 in der Live-Probe: Platte fehlte) */
  .an-buehne .an-marke-logo,.an-buehne .an-marke-logo:hover{display:flex; width:max-content; align-items:center; padding:.5rem .85rem; border-radius:8px; background:#fff;
    box-shadow:0 1px 0 rgba(255,255,255,.25),0 6px 20px rgba(0,0,0,.45); margin-bottom:2.25rem}
  .an-marke-logo img{height:48px; width:auto}
  .an-kicker{display:inline-block; font-size:.8125rem; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--an-accent-text); margin-bottom:1rem}
  .an-marke h1{font-family:var(--an-heading); font-weight:700; font-size:clamp(2.25rem,4.2vw,3.4rem); letter-spacing:-.02em; line-height:1.1; color:#fff; margin-bottom:1.25rem}
  .an-lead{font-size:clamp(1rem,1.4vw,1.1875rem); line-height:1.65; color:var(--an-text-2); max-width:46ch}

  /* ---------- Rechte Haelfte: Glas-Karte ---------- */
  .an-karte-spalte{display:flex; flex-direction:column; align-items:stretch; gap:1.25rem; width:100%; max-width:440px; justify-self:end}
  .an-klein-logo{display:none}
  .an-karte{position:relative; background:var(--an-glass-bg); border:1px solid var(--an-glass-border); border-radius:var(--an-radius);
    backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); padding:2rem;
    box-shadow:0 24px 60px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.06)}
  .an-karte::before{content:""; position:absolute; left:1.25rem; right:1.25rem; top:0; height:1px;
    background:linear-gradient(90deg,transparent,rgba(58,140,255,.55),transparent); pointer-events:none}
  .an-karte-kopf{display:flex; align-items:baseline; justify-content:space-between; gap:1rem; margin-bottom:1.5rem}
  .an-karte h2{font-family:var(--an-heading); font-weight:700; font-size:1.75rem; letter-spacing:-.015em; line-height:1.1; color:#fff}
  .an-karte h2 i{font-style:normal; color:var(--an-accent-glow)}
  .an-schritt{font-size:.75rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--an-muted); white-space:nowrap}
  .an-buehne .an-karte-text{color:var(--an-muted); font-size:.9375rem; line-height:1.5; margin:0 0 1.125rem}

  /* Meldung: ruhig, ein Rahmen, keine Icons. Bleibt IMMER im Baum (aria-live);
     leer ist sie unsichtbar. */
  .an-msg{display:none; border:1px solid var(--an-glass-border); background:rgba(255,255,255,.03); border-radius:8px;
    padding:.75rem .9rem; font-size:.9375rem; line-height:1.45; margin:0 0 1.125rem; color:var(--an-text)}
  .an-msg:not(:empty){display:block}
  .an-msg--bad{border-color:var(--an-bad-border); background:var(--an-bad-bg); color:var(--an-bad)}
  .an-msg--info{border-color:rgba(58,140,255,.35); background:rgba(58,140,255,.08); color:var(--an-text)}
  .an-msg--wartet{color:var(--an-muted); border-color:transparent; background:none; padding-top:0; padding-bottom:0}
  .an-msg p+p{margin-top:.25rem; color:var(--an-muted); font-size:.875rem}

  .an-buehne .an-feld{display:block; margin-bottom:1.125rem; color:var(--an-text); font-size:1rem}
  .an-lrow{display:flex; align-items:baseline; justify-content:space-between; gap:.75rem; margin-bottom:.4rem; min-height:1.3rem}
  .an-buehne .an-lbl{font-size:.8125rem; font-weight:600; letter-spacing:.02em; color:var(--an-muted)}
  .an-buehne .an-lrow a,.an-buehne .an-vergessen{font-size:.8125rem; font-weight:600; color:var(--an-link); border-bottom:1px solid transparent; line-height:1.3}
  .an-buehne .an-lrow a:hover,.an-buehne .an-vergessen:hover{border-bottom-color:var(--an-accent-glow)}
  .an-klemme{position:relative; display:flex; align-items:center}
  /* Die Feldregeln der Anwendung (Senke, Rand, --bg) ausdruecklich zuruecknehmen */
  .an-klemme input,.an-klemme input:focus,.an-klemme textarea,.an-klemme textarea:focus{
    width:100%; height:44px; margin:0; padding:0 .875rem; font:inherit; font-size:1rem; color:var(--an-text);
    background:var(--an-feld-bg); border:1px solid var(--an-feld-border); border-radius:6px; outline:none; box-shadow:none;
    transition:border-color .15s,box-shadow .15s,background-color .15s; -webkit-appearance:none; appearance:none;
  }
  .an-klemme textarea,.an-klemme textarea:focus{height:auto; min-height:64px; padding:.55rem .875rem; line-height:1.45; resize:vertical}
  .an-klemme input::placeholder,.an-klemme textarea::placeholder{color:var(--an-placeholder)}
  .an-klemme input:focus,.an-klemme textarea:focus{border-color:var(--an-accent-glow); background:rgba(255,255,255,.06); box-shadow:0 0 0 3px rgba(58,140,255,.28)}
  .an-klemme input[aria-invalid="true"]{border-color:rgba(255,120,120,.7); box-shadow:0 0 0 3px rgba(255,90,90,.18)}
  .an-klemme input:focus-visible,.an-klemme textarea:focus-visible{outline:0}
  .an-buehne .an-nebenknopf{position:absolute; right:.375rem; top:50%; transform:translateY(-50%); height:32px; min-width:44px; padding:0 .625rem;
    font-size:.8125rem; font-weight:600; color:var(--an-link); border-radius:5px; background:rgba(58,140,255,.08); white-space:nowrap}
  .an-buehne .an-nebenknopf:hover{background:rgba(58,140,255,.16); color:#fff}
  .an-klemme input.an-hat-knopf{padding-right:5.5rem}
  .an-klemme input[type="password"]{font-family:var(--an-body)}

  /* Schritt 2: der Name steht fest — Punkt links, «aendern» rechts (wie .fest im Entwurf), das Feld
     bleibt ein Eingabefeld (readOnly), damit Passwort-Manager Name und Passwort zusammen sehen. */
  .an-feld.an-fest .an-klemme::before{content:""; position:absolute; left:.875rem; top:50%; transform:translateY(-50%);
    width:7px; height:7px; border-radius:50%; background:var(--an-accent-glow); box-shadow:0 0 8px rgba(58,140,255,.8); pointer-events:none}
  .an-feld.an-fest .an-klemme input,.an-feld.an-fest .an-klemme input:focus{
    background:rgba(255,255,255,.025); border-color:var(--an-glass-border); box-shadow:none;
    font-weight:600; padding-left:calc(.875rem + 7px + .6rem); text-overflow:ellipsis}
  .an-feld.an-fest .an-klemme input[aria-invalid="true"]{border-color:rgba(255,120,120,.7)}
  .an-feld.an-fest .an-klemme:has(input[aria-invalid="true"])::before{background:var(--an-bad)}

  /* Code: sechs Ziffern, breit gesetzt */
  .an-klemme input#l_code{font-size:1.375rem; letter-spacing:.32em; text-align:center; font-weight:600; font-variant-numeric:tabular-nums;
    padding-left:calc(.875rem + .32em); text-transform:uppercase}
  .an-buehne .an-hinweis{display:block; margin:.5rem 0 0; font-size:.8125rem; line-height:1.45; color:var(--an-muted)}
  /* 0.35.2 (K1): Text nur fuer Screenreader (Hinweis am Passkey-Knopf) — gleiche Klemm-Technik wie .an-s1 .an-feld--pw */
  .an-sr{position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0}
  /* Schritt 1: der Knopf «aendern» ist hidden — kein Platz dafuer freihalten */
  .an-form.an-s1 #l_user{padding-right:.875rem}
  .an-hinweis code{font-family:ui-monospace,Menlo,Consolas,monospace; font-size:.8125rem; color:var(--an-text); background:rgba(255,255,255,.06); padding:.05rem .3rem; border-radius:4px}

  /* ---------- Knoepfe (wie «Anmelden» der Startseite) ---------- */
  .an-buehne .an-btn{display:inline-flex; align-items:center; justify-content:center; gap:.5rem; width:100%; font-family:var(--an-body); font-size:.9375rem;
    font-weight:600; line-height:1; letter-spacing:.01em; padding:.8125rem 1.75rem; border-radius:6px; border:1px solid transparent;
    white-space:nowrap; min-height:48px; color:var(--an-text); background:none;
    transition:background-color .15s ease-out,border-color .15s ease-out,color .15s ease-out,transform .15s ease-out,box-shadow .15s ease-out}
  .an-buehne .an-btn:active{transform:translateY(1px)}
  .an-btn svg{width:16px; height:16px; flex:none}
  .an-buehne .an-btn-primary,.an-buehne .an-btn-primary:hover{background:linear-gradient(135deg,var(--an-accent) 0%,#1a5fd4 100%); border-color:var(--an-accent); color:#fff;
    box-shadow:0 4px 20px rgba(38,112,237,.35),inset 0 1px 0 rgba(255,255,255,.15)}
  .an-buehne .an-btn-primary:hover{background:linear-gradient(135deg,var(--an-accent) 0%,#1e64dc 100%); border-color:var(--an-accent-glow);
    box-shadow:0 6px 28px rgba(38,112,237,.5),inset 0 1px 0 rgba(255,255,255,.2); transform:translateY(-1px)}
  .an-buehne .an-btn-glas,.an-buehne .an-btn-glas:hover{background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.16); color:var(--an-text); margin-top:.75rem}
  .an-buehne .an-btn-glas:hover{background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.28)}
  .an-btn-glas svg{color:var(--an-accent-glow)}
  .an-trenner{display:flex; align-items:center; gap:.75rem; margin:1rem 0 0; font-size:.75rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--an-muted)}
  .an-trenner::before,.an-trenner::after{content:""; flex:1; height:1px; background:var(--an-glass-border)}

  /* ---------- Formular als Raster, wie seit 13.09.2026: «Passwort vergessen?» steht im DOM HINTER dem
     Anmeldeknopf (Tab: Passwort → Anzeigen → Anmelden → Link) und wird per Grid in die Beschriftungszeile
     des Passwortfelds gehoben. ---------- */
  .an-form{display:grid; grid-template-columns:1fr; position:relative}
  .an-form #l_msg{grid-row:1; grid-column:1}
  .an-form .an-feld--user{grid-row:2; grid-column:1}
  .an-form .an-feld--pw{grid-row:3; grid-column:1}
  .an-form #l_codezeile{grid-row:4; grid-column:1}
  .an-form #l_go{grid-row:5; grid-column:1}
  .an-form .an-vergessen{grid-row:3; grid-column:1; justify-self:end; align-self:start; margin-top:.05rem}
  .an-form #an_passkeyblock{grid-row:6; grid-column:1}
  /* Zwei Schritte (A3, 0.34.0): Schritt 1 (.an-s1) zeigt nur den Anmeldenamen; Passwortfeld und «Passwort
     vergessen?» bleiben im DOM und im selben Formular (Passwort-Manager sehen username + current-password
     zusammen), sind aber nur visuell verborgen — NICHT display:none. Tastatur/Screenreader: tabIndex=-1 und
     aria-hidden (JS, anSchritt). Der Passkey-Block ist ein Knopf, kein Feld — er darf hidden sein. */
  .an-form.an-s1 .an-feld--pw,.an-form.an-s1 .an-vergessen{
    position:absolute; width:1px; height:1px; min-width:0; min-height:0; margin:0; padding:0; overflow:hidden;
    clip-path:inset(50%); opacity:0; pointer-events:none;
  }
  .an-form.an-s1 .an-feld--pw input,.an-form.an-s1 .an-feld--pw .an-nebenknopf{width:1px; min-width:0; height:1px; padding:0}
  /* Zweite Stufe offen: der Passkey-Knopf tritt zurueck (wie im Entwurf, Zustand «code») */
  .an-form.an-code #an_passkeyblock{display:none}
  /* Z1 (0.34.3, Ivi 17.09.2026): die zweite Stufe ist ein EIGENER Schritt 3 — nur das Code-Feld ist zu sehen.
     Mit drei sichtbaren Feldern fuellten Passwort-Manager den Einmalcode ins Passwortfeld oder das Passwort in den
     Code. Name und Passwort bleiben im selben <form> (werden mitgeschickt) und sind wie in Schritt 1 nur visuell
     verborgen — nicht display:none, damit der Passwort-Manager sein Einmalcode-Feld dem Formular zuordnet. */
  .an-form.an-code .an-feld--user,.an-form.an-code .an-feld--pw,.an-form.an-code .an-vergessen{
    position:absolute; width:1px; height:1px; min-width:0; min-height:0; margin:0; padding:0; overflow:hidden;
    clip-path:inset(50%); opacity:0; pointer-events:none;
  }
  .an-form.an-code .an-feld--user input,.an-form.an-code .an-feld--pw input,
  .an-form.an-code .an-feld--user .an-nebenknopf,.an-form.an-code .an-feld--pw .an-nebenknopf{width:1px; min-width:0; height:1px; padding:0}
  .an-form #an_zurueck{grid-row:6; grid-column:1; justify-self:center; margin-top:1.125rem; font-size:.875rem; font-weight:600;
    color:var(--an-link); border-bottom:1px solid transparent; line-height:1.3}
  .an-form #an_zurueck:hover{border-bottom-color:var(--an-accent-glow)}
  .an-form:not(.an-code) #an_zurueck{display:none}
  .an-form.an-code #l_codezeile{margin-top:.25rem}

  /* ---------- Erfolg (kurz sichtbar, bis die Anwendung zeichnet) ---------- */
  .an-erfolg{text-align:center; padding:.5rem 0 .25rem}
  .an-erfolg .an-ring{width:64px; height:64px; margin:0 auto 1.25rem; border-radius:50%; display:grid; place-items:center;
    background:linear-gradient(135deg,var(--an-accent) 0%,#1a5fd4 100%); box-shadow:0 8px 32px rgba(38,112,237,.55),inset 0 1px 0 rgba(255,255,255,.2)}
  .an-erfolg .an-ring svg{width:30px; height:30px; color:#fff}
  .an-erfolg h2{margin-bottom:.5rem}
  .an-erfolg p{color:var(--an-muted); font-size:.9375rem}
  .an-erfolg .an-balken{height:4px; border-radius:2px; background:rgba(255,255,255,.08); margin-top:1.5rem; overflow:hidden}
  .an-erfolg .an-balken i{display:block; height:100%; width:62%; border-radius:2px; background:linear-gradient(90deg,var(--an-accent),var(--an-accent-glow)); box-shadow:0 0 12px rgba(58,140,255,.7)}

  /* ---------- Unter der Karte ---------- */
  .an-unten{text-align:center; font-size:.9375rem; color:var(--an-text-2); line-height:1.55}
  .an-unten a{color:var(--an-text); font-weight:600; border-bottom:1px solid rgba(255,255,255,.25); transition:border-color .15s}
  .an-unten a:hover{border-bottom-color:var(--an-accent-glow)}
  .an-unten .an-klein{display:block; font-size:.8125rem; color:var(--an-muted); margin-top:.15rem}
  .an-unten .an-imp{margin-top:.6rem; font-size:.8125rem}
  /* 0.37.0 (S4): Sprachwahl unter der Karte Schritt 1 — drei Knöpfe mit Fähnchen 20×14 (CH 14×14) und Name, eine Zeile
     auch bei 400 px (GEMESSEN im Prototyp: Zeile 22 px, kein Umbruch); gewählte Sprache fett mit Unterstrich. */
  .an-unten .an-sprachen{display:flex; justify-content:center; gap:1.1rem; margin-top:.9rem; flex-wrap:wrap}
  .an-sprache{display:inline-flex; align-items:center; gap:.4rem; background:none; border:0; padding:.2rem .1rem; color:var(--an-text-2); font:inherit; font-size:.875rem; cursor:pointer; border-bottom:1px solid transparent}
  .an-sprache svg.fl{width:20px; height:14px; flex:none; border-radius:2px; box-shadow:0 0 0 1px rgba(255,255,255,.18)}
  .an-sprache svg.fl.quadrat{width:14px}
  .an-sprache.on{color:var(--an-text); font-weight:600; border-bottom-color:var(--an-accent-glow)}
  .an-sprache:hover{color:var(--an-text)}
  .an-unten .an-imp a{font-weight:400; color:var(--an-text-2); border-bottom-color:transparent}
  .an-unten .an-imp a:hover{border-bottom-color:var(--an-accent-glow)}

  /* Nebenmasken in derselben Karte (Konto beantragen, Passwort vergessen, neues Passwort) */
  .an-buehne .an-karte .an-check{display:flex; gap:9px; align-items:flex-start; margin:1rem 0 0; padding-top:.9rem; border-top:1px solid var(--an-glass-border); font-size:.875rem; color:var(--an-text-2); line-height:1.45}
  .an-karte .an-check input{width:16px; height:16px; margin:3px 0 0; flex:none; accent-color:var(--an-accent); box-shadow:none}
  .an-karte .an-check strong{color:var(--an-text)}
  .an-karte .an-text a,.an-karte .an-hinweis a{color:var(--an-link); border-bottom:1px solid transparent}
  .an-karte .an-text a:hover{border-bottom-color:var(--an-accent-glow)}
  .an-karte .an-fehler{color:var(--an-bad)}
  .an-karte .an-gut{color:var(--an-ok); font-weight:600}
  .an-karte .an-antwort{margin-top:.75rem; min-height:1.3rem; font-size:.9375rem; line-height:1.45}
  .an-karte .an-antwort .an-btn{margin-top:.6rem}
  .an-karte .an-gross{font-size:34px; line-height:1; margin-bottom:.5rem}

  /* ---------- Fuss ---------- */
  .an-footer{background:var(--an-bg-master); color:var(--an-text-2); border-top:1px solid var(--an-glass-border)}
  .an-footer .an-fcont{width:100%; max-width:var(--an-container); margin:0 auto; padding:1.1rem var(--an-x); display:flex; flex-wrap:wrap;
    align-items:center; justify-content:center; gap:.5rem 1rem; font-size:.875rem}
  .an-footer a{color:var(--an-text); border-bottom:1px solid transparent}
  .an-footer a:hover{border-bottom-color:var(--an-accent-glow)}
  .an-footer .an-sep{color:var(--an-text-muted)}

  /* ---------- Responsiv (Entwurf M) ---------- */
  @media (max-width:900px){
    .an-container{grid-template-columns:minmax(0,1fr); justify-items:center; align-content:start; padding-top:1.25rem; padding-bottom:1.5rem; gap:0}
    .an-marke{display:none}
    .an-karte-spalte{justify-self:center; gap:1rem}
    .an-buehne .an-klein-logo,.an-buehne .an-klein-logo:hover{display:inline-flex; align-self:center; align-items:center; padding:.35rem .6rem; border-radius:8px; background:#fff; box-shadow:0 1px 0 rgba(255,255,255,.25),0 6px 20px rgba(0,0,0,.45)}
    .an-klein-logo img{height:30px; width:auto}
    .an-main::before{background:
      radial-gradient(520px 420px at 50% 12%,rgba(58,140,255,.28),transparent 64%),
      radial-gradient(600px 400px at 10% 100%,rgba(22,33,76,.9),transparent 70%),
      linear-gradient(180deg,var(--an-bg-master) 0%,var(--an-bg-primary) 100%)}
  }
  @media (max-width:560px){
    .an-buehne{--an-x:16px}
    .an-karte{padding:1.375rem 1.25rem 1.25rem}
    .an-karte-kopf{margin-bottom:1.125rem}
    .an-karte h2{font-size:1.5rem}
    .an-feld{margin-bottom:.9rem}
    .an-msg{margin-bottom:.9rem; padding:.625rem .75rem; font-size:.875rem}
    .an-btn{min-height:46px}
    .an-btn-glas{margin-top:.6rem}
    .an-trenner{margin-top:.8rem}
    .an-unten{font-size:.875rem}
    .an-footer .an-fcont{padding-top:.85rem; padding-bottom:.85rem; font-size:.75rem; gap:.25rem .625rem}
  }
  @media (prefers-reduced-motion:reduce){
    .an-buehne *{transition:none!important; animation:none!important}
  }

  /* ====================================================================
     GERÜST (Runde 1 der Layout-Runde, 0.32.0, 16.09.2026)

     Das Fenstergerüst der bisherigen Programme des Betriebs, Mass für Mass:
     Titelleiste, Registerzeile, Menüband «Vorgabe» (90 px, Gruppen mit
     Gruppentitel unten; einklappbar auf 32 px), Vorgabezeile, links der
     Ordnerbaum mit den Tasten F1–F6 (Ansicht 1) oder die vier Kacheln
     enerson Auftrag/Service/Zeit/Cloud (Ansicht 2), rechts der Inhalt,
     unten die Statuszeile mit vier Feldern. Farbwelt «Schaltplan 2.0»
     (Entwurf B), Dunkelmodus mit den gedämpften Markierungen aus C.

     Die Kollegen haben jahrelang das Original bedient: gleiche Orte,
     gleiche Wörter, gleiche Tasten. Darum keine eigenen Gestaltungsideen —
     wo etwas unklar ist, gilt Entwurf B.

     Alle bisherigen Inhalts-Regeln (Tabellen, Formulare, .off-*, .stg-*,
     .sia-*, Anmeldemaske) bleiben; nur der Rahmen um sie herum ist neu.
     Die Zeilenhöhe --zeile (Vorgabe 18 px, Schieber in der Vorgabezeile)
     wirkt in dieser Runde auf Baum und Kacheln; die Grids folgen in
     Runde 2.
     ==================================================================== */
  html,body{height:100%}
  body{overflow:hidden}
  body.an-anmeldung{overflow:auto}

  #fenster{
    display:grid;height:100vh;height:100dvh;overflow:hidden;
    grid-template-rows:var(--h-titel) var(--h-register) auto auto minmax(0,1fr) auto var(--h-status);
    grid-template-columns:100%;
    background:var(--bg);
    font-size:var(--schriftgrad);
  }
  /* Feste Zeilen: ein ausgeblendetes Teil (Register am Handy, F-Zeile) darf die
     übrigen nicht in die falsche Spur rutschen lassen. GEMESSEN 16.09.2026 im
     Harness: ohne feste Zuordnung lag das Band am Handy in der 0-px-Spur des
     Registers und die Statuszeile hinterliess 22 px Leerraum. */
  #titel{grid-row:1} #register{grid-row:2} #band{grid-row:3} #vorgabe{grid-row:4}
  #arbeit{grid-row:5} #ftasten{grid-row:6} #status{grid-row:7}

  /* ---------------------------------------------------- Titelleiste */
  #titel{
    background:var(--titel);color:var(--titel-ink);
    display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;
    height:var(--h-titel);padding:0 0 0 10px;font-size:13px;letter-spacing:.01em;
  }
  #titel .marke{font:700 11px/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;opacity:.85;padding-right:14px;white-space:nowrap}
  #titel .text{text-align:center;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  #titel .rechts{display:flex;align-items:center;gap:6px;padding:0 6px 0 10px}
  #titel .menuek{display:none}
  #titel .modus-knopf,#titel .menuek{
    height:20px;padding:0 8px;border:1px solid var(--titel-rand);border-radius:var(--radius);
    background:none;color:inherit;font:400 11px/1 var(--schrift);box-shadow:none;cursor:pointer;white-space:nowrap;
  }
  #titel .modus-knopf:hover,#titel .menuek:hover{background:var(--titel-fuell-hover);border-color:var(--titel-rand-hover)}
  /* Der Kontoknopf sitzt jetzt in der Titelleiste: flach, weiss auf Blau (0.35.1: Werte als --titel-* je Haut) */
  #titel .konto-knopf{
    height:20px;padding:0 7px 0 3px;gap:6px;box-shadow:none;
    background:var(--titel-konto-fuell);border:1px solid var(--titel-konto-rand);color:var(--titel-ink);
    font:500 11.5px/1 var(--schrift);
  }
  #titel .konto-knopf:hover{background:var(--titel-konto-fuell-hover);border-color:var(--titel-rand-hover)}
  #titel .konto-knopf .zeichen{width:15px;height:15px;font:600 8.5px/15px var(--mono);background:var(--titel-zeichen-bg);color:var(--titel-zeichen-ink)}
  #titel .konto-knopf .pfeil{color:var(--titel-pfeil)}
  #titel .konto-knopf .neu{box-shadow:0 0 0 2px var(--titel-ring)}
  #titel .konto-menu{top:calc(100% + 5px);color:var(--ink)}
  #titel .merkpunkt{position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--warn);box-shadow:0 0 0 2px var(--titel)}

  /* ---------------------------------------------------- Registerzeile */
  #register{
    position:relative;background:var(--register);border-bottom:1px solid var(--line);
    display:flex;align-items:flex-end;padding:0 6px;height:var(--h-register);
  }
  #register .reg-tabs{display:flex;align-items:flex-end;height:100%}
  #register .reg-tabs button{
    height:24px;padding:0 9px;margin-right:1px;border:1px solid transparent;border-bottom:0;
    background:none;box-shadow:none;color:var(--ink-2);font:400 12px/1 var(--schrift);
    border-radius:var(--radius) var(--radius) 0 0;cursor:pointer;
  }
  #register .reg-tabs button u{text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}
  #register .reg-tabs button:hover{color:var(--accent-ink)}
  #register .reg-tabs button.on{
    background:var(--band);color:var(--ink);font-weight:600;
    border-color:var(--line);border-top:2px solid var(--accent);height:26px;margin-bottom:-1px;
  }
  #register .reg-tabs button.offen{background:var(--panel);border-color:var(--line);color:var(--ink)}
  #register .reg-rechts{margin-left:auto;display:flex;align-items:center;gap:8px;padding-bottom:4px;font-size:11px;color:var(--muted);white-space:nowrap}

  /* Pulldown-Menü unter dem Register (Datei, Bearbeiten, Suchen, Einstellungen, Hilfe) */
  #menue{
    position:fixed;z-index:70;min-width:240px;padding:4px;
    background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
    box-shadow:var(--schatten),0 0 0 1px var(--line-soft);
    font-size:12px;color:var(--ink);text-align:left;
  }
  #menue .me{
    display:flex;align-items:center;gap:8px;width:100%;padding:5px 10px;border:0;
    background:none;box-shadow:none;text-align:left;font:400 12px/1.3 var(--schrift);
    color:var(--ink);border-radius:var(--radius);cursor:pointer;white-space:nowrap;
  }
  #menue .me:hover:not(:disabled){background:var(--accent-soft);color:var(--accent-ink)}
  #menue .me:disabled{color:var(--muted);cursor:default;opacity:1}
  #menue .me .w{width:12px;text-align:center;color:var(--accent);font-family:var(--mono);flex:none}
  #menue .me .k{margin-left:auto;padding-left:16px;font:500 10.5px/1 var(--mono);color:var(--muted)}
  #menue .trenner{height:1px;background:var(--line-soft);margin:4px 2px}
  #menue .inaktiv{padding:5px 10px;color:var(--muted);font-size:11px;white-space:nowrap}
  #menue .ueberschrift{padding:6px 10px 2px;color:var(--muted);font:600 9.5px/1.4 var(--mono);letter-spacing:.11em;text-transform:uppercase}

  /* ---------------------------------------------------- Menüband */
  #band{
    position:relative;height:var(--h-band);background:var(--band);border-bottom:1px solid var(--line);
    display:flex;align-items:stretch;padding:0 28px 0 4px;overflow:hidden;
  }
  #band .gruppe{display:grid;grid-template-rows:1fr 16px;padding:4px 6px 0;border-right:1px solid var(--line-soft)}
  #band .gruppe:last-of-type{border-right:0}
  #band .knoepfe{display:flex;align-items:flex-start;gap:2px}
  #band .rk{
    width:auto;min-width:64px;max-width:92px;padding:3px 2px 2px;border:1px solid transparent;border-radius:var(--radius);
    display:flex;flex-direction:column;align-items:center;gap:3px;
    font:400 11px/1.15 var(--schrift);text-align:center;color:var(--ink);
    background:none;box-shadow:none;cursor:pointer;white-space:pre-line;
  }
  #band .rk:hover:not(:disabled){background:var(--panel);border-color:var(--line)}
  #band .rk.on{background:var(--panel);border-color:var(--accent)}
  #band .rk:disabled{color:var(--muted);opacity:1;cursor:default}
  #band .rk:disabled .ik{color:var(--muted)}
  #band .ik{width:32px;height:32px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;color:var(--accent);display:block;flex:none}
  #band .ik.rot{color:var(--bad)}
  #band .rk.on .ik{color:var(--accent-ink)}
  #band .gtitel{font-size:10px;color:var(--muted);text-align:center;align-self:end;padding-bottom:2px;white-space:nowrap}
  #band .schalter{
    position:absolute;right:4px;bottom:3px;width:20px;height:18px;padding:0;
    border:1px solid transparent;border-radius:var(--radius);background:none;box-shadow:none;
    color:var(--muted);font-size:11px;cursor:pointer;
  }
  #band .schalter:hover{border-color:var(--line);background:var(--panel);color:var(--ink)}
  #band .leer{align-self:center;color:var(--muted);font-size:11px;padding:0 8px}
  #band:empty{display:none}
  /* eingeklappt: 32-px-Symbolzeile (Entwurf D), Beschriftung im Tooltip */
  #band.klein{height:32px;align-items:center;padding:0 4px}
  #band.klein .gruppe{grid-template-rows:1fr;padding:0 3px;height:100%;align-items:center}
  #band.klein .gtitel{display:none}
  #band.klein .rk{width:28px;height:28px;padding:0;flex-direction:row;gap:3px;justify-content:center}
  #band.klein .rk .ik{width:18px;height:18px;stroke-width:1.8}
  #band.klein .rk .tx{display:none}
  #band.klein .schalter{position:static;margin-left:auto;bottom:auto}

  /* ---------------------------------------------------- Vorgabezeile */
  #vorgabe{
    height:var(--h-vorgabe);background:var(--panel);border-bottom:1px solid var(--line);
    display:flex;align-items:center;gap:8px;padding:0 8px;color:var(--ink-2);overflow:hidden;
  }
  /* #tools ist weiterhin der Container der Ansichten — nur die Lage ist neu.
     Die Klasse .tools bleibt für die Abschnittsköpfe IM Inhalt. */
  #vorgabe #tools{
    flex:1;min-width:0;display:flex;flex-wrap:nowrap;align-items:center;gap:6px;
    padding:0;border:0;background:none;font-size:12px;overflow-x:auto;overflow-y:hidden;
    scrollbar-width:thin;
  }
  #vorgabe #tools > *{flex:none}
  #vorgabe #tools > .spacer{flex:1;margin-left:0}
  /* I14 (0.33.1): appearance:none — Safari zeichnete Suchfeld (rund, Lösch-Kreuz), Select und Datum nativ und sprengte
     die 22-px-Zeile (C8/D11). Die Optik kommt aus dieser Regel; dem Select fehlt dann der Pfeil — zwei Verläufe malen ihn
     (kein Bild, keine eingebettete Bildquelle). Schieber (range), Kästchen und Datei bleiben nativ. */
  #vorgabe input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=file]),#vorgabe select{
    height:22px;padding:0 6px;font-size:12px;line-height:20px;box-shadow:none;-webkit-appearance:none;appearance:none;
    background:var(--feld);border:1px solid var(--feldrand);border-radius:var(--radius);color:var(--ink);
  }
  #vorgabe select,.hilfe-zeile select{
    padding-right:18px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
    background-position:calc(100% - 11px) 50%,calc(100% - 7px) 50%;background-size:4px 4px,4px 4px;background-repeat:no-repeat;
  }
  #vorgabe input[type=search]::-webkit-search-decoration,.hilfe-zeile input[type=search]::-webkit-search-decoration{-webkit-appearance:none}
  #vorgabe input[type=search]{min-width:200px}
  #vorgabe label{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--ink-2);white-space:nowrap}
  #vorgabe input[type=checkbox]{min-width:auto;margin:0;accent-color:var(--accent)}
  #vorgabe strong{font-weight:600;color:var(--ink)}
  #schieber{margin-left:auto;display:flex;align-items:center;gap:6px;color:var(--muted);flex:none;font-size:11px;white-space:nowrap}
  #schieber output{font:400 11px/1 var(--mono);min-width:2ch;text-align:right}
  #schieber input[type=range]{width:90px;height:16px;accent-color:var(--accent);padding:0;background:none;border:0;box-shadow:none}

  /* ---------------------------------------------------- Arbeitsbereich */
  #arbeit{display:grid;grid-template-columns:var(--b-baum) minmax(0,1fr);min-height:0;background:var(--bg)}
  #arbeit.ohne-baum{grid-template-columns:minmax(0,1fr)}
  #arbeit.ohne-baum #baum{display:none}
  #haupt{min-height:0;min-width:0;display:flex;flex-direction:column;background:var(--panel)}
  #haupt > .panel{
    flex:1;min-height:0;overflow:auto;border:0;border-radius:0;box-shadow:none;
  }
  #haupt > .panel::before,#haupt > .panel::after{display:none}

  /* Baum (Ansicht 1) */
  #baum{border-right:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;min-height:0;font-size:var(--schriftgrad)}
  .baum-tabs{display:flex;background:var(--register);border-bottom:1px solid var(--line);height:22px;padding:2px 2px 0;flex:none}
  .baum-tabs button{
    height:20px;padding:0 8px;border:1px solid transparent;border-bottom:0;background:none;box-shadow:none;
    color:var(--ink-2);font:400 11.5px/1 var(--schrift);border-radius:var(--radius) var(--radius) 0 0;cursor:pointer;
  }
  .baum-tabs button.on{background:var(--panel);border-color:var(--line);border-top:2px solid var(--accent);color:var(--ink);font-weight:600;margin-bottom:-1px}
  #platz{text-align:center;font-weight:700;padding:6px 0 4px;flex:none;color:var(--ink)}
  #nav{flex:1;min-height:0;overflow:auto;padding:0 0 6px 4px;margin:0;display:block}
  #nav ul{list-style:none;margin:0;padding:0 0 0 9px}
  #nav ul.wurzel{padding-left:0}
  /* 0.35.0 (B1): jede Gruppe haengt an ihrer Ader (2 px in Bereichsfarbe); Einzug netto 9 px wie vorher (6 + 2 + 1 —
     Masse aus Entwurf F, dort per Pixeldifferenz nur x 6–12 verschieden). html.ohne-adern schaltet ab (spaetere Haut
     «Klassisch»). Kein getoenter aktiver Ordner in Bereichsfarbe (F-Regel), das ⊟-Zeichen bleibt --muted (Gruenspan
     hell haette als 10-px-Glyphe 4.01:1). */
  html:not(.ohne-adern) #nav li[data-b] > ul{border-left:2px solid var(--b);margin-left:6px;padding-left:1px}
  #nav .knoten{
    display:flex;align-items:center;gap:2px;height:var(--zeile);line-height:var(--zeile);
    color:var(--ink-2);white-space:nowrap;cursor:pointer;padding-left:2px;user-select:none;
  }
  #nav .knoten .auf{display:inline-block;width:12px;font:400 10px/1 var(--mono);color:var(--muted)}
  #nav .knoten:hover{color:var(--ink)}
  #nav .ordner{
    display:grid;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:4px;
    height:var(--zeile);padding:0 3px;margin-right:2px;white-space:nowrap;
    border-left:var(--klemme) solid transparent;border-radius:var(--radius);cursor:pointer;color:var(--ink);
  }
  #nav .ordner:hover{background:var(--band)}
  #nav .ordner.on{background:var(--baum-aktiv);color:var(--accent-ink);border-left-color:var(--accent);font-weight:600}
  #nav .ordner .tx{overflow:hidden;text-overflow:ellipsis}
  #nav .ordner kbd{font:400 10px/1 var(--mono);color:var(--muted);padding-left:2px}
  #nav .ordner.on kbd{color:var(--accent-ink)}
  #nav .ordner svg{width:14px;height:14px;stroke:var(--ink-2);fill:var(--band);stroke-width:1.4;stroke-linejoin:round}
  #nav .ordner.on svg{stroke:var(--accent);fill:var(--panel)}
  #nav .merker,#nav .kachel .merker{
    display:inline-block;min-width:16px;padding:0 4px;border-radius:8px;
    background:var(--accent);color:var(--knopf-ink);font:600 10px/15px var(--mono);
    font-variant-numeric:tabular-nums;text-align:center;
  }
  #nav .ordner .merker{margin-left:4px}
  /* Kacheln (Ansicht 2, aus Entwurf D) */
  #nav .kacheln{padding:2px 4px 0 0}
  #nav .kachel{
    position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;width:100%;
    border:1px solid var(--line-soft);background:var(--band);border-radius:var(--radius);
    padding:8px 4px 6px;margin-bottom:4px;font:400 11px/12px var(--schrift);color:var(--ink);
    box-shadow:none;cursor:pointer;
  }
  #nav .kachel svg{width:28px;height:28px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;color:var(--accent)}
  #nav .kachel:hover{background:var(--panel);border-color:var(--line)}
  #nav .kachel.on{background:var(--baum-aktiv);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
  #nav .kachel .merker{position:absolute;top:4px;right:4px}
  #nav .kachel-liste{margin:0 0 6px;padding-left:2px}
  #baum_menue{display:none;border-top:1px solid var(--line);padding:4px 0;flex:none}
  #baum_menue button{
    display:block;width:100%;text-align:left;padding:6px 10px;border:0;background:none;box-shadow:none;
    font:400 13px/1.3 var(--schrift);color:var(--ink);cursor:pointer;
  }
  #baum_menue button:hover{background:var(--accent-soft);color:var(--accent-ink)}

  /* ---------------------------------------------------- Werkzeugleiste im Inhalt
     (Detailfenster in Runde 1: die zustandsabhängigen Knöpfe bleiben im Inhalt,
     als erste Zeile; das Band trägt nur die Basisfunktionen.) */
  .tools.werkzeuge{padding:7px 12px;gap:6px}
  .tools.werkzeuge button,.tools.werkzeuge a.knopf{padding:3px 9px;font-size:12px}

  /* ---------------------------------------------------- Funktionstastenzeile (Runde 3) */
  #ftasten{height:24px;background:var(--band);border-top:1px solid var(--line);display:flex;align-items:center;gap:3px;padding:0 4px}

  /* ---------------------------------------------------- Statuszeile */
  #status{
    height:var(--h-status);background:var(--register);border-top:1px solid var(--line);
    display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;
    color:var(--status-ink);font-size:11.5px;
  }
  #status span{padding:0 10px;border-right:1px solid var(--line);height:100%;display:flex;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  #status span:last-child{border-right:0}
  #status a{color:inherit;box-shadow:none;text-decoration:underline;text-underline-offset:2px;cursor:pointer;margin-left:6px}
  #status a:hover{background:none;color:var(--accent)}
  #status .zahl{font-family:var(--mono);font-variant-numeric:tabular-nums}

  /* Aktualisierungsmeldung (fassungHinweis): bisher ohne Regel, jetzt ein
     Streifen unten rechts über der Statuszeile. */
  .fassung-hinweis{
    position:fixed;right:12px;bottom:calc(var(--h-status) + 10px);z-index:90;
    display:flex;gap:14px;align-items:center;max-width:540px;padding:10px 14px;
    background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn);
    border-radius:var(--radius);font-size:12.5px;box-shadow:var(--schatten-hinweis);
  }
  .fassung-hinweis .muted{color:var(--warn)}
  .fassung-hinweis button{font-size:12px;padding:4px 10px}
  .fassung-hinweis .fassung-jetzt{background:var(--warn);border-color:var(--warn);color:var(--knopf-ink);font-weight:600}

  /* 0.35.0 (H1): die Leiste unten gibt es nur im Handy-Modus (Block max-width:900px) */
  #schiene{display:none}
  /* Hilfespalte am Handy liegt über dem Inhalt — der Körper rollt dann nicht */
  body.hilfe-offen.an-handy{overflow:hidden}
  /* Schleier hinter der Schublade (Handy) */
  #schleier{position:fixed;inset:0;z-index:79;background:var(--schleier)}

  /* Tastenkürzel-Übersicht (Hilfe) */
  .tk-tabelle{border-collapse:collapse;font-size:12.5px;margin:0}
  .tk-tabelle td{padding:4px 12px 4px 0;border-bottom:1px solid var(--line-soft);vertical-align:top;white-space:normal}
  .tk-tabelle td:first-child{font-family:var(--mono);white-space:nowrap;color:var(--accent-ink)}

  /* Anleitung (0.36.1): Panel ueber der Ansicht, z 150 — unter der Palette (180), ueber Menue/Blatt/Konto */
  #an_hinter{position:fixed;inset:0;z-index:150;background:var(--schleier-stark);display:flex;padding:min(3vh,24px) min(3vw,24px);animation:vs-auf .13s ease-out}
  #an_box{flex:1;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);background:var(--panel);border:var(--rail);border-radius:10px;overflow:hidden;box-shadow:var(--schatten-gross);max-width:1240px;width:100%;margin:0 auto}
  .an-kopf{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 12px;border-bottom:var(--rail)}
  .an-kopf .an-titel{font-weight:650;white-space:nowrap}
  .an-kopf .an-fassung{font:500 11px/1.5 var(--mono);color:var(--muted);border-left:var(--klemme) solid var(--accent);padding-left:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .an-kopf .an-fassung.alt{color:var(--accent-ink);border-left-color:var(--warn,#d97706)}
  .an-kopf .an-such{flex:1;min-width:160px;max-width:440px;height:28px;padding:0 8px;font:inherit;font-size:13px;background:var(--feld);border:1px solid var(--feldrand);border-radius:var(--radius);color:var(--ink);box-shadow:none;-webkit-appearance:none;appearance:none}
  .an-kopf a,.an-kopf button{padding:5px 11px;border:1px solid var(--line);background:transparent;color:inherit;border-radius:7px;font:inherit;font-size:13px;text-decoration:none;cursor:pointer;white-space:nowrap}
  .an-kopf a:hover,.an-kopf button:hover{border-color:var(--accent)}
  .an-kopf button.zu{font-weight:600;margin-left:auto}
  .an-koerper{display:grid;grid-template-columns:272px minmax(0,1fr);min-height:0}
  .an-nav{overflow:auto;border-right:1px solid var(--line);padding:8px 0;font-size:12.5px;background:var(--band)}
  .an-nav select{display:none}
  .an-nav button{display:block;width:100%;text-align:left;border:0;background:none;padding:6px 12px;font:inherit;font-size:12.5px;color:var(--ink);cursor:pointer;border-radius:0;box-shadow:none;line-height:1.35}
  .an-nav button:hover{background:var(--accent-soft)}
  .an-nav button.an-kap .nr{display:inline-block;width:18px;font-family:var(--mono);color:var(--muted)}
  .an-nav button.an-kap.on{background:var(--panel);color:var(--accent-ink);font-weight:600;border-left:3px solid var(--accent);padding-left:9px}
  .an-nav button.an-abs{padding:3px 12px 3px 32px;font-size:11.5px;color:var(--ink-2)}
  .an-nav button.an-hier{margin:2px 8px 10px;width:calc(100% - 16px);border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent-soft);color:var(--accent-ink);font-weight:600;padding:6px 10px}
  .an-nav .an-hier-t{display:block;font:600 10px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
  .an-inhalt{overflow:auto;padding:14px 26px 48px;font-size:13.5px;line-height:1.55;overflow-wrap:anywhere}
  .an-inhalt h1{font-size:20px;line-height:1.25;margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid var(--accent)}
  .an-inhalt h2{font-size:15.5px;margin:24px 0 8px;color:var(--accent-ink)}
  .an-inhalt h3{font-size:13.5px;margin:18px 0 6px}
  .an-inhalt h4{font-size:13px;margin:14px 0 4px}
  .an-inhalt p{margin:0 0 9px}
  .an-inhalt ul,.an-inhalt ol{margin:0 0 9px;padding-left:24px}
  .an-inhalt li{margin:0 0 3px}
  .an-inhalt figure{margin:8px 0 12px}
  .an-inhalt figure img{max-width:100%;height:auto;border:1px solid var(--line);background:#fff;cursor:zoom-in}
  .an-inhalt figure img.gross{max-width:none;cursor:zoom-out}
  .an-inhalt figure + p{font-size:12px;color:var(--ink-2)}
  .an-inhalt table{border-collapse:collapse;font-size:12.5px;margin:4px 0 12px;max-width:100%}
  .an-inhalt th,.an-inhalt td{border:1px solid var(--line);padding:4px 8px;text-align:left;vertical-align:top}
  .an-inhalt th{background:var(--band)}
  .an-inhalt code{font-family:var(--mono);font-size:12px;background:var(--band);padding:0 4px;border-radius:3px}
  .an-inhalt kbd{font:11px/1.4 var(--mono);border:1px solid var(--line);border-bottom-width:2px;border-radius:3px;padding:0 4px;background:var(--panel);white-space:nowrap}
  .an-inhalt blockquote{margin:6px 0 12px;padding:6px 12px;border-left:3px solid var(--accent);background:var(--band);color:var(--ink-2)}
  .an-inhalt mark{background:var(--accent-soft);color:var(--accent-ink);padding:0 1px;border-radius:2px}
  .an-inhalt .an-ziel{box-shadow:-6px 0 0 var(--accent);padding-left:0}
  .an-inhalt .an-fuss{margin-top:28px;padding-top:8px;border-top:1px solid var(--line-soft);font-size:11.5px}
  /* 0.37.0 (S15b): Hinweis für en/hr-Konten — die Kapitel bleiben bis 0.37.1 Deutsch */
  .an-inhalt .an-nurdeutsch{margin:0 0 14px;padding:7px 10px;border:1px solid var(--line);border-left:var(--klemme) solid var(--accent);border-radius:var(--radius);font-size:12.5px;color:var(--muted);background:var(--band)}
  .an-treffer .an-treffer-kopf{margin:0 0 8px;font-size:12.5px;color:var(--muted)}
  .an-treffer .an-tr{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line-soft);background:none;padding:8px 6px;font:inherit;color:var(--ink);cursor:pointer;border-radius:0;box-shadow:none;line-height:1.4}
  .an-treffer .an-tr:hover{background:var(--accent-soft)}
  .an-treffer .an-tr .kap{display:block;font-size:11px;color:var(--muted)}
  .an-treffer .an-tr .tx{display:block;font-weight:600}
  .an-treffer .an-tr .kx{display:block;font-size:12.5px;color:var(--ink-2)}
  .an-treffer .an-tr b{color:var(--accent-ink);background:var(--accent-soft);font-weight:600}
  @media (max-width:900px){
    #an_hinter{padding:0;animation:none}
    #an_box{border-radius:0;border:0;max-width:none}
    .an-kopf{padding:8px 10px;gap:6px}
    .an-kopf .an-fassung{order:5;flex-basis:100%;border-left:0;padding-left:0;font-size:10.5px}
    .an-kopf .an-such{order:3;flex-basis:100%;max-width:none;height:36px;font-size:16px}
    .an-kopf a,.an-kopf button{min-height:36px}
    .an-koerper{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}
    .an-nav{border-right:0;border-bottom:1px solid var(--line);padding:8px 10px;overflow:visible}
    .an-nav .an-liste{display:none}
    .an-nav select{display:block;width:100%;height:36px;font:inherit;font-size:14px;padding:0 8px;background:var(--feld);border:1px solid var(--feldrand);border-radius:var(--radius);color:var(--ink)}
    .an-nav button.an-hier{margin:0 0 8px;width:100%}
    .an-inhalt{padding:12px 12px 48px;font-size:14px}
    .an-inhalt table{display:block;overflow:auto}
  }

  /* .pill.ok stand an sechs Stellen ohne Regel — heisst dasselbe wie .gut */
  .pill.ok{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}

  /* Anmeldemaske: der Rahmen verschwindet, das Blatt füllt den Bildschirm.
     main#haupt behält die bisherigen body.an-anmeldung-Regeln. */
  body.an-anmeldung #titel,body.an-anmeldung #register,body.an-anmeldung #band,
  body.an-anmeldung #vorgabe,body.an-anmeldung #baum,body.an-anmeldung #status,
  body.an-anmeldung #ftasten,body.an-anmeldung #schleier{display:none}
  body.an-anmeldung #fenster{display:block;height:auto;overflow:visible}
  body.an-anmeldung #arbeit{display:block}
  body.an-anmeldung #haupt{display:block;background:none}
  body.an-anmeldung #haupt > .panel{flex:none;overflow:visible;width:100%;background:none}
  /* 0.34.1 (Sicherheit): die Seite kommt mit body.an-laden vom Server — nichts ist sichtbar,
     bis /api/ich geantwortet hat. Erst render() (200) oder anmeldeMaske() (alles andere) nehmen
     die Klasse weg. Grund: Ivi sah am 17.09.2026 nach «Anmelden» kurz Daten ohne Anmeldung;
     nachstellen liess es sich nicht, darum darf VOR der Antwort schlicht nichts zu sehen sein. */
  body.an-laden #fenster,body.an-laden #schleier{display:none}

  @media print{
    #titel,#register,#band,#vorgabe,#baum,#status,#ftasten,#schiene,#schleier{display:none!important}
    #fenster{display:block;height:auto;overflow:visible}
    #arbeit{display:block}
    /* 0.35.0 (C8/E7): Cockpit hell und ohne Seitenumbruch im Abgang; die hellen Grundwerte gelten auch bei
       data-theme=dunkel — vorher druckte der Dunkelmodus helle Tinte auf weisses Papier.
       0.35.0b (G4, Gegenlesen): JEDE Variable des Dunkelsatzes (:root[data-theme=dunkel] oben) wird hier auf den hellen
       Wert gesetzt — GEMESSEN 19.09.2026 (CDP, Druckmedium dunkel): --warn #e2a640 auf Weiss 2.1:1 an «ohne Erfassung»,
       --accent #5aa2ff 2.6:1 an «alle … ansehen», weil nur Grund- und Bereichsfarben zurueckgesetzt waren. Wer oben
       eine Variable in den Dunkelsatz nimmt, traegt sie auch hier ein. */
    /* 0.35.1 (S5): auch jede Haut (data-haut, mit und ohne data-theme) — die Selektoren sind so spezifisch wie die
       Hautsaetze oben und stehen danach; die Strukturregeln der Haeute liegen in @media screen. */
    :root,:root[data-theme="dunkel"],:root:not([data-theme="hell"]),
    :root[data-haut],:root[data-haut][data-theme],:root[data-haut]:not([data-theme="hell"]){color-scheme:light;
      --bg:#fff;--panel:#fff;--ink:#0e151b;--ink-2:#33414d;--muted:#5c6874;--line:#b6c2cd;--line-soft:#dde4ea;--band:#f1f3f8;
      --accent:#0f52c8;--accent-soft:#e4ecfb;--accent-ink:#0a3a91;
      --ok:#0a6f3f;--ok-soft:#dcf1e6;--warn:#8a5300;--warn-soft:#fbedd6;--bad:#b8172c;--bad-soft:#fbe0e3;
      --raster:#c9d4de;--platte:0 1px 2px rgba(14,21,27,.05);--senke:inset 0 1px 2px rgba(14,21,27,.09);
      --feld:#ffffff;--feldrand:#7d8798;--knopf:#0f52c8;--knopf-ink:#ffffff;
      --grid:rgba(15,82,200,.070);--grid-fine:rgba(15,82,200,.032);
      --markiert:#e4ecfb;--markiert-ink:#0a3a91;--baum-aktiv:#e4ecfb;--status-ink:#0a3a91;
      --f-auftrag:#0f52c8;--f-service:#b8470a;--f-zeit:#0a8f7c;--f-cloud:#7a3fc4;
      --bg2:#fff;--titel:#0f52c8;--titel-ink:#ffffff;--register:#e9edf1;--radius:3px;--rail:1px solid #b6c2cd;--klemme:3px;
      --schrift:-apple-system,BlinkMacSystemFont,"Segoe UI Variable Text","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
      --schrift-titel:-apple-system,BlinkMacSystemFont,"Segoe UI Variable Text","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
      --h-titel:26px;--h-register:28px;--h-band:90px;--h-vorgabe:32px;--h-status:22px;--b-baum:168px;
      --sammel:#1d4ed8;--zustand-entwurf:#b26a00;--zustand-aktiv:#1a56c4;--zustand-bezahlt:#1a7f37;--zustand-storniert:#b3261e;--zustand-import:#666;
      --schleier:rgba(8,13,18,.5);--schleier-stark:rgba(8,13,18,.66);
      --schatten:0 12px 28px -12px rgba(0,0,0,.35);--schatten-hinweis:0 12px 28px -12px rgba(0,0,0,.45);
      --schatten-gross:0 18px 56px rgba(0,0,0,.42);--schatten-schicht:-8px 0 20px rgba(0,0,0,.16);--schatten-blatt:0 -12px 40px rgba(8,13,18,.28);
      --rollrand:rgba(0,0,0,.16);
      --titel-rand:rgba(255,255,255,.55);--titel-rand-hover:rgba(255,255,255,.8);--titel-fuell-hover:rgba(255,255,255,.14);
      --titel-konto-rand:rgba(255,255,255,.45);--titel-konto-fuell:rgba(255,255,255,.12);--titel-konto-fuell-hover:rgba(255,255,255,.2);
      --titel-pfeil:rgba(255,255,255,.75);--titel-ring:rgba(255,255,255,.7);--titel-zeichen-bg:#fff;--titel-zeichen-ink:#0f52c8;
      --zebra:#fff;--hover:#f1f3f8;--chip:#f1f3f8;--glas:transparent;--glas-rand:#dde4ea;--glow:none;--glow-farbe:#0f52c8;--klemme-farbe:#0f52c8}
    .vt-abgang{break-inside:avoid}
  }

  /* ====================================================================
     GRID UND DETAILFENSTER (Runde 2 der Layout-Runde, 0.32.1, 16.09.2026)

     Die Listen der Dokumentverwaltung wie im Original: Zeilen in der
     Zeilenhöhe des Schiebers (Vorgabe 18 px), Spaltenköpfe flach auf der
     Bandfarbe, Klick sortiert (Pfeil ▴/▾, gemerkt), feine Gitterlinien,
     markierte Zeile in --markiert, der leere Rest der Fläche zeigt das
     Millimeterraster der Anmeldung (Entwurf B, .liste). Die bisherigen
     Regeln für table/th/td bleiben für alle Innentabellen, die nicht über
     tabelle(rows, cols, opt) gezeichnet werden.

     Feldtabelle (Kunde, Objekt, Mitarbeiter): Beschriftung als graue Zelle,
     Wert als weisse Zelle, eine Zeile je Feld — die Kontaktdaten-Optik der
     Adressverwaltung (Vorlage §2.5).
     ==================================================================== */
  #haupt > .panel.liste{
    background-image:linear-gradient(var(--grid-fine) 1px,transparent 1px),linear-gradient(90deg,var(--grid-fine) 1px,transparent 1px);
    background-size:48px 48px;background-position:-1px -1px;
  }
  /* Breite nach Inhalt (mindestens die Fläche): breite Listen rollen waagrecht,
     statt dass Zellen mit Verweisen («ändern», «setzen») abgeschnitten würden. */
  #content table.grid{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:var(--schriftgrad)}
  #content table.grid thead th{
    position:sticky;top:0;z-index:2;background:var(--band);color:var(--ink-2);
    font:400 var(--schriftgrad)/1 var(--schrift);letter-spacing:0;text-transform:none;text-align:left;
    height:var(--zeile);padding:0 6px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line);
    white-space:nowrap;cursor:pointer;user-select:none;
  }
  #content table.grid thead th.num{text-align:right}
  #content table.grid thead th:hover{color:var(--ink);background:var(--panel)}
  #content table.grid thead th.sort-auf::after{content:" \25B4";color:var(--accent);font-size:10px}
  #content table.grid thead th.sort-ab::after{content:" \25BE";color:var(--accent);font-size:10px}
  #content table.grid tbody td{
    height:var(--zeile);padding:0 6px;background:var(--panel);
    border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:480px;
    vertical-align:middle;line-height:1.1;font-size:var(--schriftgrad);
  }
  #content table.grid tbody tr{cursor:default;transition:none}
  #content table.grid tbody tr:last-child td{border-bottom:1px solid var(--line-soft)}
  #content table.grid tbody tr:hover td{background:var(--band)}
  #content table.grid tbody tr:hover td:first-child{box-shadow:none}
  #content table.grid tbody tr.on td{background:var(--markiert);color:var(--markiert-ink)}
  #content table.grid tbody tr.on td a,#content table.grid tbody tr.on td .clickable,
  #content table.grid tbody tr.on td .muted{color:inherit}
  #content table.grid td a,#content table.grid td .clickable{box-shadow:none;text-decoration:underline;text-underline-offset:2px}
  #content table.grid td.num,#content table.grid th.num{font-family:var(--mono);font-variant-numeric:tabular-nums slashed-zero}
  #content table.grid .pill{padding:0 6px;font-size:10px;line-height:calc(var(--zeile) - 4px);border-radius:3px}
  #content table.grid .pill::before{width:4px;height:4px}
  #content table.grid .abild{height:calc(var(--zeile) - 2px);max-width:30px;margin-right:4px;border:0;border-radius:2px}
  #content table.grid .bar{height:5px}
  #content table.grid td select,#content table.grid td input{height:calc(var(--zeile) - 2px);padding:0 4px;font-size:var(--schriftgrad);box-shadow:none}
  /* I7 (0.33.1): die haftende erste Spalte galt nur unter 900 px — GEMESSEN 16.09.2026 (0.32.5, iPad quer): mit dem
     168-px-Baum rollten rechnungen (1'074 px) bei 1024 und 1180, offerten (1'132), adressen (931), rapporte (1'308),
     personen (1'563); beim Rollen verschwand die Nummer. Ohne Rollen ist sticky wirkungslos, darum in allen Breiten.
     Enge Spalten (Klasse eng, Breite je Spalte in --eng) unter 1250 px: Empfänger/Kunde 200 px, Betreff 180 px, Vorname 120 px —
     GEMESSEN 17.09.2026 (Harness, rechnungen 1024): mit 220/220 blieb die Liste 905 px im 856-px-Panel («Fällig» 49 px
     hinter dem Rand), mit 200/180 sind es 844 px; offerten (985) und rapporte (1'135) rollen weiter — dort trägt die
     haftende Nummer.
     Schattenrand: der Rollbereich bekommt beim Überlauf die Klasse «rollt» (rollrandPruefen) und rechts einen Verlauf,
     der über --rl/--rt am sichtbaren Rand bleibt (absolut im rollenden Panel — sticky ginge nur als Fliesskind). */
  #content table.grid tbody td:first-child{position:sticky;left:0;z-index:1}
  #content table.grid thead th:first-child{position:sticky;left:0;z-index:3}
  @media (max-width:1250px){ #content table.grid td.eng{max-width:var(--eng,220px)} }
  #haupt > .panel.rollt::after{
    display:block;content:"";position:absolute;top:var(--rt,0px);right:calc(-1 * var(--rl,0px));bottom:auto;width:22px;height:100%;
    z-index:4;pointer-events:none;border:0;background:linear-gradient(90deg,transparent,var(--rollrand));
  }
  /* Abschnittsköpfe über einem Grid (Rapport: Arbeit / Material / Fahrzeug) enger */
  #content .tools + table.grid{margin-top:0}
  /* K1 (0.34.4): Kennzeichen der Kontenliste — kleine Marken statt Fliesstext («nie angemeldet», «gesperrt» …) */
  .kz{display:inline-block;font:500 11px/1.2 var(--mono);padding:0 5px;border:1px solid var(--line);border-radius:3px;margin:0 3px 0 0;white-space:nowrap;color:var(--ink-2);vertical-align:middle}   /* 0.34.5c: 18-px-Zeilen (Gegenlesen 0.34.5b) */
  .kz-bad{color:var(--bad);border-color:var(--bad)}
  .kz-ok{color:var(--ok);border-color:var(--ok)}
  .kz-warn{color:var(--warn);border-color:var(--warn)}
  /* Die Kontenliste haelt ihre engen Spalten (Name 160, E-Mail 200) in JEDER Breite — GEMESSEN 17.09.2026 (CDP):
     bei 1440 war sie 1'298 px im 1'257-px-Panel («Prüfkonto Bauführer K14 (Korrektur 4, 13.09.2026)» in Name),
     die Aktionen lagen hinter dem Rand. Voller Text im title der Zelle. */
  #content table.grid[data-name="konten_alle"] td.eng,
  #content table.grid[data-name="konten"] td.eng,
  #content table.grid[data-name="konten_antraege"] td.eng{max-width:var(--eng,220px)}
  /* A2 (0.34.4b): unter 1250 px Panelbreite (iPad quer 841 px, 1280-Fenster 1'097 px) traegt das Panel #content die
     Klasse «schmal» (ktSchmalPruefen): die Kontenliste blendet Pers.-Nr., Letzte Anmeldung und E-Mail aus
     (Spaltenklasse kt-neben aus c.kl) — GEMESSEN 17.09.2026 (Abnahme): 1'196 px im 841-px-Panel, Aktionen hinter
     dem Rand. Die Werte stehen im title des Anmeldenamens. Nur in der Tabellenform (ab 835 px); die Karten zeigen
     alles. Bei 1440 (Panel 1'257 px) bleibt alles wie bisher. Die drei Grids oben (Wartende, Antraege, Alle Konten)
     halten ihre engen Spalten in JEDER Breite — sie teilen sich das Panel, GEMESSEN 17.09.2026 (CDP, 1280): eine
     Bemerkung von 90 Zeichen machte «Wartende Kontoantraege» 1'131 px breit im 1'097-px-Panel.
     C1 (0.34.4c): die Klasse haengt am CONTAINER #content, nicht mehr an den Grids — gridSort zeichnet die Tabelle
     beim Kopfklick per outerHTML neu und verlor sie, und der ResizeObserver am Panel feuerte bei ueberlagerten
     Rollbalken (iPad Safari, macOS) nicht. GEMESSEN 17.09.2026 (Gegenlesen, CDP setScrollbarsHidden, 1024): nach
     Kopfklick «Name» schmal:false, 1'267 px im 856-px-Panel, Aktionen hinter dem Rand. Als Nachfahren-Selektor
     erbt jede neu gezeichnete Tabelle die Klasse. Alle Grids mit «karten» liegen im Reiter Konten. */
  @media (min-width:835px){
    #content.schmal table.grid.karten .kt-neben{display:none}
    /* Zellen mit kt-kz (Kennzeichen — bis 7 Marken, GEMESSEN 17.09.2026: 320 px; «Beantragt» mit der Marke
       «angemeldet …») duerfen in der schmalen Form umbrechen — die Zeile waechst dann auf zwei Marken-Zeilen;
       das ist am iPad besser als eine Rolle. */
    #content.schmal table.grid.karten tbody td.kt-kz{white-space:normal;max-width:220px;line-height:1.15;padding-top:1px;padding-bottom:0}
    /* enge Spalten in der schmalen Form hoechstens 160 px — GEMESSEN 17.09.2026 (CDP, 1024): «Wartende
       Kontoantraege» mit Bemerkung 200 px war 851 px im 841-px-Panel. */
    #content.schmal table.grid.karten tbody td.eng{max-width:min(var(--eng,220px),160px)}
    /* C2 (0.34.4c): die Bemerkung der wartenden Kontoantraege bricht um statt Ellipse — sie ist die einzige Stelle,
       an der der Inhaber den Antragstext liest (und den E4-Hinweis «E-Mail-Adresse bereits vergeben»); am iPad
       gibt es kein Hover fuer den title. GEMESSEN 17.09.2026 (Gegenlesen, Harness): 503 px Text in einer Zelle von
       258/215/165 px (1440/1280/1024), sichtbar nur «Betrieb: Pruefbetrieb 0344…». 320 px in der Tabellenform;
       in der schmalen Form 240 px, damit das 841-px-Panel (1024) nicht rollt; in den Karten voll (Kartenregel). */
    #content table.grid[data-name="konten"] tbody td.kt-bem{white-space:normal;overflow-wrap:anywhere;max-width:320px;line-height:1.2;padding-top:2px;padding-bottom:2px}
    #content.schmal table.grid[data-name="konten"] tbody td.kt-bem{max-width:240px}
    /* C2 (0.34.4c): in der schmalen Form ruecken E-Mail und Beantragt der Wartenden als kleine Zeilen unter den
       Anmeldenamen (Spalten kt-neben aus, .kt-unter ein; das Kennzeichen wird zur eigenen Zeile) — sieben Spalten
       mit drei Textfeldern passen nicht in 841 px: GEMESSEN 17.09.2026 (CDP, Harness-Kopie, 1024): mit Bemerkung
       240 px, E-Mail 160 px und dem Kennzeichen neben dem Namen (226 px) war die Liste 1'128 px breit; die Werte
       nur im title zu fuehren hilft am iPad nicht (kein Hover). */
    #content.schmal table.grid[data-name="konten"] tbody td:first-child{white-space:normal;line-height:1.2;padding-top:2px;padding-bottom:2px}
    #content.schmal table.grid[data-name="konten"] tbody td:first-child .kz{display:block;width:max-content;margin:2px 0 0}
    #content.schmal table.grid[data-name="konten"] tbody td:first-child .kt-unter{display:block;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 11px/1.3 var(--schrift);color:var(--muted)}
  }
  .kt-unter{display:none}
  /* Trennpunkte zwischen den Zeilen-Verweisen — in der Kartenform (K4) sind die Verweise Knoepfe, der Punkt faellt weg */
  @media (max-width:834px){ #content table.grid.karten tbody td[data-l=""] .tr{display:none} }
  /* K2: Filterzeile über der Kontenliste (Register wie die Steuerzeile, dazu ein Suchfeld) */
  .kt-filter{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:flex-end;margin:0 0 8px}
  .kt-filter .steuer-tabs{flex-wrap:wrap;height:auto;row-gap:2px}
  .kt-filter input[type=search]{height:22px;min-width:200px}
  /* K3/P4: Dialogkarten im Inhalt (Neues Passwort, E-Mail) — kein prompt(), kein Fremdtext in Attributen */
  .kt-karte{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius);padding:12px 14px;margin:0 0 14px;background:var(--panel);max-width:600px}
  .kt-karte h4{margin:0 0 8px;font-size:14px}
  .kt-karte .zeile{margin:6px 0}
  .kt-karte label{cursor:pointer}
  .kt-karte code{font:600 15px/1.6 var(--mono);letter-spacing:.06em;padding:4px 8px;border:1px solid var(--line);border-radius:4px;background:var(--bg);user-select:all}
  .kt-karte button{padding:5px 12px;margin:2px 6px 2px 0}
  /* V3 (0.34.5): Tafel «Rollen und Rechte» — eigene Klasse (nicht .grid: keine Sortierung, keine Markierung); rollt
     waagrecht INNERHALB des Blocks (.kt-rollen), die erste Spalte haftet — vier schmale Spalten am Handy. */
  .kt-rollen{overflow-x:auto;max-width:100%;margin-top:10px}
  .kt-rollen table{border-collapse:collapse;font-size:var(--schriftgrad);min-width:100%}
  .kt-rollen th,.kt-rollen td{padding:0 10px;border-bottom:1px solid var(--line);white-space:nowrap;text-align:center;height:var(--zeile,18px);line-height:17px;box-sizing:border-box}
  .kt-rollen th{color:var(--ink-2);font-weight:600;background:var(--band)}
  .kt-rollen th:first-child,.kt-rollen td:first-child{text-align:left;position:sticky;left:0;background:var(--panel);z-index:1;padding-left:4px}
  .kt-rollen thead th:first-child{background:var(--band);z-index:2}
  .kt-rollen td:first-child{max-width:300px;white-space:normal;line-height:1.15;height:auto;padding-top:1px;padding-bottom:1px}   /* 0.34.5c */
  .kt-rollen td.ja{color:var(--ok);font-weight:600}
  .kt-rollen td.nein{color:var(--muted)}
  .kt-rollen td.eig{color:var(--warn);font:500 11px/18px var(--mono)}
  .kt-rollen tr.rolle-zeile td{font-style:italic}
  @media (max-width:834px){ .kt-rollen th,.kt-rollen td{padding:2px 6px} .kt-rollen td:first-child{max-width:150px;white-space:normal;line-height:1.15;height:auto} }
  /* V4 (0.34.5): Klasse «mittel» (Panel unter 1'400 px, ktSchmalPruefen): Spalte «Freigeschaltet» (kt-weit) aus —
     GEMESSEN 18.09.2026 (CDP, 1440, Eigentuemer-Sicht): 1'410 px im 1'257-px-Panel mit Spalte, Auswahlfeld Rolle und
     drei Marken je Zeile. Bei 1440 ist das Panel 1'257 px.
     0.34.5b (B3, Gegenlesen ernst 3): in «mittel» brechen die Kennzeichen NICHT mehr um (18-px-Zeilen an der
     Standardbreite — GEMESSEN 18.09.2026: 30 von 40 Zeilen waren ~40 px hoch). Platz kommt stattdessen von der
     ausgeblendeten Spalte E-Mail (kt-mail; Wert im Tooltip am Anmeldenamen wie in «schmal») und von den Kurzformen
     der Kennzeichen (.kz-k statt .kz-l, Vollform im title). Nur «mittel» ohne «schmal»: 1024 (schmal) und die
     Karten (≤834) bleiben unveraendert. */
  @media (min-width:835px){
    #content.mittel table.grid.karten .kt-weit{display:none}
    #content.mittel:not(.schmal) table.grid.karten .kt-mail{display:none}
    #content.mittel:not(.schmal) table.grid.karten tbody td.kt-kz .kz-l{display:none}
    #content.mittel:not(.schmal) table.grid.karten tbody td.kt-kz .kz-k{display:inline}
  }
  .kz .kz-k{display:none}
  /* V2 (0.34.5): Rollen-Auswahl in der Kontenliste — so hoch wie die 18-px-Zeile */
  #content table.grid select[data-rolle]{height:18px;font-size:12px;padding:0 2px}

  /* Feldtabelle */
  .feldtabelle{border-collapse:separate;border-spacing:0;width:100%;max-width:760px;font-size:var(--schriftgrad);margin:0}
  .feldtabelle th{
    position:static;width:210px;background:var(--band);color:var(--ink-2);
    font:400 var(--schriftgrad)/1.2 var(--schrift);letter-spacing:0;text-transform:none;text-align:left;
    padding:0 6px;border:1px solid var(--line-soft);border-top:0;height:calc(var(--zeile) + 4px);white-space:nowrap;vertical-align:middle;
  }
  .feldtabelle td{
    padding:0;border:1px solid var(--line-soft);border-top:0;border-left:0;height:calc(var(--zeile) + 4px);
    background:var(--feld);white-space:nowrap;vertical-align:middle;
  }
  .feldtabelle tr:first-child th,.feldtabelle tr:first-child td{border-top:1px solid var(--line-soft)}
  .feldtabelle tr:last-child td{border-bottom:1px solid var(--line-soft)}
  .feldtabelle td input,.feldtabelle td select{
    width:100%;height:calc(var(--zeile) + 2px);border:0;border-radius:0;box-shadow:none;background:transparent;
    padding:0 6px;font-size:var(--schriftgrad);color:var(--ink);
  }
  .feldtabelle td input:focus,.feldtabelle td select:focus{box-shadow:inset 0 0 0 2px var(--accent-soft);outline:none}
  .feldtabelle td.wert{padding:0 6px;overflow:hidden;text-overflow:ellipsis;max-width:520px}
  .feldtabelle td.wert.mono{font-family:var(--mono)}
  .feldtabelle td .muted{font-size:11px}
  .feldblock{padding:8px 12px 12px}
  .feldblock h3{margin:10px 0 4px;font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
  .feldblock h3:first-child{margin-top:0}
  .feldblock .hinweis{font-size:11.5px;color:var(--muted);margin:6px 0 0;max-width:760px;white-space:normal}

  /* ====================================================================
     ERFASSUNGSMASKE UND SERVICE-FORMULAR (Runde 3 der Layout-Runde, 0.32.2, 16.09.2026;
     Nachbesserung 0.32.3 am 16.09.2026: N1–N15 aus dem Gegenlesen r3 — siehe Kommentare «N…»;
     Nachbesserung 0.32.4 am 16.09.2026: M1–M6 aus dem Gegenlesen r4 — Regressionen der 18-px-Verdichtung:
     Artikelbild in Zeilenhöhe, Textzeilen brechen um, Titel-Editor wächst, Betrag/Aktionen bei 840 px Blatt,
     Summenblock unter der Eingabezeile im schmalen Blatt, Artikelspalte am Handy, Fokus nach Esc aus der Hilfespalte;
     Mini-Nachbesserung 0.32.5 am 16.09.2026: K1–K3 aus dem Gegenlesen r5 — Positionstext-Editor spannt über die Zeile,
     Artikelnummer am Handy ganz lesbar, Esc im Hilfe-Suchfeld leert den Suchbegriff nicht;
     Runde A «iPad» 0.33.0 am 17.09.2026: I1 Band-Textknöpfe laufen nicht mehr über, I5 kein Band-Schalter am Handy,
     I3 Hilfespalte zwischen 901 und 1272 px als Schicht rechts über dem Blatt, I8 Nummernliste in der Spaltenbreite,
     I2 Übernehmen ohne Doppelklick (Knopf, zweiter Tipp, Enter), I9 Mitarbeiter öffnen per Verweis und Bandknopf,
     I10 Zeile →/← im Band, I15 Bild-Symbol in der Artikelzelle am Handy;
     Runde B «iPad» 0.33.1 am 17.09.2026: I4 Tablet-Stufe (Telefon-Stapelregeln erst ab 700 px, Hilfespalte ab 760 px
     als Seitenspalte), I6 Band bricht zwischen 701 und 900 px um (darunter Verlauf «›»), I7 haftende erste Spalte in
     allen Breiten, enge Textspalten unter 1250 px, Schattenrand beim Rollen, I11 Katalog-Quellen mit Text, I12 volle
     Bezeichnung als Tooltip und aufklappbar, I13 Tippziele bei Touch, I14 Drehung (Hilfespalte, Unterschrifts-Pad),
     inputmode=decimal, dvh im Katalogbaum, eigene Feldoptik in der Vorgabezeile; Gegenlesen 0.33.0: Enter übernimmt
     keinen veralteten Treffer, zweiter Klick übernimmt nur bei Touch, Gliederung schliesst die Schicht;
     Nachbesserung 0.33.2 am 17.09.2026: R1 Aufklapp-Pfeil des Quellen-Selects in der Hilfe-Zeile, R2 Tooltip mit vollem
     Text auch bei bearbeitbaren Zeilen, R3 Positionstext-Editor bleibt neben der Seitenspalte im Blatt, R4 kürzerer
     Hinweis über dem Gitter, R5 Touch-Kästchen folgt dem Schieber, R6 Montageart-Spalte unter 700 px schmaler;
     Runde «Anmeldung 2.0» 0.34.0 am 17.09.2026: die Anwendung liegt unter /app (unter / steht die Startseite), die
     Anmeldemaske fragt in zwei Schritten (A3: erst der Name, dann Name fest + Passwort — ohne Serveraufruf dazwischen),
     A4: Positionstext-Editor als eigene Zeile über alle Spalten ab Spalte 1 (haftet am linken Blattrand),
     Montageart-Auswahl nicht breiter als die Zelle, Montageart-Volltext als Tooltip, eine Wahrheit für den
     Select-Innenabstand der Hilfe-Zeile;
     0.34.2 am 17.09.2026: Anmeldemaske neu nach Entwurf M «zweigeteilt» (dunkel wie die Startseite, Glas-Karte mit
     Schrittzaehler; die Anwendung bleibt hell), «Mit Passkey anmelden» in Schritt 2, Sicherheit → Passkeys, Konten →
     Passkeys je Konto; B7: Lesezeichen-Fragment ueberlebt die Anmeldung, Filter im 401-Weg geleert, Abmelden ohne
     Bestaetigung bleibt in der Maske;
     0.34.3 am 17.09.2026: zweite Stufe als eigener Schritt 3 der Maske (nur das Code-Feld sichtbar — Ivi:
     Passwort-Manager stolpern ueber drei Felder), Passkey-Listen ohne Benutzertext in onclick (delegierter Klick),
     «Passkey hinzufuegen» als Formular mit Passwortfeld statt prompt(), ICH.zweite_stufe aus /api/ich, Favicon;
     0.34.4 am 17.09.2026 (Nachtrag «Konten + Passwort»): Reiter Konten zeigt alle Konten (K1: Kennzeichen als
     kleine Marken, K2: Filter Alle/Nie angemeldet/Gesperrt/Mit Antrag + Suche, K3: Sperren, Neues Passwort,
     E-Mail — nur data-Attribute + delegierter Klick), Passwort-Antraege mit Bestaetigung durch den Inhaber
     (P3/P4: Link per Mail 24 h oder Erstpasswort einmal in einer Karte mit Kopierknopf), Karten statt Tabelle
     bis 760 px (K4, tabelle() mit opt.karten — auch Passkeys je Konto), Ordnung Wartende → Passwort-Antraege →
     Alle Konten → Passkeys → Abgelehnte (K5), Merker und Startkachel «Antraege» zaehlen Passwort-Antraege mit
     (K6); «Passwort vergessen?» stellt einen Antrag (P5), die Marke kommt als Fragment #neu= (S1);
     0.34.4b am 17.09.2026 (Nachbesserung, FASSUNG unveraendert): Karten bis 834 px (A1, iPad hoch), Kontenliste
     unter 1250 px Panelbreite ohne Pers.-Nr./Letzte Anmeldung/E-Mail (A2, Klasse «schmal»), eng-Regel in der
     Kartenform aufgehoben (K1), Eigenschutz in der Antragsliste (K3), Sortierschluessel «Letzte Anmeldung» (K4),
     Hinweis «Konto hat sich seit dem Antrag angemeldet» (E2);
     0.34.4c am 17.09.2026 (Nachbesserung nach Gegenlesen 0.34.4b, FASSUNG unveraendert): Klasse «schmal» am
     Container #content statt an den Grids, gesetzt beim Zeichnen und bei window.resize — ueberlebt den Kopfklick
     (gridSort) und braucht keinen ResizeObserver mehr (C1/C3); Wartende Kontoantraege: Kennzeichen «E-Mail
     vergeben», umbrechende Bemerkung, in der schmalen Form E-Mail und Beantragt unter dem Anmeldenamen (C2);
     0.34.5 am 18.09.2026 (Nachtrag «Verwaltung, Teil 1»): V1 Kennzeichen «Eigentuemer», an seiner Zeile keine
     Knoepfe; V2 Rolle als Auswahlfeld in «Alle Konten» (nicht die eigene, nicht der Eigentuemer; Bestaetigung,
     delegiertes change); V3 Block «Rollen und Rechte» (GET /api/rollen, aufklappbar, rollt waagrecht im Block);
     V4 Spalte «Freigeschaltet» (Datum + von wem, schmal im Tooltip); V5 Freischalten, Ablehnen, Sperren, Neues
     Passwort, fremde E-Mail und fremde Passkeys nur beim Eigentuemer (ICH.eigentuemer) — Inhaber sehen die Listen,
     wechseln Rollen und lehnen Passwort-Antraege ab; Band-Knoepfe entsprechend gesperrt);
     0.34.5b am 18.09.2026 (Nachbesserung): B2b «per Link» statt «(vorangelegt)» bei requested_at; B3 Stufe «mittel»
     ohne Umbruch (Spalte E-Mail aus, Kurzformen der Kennzeichen mit Vollform im title); B4 Bestaetigungstext
     Rollenwechsel nennt die Abmeldung des Kontos

     Offerte (Entwurf B, Maske 2): links das Blatt mit Kopf, Positionsgitter
     (Gliederungen als umrandeter Kasten, «Total 231.1» nach jeder Gruppe),
     Eingabezeile und Summen; rechts die einklappbare Hilfespalte mit den
     Registern Nummernliste | Favoriten | Suchbegriffe | Bildsuche |
     Gliederungen (Doppelklick übernimmt in die Eingabe). Unter dem Band die
     Steuerzeile (Bereich, Betrag, Tarifjahr, Kolonne, Ansatz), unten die
     Funktionstastenzeile F3/F4/F7/F9/F10.

     Rapport (Entwurf B, Maske 3): ein Papierformular 780 px rechts auf dem
     Millimeterraster — Kopf mit Logo, Link-Felder, Adressblöcke Kunde | Objekt,
     Arbeiten | Auftragsdaten, Kästchen in Spalten, Arbeit/Material/Fahrzeug,
     Abschluss mit Unterschrift und Totalisierung. Unter 900 px volle Breite.
     ==================================================================== */
  /* Das Blatt rollt allein, die Hilfespalte steht — dafür füllt die Maske
     die Fläche ganz (kein Rollen im Panel). */
  #haupt > .panel:has(> #content > .erfassung){display:flex;flex-direction:column;overflow:hidden}
  #haupt > .panel:has(> #content > .erfassung) > #content{flex:1;min-height:0;display:flex;flex-direction:column}
  .erfassung{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) auto;background:var(--bg)}
  .erfassung.hilfe-zu{grid-template-columns:minmax(0,1fr) 18px}
  .erfassung > .blatt{min-width:0;min-height:0;overflow:auto;background:var(--panel);border-right:1px solid var(--line);container-type:inline-size}
  /* M4 (0.32.4): der Summenblock steht rechts neben der Eingabezeile (1fr + minmax(280,360) + 16 px), die Eingabezeile
     braucht mit ihren festen Spalten (100/70/110/1fr/200/auto) aber ~590 px — GEMESSEN 16.09.2026 (0.32.3): Blatt 950 px
     (1440 px, Hilfespalte offen) → Summenblock bis 967 px, Werte hinter dem Rand; bei 845 px (1280 px) ganz ohne Werte.
     Massgebend ist die Breite des Blatts, nicht des Fensters (@media 1100 px griff mit offener Hilfespalte nicht):
     unter 1100 px Blattbreite (dieselbe Schwelle wie die Fensterregel oben) fällt der Summenblock unter die Eingabezeile.
     Dazu dürfen die Felder der Eingabezeile schmaler werden als ihr Inhalt (Grid-Kinder haben min-width:auto; das
     <select> «Unter Gliederung» hielt seine Spalte auf ~200 px, die Eingabezeile brauchte ~1'140 px) — es behält
     120 px, damit es bedienbar bleibt: 100+70+110+120+200+112+40 = 752 px + 16 + 280 + 24 = 1'072 px ≤ 1'100.
     GEMESSEN 16.09.2026: mit min-width:0 überall schrumpfte das <select> bei 1'056 px Blatt auf den Pfeil. */
  @container (max-width:1100px){ .erfassung .off-unten{grid-template-columns:1fr} }
  .erfassung .off-erf > *,.erfassung .off-erf2 > *{min-width:0}
  .erfassung .off-erf2 > label:has(#oe_parent){min-width:120px}
  .erfassung .off-gitter{max-height:none;overflow:visible}
  .erfassung .off-kopfzeile{padding:8px 12px 6px}
  .erfassung .off-titel{font-size:15px}
  /* Kopf-Raster einklappbar («▾ Kopf»), Vorgabe offen */
  .off-kopf-klapp > summary{
    cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;height:22px;padding:0 12px;
    background:var(--band);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
    font:600 10.5px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);user-select:none;
  }
  .off-kopf-klapp > summary::-webkit-details-marker{display:none}
  .off-kopf-klapp > summary::before{content:"\25B8";font-size:11px;color:var(--accent)}
  .off-kopf-klapp[open] > summary::before{content:"\25BE"}
  .off-kopf-klapp .off-kopf{padding:10px 12px;gap:10px 18px}
  .off-kopf-klapp .off-block label{margin-bottom:5px;font-size:12px}
  /* Positionsgitter in der Dichte des Originals: Zeilen in --zeile, feine Linien */
  .erfassung .off-tabelle{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--schriftgrad)}
  .erfassung .off-tabelle thead th{
    position:sticky;top:0;z-index:2;background:var(--band);color:var(--ink-2);
    font:400 var(--schriftgrad)/1 var(--schrift);letter-spacing:0;text-transform:none;text-align:left;
    height:var(--zeile);padding:0 6px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line);white-space:nowrap;
  }
  .erfassung .off-tabelle thead th.num{text-align:right}
  .erfassung .off-tabelle tbody td{
    height:var(--zeile);padding:0 6px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
    vertical-align:middle;line-height:1.15;font-size:var(--schriftgrad);background:var(--panel);
  }
  .erfassung .off-tabelle tbody td:last-child{border-right:0}
  .erfassung .off-tabelle td.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
  .erfassung .off-tabelle .off-zahl,.erfassung .off-tabelle .off-eh{height:calc(var(--zeile) - 2px);padding:0 4px;font-size:var(--schriftgrad);box-shadow:none;border-radius:2px}
  .erfassung .off-tabelle .off-zahl{width:60px}
  /* Bezeichnung einzeilig wie im Original (voller Text im Tooltip); beim Bearbeiten wächst die Zelle */
  .erfassung .off-tabelle .off-bez{min-width:220px;max-width:none;white-space:nowrap}
  .erfassung .off-tabelle .off-bez .off-txt{display:inline-block;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
  .erfassung .off-tabelle .off-bez textarea{white-space:pre-wrap}
  .erfassung .off-tabelle .off-ma{min-width:110px;max-width:200px;white-space:nowrap}
  .erfassung .off-tabelle .off-ma .muted{display:inline-block;max-width:120px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
  .erfassung .off-tabelle .off-akt .off-mini{margin-left:1px}
  .erfassung .off-tabelle .off-mini{padding:0 4px;font-size:11px;line-height:calc(var(--zeile) - 4px)}
  .erfassung .off-tabelle .off-klapp{font-size:12px}
  /* N10 (0.32.3): eine Zeile je Position in --zeile-Dichte. GEMESSEN 16.09.2026 (Bild ivi-offerte1_44-1440,
     0.32.2): Zeilen ~49 px, weil die Marken «NPK Katalog/ZEIT/MAT» unter die Nummer, «tarif/→ Tarif» unter
     den Preis und «Herleitung» unter den Text umbrachen. Jetzt: nichts bricht um, die Marken sind schmale
     Marken in der Zeile, die Preisquelle steht neben dem Feld, die Herleitung ist ein Symbol (Tooltip = Text). */
  .erfassung .off-tabelle tbody td{white-space:nowrap}
  .erfassung .off-tabelle .sia-flag,.erfassung .off-tabelle .stg-quelle,.erfassung .off-tabelle .off-marke{
    display:inline-block;font:600 9px/calc(var(--zeile) - 6px) var(--mono);padding:0 3px;margin-left:3px;border:0;border-radius:2px;
    vertical-align:middle;background:var(--line-soft);color:var(--muted);letter-spacing:0;max-width:78px;overflow:hidden;text-overflow:ellipsis;
  }
  .erfassung .off-tabelle .off-marke{background:none;border:1px solid var(--line);line-height:calc(var(--zeile) - 8px);font-weight:400}
  .erfassung .off-tabelle .off-herl-knopf{font-size:10px;margin-left:3px;vertical-align:middle}
  .erfassung .off-tabelle .off-herl{white-space:normal;max-width:440px}
  .erfassung .off-tabelle td.off-preis .off-zahl{vertical-align:middle}
  .erfassung .off-tabelle td .off-wahl{vertical-align:middle;width:13px;height:13px;margin-right:2px}
  /* Artikel und Bezeichnung teilen sich die Breite (max-width:0 + width:%): das Gitter bleibt so breit wie das
     Blatt, Betrag und Aktionen sind immer sichtbar — GEMESSEN 16.09.2026: mit den Marken in der Zeile wurde
     das Gitter bei 950 px Blattbreite 1'030 px breit, der Betrag lag hinter dem Rand. Langer Text: Ellipse, voller Text im Tooltip.
     M4 (0.32.4): die Mindestbreiten 168/140 ergaben mit den festen Spalten 899 px — GEMESSEN 16.09.2026 (0.32.3) bei
     1280 px mit offener Hilfespalte (Blatt 845 px): Spalten 30/168/140/141/73/65/126/76/80, ↑↓× angeschnitten, × weg.
     Jetzt Artikel min. 150 px (Nummer bleibt lesbar), Bezeichnung min. 90 px (schrumpft zuerst, Ellipse, voller Text im
     Tooltip): 30+150+90+141+73+65+126+76+80 = 831 px ≤ 840 px Blatt. */
  .erfassung .off-tabelle td.off-nr{max-width:0;width:24%;min-width:150px;overflow:hidden;text-overflow:ellipsis}
  .erfassung .off-tabelle td.off-bez{max-width:0;width:30%;min-width:90px;overflow:hidden;text-overflow:ellipsis}
  .erfassung .off-tabelle td.off-bez .off-txt{max-width:none}
  /* A4 (0.34.0): Montageart-Auswahl — bisher inline max-width:260px; jetzt hier, damit der Handy-Block (≤ 700 px) sie
     auf die Zellbreite begrenzen kann. */
  .erfassung .off-tabelle td.off-ma select.off-ma-wahl{max-width:260px;box-sizing:border-box}
  .erfassung .off-tabelle td.off-preis .off-marke{max-width:44px;margin-left:2px;padding:0 2px}
  /* M1 (0.32.4): die Artikelbild-Miniatur (.abild 30 px, für Listen gedacht) hatte keine Regel fürs Positionsgitter —
     GEMESSEN 16.09.2026 (0.32.3, 80×60-Bild in der Artikelzelle): Zeile 31 px statt 18, in 26232 vier Zeilen
     «512.155.334», in 26233 Dutzende. Wie in «#content table.grid .abild»: Höhe = Zeile − 2 px, Breite proportional,
     Klick weiterhin Lightbox (abildZeigen). */
  .erfassung .off-tabelle td.off-nr .abild{height:calc(var(--zeile) - 2px);max-width:30px;margin-right:4px;border:0;border-radius:2px;vertical-align:top}
  /* M2 (0.32.4): Textzeilen (Art «T», freier Text an den Planer) dürfen umbrechen — Ausnahme von der 18-px-Regel, wie im
     Original für Text. GEMESSEN 16.09.2026 (0.32.3): mit nowrap machte eine 125-Zeichen-Textzeile (Beleg 26219) das
     Gitter 899 px breit im 845-px-Blatt, 200 Zeichen 1'154 px — Betrag und ↑↓× aller Zeilen hinter dem Rand.
     overflow-wrap:anywhere, damit auch Zeichenketten ohne Leerzeichen die Tabelle nicht sprengen; max-width:0, damit der
     Text die Spaltenbreiten nicht mitbestimmt (GEMESSEN 16.09.2026 am Handy: ohne max-width:0 wurde das ohnehin rollende
     Gitter mit einer 200-Zeichen-Zeile 1'201 statt 1'001 px breit und der Text brach nicht um). */
  .erfassung .off-tabelle tr.off-text td[colspan]{white-space:normal;overflow-wrap:anywhere;line-height:1.2;max-width:0}
  /* I12 (0.33.1): die Bezeichnung endet mit Ellipse (90–300 px), ein Tooltip mit dem vollen Text fehlte (C4) — jetzt
     trägt td.off-bez den Text als title; bei nicht bearbeitbaren Zeilen (gesperrter Beleg, Bauführer, Detail einer
     Sammelposition) klappt ein Tipp auf die Bezeichnung den vollen Text als Zeile darunter auf (offVoll, wie offHerl). */
  .erfassung .off-tabelle tr.off-voll td{white-space:normal;overflow-wrap:anywhere;line-height:1.25;height:auto;padding:2px 6px 3px;background:var(--band);color:var(--ink-2);max-width:0}
  .erfassung .off-tabelle .off-txt.voll{cursor:pointer}
  .erfassung .off-tabelle tr.off-mark td{background:var(--markiert);color:var(--markiert-ink)}
  .erfassung .off-tabelle tr.off-mark td:first-child{box-shadow:inset var(--klemme) 0 0 var(--accent)}
  .erfassung .off-tabelle tr.off-mark td a,.erfassung .off-tabelle tr.off-mark td .clickable,.erfassung .off-tabelle tr.off-mark td .muted{color:inherit}
  .erfassung .off-tabelle tr.off-detail td{background:var(--band)}
  /* Gliederungskasten: umrandet, Nummer links abgetrennt, fette Bezeichnung (B) */
  .erfassung .off-tabelle tr.off-glied td{background:var(--panel);font-weight:400;border-top:0;padding-top:2px;padding-bottom:1px}
  .erfassung .off-tabelle tr.off-glied td.off-glied-zelle{border-right:0}
  .kasten{
    display:inline-grid;grid-template-columns:auto minmax(120px,1fr);align-items:center;height:calc(var(--zeile) - 2px);
    border:1px solid var(--ink-2);background:var(--panel);vertical-align:middle;max-width:calc(100% - 140px);min-width:260px;
  }
  .kasten .knr{padding:0 6px;border-right:1px solid var(--ink-2);font-family:var(--mono);height:100%;display:flex;align-items:center;min-width:52px}
  .kasten .ktx{padding:0 6px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .kasten .ktx .off-txt{font-weight:700}
  /* M3 (0.32.4): beim Bearbeiten des Titels (Textarea + Speichern/Abbrechen) wächst der Kasten mit — GEMESSEN 16.09.2026
     (0.32.3): im 16-px-Kasten lag die Textarea 255–326 px über den Spaltenköpfen (Unterkante 300), die Knöpfe
     334–365 px hinter der ersten Positionszeile, per elementFromPoint verdeckt. Danach (offOffenZu) wieder 18 px. */
  .kasten.bearbeiten{height:auto;width:calc(100% - 140px);align-items:start}
  .kasten.bearbeiten .knr{align-items:flex-start;padding-top:3px}
  .kasten.bearbeiten .ktx{overflow:visible;white-space:normal;padding:3px 6px 4px}
  .kasten.bearbeiten .ktx textarea{width:100%;box-sizing:border-box;font-weight:400}
  .erfassung .off-tabelle tr.off-glied:has(.kasten.bearbeiten) td{vertical-align:top}
  /* K1 (0.32.5): der Positionstext-Editor (Textarea + Speichern/Abbrechen aus offTextZelle) lag in der Bezeichnungszelle,
     die seit M4 auf 90 px schrumpfen darf (nowrap, overflow:hidden) — GEMESSEN 16.09.2026 (0.32.4) bei 1280 px mit offener
     Hilfespalte (Blatt 845): Zelle 100 px, Textarea 87 px, «Abbrechen» per elementFromPoint verdeckt (TD.off-ma), der Klick
     darauf markierte nur die Zeile; heraus kam man nur mit Speichern. Jetzt spannt die Zelle beim Bearbeiten von der
     Bezeichnung bis zum Betrag (colspan beim Zeichnen, Klasse «bearbeiten» an Zeile und Zelle, wie M3 beim Titel), wächst
     in der Höhe und bricht um; Menge/Einheit/Preis dieser Zeile sind so lange ausgeblendet. Nach Speichern/Abbrechen
     zeichnet offZeilenZeichnen die Zeile wieder mit allen Zellen und 18 px. */
  /* A4 (0.34.0): die Bearbeitung liegt nicht mehr in der Bezeichnungszelle (deren linke Kante hängt an Nr- und
     Artikelspalte — bei 12-stelligen Gliederungsnummern der Planer-Belege weit rechts, Gegenlesen 0.33.2), sondern in einer
     eigenen Zeile tr.off-editor unter der Position: EINE Zelle über alle Spalten, darin ein Kasten mit position:sticky
     am linken Rand des rollenden Blatts (.blatt ist overflow:auto und der cqw-Bezug). Breite = sichtbares Blatt − 24 px
     (Rollbalken, Innenabstand); die Textarea füllt den Kasten. Kein data-zid an der Zeile: Markierung (offMarkieren)
     und Alt+Pfeile arbeiten über tr[data-zid] und übersehen sie richtigerweise. */
  .erfassung .off-tabelle tr.off-editor td{max-width:0;white-space:normal;overflow:visible;height:auto;padding:3px 6px 5px;vertical-align:top}
  .erfassung .off-tabelle tr.off-editor .off-editor-kasten{position:sticky;left:6px;width:calc(100cqw - 24px);max-width:100%;box-sizing:border-box}
  .erfassung .off-tabelle tr.off-editor textarea{width:100%;box-sizing:border-box;display:block}
  .off-glied-rechts{margin-left:14px;color:var(--muted);font-size:11px;white-space:nowrap}
  .off-glied-rechts i{display:inline-block;width:9px;height:12px;border:1px solid var(--line);background:var(--band);vertical-align:middle;margin-right:6px}
  .erfassung .off-tabelle tr.off-total td{font-weight:700;height:calc(var(--zeile) + 4px);background:var(--panel);border-bottom:0}
  .erfassung .off-tabelle tr.off-total td.betrag{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
  .erfassung .off-tabelle tr.off-total .zwischen{color:var(--muted);font-weight:400;letter-spacing:.3em}
  .erfassung .off-tabelle tr.off-dok td{font-weight:700;border-top:2px solid var(--ink);background:var(--band);height:calc(var(--zeile) + 4px)}
  .erfassung .off-tabelle tr.off-leer td{height:8px;border-right:0;background:var(--panel)}
  .off-gitter-kopf{padding:4px 12px;gap:8px;font-size:11.5px}
  .erfassung .off-unten{padding:10px 12px}
  .erfassung .off-erf label,.erfassung .off-erf2 label{font-size:12px}

  /* Steuerzeile (Vorgabezeile der Erfassungsmaske): Bereichsschalter als Register
     (keine <button> — die Vorgabezeile bleibt knopffrei), Betrag im Feld, Vorgaben */
  .steuer-tabs{display:inline-flex;gap:1px;height:22px;align-items:flex-end;border-bottom:1px solid var(--line);margin-right:6px}
  .steuer-tabs a{
    display:inline-flex;align-items:center;height:20px;padding:0 9px;border:1px solid transparent;border-bottom:0;
    color:var(--ink-2);font-size:12px;text-decoration:none;cursor:pointer;box-shadow:none;border-radius:var(--radius) var(--radius) 0 0;white-space:nowrap;
  }
  .steuer-tabs a:hover{color:var(--accent-ink);background:none}
  .steuer-tabs a.on{background:var(--panel);border-color:var(--line);border-top:2px solid var(--accent);color:var(--ink);font-weight:600;height:22px;margin-bottom:-1px}
  #vorgabe .betrag{font:600 12px/18px var(--mono);color:var(--ink);background:var(--feld);border:1px solid var(--feldrand);border-radius:var(--radius);height:20px;min-width:86px;padding:0 6px;text-align:right;font-variant-numeric:tabular-nums}
  #vorgabe .abst{width:14px;flex:none}
  #vorgabe .steuer-mono{font-family:var(--mono);color:var(--muted);font-size:11px}
  #vorgabe input.steuer-ansatz{width:72px;text-align:right;font-family:var(--mono)}

  /* Hilfespalte rechts (34 vw, mindestens 380 px), einklappbar; Register oben.
     N8 (0.32.3): die zweite «min-width:0» hob die erste auf — GEMESSEN 16.09.2026 bei 1000 px
     Fensterbreite: Spalte 340 px, Register «Gliederungen» abgeschnitten. Die Registerzeile darf
     jetzt umbrechen (Kopf mit auto-Höhe), damit bei 380 px alle fünf Register lesbar bleiben. */
  .hilfe{width:34vw;min-width:380px;max-width:640px;display:grid;grid-template-rows:auto auto minmax(0,1fr);background:var(--panel);min-height:0}
  .erfassung.hilfe-zu .hilfe{display:none}
  .hilfe-kopf{display:flex;align-items:flex-end;background:var(--register);border-bottom:1px solid var(--line);min-height:22px}
  .hilfe-kopf .zu,.hilfe-auf{
    width:22px;height:22px;padding:0;border:0;border-right:1px solid var(--line);border-radius:0;background:none;box-shadow:none;
    font:400 12px/1 var(--mono);color:var(--ink-2);cursor:pointer;
  }
  .hilfe-kopf .zu:hover,.hilfe-auf:hover{background:var(--accent-soft);color:var(--accent-ink)}
  .hilfe-auf{width:18px;height:100%;border-right:0;border-left:1px solid var(--line);background:var(--register);align-self:stretch}
  .erfassung:not(.hilfe-zu) .hilfe-auf{display:none}
  .hilfe-tabs{display:flex;flex:1;min-width:0;min-height:22px;align-items:flex-end;flex-wrap:wrap}
  .hilfe-tabs button{
    flex:1 0 auto;height:20px;padding:0 6px;border:1px solid transparent;border-bottom:0;background:none;box-shadow:none;
    color:var(--ink-2);font:400 11.5px/1 var(--schrift);border-radius:var(--radius) var(--radius) 0 0;cursor:pointer;
    white-space:nowrap;
  }
  .hilfe-tabs button.on{background:var(--panel);border-color:var(--line);border-top:2px solid var(--accent);color:var(--ink);font-weight:600;margin-bottom:-1px;height:22px}
  .hilfe-zeile{display:flex;align-items:center;gap:6px;padding:4px 6px;border-bottom:1px solid var(--line-soft);font-size:12px;flex-wrap:wrap;min-height:28px}
  /* R1 (0.33.2): background-COLOR statt des Kurzschreibens — «background:» löschte den in Z. ~1333 gemalten Aufklapp-Pfeil
     (background-image) wieder, und «padding:0 6px» seinen Platz; GEMESSEN 17.09.2026 (0.33.1, 1440/1024): backgroundImage
     none, paddingRight 6px, das Select sah wie ein Textfeld aus. Der Pfeil braucht rechts 18 px (Regel darunter). */
  .hilfe-zeile input:not([type=checkbox]),.hilfe-zeile select{height:22px;padding-top:0;padding-bottom:0;padding-left:6px;font-size:12px;box-shadow:none;-webkit-appearance:none;appearance:none;background-color:var(--feld);border:1px solid var(--feldrand);border-radius:var(--radius);color:var(--ink)}
  /* A4 (0.34.0): kein padding-Kurzschreiben mehr — der rechte Innenabstand des Selects (18 px für den Pfeil) steht nur
     noch in der Regel bei Z. ~1333; die Eingabefelder bekommen ihre 6 px hier ausdrücklich. */
  .hilfe-zeile input:not([type=checkbox]){padding-right:6px}
  .hilfe-zeile input.nr{width:80px;font-family:var(--mono)}
  .hilfe-zeile input.such{flex:1;min-width:120px}
  .hilfe-zeile .artikel{margin-left:auto;font:400 11px/1.3 var(--mono);color:var(--accent-ink);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .hilfe-zeile .artikel b{font-weight:600}
  /* I2 (0.33.0): Übernehmen ohne Doppelklick — Knopf in der Hilfe-Zeile (wirkt auf HILFE.mark), zweiter Klick auf die
     markierte Zeile, Enter in hl_nr/hl_q bei genau einem Treffer. touch-action:manipulation nimmt WebKit den
     Doppeltipp-Zoom auf Hilfespalte und Grids (der Viewport ist zoombar, ein Doppeltipp zoomte statt zu übernehmen). */
  .hilfe-zeile .ueber{height:22px;padding:0 10px;font:500 12px/1 var(--schrift);box-shadow:none;white-space:nowrap;color:var(--accent-ink);border-color:var(--accent)}
  .hilfe-zeile .ueber:disabled{color:var(--muted);border-color:var(--line);opacity:1;cursor:default}
  .hilfe,#content table.grid,.erfassung .off-tabelle{touch-action:manipulation}
  .hilfe-inhalt{overflow:auto;min-height:0;font-size:var(--schriftgrad)}
  .hilfe-inhalt .empty{padding:14px 10px;font-size:12px}
  .hilfe-inhalt .hilfe-titel{padding:5px 8px 2px;font:600 10.5px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line-soft)}
  table.nliste{border-collapse:collapse;width:100%;font-size:var(--schriftgrad)}
  .nliste td{height:var(--zeile);padding:0 5px;white-space:nowrap;border-bottom:1px solid var(--line-soft);overflow:hidden;text-overflow:ellipsis;max-width:0;vertical-align:middle;line-height:1.1}
  .nliste td.auf{width:22px;max-width:22px;text-align:center;font-family:var(--mono);color:var(--muted);font-size:10px;cursor:pointer}
  .nliste td.stern{width:18px;max-width:18px;text-align:center;color:var(--muted);cursor:pointer;font-size:12px}
  .nliste td.stern.on{color:var(--warn)}
  .nliste td.nr{width:78px;max-width:78px;font-family:var(--mono);text-align:right}
  /* I8 (0.33.0): max-width:0 (wie im Positionsgitter) — die Textspalte nimmt den Rest und bestimmt die Tabellenbreite
     nicht mit. GEMESSEN 16.09.2026 (0.32.5): mit max-width:none war die Nummernliste 418 px breit in der 380-px-Spalte
     (1024 px), «zus» angeschnitten, Preisspalte hinter dem Fensterrand, rollte intern ohne Balken. */
  .nliste td.tx{max-width:0;width:auto}
  .nliste td.zus{color:var(--ink-2);width:64px;max-width:64px;font-family:var(--mono)}
  .nliste td.preis{width:70px;max-width:70px;text-align:right;font-family:var(--mono)}
  .nliste tr{cursor:default;user-select:none}
  .nliste tr:hover td{background:var(--band)}
  .nliste tr.on td{background:var(--accent);color:var(--knopf-ink)}
  .nliste tr.on td.auf,.nliste tr.on td.stern,.nliste tr.on td.zus{color:var(--knopf-ink)}
  .nliste tr.unter td{background:var(--band);color:var(--ink-2)}
  .nliste tr.unter td.nr{padding-left:18px}
  .nliste .abild{height:calc(var(--zeile) - 2px);max-width:28px;margin-right:4px;border:0}
  .hilfe .bilder{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px;padding:6px}
  .hilfe .bilder figure{margin:0;border:1px solid var(--line);background:var(--band);padding:5px;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;color:var(--ink-2);cursor:pointer;min-height:96px;text-align:center}
  .hilfe .bilder figure.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
  .hilfe .bilder figure .abild{height:56px;max-width:100%;margin:0;border:0;background:#fff}
  .hilfe .bilder figcaption{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
  .hilfe .bilder figcaption b{font-family:var(--mono);font-weight:400;color:var(--accent-ink)}
  .gtree{list-style:none;margin:0;padding:4px 8px}
  .gtree ul{list-style:none;margin:0;padding-left:16px}
  .gtree li{line-height:var(--zeile);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default;user-select:none}
  .gtree li > span:hover{background:var(--band)}
  .gtree li.on > span{background:var(--accent);color:var(--knopf-ink)}
  .gtree b{font-family:var(--mono);font-weight:400;display:inline-block;min-width:48px;color:var(--accent-ink)}
  .gtree .auf{display:inline-block;width:14px;font:400 10px/1 var(--mono);color:var(--muted);cursor:pointer}

  /* I3 (0.33.0): zwischen 901 und 1272 px liegt die Hilfespalte als Schicht RECHTS über dem Blatt (380 px, nicht
     Vollbild wie am Handy), das Blatt behält die volle Breite. Grund — GEMESSEN 16.09.2026 (0.32.5, iPad quer):
     die Spalte (34 vw, min. 380) liess dem Blatt 644 px (1024) bzw. 779 px (1180), das Gitter braucht 831 (M4):
     Betrag, ↑↓× und Preis-Marke lagen hinter dem Rand, das Blatt rollte als Ganzes. 840 px Blatt bleiben erst ab
     1273 px Fenster (1273 − 0.34 × 1273 = 840). Die Schwelle steht auch in HILFE_SCHICHT (JS) — beide zusammen ändern.
     Absolut, nicht fixed: #content > * trägt eine Animation mit transform (siehe Handy-Block). */
  @media (min-width:901px) and (max-width:1272px){
    .erfassung{position:relative}
    .erfassung .hilfe{position:absolute;right:0;top:0;bottom:0;width:380px;min-width:0;max-width:none;z-index:60;border-left:1px solid var(--line);box-shadow:var(--schatten-schicht)}
    /* G4 (0.33.1) / A4 (0.34.0): bei offener Schicht (380 px rechts über dem Blatt) endet der Editor-Kasten vor ihr —
       er beginnt seit A4 am linken Blattrand, also Blatt − 380 − 24 px. */
    .erfassung:not(.hilfe-zu) .off-tabelle tr.off-editor .off-editor-kasten{width:calc(100cqw - 404px)}
  }

  /* Funktionstastenzeile (B): F3 … F10, rechts der Hinweis */
  #ftasten button{
    height:19px;padding:0 8px;border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);
    font:400 11px/1 var(--schrift);color:var(--ink-2);box-shadow:none;cursor:pointer;white-space:nowrap;
  }
  #ftasten button b{font-family:var(--mono);font-weight:600;color:var(--accent-ink);margin-right:4px}
  #ftasten button:hover:not(:disabled){border-color:var(--accent);color:var(--accent-ink)}
  #ftasten button:disabled{color:var(--muted);opacity:1;cursor:default}
  #ftasten .hinweis{margin-left:auto;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  /* Service-Formular (Rapport) */
  .rapport-flaeche{
    padding:8px 8px 16px 0;display:flex;flex-direction:column;align-items:flex-end;gap:10px;
    background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
    background-size:48px 48px;background-position:-1px -1px;min-height:100%;
  }
  .formular{width:780px;max-width:100%;flex:none;background:var(--panel);border:1px solid var(--line);font-size:var(--schriftgrad);color:var(--ink)}
  .formular .zeile{display:grid;border-bottom:1px solid var(--line)}
  .formular .zelle{padding:4px 6px;border-right:1px solid var(--line);min-height:var(--zeile);min-width:0}
  .formular .zelle:last-child{border-right:0}
  .formular .lnk{
    color:var(--accent);text-decoration:underline;text-underline-offset:2px;text-align:left;background:none;border:0;
    box-shadow:none;padding:0;font:inherit;cursor:pointer;white-space:nowrap;
  }
  .formular .lnk:hover{color:var(--accent-ink)}
  .formular .lnk.stumm{color:var(--ink-2);text-decoration:none;cursor:default;font-weight:600}
  .formular .wert{font-family:var(--mono);color:var(--ink);margin-left:4px;font-variant-numeric:tabular-nums}
  .formular .wert.text{font-family:var(--schrift)}
  .formular .kopf{grid-template-columns:200px 1fr 1fr 1fr}
  .formular .logo{padding:8px 6px;display:flex;flex-direction:column;justify-content:center;gap:2px;align-items:flex-start}
  .formular .logo img{max-height:44px;max-width:100%;object-fit:contain;display:block;background:#fff}
  .formular .logo .wort{font-size:26px;font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--ink)}
  .formular .logo .wort i{color:var(--accent);font-style:normal}
  .formular .logo .unter{font-family:var(--mono);font-size:9.5px;letter-spacing:.25em;text-transform:uppercase;color:var(--muted)}
  .formular .feldliste{display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 6px;align-content:start;padding:6px 6px;align-items:center}
  .formular .feldliste b{font-weight:600;white-space:nowrap}
  .formular .feldliste > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .formular .betreffzeile{grid-template-columns:200px 1fr auto}
  .formular .betreffzeile .zelle{display:flex;align-items:center;gap:4px}
  .formular .adressen{grid-template-columns:1fr 1fr}
  .formular .adressen .zelle{min-height:96px}
  .formular .adressen .lnk{font-weight:700;display:block;margin-bottom:5px}
  .formular .adressen p{margin:0;line-height:1.45;white-space:pre-line}
  .formular .arbeiten{grid-template-columns:1fr 320px}
  .formular .arbeiten .zelle b{display:block;margin-bottom:3px}
  .formular .arbeiten textarea{width:100%;min-height:110px;border:0;resize:vertical;font:inherit;font-size:var(--schriftgrad);color:var(--ink);background:transparent;padding:0;box-shadow:none;border-radius:0}
  .formular .arbeiten textarea:focus{box-shadow:inset 0 0 0 2px var(--accent-soft);outline:none}
  .formular .arbeiten .text{white-space:pre-line}
  .formular .auftragsdaten{display:grid;grid-auto-rows:var(--zeile);align-content:start}
  .formular .auftragsdaten div{border-bottom:1px solid var(--line-soft);display:flex;align-items:center;white-space:nowrap;overflow:hidden;min-width:0}
  .formular .auftragsdaten div:last-child{border-bottom:0}
  .formular .auftragsdaten .wert{overflow:hidden;text-overflow:ellipsis}
  .formular .kaestchen{grid-template-columns:repeat(3,1fr)}
  .formular .kaestchen .zelle{display:grid;gap:1px;align-content:start;padding:5px 6px}
  .formular .kaestchen .zelle b{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-family:var(--mono);font-weight:600;margin-bottom:2px}
  .formular .kaestchen label{display:flex;align-items:center;gap:5px;height:var(--zeile);font-size:var(--schriftgrad);white-space:nowrap;overflow:hidden}
  .formular .kaestchen input{accent-color:var(--accent);margin:0;width:12px;height:12px;flex:none}
  .formular .tabellen{padding:0;overflow-x:auto}
  .formular .tabellen .rap-titel{font-weight:700;padding:3px 6px;background:var(--panel);border-bottom:1px solid var(--line-soft);font-size:var(--schriftgrad)}
  /* N11 (0.32.3): feste Spaltenaufteilung (Breiten aus den Spaltenköpfen, c.w), Bezeichnung nimmt den Rest —
     GEMESSEN 16.09.2026 (0.32.2, 780 px): Material rollte waagrecht, «Herkunft» und «löschen» lagen ausserhalb.
     Mit #content davor: die Grid-Regel «#content table.grid{width:max-content}» schlug die alte Regel ohne id
     (GEMESSEN 16.09.2026: scrollWidth 896 bei 778 px trotz width:100%). */
  #content .formular .tabellen table.grid{width:100%;min-width:100%;table-layout:fixed}
  #content .formular .tabellen table.grid thead th{position:static}
  #content .formular .tabellen table.grid tbody td{max-width:none}
  #content .formular .tabellen .pill{padding:0 3px;font-size:9px;letter-spacing:0;gap:0}
  #content .formular .tabellen td .muted{font-size:11px}
  #content .formular .tabellen .pill::before{display:none}
  .formular .tabellen .rap-herkunft{font:400 10px/1 var(--mono);color:var(--muted);border:1px solid var(--line);border-radius:2px;padding:1px 3px}
  .formular .tabellen .tools{padding:3px 6px;border:0;background:none}
  .formular .abschluss{grid-template-columns:1fr 1fr;border-bottom:0}
  .formular .abschluss .zelle{padding:8px 6px}
  .formular .fertig{display:flex;gap:18px;margin-bottom:8px;flex-wrap:wrap}
  .formular .fertig label{display:flex;align-items:center;gap:6px;font-weight:600;white-space:nowrap}
  .formular .fertig input{accent-color:var(--accent);margin:0}
  .formular .unterschrift{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:6px}
  .formular .unterschrift .linie{border-bottom:1px solid var(--ink);height:44px;display:flex;align-items:flex-end;padding-bottom:2px;color:var(--muted);font-size:11px}
  .formular .unterschrift .linie img{max-height:40px;max-width:100%}
  .formular .pad{margin-top:6px}
  .formular .pad canvas{width:100%;max-width:100%;height:140px;border:1px solid var(--line);border-radius:3px;background:#fff;touch-action:none;display:block;cursor:crosshair}
  .formular .pad input[type=text]{width:100%;height:24px;font-size:12px;box-shadow:none;margin-bottom:6px}
  .formular .pad .knopfzeile{display:flex;gap:8px;align-items:center;margin-top:6px;flex-wrap:wrap}
  .formular .totalisierung{display:grid;grid-template-columns:1fr auto;gap:2px 16px;align-content:start}
  .formular .totalisierung .zahl{font-family:var(--mono);text-align:right;font-variant-numeric:tabular-nums}
  .formular .totalisierung .gross{font-weight:700;border-top:1px solid var(--ink);padding-top:2px}
  .formular .knopf-klein{padding:2px 8px;font-size:11.5px}
  /* Formulare unter dem Blatt (Kopf, Arbeit, Material) — gleich breit wie das Blatt */
  .rapport-formulare{width:780px;max-width:100%;background:var(--panel);border:1px solid var(--line)}
  .rapport-formulare > details > summary{
    cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;height:24px;padding:0 10px;
    background:var(--band);border-bottom:1px solid var(--line-soft);font-weight:600;font-size:12px;user-select:none;
  }
  .rapport-formulare > details > summary::-webkit-details-marker{display:none}
  .rapport-formulare > details > summary::before{content:"\25B8";font-size:11px;color:var(--accent)}
  .rapport-formulare > details[open] > summary::before{content:"\25BE"}
  .rapport-formulare .raster{padding:10px 12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 10px;align-items:end}
  .rapport-formulare label{font-size:12px}
  .rapport-formulare input:not([type=checkbox]),.rapport-formulare select{height:26px;padding:0 6px;font-size:12.5px;box-shadow:none}
  .rapport-formulare button.haupt{padding:5px 14px;font-size:12.5px}
  .rapport-formulare button{padding:5px 12px;font-size:12.5px}
  .rapport-formulare .hinweis{padding:0 12px 10px;font-size:11.5px;color:var(--muted)}
  #r_msg{width:780px;max-width:100%;min-height:0;padding:0}

  /* ====================================================================
     KOMMANDOPALETTE, LUPE, BROTKRUMEN, DARSTELLUNG (0.35.1, P2/P3/S1, Entwurf D)
     Farben nur ueber Variablen (Haut-neutral). Lupe in der Titelleiste = die
     einzige Pixelaenderung in der Titelleiste von Klassisch (Nachtrag); die
     Brotkrumen die einzige in der Statuszeile.
     ==================================================================== */
  #titel .kz-such{
    height:20px;padding:0 7px 0 5px;border:1px solid var(--titel-rand);border-radius:var(--radius);
    background:none;color:inherit;font:400 11px/1 var(--schrift);
    display:inline-flex;align-items:center;gap:5px;box-shadow:none;cursor:pointer;white-space:nowrap;
  }
  #titel .kz-such:hover{background:var(--titel-fuell-hover);border-color:var(--titel-rand-hover)}
  #titel .kz-such svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex:none}
  #titel .kz-such kbd{font:500 9.5px/1 var(--mono);letter-spacing:.04em;padding:2px 4px;border-radius:2px;background:var(--titel-konto-fuell-hover);color:inherit;border:0}
  #titel .kz-such[hidden]{display:none}
  /* Dialog: ueber dem abgedunkelten Fenster; UNTER der Belegvorschau/Lightbox/Tastenkuerzel (z 200) — paletteOeffnen
     oeffnet nicht, solange eine davon steht (Gegenlesen des Bauplans). */
  #kz_hinter{position:fixed;inset:0;z-index:180;background:var(--schleier-stark);display:flex;align-items:flex-start;justify-content:center;padding:9vh 12px 12px}
  #kz_box{
    width:min(640px,100%);max-height:78vh;display:flex;flex-direction:column;
    background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);
    box-shadow:var(--schatten-gross),0 0 0 1px var(--line-soft);overflow:hidden;
  }
  #kz_box .kz-kopf{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line);background:var(--band)}
  #kz_box .kz-kopf > svg{width:18px;height:18px;stroke:var(--accent);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  #kz_box input#kz_q{width:100%;height:32px;border:0;background:none;box-shadow:none;outline:none;padding:0;font:400 16px/1.2 var(--schrift);color:var(--ink);border-radius:0}
  #kz_box input#kz_q::placeholder{color:var(--muted)}
  #kz_box input#kz_q:focus,#kz_box input#kz_q:focus-visible{box-shadow:none;border:0}
  #kz_box .kz-zu{height:24px;padding:0 8px;font:500 11px/1 var(--schrift);color:var(--muted);background:none;border:1px solid var(--line);border-radius:3px;box-shadow:none;white-space:nowrap;cursor:pointer}
  #kz_box .kz-zu:hover{color:var(--ink);border-color:var(--accent)}
  #kz_box .kz-zu .kz-zu-hand{display:none}
  #kz_liste{overflow:auto;min-height:0;padding:4px 0 6px;scrollbar-width:thin}
  #kz_liste .kz-gruppe{padding:8px 14px 3px;color:var(--muted);font:600 11px/1.4 var(--schrift);letter-spacing:0;display:flex;align-items:center;gap:8px}
  #kz_liste .kz-gruppe::after{content:"";flex:1;height:1px;background:var(--line-soft)}
  #kz_liste .kz-eintrag{
    display:grid;grid-template-columns:20px minmax(0,1fr) auto auto auto;align-items:center;gap:10px;
    height:30px;padding:0 12px 0 11px;margin:0 4px;border-radius:var(--radius);cursor:pointer;
    border-left:3px solid transparent;color:var(--ink);font-size:13px;
  }
  #kz_liste .kz-eintrag svg{width:16px;height:16px;stroke:var(--ink-2);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
  #kz_liste .kz-eintrag .tx{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #kz_liste .kz-eintrag .tx b{font-weight:600;color:var(--accent-ink);background:var(--accent-soft);border-radius:2px;padding:0 1px}
  #kz_liste .kz-eintrag .nr{font:500 11.5px/1 var(--mono);color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
  #kz_liste .kz-eintrag .ort{color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px;text-align:right}
  #kz_liste .kz-eintrag kbd{font:500 10px/1 var(--mono);color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:2px 5px;white-space:nowrap;min-width:14px;text-align:center}
  #kz_liste .kz-eintrag:hover{background:var(--hover)}
  #kz_liste .kz-eintrag.on{background:var(--markiert);color:var(--markiert-ink);border-left-color:var(--klemme-farbe,var(--accent))}
  #kz_liste .kz-eintrag.on svg{stroke:var(--accent)}
  #kz_liste .kz-eintrag.on .nr,#kz_liste .kz-eintrag.on .ort,#kz_liste .kz-eintrag.on kbd{color:inherit;border-color:transparent;opacity:.85}
  #kz_liste .kz-eintrag.on .tx b{color:inherit;background:none;text-decoration:underline;text-underline-offset:2px}
  #kz_liste .kz-leer{padding:22px 14px;color:var(--muted);text-align:center;font-size:12.5px}
  #kz_box .kz-fuss{display:flex;align-items:center;gap:14px;padding:6px 12px;border-top:1px solid var(--line-soft);background:var(--band);color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden}
  #kz_box .kz-fuss kbd{font:500 10px/1 var(--mono);color:var(--ink-2);border:1px solid var(--line);border-radius:3px;padding:2px 4px;margin-right:3px}
  #kz_box .kz-fuss .zaehler{margin-left:auto;font-variant-numeric:tabular-nums}
  /* Haut-Anpassung des Dialogs nur ueber Variablen; Nachtblau: Glas-Rand und Schatten */
  :where(html[data-haut="nachtblau"]) #kz_box{border-color:var(--glas-rand);border-radius:10px;box-shadow:var(--schatten)}
  :where(html[data-haut="fokus"]) #kz_box{border:0;border-radius:10px;box-shadow:var(--schatten)}
  /* Brotkrumen in der Statuszeile: fuenfter span (DOM-letztes Kind wegen nth-child im Handy-Block), sichtbar an zweiter
     Stelle ueber order. #st4 ist sichtbar das letzte Feld → ohne Linie; die Krume traegt ihre eigene (Gegenlesen). */
  #status{grid-template-columns:auto auto minmax(0,1fr) auto auto}
  #status #st1{order:1} #status #st_krumen{order:2} #status #st2{order:3} #status #st3{order:4} #status #st4{order:5;border-right:0}
  #status #st_krumen{border-right:1px solid var(--line);padding:0 8px 0 10px;max-width:min(46vw,560px);gap:0}
  /* leer (vor dem ersten Titel): 0 px breit, damit die uebrigen Felder an ihrem Platz bleiben */
  #status #st_krumen:empty{padding:0;border:0}
  #status #st_krumen a{text-decoration:none;margin:0;color:var(--muted)}
  #status #st_krumen a:hover{color:var(--accent);text-decoration:underline}
  #status #st_krumen .sep{color:var(--muted);padding:0 5px;opacity:.7}
  #status #st_krumen .jetzt{font-weight:600;color:var(--status-ink)}
  #status #st_krumen svg{width:12px;height:12px;stroke:var(--muted);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;margin-right:5px;flex:none}
  @media (max-width:1200px){ #status #st_krumen .alt{display:none} }
  /* Menueband (S3): Einzeiler-Text und Tastenmarke sind im DOM, aber nur in Fokus sichtbar (Klassisch: Pixel 0) */
  #band .rk .tx1,#band .rk .fk{display:none}
  /* Darstellung (Einstellungen → Darstellung …): drei Miniaturen als Radio-Wahl, darunter der Modus */
  .darst{max-width:720px;margin:0 auto;padding:18px 20px 40px}
  .darst h2{margin:0 0 4px}
  .darst > p{margin:0 0 20px;color:var(--muted)}
  .darst fieldset{border:0;padding:0;margin:0 0 26px;min-width:0}
  .darst legend{padding:0;margin:0 0 10px;font-weight:600;color:var(--ink)}
  .darst-haeute{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  .darst-haut{display:block;position:relative;cursor:pointer;border:1px solid var(--line);border-radius:8px;padding:8px 8px 10px;background:var(--panel);color:var(--ink);font:inherit}
  .darst-haut:hover{border-color:var(--accent)}
  .darst-haut.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
  .darst-haut input{position:absolute;top:10px;right:10px;margin:0;accent-color:var(--accent)}
  /* Miniatur 160×100, hoechstens 240 px breit — am Handy (eine Spalte) sonst bildschirmbreit und grob */
  .darst-haut svg{display:block;width:100%;max-width:240px;height:auto;margin:0 auto;border-radius:4px;border:1px solid var(--line-soft)}
  .darst-haut b{display:block;margin:10px 0 2px;font-size:13.5px}
  .darst-haut span{display:block;font-size:12px;color:var(--muted);line-height:1.4}
  .darst-modus label{display:flex;align-items:center;gap:8px;padding:5px 0;cursor:pointer;color:var(--ink);font-size:13px}
  .darst-modus input{margin:0;accent-color:var(--accent)}
  .darst-hinweis{margin:8px 0 0;font-size:12px;color:var(--muted);line-height:1.5}
  .darst-stand{margin:6px 0 0;font-size:12px;color:var(--muted)}
  @media (max-width:700px){ .darst-haeute{grid-template-columns:1fr} .darst{padding:12px 12px 30px} }
  /* Handy: Palette als Blatt ueber allem (auch ueber der Leiste, z 81), Eingabe 16 px (kein Zoom am iPhone), «Abbrechen» statt Esc */
  @media (max-width:900px){
    #titel .kz-such .tx,#titel .kz-such kbd{display:none}
    #titel .kz-such{height:28px;width:32px;padding:0;justify-content:center;border-color:transparent}
    #titel .kz-such svg{width:16px;height:16px}
    #kz_hinter{padding:8px 8px 8px}
    #kz_box{max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px)}
    #kz_box .kz-zu{height:44px;padding:0 12px;font-size:13px}
    #kz_box .kz-zu .kz-zu-esc{display:none}
    #kz_box .kz-zu .kz-zu-hand{display:inline}
    #kz_liste .kz-eintrag{height:38px;grid-template-columns:20px minmax(0,1fr) auto}
    #kz_liste .kz-eintrag .ort,#kz_liste .kz-eintrag kbd{display:none}
    #kz_box .kz-fuss span:not(.zaehler){display:none}
    #status #st_krumen{display:none}
  }
  @media print{ #kz_hinter,#st_krumen,#titel .kz-such{display:none!important} }

  /* ====================================================================
     HAUT-REGELN (0.35.1, S3 Fokus / S4 Nachtblau) — Struktur je Haut.

     Alle Selektoren tragen :where(html[data-haut="…"]) — das kostet KEINE
     Spezifitaet, darum gewinnt jede Regel nur gegen die gleich spezifische
     Grundregel weiter oben (Reihenfolge) und verliert weiter gegen den
     Handy-Block darunter (Masse, Lagen). Farben laufen ueber die Variablen des
     Hautsatzes; hier stehen nur Form, Schrift, Linien, Glas und Leuchten.
     @media screen: der Druck (S5) sieht nichts davon.
     ==================================================================== */
  @media screen{
  /* ---------- Fokus (C): Reduktion, Haarlinien, ein Akzent ---------- */
  :where(html[data-haut="fokus"]) body{background-image:none}
  :where(html[data-haut="fokus"]) #fenster{background:var(--panel)}
  :where(html[data-haut="fokus"]) :focus-visible{box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--accent)}
  :where(html[data-haut="fokus"]) .num,:where(html[data-haut="fokus"]) td.num,:where(html[data-haut="fokus"]) th.num{font-variant-numeric:tabular-nums}
  /* Titelleiste: weiss, Marke in Manrope 600 (kein Versal-Kleinsatz), Titel gedaempft */
  :where(html[data-haut="fokus"]) #titel{border-bottom:1px solid var(--line-soft);padding:0 0 0 16px;font-size:13.5px;letter-spacing:0}
  :where(html[data-haut="fokus"]) #titel .marke{font:600 14px/1 var(--schrift);letter-spacing:-.01em;text-transform:none;opacity:1;padding-right:18px}
  :where(html[data-haut="fokus"]) #titel .text{font-weight:600;color:var(--ink-2)}
  :where(html[data-haut="fokus"]) #titel .rechts{gap:8px;padding:0 10px 0 10px}
  :where(html[data-haut="fokus"]) #titel .modus-knopf,:where(html[data-haut="fokus"]) #titel .menuek{height:26px;padding:0 10px;border-color:transparent;color:var(--muted);font:500 12px/1 var(--schrift)}
  :where(html[data-haut="fokus"]) #titel .modus-knopf:hover,:where(html[data-haut="fokus"]) #titel .menuek:hover{color:var(--ink);border-color:transparent}
  :where(html[data-haut="fokus"]) #titel .kz-such{height:26px;border-color:transparent;background:var(--chip);color:var(--muted);font:500 12px/1 var(--schrift);border-radius:999px;padding:0 10px 0 9px}
  :where(html[data-haut="fokus"]) #titel .kz-such:hover{background:var(--hover);color:var(--ink);border-color:transparent}
  :where(html[data-haut="fokus"]) #titel .kz-such kbd{background:var(--panel);color:var(--muted)}
  :where(html[data-haut="fokus"]) #titel .konto-knopf{height:26px;padding:0 10px 0 4px;font:600 12px/1 var(--schrift);border-radius:999px}
  :where(html[data-haut="fokus"]) #titel .konto-knopf .zeichen{width:18px;height:18px;font:600 9px/18px var(--schrift);border-radius:50%}
  :where(html[data-haut="fokus"]) #titel .konto-menu{top:calc(100% + 8px)}
  /* Registerzeile: Text, aktiv = 3-px-Linie im Firmenblau (Nicht-Text 4.54:1) */
  :where(html[data-haut="fokus"]) #register{border-bottom:1px solid var(--line-soft);padding:0 10px}
  :where(html[data-haut="fokus"]) #register .reg-tabs button{height:var(--h-register);padding:0 10px;margin:0;border:0;border-bottom:3px solid transparent;border-radius:0;color:var(--muted);font:500 12.5px/1 var(--schrift)}
  :where(html[data-haut="fokus"]) #register .reg-tabs button u{text-decoration:none}
  :where(html[data-haut="fokus"]) #register .reg-tabs button:hover{color:var(--ink)}
  :where(html[data-haut="fokus"]) #register .reg-tabs button.on{height:var(--h-register);margin-bottom:-1px;background:none;color:var(--ink);font-weight:600;border:0;border-bottom:3px solid var(--accent)}
  :where(html[data-haut="fokus"]) #register .reg-tabs button.offen{background:var(--chip);border-color:transparent;color:var(--ink)}
  :where(html[data-haut="fokus"]) #register .reg-rechts{padding-bottom:0;align-self:center}
  /* Menues: ohne Rahmen, mit Schatten; Ueberschriften in der Grotesk, keine Versalien */
  :where(html[data-haut="fokus"]) #menue,:where(html[data-haut="fokus"]) .konto-menu{border:0;border-radius:10px;box-shadow:var(--schatten);padding:6px}
  :where(html[data-haut="fokus"]) #menue .me{padding:6px 10px;font:500 12.5px/1.3 var(--schrift)}
  :where(html[data-haut="fokus"]) #menue .me:hover:not(:disabled){background:var(--hover);color:var(--ink)}
  :where(html[data-haut="fokus"]) #menue .me .w{color:var(--muted);font-family:var(--schrift)}
  :where(html[data-haut="fokus"]) #menue .me .k{font:500 11px/1 var(--schrift);color:var(--muted)}
  :where(html[data-haut="fokus"]) #menue .ueberschrift,:where(html[data-haut="fokus"]) .konto-abschnitt > .t,:where(html[data-haut="fokus"]) .konto-kopf .r{font:600 11px/1.4 var(--schrift);letter-spacing:0;text-transform:none}
  :where(html[data-haut="fokus"]) .konto-eintrag{font:500 12.5px/1.3 var(--schrift)}
  :where(html[data-haut="fokus"]) .konto-eintrag:hover{background:var(--hover);color:var(--ink)}
  :where(html[data-haut="fokus"]) .konto-eintrag .k{font:500 11px/1 var(--schrift)}
  :where(html[data-haut="fokus"]) .konto-wahl button{border:0;background:var(--chip);font-weight:500}
  :where(html[data-haut="fokus"]) .konto-wahl button.on{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}
  /* Menueband: flache Textknoepfe mit 16-px-Piktogramm und Tastenmarke; waechst bei Umbruch (Geruestzeile ist «auto») */
  :where(html[data-haut="fokus"]) #band{height:auto;min-height:var(--h-band);border-bottom:1px solid var(--line-soft);padding:0 28px 0 8px}
  :where(html[data-haut="fokus"]) #band .gruppe{grid-template-rows:auto auto;align-content:start;padding:8px 8px 6px;border-right:0}
  :where(html[data-haut="fokus"]) #band .gruppe + .gruppe{margin-left:8px;position:relative}
  :where(html[data-haut="fokus"]) #band .gruppe + .gruppe::before{content:"";position:absolute;left:-4px;top:12px;bottom:10px;width:1px;background:var(--line-soft)}
  :where(html[data-haut="fokus"]) #band .knoepfe{flex-wrap:wrap;align-content:flex-start;gap:2px 2px}
  :where(html[data-haut="fokus"]) #band .rk{width:auto;min-width:0;max-width:none;height:26px;padding:0 9px 0 7px;border:0;border-radius:var(--radius);flex-direction:row;align-items:center;gap:6px;white-space:nowrap;font:500 12px/1 var(--schrift);color:var(--ink);text-align:left}
  :where(html[data-haut="fokus"]) #band .rk:hover:not(:disabled){background:var(--hover);border-color:transparent}
  :where(html[data-haut="fokus"]) #band .rk.on{background:var(--accent-soft);border-color:transparent;color:var(--accent-ink)}
  :where(html[data-haut="fokus"]) #band .rk:disabled{color:var(--muted)}
  :where(html[data-haut="fokus"]) #band .ik{width:16px;height:16px;stroke-width:1.5;color:var(--ink-2)}
  :where(html[data-haut="fokus"]) #band .rk.on .ik{color:var(--accent-ink)}
  :where(html[data-haut="fokus"]) #band .rk .tx{display:none}
  :where(html[data-haut="fokus"]) #band .rk .tx1{display:inline;white-space:nowrap}
  :where(html[data-haut="fokus"]) #band .rk .fk{display:inline-block;font:500 10px/1 var(--schrift);color:var(--muted);background:var(--chip);border-radius:3px;padding:2px 4px;margin-left:2px}
  :where(html[data-haut="fokus"]) #band .rk.on .fk{background:var(--panel);color:var(--accent-ink)}
  :where(html[data-haut="fokus"]) #band .gtitel{font:500 10.5px/1 var(--schrift);letter-spacing:0;text-transform:none;color:var(--muted);text-align:left;align-self:start;padding:6px 8px 0}
  :where(html[data-haut="fokus"]) #band .schalter{color:var(--muted);border:0;border-radius:var(--radius);bottom:auto;top:12px}
  :where(html[data-haut="fokus"]) #band .schalter:hover{background:var(--hover);border-color:transparent;color:var(--ink)}
  :where(html[data-haut="fokus"]) #band.klein{height:32px;min-height:0;padding:0 8px}
  :where(html[data-haut="fokus"]) #band.klein .schalter{top:auto}
  :where(html[data-haut="fokus"]) #band.klein .gruppe{padding:0 3px;grid-template-rows:1fr}
  :where(html[data-haut="fokus"]) #band.klein .gruppe + .gruppe{margin-left:4px}
  :where(html[data-haut="fokus"]) #band.klein .gruppe + .gruppe::before{top:7px;bottom:7px}
  :where(html[data-haut="fokus"]) #band.klein .rk{width:28px;height:28px;padding:0;justify-content:center}
  :where(html[data-haut="fokus"]) #band.klein .rk .ik{width:18px;height:18px;stroke-width:1.6}
  :where(html[data-haut="fokus"]) #band.klein .rk .tx1,:where(html[data-haut="fokus"]) #band.klein .rk .fk{display:none}
  /* Vorgabezeile */
  :where(html[data-haut="fokus"]) #vorgabe{border-bottom:1px solid var(--line-soft);padding:0 12px}
  :where(html[data-haut="fokus"]) #vorgabe #tools{gap:8px;font-size:12.5px}
  :where(html[data-haut="fokus"]) #vorgabe input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=file]),:where(html[data-haut="fokus"]) #vorgabe select{height:24px;padding:0 8px;line-height:22px;font-size:12.5px}
  :where(html[data-haut="fokus"]) #vorgabe select{padding-right:20px}
  :where(html[data-haut="fokus"]) #vorgabe input[type=search]{min-width:240px}
  :where(html[data-haut="fokus"]) #vorgabe input:focus,:where(html[data-haut="fokus"]) #vorgabe select:focus{border-color:var(--accent);background-color:var(--panel)}
  :where(html[data-haut="fokus"]) #vorgabe label{font-size:12.5px}
  :where(html[data-haut="fokus"]) #schieber{font-size:11px}
  :where(html[data-haut="fokus"]) .steuer-tabs{border-bottom:0;gap:2px}
  :where(html[data-haut="fokus"]) .steuer-tabs a{border:0;border-radius:var(--radius);color:var(--muted);font-weight:500}
  :where(html[data-haut="fokus"]) .steuer-tabs a:hover{background:var(--hover);color:var(--ink)}
  :where(html[data-haut="fokus"]) .steuer-tabs a.on{background:none;border:0;border-bottom:2px solid var(--accent);border-radius:0;color:var(--ink);font-weight:600}
  /* Baum: runde Knoten, aktiv als blasse Pille, 184 px */
  :where(html[data-haut="fokus"]) #arbeit{background:var(--panel)}
  :where(html[data-haut="fokus"]) #baum{border-right:1px solid var(--line-soft);padding-top:2px}
  :where(html[data-haut="fokus"]) .baum-tabs{background:none;border-bottom:1px solid var(--line-soft);height:26px;padding:0 6px}
  :where(html[data-haut="fokus"]) .baum-tabs button{height:26px;padding:0 8px;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);font:500 11.5px/1 var(--schrift)}
  :where(html[data-haut="fokus"]) .baum-tabs button:hover{color:var(--ink);background:none}
  :where(html[data-haut="fokus"]) .baum-tabs button.on{background:none;border:0;border-bottom:2px solid var(--accent);color:var(--ink);font-weight:600;margin-bottom:-1px}
  :where(html[data-haut="fokus"]) #platz{font:600 13px/1.3 var(--schrift);padding:10px 0 6px;letter-spacing:-.01em}
  :where(html[data-haut="fokus"]) #nav{padding:0 4px 8px 6px}
  :where(html[data-haut="fokus"]) #nav .knoten{color:var(--ink-2);font-weight:600;font-size:11.5px;padding-left:4px}
  :where(html[data-haut="fokus"]) #nav .knoten .auf{font:400 10px/1 var(--schrift)}
  :where(html[data-haut="fokus"]) #nav .ordner{border-left:0;border-radius:var(--radius);padding:0 6px;margin-right:0;color:var(--ink-2)}
  :where(html[data-haut="fokus"]) #nav .ordner:hover{background:var(--hover);color:var(--ink)}
  :where(html[data-haut="fokus"]) #nav .ordner.on{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}
  :where(html[data-haut="fokus"]) #nav .ordner svg{stroke:var(--muted);fill:none;stroke-width:1.4}
  :where(html[data-haut="fokus"]) #nav .ordner.on svg{stroke:var(--accent-ink);fill:none}
  :where(html[data-haut="fokus"]) #nav .ordner kbd{font:500 10px/1 var(--schrift)}
  :where(html[data-haut="fokus"]) #nav .merker,:where(html[data-haut="fokus"]) #nav .kachel .merker{font:600 10px/15px var(--schrift);border-radius:8px}
  :where(html[data-haut="fokus"]) #nav .kachel{border:0;background:var(--chip);border-radius:8px;font:500 11px/12px var(--schrift);color:var(--ink-2)}
  :where(html[data-haut="fokus"]) #nav .kachel svg{color:var(--ink-2)}
  :where(html[data-haut="fokus"]) #nav .kachel:hover{background:var(--hover);border-color:transparent}
  :where(html[data-haut="fokus"]) #nav .kachel.on{background:var(--accent-soft);border-color:transparent;color:var(--accent-ink);font-weight:600}
  :where(html[data-haut="fokus"]) #nav .kachel.on svg{color:var(--accent-ink)}
  :where(html[data-haut="fokus"]) #baum_menue{border-top:1px solid var(--line-soft)}
  :where(html[data-haut="fokus"]) #baum_menue button:hover{background:var(--hover);color:var(--ink)}
  /* Inhalt: keine Anschlussmarken, Listen mit Zebra 5 % statt Gitter, Kopf gedaempft */
  :where(html[data-haut="fokus"]) .panel{border:0;box-shadow:none;border-radius:0}
  :where(html[data-haut="fokus"]) .panel::before,:where(html[data-haut="fokus"]) .panel::after{display:none}
  :where(html[data-haut="fokus"]) #haupt > .panel.liste{background-image:none}
  :where(html[data-haut="fokus"]) .tools{border-bottom:1px solid var(--line-soft);padding:10px 16px;gap:10px;font-size:13px}
  :where(html[data-haut="fokus"]) .tools strong{font-weight:600;font-size:14px;letter-spacing:-.01em;color:var(--ink)}
  :where(html[data-haut="fokus"]) .tools.werkzeuge{padding:10px 16px}
  :where(html[data-haut="fokus"]) body:not(.an-anmeldung) #content h2{font:600 20px/1.25 var(--schrift);letter-spacing:-.015em}   /* 0.35.1c: Anmeldemaske bleibt */
  :where(html[data-haut="fokus"]) #content h3{font:600 15px/1.3 var(--schrift);letter-spacing:-.01em}
  :where(html[data-haut="fokus"]) .empty{padding:44px 20px;font-size:13.5px}
  :where(html[data-haut="fokus"]) .empty::before{display:none}
  :where(html[data-haut="fokus"]) a,:where(html[data-haut="fokus"]) .clickable{box-shadow:none;text-decoration:underline;text-decoration-color:rgba(38,112,237,.35);text-underline-offset:3px;text-decoration-thickness:1px}
  :where(html[data-haut="fokus"]) a:hover,:where(html[data-haut="fokus"]) .clickable:hover{background:none;color:var(--accent);text-decoration-color:currentColor}
  :where(html[data-haut="fokus"]) .pill{border:0;background:var(--chip);border-radius:999px;font:600 11px/1.6 var(--schrift);letter-spacing:0;padding:1px 9px}
  :where(html[data-haut="fokus"]) .pill.blocker{background:var(--bad-soft);color:var(--bad)}
  :where(html[data-haut="fokus"]) .pill.warning{background:var(--warn-soft);color:var(--warn)}
  :where(html[data-haut="fokus"]) .pill.info{background:var(--accent-soft);color:var(--accent-ink)}
  :where(html[data-haut="fokus"]) .pill.gut,:where(html[data-haut="fokus"]) .pill.ok{background:var(--ok-soft);color:var(--ok)}
  :where(html[data-haut="fokus"]) .kz{border:0;background:var(--chip);border-radius:4px;font:500 11px/1.3 var(--schrift);padding:0 6px}
  :where(html[data-haut="fokus"]) .kz-bad{background:var(--bad-soft);color:var(--bad)}
  :where(html[data-haut="fokus"]) .kz-ok{background:var(--ok-soft);color:var(--ok)}
  :where(html[data-haut="fokus"]) .kz-warn{background:var(--warn-soft);color:var(--warn)}
  :where(html[data-haut="fokus"]) .ablage{border:1.5px dashed var(--line);background:var(--zebra);border-radius:10px}
  :where(html[data-haut="fokus"]) .kt-karte{border:0;background:var(--zebra);border-radius:10px;padding:14px 16px}
  :where(html[data-haut="fokus"]) .kt-karte code{border:0;background:var(--panel);border-radius:6px}
  :where(html[data-haut="fokus"]) input,:where(html[data-haut="fokus"]) select,:where(html[data-haut="fokus"]) textarea{background:var(--feld);border:1px solid var(--feldrand);border-radius:var(--radius);box-shadow:none}
  :where(html[data-haut="fokus"]) input:focus,:where(html[data-haut="fokus"]) select:focus,:where(html[data-haut="fokus"]) textarea:focus{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft)}
  :where(html[data-haut="fokus"]) label{font:500 12px/1.4 var(--schrift)}
  :where(html[data-haut="fokus"]) button{border:1px solid var(--line);border-radius:var(--radius);box-shadow:none;font:500 12.5px/1.3 var(--schrift)}
  :where(html[data-haut="fokus"]) button:hover{background:var(--hover);border-color:var(--line)}
  :where(html[data-haut="fokus"]) button.haupt{background:var(--accent);border-color:var(--accent);color:var(--knopf-ink);font-weight:600}
  :where(html[data-haut="fokus"]) button.haupt:hover{background:var(--accent-ink);border-color:var(--accent-ink)}
  :where(html[data-haut="fokus"]) button:disabled{opacity:.45}
  :where(html[data-haut="fokus"]) .modus{border:0;background:var(--chip);border-radius:var(--radius);padding:2px;gap:2px}
  :where(html[data-haut="fokus"]) .modus button{background:none;border-radius:4px}
  :where(html[data-haut="fokus"]) .modus button + button{border-left:0}
  :where(html[data-haut="fokus"]) .modus button.on{background:var(--panel);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.08)}
  :where(html[data-haut="fokus"]) #content table.grid thead th{background:var(--panel);color:var(--muted);font:600 11.5px/1 var(--schrift);padding:0 10px;border-right:0;border-bottom:1px solid var(--line)}
  :where(html[data-haut="fokus"]) #content table.grid thead th:hover{color:var(--ink);background:var(--panel)}
  :where(html[data-haut="fokus"]) #content table.grid tbody td{padding:0 10px;border-right:0;border-bottom:0}
  :where(html[data-haut="fokus"]) #content table.grid tbody tr:nth-child(even) td{background:var(--zebra)}
  :where(html[data-haut="fokus"]) #content table.grid tbody tr:last-child td{border-bottom:0}
  :where(html[data-haut="fokus"]) #content table.grid tbody tr:hover td{background:var(--hover)}
  :where(html[data-haut="fokus"]) #content table.grid tbody tr.on td{background:var(--markiert);color:var(--markiert-ink)}
  /* markierte Zeile: die Toenung allein (1.21:1) ist als Nicht-Text zu blass — die Klemme (3 px, 3.74:1 / dunkel 4.60:1) traegt */
  :where(html[data-haut="fokus"]) #content table.grid tbody tr.on td:first-child{box-shadow:inset 3px 0 0 var(--klemme-farbe)}
  :where(html[data-haut="fokus"]) #content table.grid td a,:where(html[data-haut="fokus"]) #content table.grid td .clickable{text-decoration-color:rgba(38,112,237,.35)}
  :where(html[data-haut="fokus"]) #content table.grid .pill{padding:0 7px;border-radius:999px}
  :where(html[data-haut="fokus"]) #content table.grid td select,:where(html[data-haut="fokus"]) #content table.grid td input{border:1px solid transparent}
  :where(html[data-haut="fokus"]) .kt-rollen th{background:var(--zebra);font-weight:600;color:var(--ink-2)}
  :where(html[data-haut="fokus"]) .feldtabelle th{background:none;color:var(--muted);font:500 var(--schriftgrad)/1.2 var(--schrift);border:0;border-bottom:1px solid var(--line-soft)}
  :where(html[data-haut="fokus"]) .feldtabelle td{border:0;border-bottom:1px solid var(--line-soft)}
  :where(html[data-haut="fokus"]) .feldblock h3{font:600 12px/1.4 var(--schrift);letter-spacing:0;text-transform:none;color:var(--muted)}
  :where(html[data-haut="fokus"]) th{background:var(--panel);color:var(--muted);font:600 11.5px/1.3 var(--schrift);letter-spacing:0;text-transform:none;border-bottom:1px solid var(--line)}
  :where(html[data-haut="fokus"]) td{border-bottom:1px solid var(--line-soft)}
  :where(html[data-haut="fokus"]) tbody tr:hover td{background:var(--hover)}
  :where(html[data-haut="fokus"]) .st-block table tbody tr:nth-child(even) td{background:var(--zebra)}
  :where(html[data-haut="fokus"]) .st-block th{background:var(--panel);color:var(--muted);font:600 11.5px/1 var(--schrift)}
  :where(html[data-haut="fokus"]) .tk-tabelle td:first-child{font-family:var(--schrift);font-weight:600}
  /* Uebersicht (Verteiler): Abgaenge als flache Flaechen mit Haarlinie — Adern und Klemmen behalten die Bereichsfarbe */
  :where(html[data-haut="fokus"]) .vt{padding:10px 22px 0}
  :where(html[data-haut="fokus"]) .vt-abgang{background:var(--zebra);border-top-width:3px;border-radius:0 10px 10px 0;padding:12px 18px 16px 16px}
  :where(html[data-haut="fokus"]) .vt-abgang + .vt-abgang{margin-left:10px}
  :where(html[data-haut="fokus"]) .vt-tag b,:where(html[data-haut="fokus"]) .vt-abgang h3,:where(html[data-haut="fokus"]) .vt-klemme b,:where(html[data-haut="fokus"]) .vt-heute b{font-family:var(--schrift);letter-spacing:-.02em}
  :where(html[data-haut="fokus"]) .st-block{padding:0 22px}
  /* Erfassungsmaske (Offerte) und Hilfespalte */
  :where(html[data-haut="fokus"]) .erfassung{background:var(--panel)}
  :where(html[data-haut="fokus"]) .erfassung > .blatt{border-right:1px solid var(--line-soft)}
  :where(html[data-haut="fokus"]) .off-kopf-klapp > summary{background:var(--panel);border-top:0;border-bottom:1px solid var(--line-soft);font:600 11px/1 var(--schrift);letter-spacing:0;text-transform:none;color:var(--muted)}
  :where(html[data-haut="fokus"]) .erfassung .off-tabelle thead th{background:var(--panel);color:var(--muted);font:600 11.5px/1 var(--schrift);border-right:0;border-bottom:1px solid var(--line)}
  :where(html[data-haut="fokus"]) .erfassung .off-tabelle tbody td{border-right:0;border-bottom:1px solid var(--line-soft)}
  :where(html[data-haut="fokus"]) .erfassung .off-tabelle tr.off-detail td,:where(html[data-haut="fokus"]) .erfassung .off-tabelle tr.off-voll td{background:var(--zebra)}
  :where(html[data-haut="fokus"]) .erfassung .off-tabelle .sia-flag,:where(html[data-haut="fokus"]) .erfassung .off-tabelle .stg-quelle,:where(html[data-haut="fokus"]) .erfassung .off-tabelle .off-marke{background:var(--chip);border:0;color:var(--muted);border-radius:3px}
  :where(html[data-haut="fokus"]) .kasten{border:1px solid var(--line);border-radius:4px}
  :where(html[data-haut="fokus"]) .hilfe-kopf{background:var(--panel);border-bottom:1px solid var(--line-soft)}
  :where(html[data-haut="fokus"]) .hilfe-tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);font:500 11.5px/1 var(--schrift)}
  :where(html[data-haut="fokus"]) .hilfe-tabs button.on{background:none;border:0;border-bottom:2px solid var(--accent);color:var(--ink);font-weight:600;margin-bottom:-1px}
  :where(html[data-haut="fokus"]) .hilfe-inhalt .hilfe-titel{font:600 11px/1.4 var(--schrift);letter-spacing:0;text-transform:none}
  :where(html[data-haut="fokus"]) .formular,:where(html[data-haut="fokus"]) .rapport-formulare{border:1px solid var(--line-soft);border-radius:8px}
  /* Funktionstasten, Statuszeile, Hinweise */
  :where(html[data-haut="fokus"]) #ftasten{background:var(--panel);border-top:1px solid var(--line-soft);padding:0 8px}
  :where(html[data-haut="fokus"]) #status{background:var(--panel);border-top:1px solid var(--line-soft);font-size:11.5px}
  :where(html[data-haut="fokus"]) #status span{border-right:0;padding:0 16px}
  :where(html[data-haut="fokus"]) #status #st_krumen,:where(html[data-haut="fokus"]) #status #st2,:where(html[data-haut="fokus"]) #status #st3,:where(html[data-haut="fokus"]) #status #st4{position:relative}
  :where(html[data-haut="fokus"]) #status #st_krumen::before,:where(html[data-haut="fokus"]) #status #st2::before,:where(html[data-haut="fokus"]) #status #st3::before,:where(html[data-haut="fokus"]) #status #st4::before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:1px;background:var(--line-soft)}
  :where(html[data-haut="fokus"]) #status a{text-decoration-color:rgba(38,112,237,.35)}
  :where(html[data-haut="fokus"]) #status a:hover{color:var(--accent)}
  :where(html[data-haut="fokus"]) .fassung-hinweis{border:0;border-radius:10px;box-shadow:var(--schatten-hinweis)}
  :where(html[data-haut="fokus"]) .vt-kachel{border-color:transparent;background:var(--chip);border-left:3px solid var(--b);border-radius:8px}
  :where(html[data-haut="fokus"]) .vt-kachel:hover{background:var(--hover);border-color:transparent;border-left-color:var(--b)}

  /* ---------- Nachtblau (A): Buehne, Glas, Leuchten ---------- */
  :where(html[data-haut="nachtblau"]) body:not(.an-anmeldung){
    background-color:var(--bg);
    background-image:
      radial-gradient(900px 520px at 88% -10%,rgba(58,140,255,.22),transparent 62%),
      radial-gradient(700px 420px at 0% 110%,rgba(22,33,76,.9),transparent 70%),
      linear-gradient(var(--raster) 1px,transparent 1px),
      linear-gradient(90deg,var(--raster) 1px,transparent 1px);
    background-size:auto,auto,48px 48px,48px 48px;background-position:0 0,0 0,-1px -1px,-1px -1px;
    /* kein background-attachment:fixed — der Koerper rollt nie (overflow:hidden), Safari zeichnet fixed am iPad als scroll */
  }
  :where(html[data-haut="nachtblau"]) #fenster,:where(html[data-haut="nachtblau"]) #arbeit{background:transparent}
  :where(html[data-haut="nachtblau"]) body{font-family:var(--schrift)}
  :where(html[data-haut="nachtblau"]) h1,:where(html[data-haut="nachtblau"]) h2,:where(html[data-haut="nachtblau"]) h3,:where(html[data-haut="nachtblau"]) h4,
  :where(html[data-haut="nachtblau"]) #platz,:where(html[data-haut="nachtblau"]) #titel .text,:where(html[data-haut="nachtblau"]) .konto-kopf .n,
  :where(html[data-haut="nachtblau"]) .off-titel,:where(html[data-haut="nachtblau"]) .sia-objekt{font-family:var(--schrift-titel);font-weight:700;letter-spacing:-.01em}
  :where(html[data-haut="nachtblau"]) #platz{letter-spacing:.01em}
  :where(html[data-haut="nachtblau"]) :focus-visible{box-shadow:var(--glow);border-radius:var(--radius)}
  :where(html[data-haut="nachtblau"]) ::selection{background:#2670ed;color:#fff}
  /* Glas: Unschaerfe nur, wo der Browser sie kann und der Benutzer sie nicht abgeschaltet hat; Rueckfall = dieselbe Farbe
     mit Deckkraft .92–.96 (Kontrast gemessen gegen den Rueckfall, S4) */
  :where(html[data-haut="nachtblau"]) #titel{background:linear-gradient(90deg,rgba(22,33,76,.96),rgba(11,10,37,.96) 60%,rgba(11,10,37,.94));border-bottom:1px solid rgba(58,140,255,.35);position:relative}
  :where(html[data-haut="nachtblau"]) #titel::before{content:"";position:absolute;left:8%;right:8%;bottom:-1px;height:1px;pointer-events:none;z-index:1;background:linear-gradient(90deg,transparent,rgba(58,140,255,.85) 40%,rgba(58,140,255,.85) 60%,transparent);box-shadow:0 0 8px rgba(58,140,255,.6)}
  :where(html[data-haut="nachtblau"]) #titel .marke{font:700 11px/1 var(--schrift-titel);letter-spacing:.2em;opacity:1;color:#fff}
  :where(html[data-haut="nachtblau"]) #titel .marke::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;margin:0 7px 1px 0;vertical-align:middle;background:var(--glow-farbe);box-shadow:0 0 8px var(--glow-farbe)}
  :where(html[data-haut="nachtblau"]) #titel .text{font-size:13px}
  :where(html[data-haut="nachtblau"]) #titel .modus-knopf,:where(html[data-haut="nachtblau"]) #titel .menuek,:where(html[data-haut="nachtblau"]) #titel .kz-such{background:rgba(255,255,255,.05);border-radius:6px}
  :where(html[data-haut="nachtblau"]) #titel .konto-knopf{border-radius:6px}
  :where(html[data-haut="nachtblau"]) #titel .konto-knopf .zeichen{box-shadow:0 0 8px rgba(58,140,255,.6)}
  :where(html[data-haut="nachtblau"]) #register{background:rgba(7,11,27,.92)}
  :where(html[data-haut="nachtblau"]) #register .reg-tabs button{border-radius:6px 6px 0 0}
  :where(html[data-haut="nachtblau"]) #register .reg-tabs button.on{border-top:2px solid #2670ed;box-shadow:0 -6px 16px -6px rgba(58,140,255,.55),inset 0 1px 0 rgba(58,140,255,.25)}
  :where(html[data-haut="nachtblau"]) #register .reg-tabs button:hover{color:#fff}
  :where(html[data-haut="nachtblau"]) #band{background:linear-gradient(180deg,rgba(255,255,255,.065),rgba(255,255,255,.03));border-bottom:1px solid rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
  :where(html[data-haut="nachtblau"]) #band .gruppe{border-right-color:var(--glas-rand)}
  :where(html[data-haut="nachtblau"]) #band .rk{border-radius:6px}
  :where(html[data-haut="nachtblau"]) #band .rk:hover:not(:disabled){background:rgba(58,140,255,.12);border-color:rgba(58,140,255,.45)}
  :where(html[data-haut="nachtblau"]) #band .rk.on{background:rgba(58,140,255,.16);border-color:var(--glow-farbe);box-shadow:0 0 12px rgba(58,140,255,.35)}
  :where(html[data-haut="nachtblau"]) #band .ik{color:var(--glow-farbe);filter:drop-shadow(0 0 3px rgba(58,140,255,.45))}
  :where(html[data-haut="nachtblau"]) #band .rk.on .ik{color:#fff}
  :where(html[data-haut="nachtblau"]) #band .rk:disabled .ik{filter:none;color:var(--muted)}
  :where(html[data-haut="nachtblau"]) #band .schalter:hover{background:rgba(58,140,255,.16)}
  :where(html[data-haut="nachtblau"]) #vorgabe{background:rgba(11,16,36,.92)}
  :where(html[data-haut="nachtblau"]) #baum{background:rgba(9,13,30,.94)}
  :where(html[data-haut="nachtblau"]) .baum-tabs{background:rgba(7,11,27,.85)}
  :where(html[data-haut="nachtblau"]) .baum-tabs button.on{border-top-color:var(--glow-farbe);box-shadow:0 -6px 14px -8px rgba(58,140,255,.7)}
  :where(html[data-haut="nachtblau"]) #nav .ordner{border-radius:0 6px 6px 0}
  :where(html[data-haut="nachtblau"]) #nav .ordner.on{background:linear-gradient(90deg,rgba(38,112,237,.35),rgba(38,112,237,.12));color:#fff;border-left-color:var(--glow-farbe);box-shadow:inset 3px 0 10px -4px rgba(58,140,255,.7)}
  :where(html[data-haut="nachtblau"]) #nav .ordner.on kbd{color:#cfe0ff}
  :where(html[data-haut="nachtblau"]) #nav .ordner.on svg{stroke:var(--glow-farbe);fill:rgba(58,140,255,.18)}
  :where(html[data-haut="nachtblau"]) #nav .ordner svg{fill:rgba(255,255,255,.06)}
  :where(html[data-haut="nachtblau"]) #nav .kachel{background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.035));border:1px solid var(--glas-rand);border-radius:10px}
  :where(html[data-haut="nachtblau"]) #nav .kachel svg{color:var(--glow-farbe)}
  :where(html[data-haut="nachtblau"]) #nav .kachel.on{background:rgba(38,112,237,.2);border-color:var(--glow-farbe);box-shadow:0 0 14px rgba(58,140,255,.35);color:#fff}
  :where(html[data-haut="nachtblau"]) #nav .kachel:hover{background:rgba(58,140,255,.1);border-color:rgba(58,140,255,.45)}
  /* Inhalt: Platte, Listen mit feinen Trennlinien statt Rahmen, Kopf mit Leuchtlinie */
  :where(html[data-haut="nachtblau"]) .panel{border-color:var(--line);box-shadow:none}
  :where(html[data-haut="nachtblau"]) #content table.grid thead th{background:#0f1734;color:#cfd8ea;border-right:0;border-bottom:1px solid rgba(58,140,255,.45);font-weight:600;letter-spacing:.01em}
  :where(html[data-haut="nachtblau"]) #content table.grid thead th:hover{background:#16214c;color:#fff}
  :where(html[data-haut="nachtblau"]) #content table.grid thead th.sort-auf::after,:where(html[data-haut="nachtblau"]) #content table.grid thead th.sort-ab::after{color:var(--glow-farbe)}
  :where(html[data-haut="nachtblau"]) #content table.grid tbody td{border-right:0;border-bottom:1px solid rgba(255,255,255,.055)}
  :where(html[data-haut="nachtblau"]) #content table.grid tbody tr:nth-child(even) td{background:var(--zebra)}
  :where(html[data-haut="nachtblau"]) #content table.grid tbody tr:hover td{background:var(--hover)}
  :where(html[data-haut="nachtblau"]) #content table.grid tbody tr.on td{background:var(--markiert);color:var(--markiert-ink);border-bottom-color:rgba(58,140,255,.35)}
  :where(html[data-haut="nachtblau"]) #content table.grid tbody tr.on td:first-child{box-shadow:inset 3px 0 0 var(--klemme-farbe)}
  :where(html[data-haut="nachtblau"]) #content table.grid tbody tr.on td a{color:#fff}
  :where(html[data-haut="nachtblau"]) th{background:transparent;color:#cfd8ea;border-bottom:1px solid rgba(58,140,255,.5)}
  :where(html[data-haut="nachtblau"]) td{border-bottom-color:rgba(255,255,255,.06)}
  :where(html[data-haut="nachtblau"]) .nliste td{border-bottom-color:rgba(255,255,255,.06)}
  :where(html[data-haut="nachtblau"]) .feldtabelle th{background:var(--band)}
  :where(html[data-haut="nachtblau"]) .st-block th{background:#0f1734;color:#cfd8ea}
  :where(html[data-haut="nachtblau"]) .erfassung{background:var(--bg2)}
  :where(html[data-haut="nachtblau"]) .erfassung > .blatt{background:var(--panel);border-right-color:var(--line)}
  :where(html[data-haut="nachtblau"]) .tools{background:transparent;border-bottom-color:var(--line)}
  :where(html[data-haut="nachtblau"]) .empty::before{background:var(--glas);border-color:var(--glas-rand);box-shadow:none;border-radius:8px}
  /* Uebersicht: die Abgaenge als Glas-Karten mit Leuchtlinie oben; Adern/Klemmen im dunklen Bereichssatz */
  :where(html[data-haut="nachtblau"]) .vt{padding:10px 22px 0}
  :where(html[data-haut="nachtblau"]) .vt-abgang{position:relative;background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.035));border:1px solid var(--glas-rand);border-top:4px solid var(--b);border-left:3px solid var(--b);border-radius:0 10px 10px 0;padding:12px 18px 16px 16px}
  :where(html[data-haut="nachtblau"]) .vt-abgang + .vt-abgang{margin-left:10px}
  :where(html[data-haut="nachtblau"]) .vt-abgang h3 small,:where(html[data-haut="nachtblau"]) .vt-klemme > em{color:var(--muted)}
  :where(html[data-haut="nachtblau"]) .vt-klemme.hero b{text-shadow:0 0 18px rgba(58,140,255,.35)}
  :where(html[data-haut="nachtblau"]) .vt-heute i{box-shadow:0 0 0 2px var(--bg),0 0 8px var(--b)}
  :where(html[data-haut="nachtblau"]) .st-block{padding:0 22px}
  /* Felder und Knoepfe: Glasfelder, Firmenknopf mit Leuchten, Fokus als Doppelring */
  :where(html[data-haut="nachtblau"]) input,:where(html[data-haut="nachtblau"]) select,:where(html[data-haut="nachtblau"]) textarea{background:rgba(255,255,255,.05);border-color:var(--feldrand);box-shadow:none;border-radius:6px}
  :where(html[data-haut="nachtblau"]) input::placeholder,:where(html[data-haut="nachtblau"]) textarea::placeholder{color:#8c96ad}
  :where(html[data-haut="nachtblau"]) #vorgabe input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=file]),:where(html[data-haut="nachtblau"]) #vorgabe select,
  :where(html[data-haut="nachtblau"]) .hilfe-zeile input:not([type=checkbox]),:where(html[data-haut="nachtblau"]) .hilfe-zeile select{background-color:rgba(255,255,255,.05);border-color:var(--feldrand)}
  :where(html[data-haut="nachtblau"]) select option{background:#0b1024;color:var(--ink)}
  :where(html[data-haut="nachtblau"]) input:focus,:where(html[data-haut="nachtblau"]) select:focus,:where(html[data-haut="nachtblau"]) textarea:focus{border-color:var(--glow-farbe);box-shadow:0 0 0 3px rgba(58,140,255,.22),0 0 12px rgba(58,140,255,.35)}
  :where(html[data-haut="nachtblau"]) button{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);border-radius:6px;box-shadow:none}
  :where(html[data-haut="nachtblau"]) button:hover{background:rgba(58,140,255,.16);border-color:rgba(58,140,255,.7)}
  :where(html[data-haut="nachtblau"]) button.haupt{background:#2670ed;border-color:#2670ed;color:#fff;box-shadow:0 0 16px rgba(58,140,255,.45)}
  :where(html[data-haut="nachtblau"]) button.haupt:hover{background:#3a8cff;border-color:#3a8cff}
  :where(html[data-haut="nachtblau"]) .modus button{background:transparent}
  :where(html[data-haut="nachtblau"]) .modus button.on{background:rgba(38,112,237,.3);color:#fff}
  :where(html[data-haut="nachtblau"]) .steuer-tabs a.on,:where(html[data-haut="nachtblau"]) .hilfe-tabs button.on{border-top-color:var(--glow-farbe);box-shadow:0 -6px 14px -8px rgba(58,140,255,.7)}
  :where(html[data-haut="nachtblau"]) #vorgabe input[type=range]{background:transparent;border:0}
  :where(html[data-haut="nachtblau"]) a,:where(html[data-haut="nachtblau"]) .clickable{color:var(--accent-ink);box-shadow:inset 0 -1px 0 rgba(58,140,255,.55)}
  :where(html[data-haut="nachtblau"]) a:hover,:where(html[data-haut="nachtblau"]) .clickable:hover{background:rgba(58,140,255,.16);color:#fff}
  /* Marken mit weissem Text (Klassisch: Weiss auf --bad/--warn) — in Nachtblau sind --bad/--warn hell: Text auf Soft-Ton (9.4 / 8.6:1) */
  :where(html[data-haut="nachtblau"]) .sia-flag.bad{background:var(--bad-soft);color:var(--bad)}
  :where(html[data-haut="nachtblau"]) .sia-flag.warn{background:var(--warn-soft);color:var(--warn)}
  :where(html[data-haut="nachtblau"]) .fassung-hinweis .fassung-jetzt{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}
  /* Bildflaechen bleiben weiss (Inhalt), bekommen aber einen Rand, damit die Flaeche als Bild lesbar ist (E-S2-2) */
  :where(html[data-haut="nachtblau"]) .abild,:where(html[data-haut="nachtblau"]) .lb-bild{border:1px solid var(--line)}
  /* Menues, Kontomenue, Statuszeile, Schleier */
  :where(html[data-haut="nachtblau"]) #menue,:where(html[data-haut="nachtblau"]) .konto-menu{background:rgba(11,16,36,.96);border:1px solid var(--glas-rand);border-radius:10px;box-shadow:var(--schatten)}
  :where(html[data-haut="nachtblau"]) #menue .me:hover:not(:disabled),:where(html[data-haut="nachtblau"]) .konto-eintrag:hover{background:rgba(58,140,255,.18);color:#fff}
  :where(html[data-haut="nachtblau"]) .konto-wahl button.on{background:rgba(38,112,237,.3);border-color:var(--glow-farbe);color:#fff}
  :where(html[data-haut="nachtblau"]) #status{background:rgba(7,11,27,.94);border-top:1px solid rgba(58,140,255,.3)}
  :where(html[data-haut="nachtblau"]) #status span{border-right-color:var(--line-soft)}
  :where(html[data-haut="nachtblau"]) #ftasten{background:rgba(11,16,36,.92)}
  :where(html[data-haut="nachtblau"]) .pill.info{background:rgba(38,112,237,.25);color:#cfe0ff;border-color:var(--glow-farbe)}
  :where(html[data-haut="nachtblau"]) .kt-karte{background:var(--glas);border-color:var(--glas-rand);border-left-color:var(--glow-farbe);border-radius:10px}
  :where(html[data-haut="nachtblau"]) .kt-karte code{background:rgba(0,0,0,.35);border-color:var(--glas-rand)}
  :where(html[data-haut="nachtblau"]) .ablage{background:var(--glas);border-color:rgba(58,140,255,.35);border-radius:10px}
  :where(html[data-haut="nachtblau"]) .vt-kachel{background:rgba(255,255,255,.07);border-color:var(--glas-rand);border-left-color:var(--b);border-radius:0 8px 8px 0}
  :where(html[data-haut="nachtblau"]) .vt-kachel:hover{background:rgba(58,140,255,.12);border-color:rgba(58,140,255,.45);border-left-color:var(--b)}
  /* Unschaerfe (Glas) nur mit Unterstuetzung und ohne reduzierte Transparenz — der Rueckfall oben ist immer da */
  @supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
    @media not (prefers-reduced-transparency: reduce){
      :where(html[data-haut="nachtblau"]) #titel{background:linear-gradient(90deg,rgba(22,33,76,.92),rgba(11,10,37,.92) 60%,rgba(11,10,37,.86));backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
      :where(html[data-haut="nachtblau"]) #band{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
      :where(html[data-haut="nachtblau"]) #menue,:where(html[data-haut="nachtblau"]) .konto-menu{background:rgba(11,16,36,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
      :where(html[data-haut="nachtblau"]) #status{background:rgba(7,11,27,.9)}
      :where(html[data-haut="nachtblau"]) #vorgabe{background:rgba(11,16,36,.9)}
      :where(html[data-haut="nachtblau"]) #baum{background:rgba(9,13,30,.92)}
    }
  }
  }

  /* ---------------------------------------------------- Handy (< 900 px)
     Der Monteur erfasst am Telefon: Baum als Schublade hinter ≡, Menüband als
     Symbolzeile, Vorgabezeile umbrechend, Grids waagrecht rollbar. Die
     Erfassen-Maske beginnt bei 104 px (Titel 40 + Band 32 + Vorgabe 32).
     I4 (0.33.1): zwei Stufen. FENSTERSTUFE (≤ 900 px, dieser Block): Schublade, 32-px-Band, Statuszeile kurz, Register
     weg, Grids rollen. TELEFONSTUFE (≤ 700 px, Block darunter): Stapelregeln — Rapport-Formular einspaltig, Detailblöcke
     1fr 1fr → 1, Steuerzeile in 45-%-Kacheln, Quellenmarken weg, Eingabezeile zweispaltig; die Hilfespalte deckt bis
     759 px das Blatt (Vollbild-Schicht), ab 760 px steht sie als Seitenspalte (380 px) neben dem Blatt.
     Grund — GEMESSEN 16.09.2026 (0.32.5, iPad hoch 768/834): das 760/826 px breite Rapport-Formular stapelte Kunde/Objekt
     und Abschluss wie am Telefon (150–200 px länger, Höhe ist im Hochformat der knappe Faktor), Rechnung Beleg | Summen
     fiel auf eine Spalte, die Offert-Steuerzeile war 117 px hoch (4 Zeilen), die Quellenmarken NPK Katalog/NPK/Steiger
     fehlten (Unterschied für die Antwortdatei nicht erkennbar). */
  @media (max-width:900px){
    /* Runde 3: die Hilfespalte am Handy als Schicht (Band «Hilfespalte» öffnet, Esc schliesst) — Schicht-Regeln seit I4 im
       759-px-Block; Rapport-Blatt volle Breite. */
    .erfassung{position:relative}
    .erfassung > .blatt{border-right:0}
    #vorgabe #tools > .abst{display:none}
    .kasten{min-width:0;max-width:calc(100% - 60px)}
    .kasten.bearbeiten{width:calc(100% - 60px)}
    /* M5 (0.32.4): am Handy ist das Gitter breiter als der Bildschirm und rollt; 24 % davon machten die Artikelspalte
       ~300 px — GEMESSEN 16.09.2026 (0.32.3, 400 px): Artikel 308 px, von der Bezeichnung waren 55 px sichtbar, in
       0.32.2 ~140. Feste Breite (Marken im Tooltip), die Bezeichnung beginnt bei ~160 px.
       K2 (0.32.5): 110 px reichten nicht — GEMESSEN 16.09.2026 (0.32.4, 400 px): Inhalt 98 px, «574.112.222/12» braucht
       101 px (letzte Ziffer weg), mit der Miniatur (M1, bis 30 px + 4 px) endete «512.155.334» bei 148 px in einer Zelle
       bis 134 («512.155.33…»). Jetzt 130 px (Inhalt 118 px: «574.112.222/12» 101 px), und die Miniatur sowie die
       Quellenmarken («NPK Katalog», «NPK», «Steiger», «ELDAS» — im Tooltip der Zelle) sind am Handy ausgeblendet; die
       Bilder bleiben über die Hilfespalte/Bildsuche und die Lightbox erreichbar. ZEIT/MAT/R bleiben stehen, weil sie
       Zeilen mit derselben Nummer unterscheiden — ohne den 3-px-Abstand, denn «512.155.334 ZEIT» endete damit bei 123 von
       118+6 px und wurde im Bild zur Ellipse (jetzt 114 px). Nummer mit Variante + ZEIT/MAT (≥ 130 px) wird zur Ellipse,
       die Nummer selbst bleibt ganz — auch 140 px (128 Inhalt) hülfen dem nicht. Bezeichnung GEMESSEN am Handy (Beleg 44):
       Inhaber/Büro 309 px sichtbar, Bauführer (ohne Preisspalten) 169 px, in 0.32.4 160 px — das Gitter ist auch bei ihm
       breiter als das Fenster und rollt. */
    /* I4 (0.33.1): die festen 130 px und das Ausblenden der Quellenmarken gelten nur noch unter 700 px (Telefonstufe);
       zwischen 701 und 900 px richtet sich die Zelle nach dem Inhalt — das Gitter rollt dort ohnehin (1'030 px). */
    .erfassung .off-tabelle td.off-nr{width:auto;min-width:150px;max-width:none}
    .erfassung .off-tabelle td.off-nr .sia-flag{margin-left:0}
    /* I15 (0.33.0): statt der ausgeblendeten Miniatur (K2) ein 13-px-Strich-Symbol hinter Nummer und Variante, Tipp
       öffnet die Lightbox (abildZeigen) — für alle Rollen mit bild.sehen, auch den Bauführer ohne Hilfespalte. Das <img>
       bleibt als 1-px-Bild in der Zelle (position:relative am td), lädt also weiterhin und nimmt bei 404 die Marke mit
       (abildWeg). Platz: «574.112.222/12» 101 px + 3 + 13 = 117 ≤ 118 px Inhalt (ein Leerzeichen der Mono-Schrift wäre
       7 px — darum steht die Marke vor dem Leerzeichen der Quellenmarken); reicht der Platz nicht (ZEIT/MAT), nimmt
       abildMarkenPruefen die Marke weg. */
    .erfassung .off-tabelle td.off-nr{position:relative}
    .erfassung .off-tabelle td.off-nr .abild{display:block;position:absolute;left:0;top:0;width:1px;height:1px;max-width:none;margin:0;border:0;opacity:0;pointer-events:none}
    .erfassung .off-tabelle td.off-nr .abild-mark{display:inline-block;width:13px;height:13px;padding:2px 0;margin-left:3px;vertical-align:middle;color:var(--accent);cursor:pointer}
    .erfassung .off-tabelle td.off-nr .abild-mark svg{display:block;width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:1.4;stroke-linejoin:round;stroke-linecap:round}
    /* K1 (0.32.5) → A4 (0.34.0): der Editor-Kasten haftet am linken Blattrand und misst am Blatt (Grundregel oben);
       eine eigene Handy-Grenze braucht es nicht mehr. */
    .off-glied-rechts i{display:none}
    .rapport-flaeche{padding:6px 4px 12px;align-items:stretch}
    .formular,.rapport-formulare,#r_msg{width:100%}
    #ftasten{overflow-x:auto;scrollbar-width:none}
    #ftasten .hinweis{display:none}
    /* Runde 2: auch im Detailfenster (ohne-baum) muss die Schublade hinter ≡
       aufgehen — GEMESSEN 16.09.2026 (Gegenlesen Runde 1): display:none aus der
       ohne-baum-Regel liess nur den Schleier erscheinen. */
    #arbeit.ohne-baum #baum{display:flex}
    /* Grids: die haftende erste Spalte steht seit I7 (0.33.1) in der Grundregel (alle Breiten). */
    .feldtabelle th{width:110px;white-space:normal}
    :root{--h-titel:40px;--h-register:0px}
    #register{height:0;overflow:hidden;visibility:hidden;border:0;padding:0}
    #titel{grid-template-columns:40px minmax(0,1fr) auto;padding:0;font-size:14px}
    #titel .marke{display:none}
    #titel .menuek{display:flex;align-items:center;justify-content:center;width:34px;height:30px;margin-left:3px;padding:0;font-size:18px;position:relative}
    #titel .rechts{padding-right:6px}
    #titel .modus-knopf{display:none}
    #titel .konto-knopf > span:not(.zeichen):not(.neu){display:none}
    #titel .konto-knopf{padding:0 3px}
    #titel .konto-menu{position:fixed;right:6px;top:44px}
    #band{height:32px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
    /* I1 (0.33.0): max-width:92px aus der Grundregel blieb am Handy stehen — GEMESSEN 16.09.2026 (0.32.5, 834 px):
       Text «Rapportverwaltung» 8–119 px im Knopf 7–99 px, elementFromPoint auf «…tung» traf «Drucker-Ausgabe»
       (rapport1) bzw. «Speichern» (stamm1/adresse). */
    #band .rk.wichtig{width:auto;max-width:none;padding:0 6px}
    #band .rk.wichtig .tx{display:inline;white-space:nowrap}
    #vorgabe{height:auto;min-height:var(--h-vorgabe);flex-wrap:wrap;padding:4px 8px;overflow:visible}
    #vorgabe #tools{flex-wrap:wrap;overflow:visible;flex:1 1 200px}
    /* I4 (0.33.1): zwischen 701 und 900 px behalten die Teile ihre Breite und brechen nur um (zwei Zeilen statt vier);
       die 45-%-Kacheln stehen im Telefon-Block. */
    #vorgabe #tools > *{min-width:0}
    /* Reine Hinweistexte (Erfassen, Lohn, Betrieb) kosten am Handy eine Zeile — weg;
       so beginnt die Erfassen-Maske bei 104 px (Titel 40 + Band 32 + Vorgabe 32). */
    #vorgabe #tools > span.muted:only-child{display:none}
    #vorgabe input[type=search],#vorgabe input[type=text]{min-width:0!important;width:auto}
    #schieber{margin-left:auto}
    #arbeit{grid-template-columns:minmax(0,1fr)}
    /* 0.35.0 (H1): die Sammelschiene als Leiste unten — achte Gitterzeile, Nachtblau, 56 px + Safe-Area. Mit
       viewport-fit=cover (Meta) reicht sie am iPhone bis zur Kante; #fenster haelt Insel und Ecken frei (quer). */
    #fenster{grid-template-rows:var(--h-titel) var(--h-register) auto auto minmax(0,1fr) auto var(--h-status) auto;
      padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) 0 env(safe-area-inset-left,0px)}
    #schiene{grid-row:8;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;align-items:stretch;
      height:calc(56px + env(safe-area-inset-bottom,0px));padding:0 0 env(safe-area-inset-bottom,0px);
      background:var(--leiste);position:relative;z-index:81}
    #schiene[hidden]{display:none}
    /* Ein Reiter je Bereich: 3-px-Oberkante in der Bereichsfarbe (auf Nachtblau >= 7:1) = die Schiene; aktiver Bereich
       hell mit Ader zum Symbol; «offen» = sein Blatt liegt gerade auf. Symbole = die vorhandenen Strichsymbole. */
    #schiene .vt-tab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
      min-width:0;padding:5px 2px 4px;border:0;border-top:3px solid var(--l);border-radius:0;background:none;box-shadow:none;
      color:var(--leiste-ink);font:500 10.5px/1.15 var(--vt-text);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:none}
    #schiene .vt-tab svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;opacity:.85}
    #schiene .vt-tab span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
    #schiene .vt-tab.on{color:var(--leiste-hell);font-weight:600}
    #schiene .vt-tab.on svg{color:var(--l);opacity:1}
    #schiene .vt-tab.on::before{content:"";position:absolute;left:50%;top:-3px;width:3px;height:9px;margin-left:-1.5px;background:var(--l)}
    #schiene .vt-tab.offen{background:rgba(255,255,255,.08)}
    #schiene .vt-tab:hover{background:rgba(255,255,255,.06);border-color:var(--l)}
    #schiene .vt-tab:focus-visible{outline:2px solid var(--leiste-hell);outline-offset:-3px}
    /* Merker: Nachtblau auf Weiss (15.5:1) — Weiss auf --warn dunkel laege bei 2.15:1 (G, nicht uebernommen) */
    #schiene .vt-tab .merker{position:absolute;top:4px;left:calc(50% + 6px);min-width:16px;padding:0 4px;border-radius:8px;
      background:#fff;color:var(--leiste);font:600 10px/15px var(--vt-text);font-style:normal;text-align:center;font-variant-numeric:tabular-nums}

    /* 0.35.0 (H2/H4): das Blatt — #baum faehrt von unten ueber die Leiste (150 ms; prefers-reduced-motion schaltet den
       Uebergang ab, Regel am Ende des Stylesheets). Ansicht-1/2-Reiter und Rollenzeile sind am Handy weg (E8);
       der Inhalt bleibt sichtbar (max-height 72 vh). Kein color-mix (Safari 16). */
    #baum{
      position:fixed;left:env(safe-area-inset-left,0px);right:env(safe-area-inset-right,0px);top:auto;
      bottom:calc(56px + env(safe-area-inset-bottom,0px));width:auto;max-height:min(72vh,600px);z-index:80;
      transform:translateY(110%);transition:transform .15s ease-out;
      border-right:0;border-top:1px solid var(--line);border-radius:14px 14px 0 0;
      box-shadow:var(--schatten-blatt);font-size:14px;font-family:var(--vt-text);
    }
    body.baum-offen #baum{transform:none}
    #baum .baum-tabs,#baum #platz{display:none}
    #nav{padding:0;overflow:auto;-webkit-overflow-scrolling:touch}
    .vt-griff{width:36px;height:4px;border-radius:2px;background:var(--line);margin:8px auto 2px;cursor:pointer}
    .vt-suche{padding:6px 14px 4px}
    .vt-suche input{width:100%;box-sizing:border-box;height:44px;padding:0 12px;border:1px solid var(--line);border-radius:8px;
      background:var(--feld);color:var(--ink);font:500 15px/1 var(--vt-text);-webkit-appearance:none;appearance:none;box-shadow:none}
    .vt-suche input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}
    .vt-suche input::placeholder{color:var(--muted)}
    /* Bereichsname in Tinte mit Ader (3 px) — wie ein Klemmenschild */
    .vt-blatt-kopf{margin:10px 14px 6px;padding-left:10px;border-left:3px solid var(--b);font:700 15px/1.2 var(--vt-fira);color:var(--ink)}
    .vt-blatt-kopf small{display:block;font:500 11.5px/1.3 var(--vt-text);color:var(--muted);margin-top:2px}
    .vt-kacheln{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:2px 14px 10px}
    .vt-kacheln.vt-start{padding-top:8px}
    /* Kacheln: 48 px Tippflaeche (E9), Ader links, keine Ordner-Symbole, keine F-Tasten */
    .vt-kachel{position:relative;display:flex;align-items:center;gap:8px;min-height:48px;padding:6px 12px;
      border:1px solid var(--line-soft);border-left:3px solid var(--b);border-radius:0 6px 6px 0;background:var(--band);
      color:var(--ink);font:600 14px/1.25 var(--vt-text);text-align:left;box-shadow:none;cursor:pointer;min-width:0;
      -webkit-tap-highlight-color:transparent;transition:none}
    .vt-kachel .tx{flex:1;min-width:0;overflow-wrap:anywhere}
    .vt-kachel.on{background:var(--baum-aktiv);border-color:var(--b);color:var(--ink)}
    .vt-kachel:hover{background:var(--panel);border-color:var(--line);border-left-color:var(--b)}
    .vt-kachel:focus-visible{outline:2px solid var(--b);outline-offset:1px}
    #nav .vt-kachel .merker{position:static;min-width:18px;padding:0 6px;border-radius:9px;background:var(--accent-soft);color:var(--accent-ink);
      font:600 11px/18px var(--vt-text);text-align:center;font-variant-numeric:tabular-nums;flex:none}
    #nav .vt-kachel.on .merker{background:var(--panel);color:var(--accent-ink)}
    .vt-kachel .vt-woher{font:500 11px/1.2 var(--vt-text);color:var(--muted);white-space:nowrap;flex:none}
    .vt-leer{padding:10px 14px 16px;font:500 13.5px/1.45 var(--vt-text);color:var(--ink-2)}
    .vt-alle{display:block;margin:0 14px 12px;padding:8px 0;border:0;background:none;box-shadow:none;font:500 13px/1.2 var(--vt-text);color:var(--accent);cursor:pointer;text-align:left}
    .vt-alle:hover{background:none;text-decoration:underline;text-underline-offset:3px}
    #baum_menue{display:block;border-top:1px solid var(--line-soft);padding:6px 10px calc(8px + env(safe-area-inset-bottom,0px))}
    #baum_menue .vt-rolle{font:500 12px/1.3 var(--vt-text);color:var(--muted);padding:0 4px 6px}
    #baum_menue .vt-fuss{display:flex;gap:6px}
    #baum_menue .vt-fuss button{flex:1;display:block;width:auto;min-height:40px;padding:6px 8px;text-align:center;border:1px solid var(--line);
      border-radius:8px;font:500 13px/1.2 var(--vt-text);color:var(--ink);background:var(--panel);box-shadow:none}
    #baum_menue .vt-fuss button:hover{background:var(--band);color:var(--ink)}
    #baum_menue .vt-fuss button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
    #status{grid-template-columns:minmax(0,1fr) auto}
    #status span:nth-child(1),#status span:nth-child(3){display:none}
    #content table{min-width:max-content}
    /* Menues und Fassungshinweis ueber der Leiste, neben der Insel (quer) */
    #menue{position:fixed;left:calc(8px + env(safe-area-inset-left,0px));right:calc(8px + env(safe-area-inset-right,0px));top:44px;min-width:0;
      max-height:calc(100vh - 44px - 56px - var(--h-status) - 8px);max-height:calc(100dvh - 44px - 56px - var(--h-status) - env(safe-area-inset-bottom,0px) - 8px);overflow:auto}
    #titel .konto-menu{right:calc(6px + env(safe-area-inset-right,0px))}
    .fassung-hinweis{bottom:calc(var(--h-status) + 56px + env(safe-area-inset-bottom,0px) + 10px)}
  }
  /* iPad hoch (600–900): drei Kachelspalten, flacheres Blatt */
  @media (max-width:900px) and (min-width:600px){
    .vt-kacheln{grid-template-columns:repeat(3,minmax(0,1fr))}
    #baum{max-height:min(60vh,520px)}
  }
  /* 0.35.0b (G7, Gegenlesen): Telefon quer (iPhone 852×393 faellt in die iPad-Regel darueber) — Blatt 85 vh, Griff, Suche
     und Kopf enger, Fuss in EINER Zeile (Rolle · Firma links, drei Knoepfe rechts, 32 px), damit mindestens zwei
     Kachelzeilen sichtbar sind. GEMESSEN 19.09.2026 (CDP 852×393, 0.35.0): Blatt 236 px (60 vh), Kachelfenster ~40 px,
     erste Kachelzeile angeschnitten. Die Hoehe (nicht die Breite) ist hier der knappe Faktor. */
  @media (max-width:900px) and (max-height:500px){
    #baum{max-height:85vh}
    .vt-griff{margin:5px auto 0}
    .vt-suche{padding:4px 14px 2px}
    .vt-blatt-kopf{margin:6px 14px 4px}
    .vt-kacheln{padding-bottom:6px}
    #baum_menue{display:flex;align-items:center;gap:8px;padding:4px 10px calc(4px + env(safe-area-inset-bottom,0px))}
    #baum_menue .vt-rolle{flex:1 1 auto;min-width:0;padding:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    #baum_menue .vt-fuss{flex:0 0 auto}
    #baum_menue .vt-fuss button{flex:none;min-height:44px;padding:4px 10px;font-size:12px}   /* 0.35.0c: Tippgrösse auch quer (Gegenlesen) */
  }
  /* breite Telefone/iPad: Reiter in Reihenform */
  @media (max-width:900px) and (min-width:480px){
    #schiene .vt-tab{flex-direction:row;gap:8px;font-size:12.5px}
    #schiene .vt-tab.on::before{left:12px;margin-left:0}
    #schiene .vt-tab .merker{top:auto;left:auto;position:static;margin-left:2px}
  }
  @media (max-width:340px){ #schiene .vt-tab span{display:none} }
  /* I6 (0.33.1): zwischen 701 und 900 px bricht das 32-px-Band um (zwei Symbolzeilen) statt zu rollen — GEMESSEN
     16.09.2026 (0.32.5): offerte1 977 px breit bei 768/834, «Löschen», «Kopie», «Hilfespalte» ohne Hinweis hinter dem
     Rand (scrollbar-width:none); rapport1 807 px, «Unterschrift nochmal» bei 768 ausserhalb. */
  @media (min-width:701px) and (max-width:900px){
    #band,#band.klein{height:auto;min-height:32px;flex-wrap:wrap;align-content:flex-start}
    #band.klein .gruppe{height:32px}
    /* I4: Hilfespalte ab 760 px als Seitenspalte, 380 px wie die Schicht (901–1272) — dem Blatt bleiben 388 (768) bzw.
       454 px (834), es rollt ohnehin (Gitter 1'129 px). GEMESSEN 17.09.2026 (CDP, 0.33.1-Vorlauf mit 340 px): die
       Textspalte der Nummernliste hatte 73 px (Touch 57), live mit Artikelbild-Miniatur (32 px) blieb «KI…» — mit 380 px
       sind es 113/97 px, «KRGK-Rohr fw -20» ist lesbar. Unter 760 px deckt die Schicht das Blatt (Block darunter).
       Die Register brechen bei 380 px um (Gliederungen in der zweiten Zeile). */
    .erfassung .hilfe{min-width:380px}
    /* R3 (0.33.2) → A4 (0.34.0): der feste Abzug 272 px galt nur für die Zellposition von Beleg 44 (Gegenlesen 0.33.2:
       Planer-Belege beginnen weiter rechts). Der Editor-Kasten haftet jetzt am linken Blattrand (Grundregel oben) —
       mit der Seitenspalte 364 (768) bzw. 430 px (834). */
  }
  @media (max-width:759px){
    /* Schicht über dem Blatt (nicht fixed: #content > * trägt eine Animation mit transform, die
       ein fixed-Element an sich bände — GEMESSEN 16.09.2026 im Harness, Schicht begann bei 255 px). */
    .erfassung{grid-template-columns:minmax(0,1fr)!important}
    .erfassung .hilfe{position:absolute;inset:0;width:auto;min-width:0;max-width:none;z-index:60;grid-template-rows:auto auto minmax(0,1fr)}
    .erfassung .hilfe-auf{display:none!important}
  }
  /* K4 (0.34.4): Konten-, Antrags- und Passkey-Listen als Karten — keine waagrechte Rolle mehr; «Passkeys je
     Konto» rollte bei 400 px (vorbestehend). Nur Grids mit opt.karten (Klasse «karten»); die Zellen tragen den
     Spaltentitel in data-l. Erste Zelle = Titel der Karte, Zellen ohne Titel (Aktionsspalte) ohne Beschriftung und
     mit Knopfoptik; die haftende erste Spalte (I7) wird hier wieder statisch, sonst kleben Zellen. Der Tabellenkopf
     bleibt im DOM (gridSort), nur ausserhalb des Bildes.
     A1 (0.34.4b): Schwelle 834 px statt 760 — GEMESSEN 17.09.2026 (Abnahme 0.34.4): bei 768 (iPad hoch) rollte die
     Kontenliste 1'196 px im 768-px-Panel, die Aktionen lagen hinter dem Rand; 834 = iPad Pro 11 hoch. */
  @media (max-width:834px){
    #content table.grid.karten{width:100%;min-width:0;border-spacing:0 8px;border-collapse:separate;table-layout:auto}
    #content table.grid.karten thead{position:absolute;left:-9999px;top:auto}
    #content table.grid.karten tbody tr{display:block;border:1px solid var(--line);border-radius:6px;padding:6px 10px;background:var(--panel);margin:0 0 8px}
    #content table.grid.karten tbody tr.on{outline:2px solid var(--accent);outline-offset:-1px}
    #content table.grid.karten tbody td{display:block;position:static;border:0;padding:2px 0;white-space:normal;overflow-wrap:anywhere;max-width:none;height:auto;line-height:1.5;text-align:left;background:transparent}
    #content table.grid.karten tbody td::before{content:attr(data-l);display:inline-block;min-width:118px;color:var(--muted);font-size:11px;vertical-align:top}
    #content table.grid.karten tbody td:first-child{font-size:15px;font-weight:600;padding-bottom:4px}
    #content table.grid.karten tbody td:first-child::before,#content table.grid.karten tbody td:empty{display:none}
    #content table.grid.karten tbody td[data-l=""]::before{content:none}
    #content table.grid.karten tbody td[data-l=""] a{display:inline-block;padding:6px 10px;border:1px solid var(--line);border-radius:5px;margin:4px 6px 0 0;text-decoration:none}
    #content table.grid.karten tbody td[data-l=""] a:focus-visible{outline:2px solid var(--accent)}
    /* K1 (0.34.4b): die eng-Regel der Kontenliste (Z. ~1368, id + 2 Klassen + Attribut) gewann in der Kartenform —
       Name (160 px) und E-Mail (200 px) brachen unter die Beschriftung (Gegenlesen 0.34.4, Bild 400). */
    #content table.grid.karten tbody td.eng{max-width:none}
  }
  /* ---------------------------------------------------- Telefon (≤ 700 px), siehe I4 oben */
  @media (max-width:700px){
    /* I6: das Band rollt weiter (eine Zeile); rechts ein Verlauf mit «›», solange rechts noch Knöpfe liegen
       (Klasse «mehr» aus bandMehrPruefen) — haftet am Rand des Rollbereichs. */
    #band.mehr::after{
      content:"\203A";position:sticky;right:0;flex:none;align-self:stretch;width:26px;margin-left:-26px;
      display:flex;align-items:center;justify-content:flex-end;padding-right:4px;
      background:linear-gradient(90deg,transparent,var(--band) 55%);color:var(--muted);font-size:16px;pointer-events:none;
    }
    .off-erf,.off-erf2{grid-template-columns:1fr 1fr}
    #vorgabe #tools > .steuer-tabs{flex:1 1 100%;border-bottom:0}
    #vorgabe #tools > *{flex:1 1 45%;min-width:0}
    #vorgabe #tools > label,#vorgabe #tools > .betrag{flex:0 1 auto}
    #vorgabe #tools > .spacer,#vorgabe #tools > span.muted{flex:1 1 100%}
    /* K2 (0.32.5): 130 px Artikelzelle, Quellenmarken im Tooltip (Begründung im Handy-Block oben) */
    .erfassung .off-tabelle td.off-nr{width:130px;min-width:130px;max-width:130px}
    .erfassung .off-tabelle td.off-nr .sia-quelle,.erfassung .off-tabelle td.off-nr .stg-quelle{display:none}
    /* R6 (0.33.2), I12-Teil «VA/IC schmaler»: Montageart/Variante 80–120 px statt 110–200 — der Code bleibt ganz, der
       Text wird ab 70 px zur Ellipse (ganz in der Auswahl «Montageart wählen»; der Hinweis-div der Auswahl bleibt bei 120). */
    .erfassung .off-tabelle td.off-ma{min-width:80px;max-width:120px}
    .erfassung .off-tabelle td.off-ma span.muted{max-width:70px}
    /* A4 (0.34.0): die offene Montageart-Auswahl (bis 260 px, Regel im Grundblock) ragte am Handy in Menge und Einheit
       (Gegenlesen 0.33.2 @500: Select 211–471 in einer 120-px-Zelle). Hier: nie breiter als die Zelle. */
    .erfassung .off-tabelle td.off-ma select.off-ma-wahl{max-width:100%;width:100%;min-width:0}
    /* Die frei werdende Breite geht an die Bezeichnung: sie ist 30 % der Tabelle (Z. ~1683) und schrumpfte mit der
       schmaleren Spalte mit — GEMESSEN 17.09.2026 (500 px): Inhaber 309 → 295, Bauführer (ohne Preise) 169 → 155 px.
       Mit 33 % steht sie breiter als vorher (339 bzw. 178 px), die Tabelle ist so breit wie in 0.33.1. */
    .erfassung .off-tabelle td.off-bez{width:33%}
    /* Rapport-Formular: Adressblöcke untereinander, Kästchen in zwei Spalten, Pad volle Breite */
    .formular .kopf{grid-template-columns:1fr 1fr}
    .formular .kopf .logo{grid-column:1/-1;border-bottom:1px solid var(--line)}
    .formular .betreffzeile{grid-template-columns:1fr auto}
    .formular .betreffzeile .zelle:first-child{display:none}
    .formular .adressen{grid-template-columns:1fr}
    .formular .adressen .zelle{min-height:0;border-right:0;border-bottom:1px solid var(--line-soft)}
    .formular .arbeiten{grid-template-columns:1fr}
    .formular .arbeiten .zelle:first-child{border-right:0;border-bottom:1px solid var(--line-soft)}
    .formular .kaestchen{grid-template-columns:1fr 1fr!important}
    .formular .abschluss{grid-template-columns:1fr}
    .formular .abschluss .zelle:first-child{border-right:0;border-bottom:1px solid var(--line-soft)}
    .formular .pad canvas{height:160px}
    .rapport-formulare .raster{grid-template-columns:1fr 1fr}
    /* Detailfenster einspaltig: die zweispaltigen Blöcke (Rechnung Beleg | Summen,
       Ticket, Dokument, Rapport Auftragsdaten) fallen untereinander. */
    #content [style*="grid-template-columns:1fr 1fr"],
    #content [style*="grid-template-columns:1fr minmax(280px,420px)"]{grid-template-columns:1fr!important}
  }
  /* ---------------------------------------------------- Touch (pointer:coarse)
     I13 (0.33.1): Tippziele — GEMESSEN 16.09.2026 (0.32.5): F-Tasten 19 px, Konto 23×20, Reiter 20, ⊟ 22×22, Stern
     18×18, ↑↓× 16×16, Kästchen 13×13, keine pointer:coarse-Regel. Die Zeilenhöhe der Gitter bleibt (--zeile, Schieber
     16–28, Entscheid Ivi) — darum werden Ziele IN Zeilen nur breiter, nicht höher: ein unsichtbarer Rand über die
     Nachbarzeile hinaus träfe deren Knopf (der spätere im DOM gewinnt), ein höherer Knopf hebt die Zeile. Am Arbeitsplatz
     (pointer:fine) ändert sich nichts. Register und Titel nur oberhalb 900 px höher (am Handy sind sie es schon bzw. weg). */
  @media (pointer:coarse){
    #titel .konto-knopf{min-height:32px}
    #titel .modus-knopf,#titel .menuek{height:32px}
    .baum-tabs{height:34px}
    .baum-tabs button{height:32px}
    .hilfe-kopf{min-height:32px}
    .hilfe-kopf .zu{width:32px;height:32px}
    .hilfe-tabs{min-height:32px}
    .hilfe-tabs button{height:30px}
    .hilfe-tabs button.on{height:32px}
    .steuer-tabs{height:28px}
    .steuer-tabs a{height:26px}
    .steuer-tabs a.on{height:28px}
    #ftasten{height:32px}
    #ftasten button{height:28px;padding:0 12px}
    .nliste td.stern{width:28px;max-width:28px}
    .nliste td.auf{width:28px;max-width:28px}
    .gtree .auf{width:24px}
    /* R5 (0.33.2): nicht fix 18 px — beim Schieber 16 hob das die Zeile auf 19 px (GEMESSEN 17.09.2026, pointer:coarse);
       Zeile − 2, mindestens 14, höchstens 18. */
    .erfassung .off-tabelle td .off-wahl{width:clamp(14px,calc(var(--zeile) - 2px),18px);height:clamp(14px,calc(var(--zeile) - 2px),18px)}
    /* ↑↓+× und ▾: 24 px breit (statt 16) — GEMESSEN 17.09.2026 (CDP, pointer:coarse): mit 28 px + 6 px Abstand wuchs das
       Gitter auf 929 px und lag bei 1280 px mit offener Spalte (Blatt 845) hinter dem Rand; mit 24/3 bleibt es ≤ 902
       (iPad 12.9", 1366 px, Spalte 464). */
    .erfassung .off-tabelle .off-mini{min-width:24px;text-align:center}
    .erfassung .off-tabelle .off-akt .off-mini{margin-left:3px}
    .erfassung .off-tabelle .off-klapp{min-width:24px;text-align:center}
    .erfassung .off-tabelle .off-herl-knopf{display:inline-block;min-width:24px;text-align:center}
  }
  @media (pointer:coarse) and (min-width:901px){
    :root{--h-titel:40px;--h-register:36px}
    #register .reg-tabs button{height:32px}
    #register .reg-tabs button.on{height:34px}
  }
  /* ---------------------------------------------------- 0.38.2 (B): Eingabefelder auf Touch-Geräten mit 16 px
     iOS/iPadOS-Safari vergrössert beim Antippen jedes Feld mit Schrift unter 16 px — und bleibt vergrössert (D6).
     GEMESSEN 24.09.2026 (Harness 0.38.1b, runde21/geraete/vorher): Felder unter 16 px bei 390: 169, 820/834: 256,
     1180: 282, 1366: 299. Nur (pointer:coarse): iPhone, iPad hoch UND iPad quer (Arbeitsplatz-Modus mit dem Finger);
     nicht any-pointer — sonst änderte sich auch der Windows-Laptop mit Touchscreen UND Maus. Am Maus-Arbeitsplatz
     bleiben die 12 px. !important, weil Id-Regeln (#vorgabe, #content table.grid) und Inline-Stile sonst gewinnen.
     Ausgenommen: die Anmeldemaske (.an-klemme hat schon 1rem, #l_code 1.375rem — sie würden schrumpfen) und #kz_q.
     Die festen Höhen bleiben (Zeilenhöhe = Entscheid Ivi, Schieber 16–28). Wo die Innenhöhe sonst unter 16 px fiele
     (Felder mit calc(var(--zeile) - 2px) und Rand in Gitterzeilen und in der Offert-Erfassung), fallen Rand oben/unten
     und Innenabstand oben/unten weg, line-height 1: bei --zeile 18 bleiben 16 px Innenhöhe. */
  @media (pointer:coarse){
    :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=hidden]):not([type=button]):not([type=submit]):not([type=reset]):not([type=color]),select,textarea):not(.an-klemme *):not(#kz_q){font-size:16px!important}
    #content table.grid td input,#content table.grid td select,#content table.grid select[data-rolle],
    .erfassung .off-tabelle .off-zahl,.erfassung .off-tabelle .off-eh{line-height:1;padding-top:0;padding-bottom:0;border-top-width:0;border-bottom-width:0}
    /* Die groessere Schrift verschiebt die Grundlinie — GEMESSEN 24.09.2026 (Harness, iPad quer 1366): Zeilen der
       Offert-Erfassung 18 -> 18.8 px (--zeile 16: 16 -> 17.8), Konten-Zeilen mit Rollenwahl 19 -> 19.2 px, am Handy (Karten)
       +2 px. Mit vertical-align bleiben alle Zeilen auf den Werten von 0.38.1b (--zeile 16/18/22 gemessen): middle fuer die
       Offertfelder, −2 px fuer die Rollenwahl (middle liess am Handy 0.2 px stehen). */
    .erfassung .off-tabelle .off-zahl,.erfassung .off-tabelle .off-eh{vertical-align:middle}
    /* 0.38.2b (Gegenlesen 0.38.2): mit 16 px passte in die 60 px der Offert-Zahlenfelder (innen 50 px) nur noch «1234» —
       «1234.5» las sich als 1234, «123.45» als «123.4», ohne jeden Hinweis. GEMESSEN 24.09.2026 (runde21/bau0382b/
       inhalt_probe.py, Chrome headless, System-Schrift 16 px): Ziffer ~9 px, «1234.65» 63 px, «Psch» 38 px. In den
       11'800 Offertpositionen (GEMESSEN 24.09.2026, off.position) hat der Einheitspreis hoechstens 7 Zeichen (64 Mal,
       groesster 10000), die Menge hoechstens 3, die Einheit hoechstens 4 («Psch», «Stk»). Darum 80 px (innen 70: sieben
       Zeichen, wie am Maus-Arbeitsplatz mit 12 px) und 62 px fuer die Einheit (innen 52: «Psch.», «Stk.», «pauschal» nicht).
       Die Zellen der drei Felder bekommen 3 statt 6 px Rand. Das Variantenfeld (inline 58 px, 0–99) bleibt. */
    .erfassung .off-tabelle .off-zahl{width:80px}
    .erfassung .off-tabelle .off-eh{width:62px}
    .erfassung .off-tabelle tbody td:has(> .off-zahl),.erfassung .off-tabelle tbody td:has(> .off-eh){padding-left:3px;padding-right:3px}
    #content table.grid select[data-rolle]{vertical-align:-2px}
    /* Feste Hoehe mit 6 px Innenabstand oben/unten (Grundregel input): bei 16 px blieben 8 bzw. 10 px Innenhoehe. */
    .kt-filter input[type=search],.formular .pad input[type=text]{padding-top:0;padding-bottom:0}
  }
  /* 0.38.2b: die breiteren Felder (s. oben) bezahlt die Montageart — sonst rutscht die Aktionsspalte (Pfeile, +, x) aus
     dem Blatt. GEMESSEN 24.09.2026 (runde21/bau0382b/spalten_probe.py, iPad quer 1366 mit offener Hilfespalte, Blatt
     901 px, alle Spalten auf Mindestbreite): 0.38.1b/0.38.2 Gitter 922 px (Aktionen 98 von 120 px sichtbar), mit
     88/80-px-Feldern 1'006 px (14 px sichtbar). Darum: Montageart (158 px, Text bis 120 px) auf Touch min. 100 px und
     66 px Text (Ellipse, voller Text im title) — die Spalte ist dann 113 px, so breit wie ihr Kopf «VA/IC Montageart»;
     die Preisquelle neben dem Preis («tarif», «hand», 9 px) 36 statt 44 px. Ergebnis 901 px, Aktionen ganz sichtbar
     (spalten_0382b_4.json). Ab 701 px — darunter gilt der Handy-Block (80–120 px, Text 70 px). */
  /* 0.38.3 (Entscheid Ivi 24.09.2026, Punkt 6): ab 901 px (iPad quer, Arbeitsplatz-Modus) gilt die schmale Montageart nur
     bei offener Hilfespalte (.erfassung ohne .hilfe-zu) — ist sie zu, zeigt die Spalte den vollen Text wie am Maus-
     Arbeitsplatz. 701–900 px (iPad hoch = Handy-Modus) unverändert. Die Preisquelle (36 px) bleibt für alle Touch ≥ 701 px. */
  @media (pointer:coarse) and (min-width:701px){
    .erfassung .off-tabelle td.off-preis .off-marke{max-width:36px}
  }
  @media (pointer:coarse) and (min-width:701px) and (max-width:900px){
    .erfassung .off-tabelle td.off-ma{min-width:100px}
    .erfassung .off-tabelle td.off-ma span.muted{max-width:66px}
  }
  @media (pointer:coarse) and (min-width:901px){
    .erfassung:not(.hilfe-zu) .off-tabelle td.off-ma{min-width:100px}
    .erfassung:not(.hilfe-zu) .off-tabelle td.off-ma span.muted{max-width:66px}
  }
  /* 0.38.2 (C): Kennzahl-Karten der Auswertungen — die Hauptzahl passt sich der Kartenbreite an. GEMESSEN 24.09.2026
     (Harness 1440, 7 Karten zu rund 170 px): «104'100.00» braucht bei 31 px rund 186 px, die Karte hat 141 px innen,
     .card schneidet ab (overflow:hidden). --n = Zeichenzahl der Hauptzahl (karte() in nkListe/nkDetail), 0.62 em je
     Zeichen (Mono mit letter-spacing −.02em, gemessen). Ohne Container-Einheiten (Safari < 16) fällt die Deklaration
     weg — dann gilt 31 px wie bisher. Andere .cards (Startseite, Rechnungen, Betrieb) bleiben unverändert. */
  .cards.nk .card{container-type:inline-size}
  .cards.nk .card .v{font-size:clamp(14px, calc(100cqw / (var(--n, 10) * .62)), 31px)}
  @media (max-width:760px){ .cards.nk .card .v{font-size:clamp(14px, calc(100cqw / (var(--n, 10) * .62)), 23px)} }
  @media (prefers-reduced-motion: reduce){ #baum{transition:none} }
/* 0.36.0: Bildsuch-Baum (Steiger) und Material-Karte */
.stg-baumart{display:flex;gap:2px;padding:6px 8px 2px}
.stg-baumart a[role=tab]{padding:3px 10px;border:1px solid var(--rand,#c8ccd2);border-radius:3px;cursor:pointer;font-size:12px}
.stg-baumart a[role=tab].on{background:var(--akzent,#1a5fb4);color:#fff;border-color:transparent}
.bs-pfad{padding:6px 10px;font-size:12px;border-bottom:1px solid var(--rand,#e3e5e8);white-space:normal;line-height:1.5}
.bs-k{cursor:pointer} .bs-b{cursor:pointer}
.bs-dialog{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:900;align-items:center;justify-content:center}
.bs-fenster{background:var(--flaeche,#fff);color:inherit;width:min(720px,94vw);max-height:86vh;overflow:hidden;border-radius:6px;box-shadow:0 12px 40px rgba(0,0,0,.35);display:flex;flex-direction:column}
.bs-fenster .stg-baum{width:auto;border:0}
