/* Aufträge — Büro-Modul der ProKASRO Suite.
   Basis-/Modal-/Gate-/Account-Blöcke sind KOPIEN aus dem Dashboard
   (components.css, Suite-Kopie-Konvention wie tokens.css) — bei Änderungen
   dort prüfen, ob sie hierher gespiegelt gehören. Eigene Blöcke: Topbar,
   Auftragsübersicht (Tabelle, Status-Badges, Filter-Pills). */


* { margin: 0; padding: 0; box-sizing: border-box; }

/* hidden-Attribut gewinnt IMMER — auch gegen Klassen mit eigener display-
   Regel (.btn { display:inline-flex } etc.). Ohne diese Regel überschreibt
   jedes Autoren-display das UA-Stylesheet-[hidden] und „versteckte" Elemente
   bleiben sichtbar (Review-Fund 4: Büro-Buttons beim Operateur, 2026-06-12). */
[hidden] { display: none !important; }

html, body {
    height: 100%;
    background: var(--flaeche);
    color: var(--text);
    font-family: var(--schriftart-ui);
    font-weight: var(--gewicht-normal);
    font-size: var(--schrift-sm);
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}


/* Formular-Grundton (Schrift/Farbe erben) und der ausgeblendete Passwort-
   Schlüssel kommen seit 15.08.2026 aus dem Suite-Kit (forms.css, Abschnitt
   „Formular-Grundton + Passwort-Schlüssel — SUITE-Beschluss"). Hier standen
   Kopien davon, byte-identisch in drei Modulen — der Kit-Audit hat sie
   eingesammelt. Feld-Optik, Spinner, Kontakte-Symbol: HAUS-Baustein „feld". */

/* Der gezeichnete Menü-Pfeil für <select> ist am 05.08.2026 mit V-4c/2
   ersatzlos entfallen. Zwei Gründe: Er traf hier ohnehin KEIN sichtbares Feld
   (`.select` schlug ihn als Klasse und setzte das Bild zurück, die Felder ohne
   Klasse versteckt das eigene Aufklapp-Menü), und sein Ton steckte IN der
   Bild-Adresse — er war damit selbst keine Rolle. Die Auswahl trägt jetzt den
   Chevron aus dem Haus-Baustein. */

a { color: inherit; text-decoration: none; }

/* Buttons: zentral im Suite UI-Kit (css/ui-kit.css, per Sync verteilt). */

/* Buttons (destructive/icon): siehe Suite UI-Kit (css/ui-kit.css). */



/* === STAMMDATEN-MODAL — Datenverwaltung (Drill + Datenblatt) + Neuer Auftrag === */

/* Stabile Modal-Höhe: sonst springt das zentrierte Modal je nach Datenblatt-
   Höhe. Feste Höhe, Drill-Leiste bleibt oben fix, nur das Datenblatt scrollt.
   Nur dieses Modal. */
#stammdaten-modal .modal { height: 85vh; }
/* Der Auftrags-Dialog: zwei Karten-Spalten (14.08.2026) in der Kit-Stufe L
   aus dem Markup — ein erster Wurf mit 1240 px war Chris „viel breiter als
   nötig". Und er liegt auf dem TIEFEN Grund (--flaeche) wie der Auftrag-Tab
   drüben: Auf dem Kit-Modal-Grund (--flaeche-gehoben) war der Karten-Karton
   der pk-sections UNSICHTBAR — gleiche Farbe auf gleicher Farbe, übrig
   blieben nackte Überschriften (Chris: „so geht es gar nicht"). */
#stammdaten-modal .modal { background: var(--flaeche); }
#stammdaten-modal .modal-body {
    overflow: hidden;
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;   /* Platz für den fixen Kit-Footer darunter */
    /* Das VERTIKALE Kit-Polster wandert in die Scroll-Container (.dv-sheet /
       .stamm-form-host): Lag es hier aussen, verschwand der Inhalt beim
       Scrollen an einer unsichtbaren Kante ~20 px UNTER dem Kopf bzw. ÜBER
       dem Fuss (Chris 14.08.2026: „ist das so gewollt?" — nein). Jetzt clippt
       er an der Kopf-/Fusslinie, der Ruheabstand bleibt derselbe. */
    padding-top: 0;
    padding-bottom: 0;
}
/* „Neuer Auftrag" als schlankes Fenster: nur das Formular, keine Verwaltungs-
   Werkzeuge. Datenverwaltung (ohne .focused-form) zeigt Drill-Leiste + Datenblatt. */
#stammdaten-modal.focused-form .dv-sheet { display: none; }   /* .dv-bar gibt es seit dem Drill-Rückbau nicht mehr (QA F-17) */
/* Root-Formular „+ Neuer Auftrag" (D-044): darf schrumpfen und scrollt dann
   INTERN — das große Auftragsformular ist höher als das Modal; ohne
   min-height:0 + overflow würde es stumm abgeschnitten (Review-Fund 2026-06-12). */
#stammdaten-modal > .modal > .modal-body > .stamm-form-host {
    min-height: 0;
    overflow-y: auto;
    /* Top-Level-Anlegen ("Neuer Auftrag"/"Neuer Kunde") sitzt direkt auf dem
       Modal-Grund (--flaeche-gehoben #1c232e) — wie "Neuer Benutzer" in der BV.
       Die hellere Karte (--karte #222B3C) liess den Feld-Rahmen
       (--linie #2e3748 ≈ Karte) verschwinden. */
    background: none;
    /* Dieser Container scrollt. Scrollbalken leicht in den Modal-Rand ziehen
       (margin-right), aber NICHT bis an den Button/Rand kleben; die Felder per
       breitem padding-right klar vom Scrollbalken absetzen. Links bündig zum Header. */
    margin-right: -4px;
    /* Vertikal-Polster INNEN — gleiche Clip-Kanten-Logik wie .dv-sheet. */
    padding: var(--abstand-20) 16px var(--abstand-20) 0;
}
/* === DATENVERWALTUNG — das Datenblatt des Auftrags ========================
   Ein Stapel Karten (Kit-Baustein `datenblatt.css`): Kunde · Bauvorhaben ·
   Haltung · Liner · Sollkurve · Aufnahme · Lichtquelle — dieselbe Folge wie
   im Auftrag-Tab des Dashboards. Der Abstand gehört dem Wirt: Die Karte weiß
   nicht, in welchem Fenster sie steht.
   ZWEI Spalten seit dem 14.08.2026 (Chris — Kit-Shell .protokoll-shell wie
   der Auftrag-Tab; das breite Modal löst den Ein-Spalten-Grund vom 11.08.
   ab). Die Ebenen-Wirte (.dv-lvl, .dv-sollvorgabe, .dv-aufnahmen) bleiben
   fürs Speichern/QR im DOM, sind aber layout-transparent — so verteilt der
   Spalten-gap alle Karten gleichmäßig, egal in welchem Wirt sie wohnen
   (der alte margin-bottom-Weg addierte sich mit dem gap der .pk-col). */
.dv-sheet .dv-lvl,
.dv-sheet .dv-sollvorgabe,
.dv-sheet .dv-aufnahmen { display: contents; }
.stamm-form .pk-section { margin-bottom: var(--abstand-12); }

.dv-sheet {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding-right: var(--abstand-12);   /* Rinne für den Scrollbalken (das Datenblatt scrollt) */
    /* Ruheabstand zu Kopf und Fuss — INNEN, damit die Clip-Kante an der
       Linie liegt (siehe .modal-body oben). */
    padding-top: var(--abstand-20);
    padding-bottom: var(--abstand-20);
}
/* Fixer Modal-Footer (Kit): Löschen links absetzen, Speichern rechts. */
#stammdaten-footer .btn-gefahr { margin-right: auto; }

/* Übersicht: Auswahl-Spalte für Mehrfach-Löschen (schmal, zentriert, nicht
   sortierbar). Das Kästchen selbst kommt seit 09.08.2026 aus dem Kit
   (kaestchen-dunkel.css, gezeichnet) — die hiesigen 15 px waren der Grund,
   warum Aufträge anders aussah als der Rest. Nur die SPALTE gehört hierher. */
.ue-sel-col { width: 36px; text-align: center; cursor: default; }

/* QR-Werkzeuge oben im Datenblatt (Einlesen · Erzeugen), rechtsbündig. */
.dv-tools {
    display: flex;
    justify-content: flex-end;
    gap: var(--abstand-8);
    margin-bottom: var(--abstand-12);
}
/* Per Scan eingelesenes Feld hervorheben, bis gespeichert wird. */
.dv-scanned {
    border-color: var(--akzent) !important;
    background: color-mix(in srgb, var(--akzent) 12%, transparent);
}

/* Sollkurve: Hinweis, DN-Warnung und Knöpfe stehen UNTER den Zeilen in
   derselben Karte — der Knopf gehört zu dem, was über ihm steht. Die
   Kennwert-Zeilen selbst sind normale Karten-Zeilen (Kit).
   Denselben Hinweis-Ton nutzt die Aufnahme-Karte, wenn noch keine Fahrt
   gelaufen ist. */
.sv-hinweis { color: var(--text-gedaempft); font-size: var(--schrift-sm); margin: var(--abstand-8) 0 var(--abstand-12); }
.sv-warn { color: var(--warnung); font-size: var(--schrift-sm); margin: var(--abstand-8) 0 var(--abstand-12); }
.sv-aktionen { display: flex; gap: var(--abstand-8); }
/* Folgen die Knöpfe direkt auf eine Kennwert-Zeile, ist die nicht mehr
   :last-child und behält ihre Haarlinie — die Knöpfe brauchen Luft darunter
   (Chris am Bild, 18.08.2026: „nicht den richtigen Abstand von dem Feld
   oben"; dieselbe Lehre wie beim „Fahrt verwerfen"-Knopf am 17.08., dessen
   Regel mit D-085 gegangen ist). Nach Hinweis oder DN-Warnung nicht nötig —
   die bringen ihren Abstand selbst mit. */
.pk-row + .sv-aktionen { margin-top: var(--abstand-12); }

/* QR-Overlays (Einlesen/Erzeugen) */
.qr-hint { color: var(--text-gedaempft); font-size: var(--schrift-sm); margin: 0 0 var(--abstand-12); }
.qr-scan-input { width: 100%; box-sizing: border-box; }
.qr-scan-result { margin-top: var(--abstand-12); font-size: var(--schrift-sm); word-break: break-all; }
.qr-scan-result.qr-err { color: var(--fehler); }

/* Wirt für das injizierte Root-Formular „+ Neuer Auftrag" (D-044). Im
   Schlankmodus hebt der >-Selektor oben die Karte auf (background:none). */
.stamm-form-host {
    margin: 4px 0 12px 0;
    padding: 12px var(--abstand-14);
    background: var(--karte);
    border-radius: var(--rundung-mittel);
    position: relative;
    z-index: 1;
}

/* „+ Neuer Auftrag": derselbe Karten-Stapel wie das Datenblatt (11.08.2026) —
   Anlegen und Pflegen sehen gleich aus. Der frühere Zweier-Raster-Block
   (.stamm-form als Grid, .stamm-form-section als Block-Header, .field-full)
   ist damit ersatzlos entfallen; die Zeilen-Optik kommt aus dem Kit-Baustein
   `datenblatt.css`, die Spinner-Unterdrückung global aus `forms.css`. */
.stamm-form { margin-top: 0; }

/* Nur die nativen <select> (von CustomSelect überbaut) behalten die Feldhöhe. */
.stamm-form select {
    height: 34px;
    box-sizing: border-box;
    padding: 0 12px;
}

/* === LOGIN-GATE + BENUTZER-ZEILE (D-042) ================================
   Gate nur im Login-Modus sichtbar (users.db vorhanden). Backdrop voll
   deckend — es liegt nichts Sichtbares dahinter. Kein ✕: ohne Login gibt
   es kein „dahinter". =================================================== */


/* Login-Formular kommt jetzt aus dem UI-Kit: .gate-card + .gate-form + .feld/.feld-etikett
   (css/ui-kit.css). Frühere .gate-row/.gate-submit entfallen. */


/* === EIGENE BLÖCKE: Layout, Topbar, Auftragsübersicht ====================== */


body.app-page {
    height: 100vh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Topbar (.topbar / .topbar-title / .topbar-right) kommt jetzt aus dem Kit.
   (Früher: .topbar-titel + .topbar-spacer — Drift zu BV; jetzt vereinheitlicht.) */

/* Hauptbereich */
.inhalt {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: var(--abstand-24);
    gap: var(--abstand-12);
    max-width: 1440px;   /* Suite-Inhaltsbreite Listen-Tools (SUITE-UI.md §3) */
    width: 100%;
    margin: 0 auto;
}

.ue-toolbar {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: var(--abstand-12);
}
/* „+ Neuer Auftrag" links, Suche füllt die Mitte, Dropdown + Export, Anzahl rechts. */
.ue-filter-wrap { flex: 0 0 auto; width: 150px; }

/* Layout — Optik kommt aus dem Kit .suche. Seit dem Lösch-Kreuz (20.08.2026)
   steht die HÜLLE in der Filterzeile, nicht mehr das Feld: Sie ist das
   Flex-Kind, das Feld füllt nur noch sie aus. Ohne diese Umschreibung
   schrumpfte die Suche auf ihre Inhaltsbreite. */
.suche-huelle:has(> .ue-suche) {
    flex: 1;
    max-width: 420px;
}

.ue-anzahl {
    font-size: var(--schrift-2xs);
    color: var(--text-leise);
    letter-spacing: var(--laufweite);
    margin-left: auto;
}

/* Tabelle — Suite-Tabellen-Stil (Racing/Benutzerverwaltung) */
.ue-tabelle-wrap {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    border: 1px solid var(--linie);
    border-radius: var(--rundung-mittel);
    background: var(--flaeche-gehoben);   /* Suite-Tabellen-Standard (SUITE-UI.md §6) */
}

/* Tabelle (Aufbau/Kopf/Zebra/Hover/Sort) kommt jetzt aus dem UI-Kit: .tabelle
   (css/ui-kit.css). Kopf = Auftraege-Standard (semibold/heller). Wrapper
   .ue-tabelle-wrap bleibt tool-eigen (Flex-Layout + Karte). */
.tabelle.klickbar tbody tr { cursor: pointer; }

.ue-mono { font-family: var(--schriftart-mono); font-size: var(--schrift-xs); }
.ue-dim  { color: var(--text-gedaempft); }

/* Soll-Vorgabe-Spalte (O-2): schmal, Icon zentriert. Vorhanden = Akzentfarbe,
   fehlt = gedämpftes „–" (der handlungsrelevante Zustand ist die Lücke). */
.ue-sv-col { width: 68px; text-align: center; }
/* GRÜN (`--ok`) — am Bild entschieden (Chris, 20.08.2026), gleicher Ton wie
   im Dashboard-Wizard. Blau (erst `--akzent`, dann `--akzent-aktiv`) blieb auf
   dem dunklen Grund zu nah an der Schriftfarbe; die Spalte muss man im
   Vorbeischauen erfassen. Der Strich daneben bleibt stumm-grau — kein Rot,
   keine Warnung: Ohne Sollkurve zu fahren ist erlaubt (K3).
   70 % Deckkraft: Die Sollkurve ist auf dem Weg zum NORMALFALL — dann stehen
   Hunderte Haken untereinander, und ein Zeichen, das überall steht, darf
   nicht schreien. Begründung ausführlich im Dashboard (components.css). */
.ue-sv-ja { color: var(--ok); opacity: .7; display: inline-flex; vertical-align: middle; }
.ue-sv-nein { font-family: var(--schriftart-mono); }

/* Status (Zustand = Punkt + Text) kommt jetzt aus dem UI-Kit: .status + .status-*
   (css/ui-kit.css, badges.css). wartend→neutral, in Arbeit→warn+pulse, erledigt→ok. */

/* Selects im Export-Dialog (Kopie der Dashboard-Regel) */
/* Filter-Selects nutzen jetzt das Kit .select (+ .select-wrap, CSS-Chevron). */

/* Dashboard-nicht-erreichbar-Ansicht: Klartext + Ausweg-Button mittig */

