/* ── ProVI CSM Web — Theme (HELL = Standard; dunkel nur auf ausdrücklichen Wunsch) ──
   Generische UI-Rollen kommen direkt aus dem gemeinsamen D30-Profil (--provi-*); hier nur das Modus-Farbsystem
   (AKVS Bernstein, Öko Grün, ÖNORM Violett, Termin Blau, Rot nur Gefahr).
   Kein prefers-color-scheme: auch bei System-Darkmode bleibt die App hell,
   solange der Anwender nicht in den Optionen „dunkel" wählt. */
:root {
  --badge-grau-bg: #EFEFF1; --badge-grau-fg: #5A5A62;
  --akvs-bg: #FAF0DE; --akvs-fg: #8A5A0B;
  --oeko-bg: #E9F5EC; --oeko-fg: #1E7A3C;
  --termin-bg: #E7F0FA; --termin-fg: #1A5FA8;
  --oenorm-bg: #F2E9F9; --oenorm-fg: #7A2FB0;
  --kkk-bg: #E4F3F2; --kkk-fg: #0E7C7B;
  --dblv-bg: #E7EDF2; --dblv-fg: #3D6480;   /* Stahlblau (DB LV) */
  /* LV-Zeilen 1:1 aus AppThemeManager (DgRowStyle): Positions-/Kapitelfarben,
     Auswahl (RowAktiv/-Text/-Border) und Hover-Textfarbe. */
  --row-pos: #FFFFFF; --row-pos-alt: #F8F8F8;
  --row-kapitel: #E8E8E8; --row-kapitel-text: #1F1F1F;
  --row-u1: #EFEFEF; --row-u2: #EDEDED; --row-u3: #EBEBEB; --row-u4: #E9E9E9; --row-u5: #FFFFFF;
  --row-uk-border: rgba(107,107,110,.5);
  --row-aktiv: #C8CCD0; --row-aktiv-text: #1F1F1F; --row-aktiv-border: #1F1F1F;

}
:root[data-theme="dunkel"] {
  --badge-grau-bg: #333338; --badge-grau-fg: #A9A9B0;
  --akvs-bg: #332B1C; --akvs-fg: #F0C070;
  --oeko-bg: #1F2E23; --oeko-fg: #8FD8A0;
  --termin-bg: #212A33; --termin-fg: #8FC4F2;
  --oenorm-bg: #2C2330; --oenorm-fg: #C99AE0;
  --kkk-bg: #1B2F2E; --kkk-fg: #6FCFC8;
  --dblv-bg: #232B32; --dblv-fg: #8FB4CE;   /* Stahlblau (DB LV) */
  --row-pos: #1E1E1E; --row-pos-alt: #252526;
  --row-kapitel: #2D2D30; --row-kapitel-text: #D4D4D4;
  --row-u1: #262628; --row-u2: #2A2A2D; --row-u3: #2D2D30; --row-u4: #303034; --row-u5: #1E1E1E;
  --row-uk-border: rgba(138,138,142,.5);
  --row-aktiv: #555559; --row-aktiv-text: #FFFFFF; --row-aktiv-border: #FFFFFF;

}

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; }
body {
  font-family: var(--provi-font-body); font-size:var(--provi-type-body-font-size);
  background: var(--provi-background); color: var(--provi-text);
  /* Doppelklick auf Grid-Zellen/Listen/Buttons markierte sonst den Text (blau).
     Wie die Desktop-App: keine Textauswahl auf der Bedien-Oberfläche — Eingabe-
     felder und echte Textinhalte (unten) bleiben ausdrücklich auswählbar. */
  -webkit-user-select: none; user-select: none; line-height: normal; }
/* Bestand: Konto- und Anmeldefelder mit 6 px Radius und 33 px Höhe. */
.login-karte .provi-field__control input, .konto-karte .provi-field__control input, .login-karte .provi-input, .konto-karte .provi-input { border-radius: 6px; min-height: 33px; height: 33px; }
input, textarea, select, [contenteditable="true"], code, pre, .auswaehlbar {
  -webkit-user-select: text; user-select: text;
}
h1 { font-size:var(--provi-type-page-font-size); font-weight:var(--provi-type-emphasis-font-weight); margin: 0 0 14px;line-height:var(--provi-type-page-line-height); }

.app-rahmen { display: flex; flex-direction: column; min-height: 100vh; }
.app-inhalt { flex: 1; padding: 22px; max-width: 1100px; width: 100%; margin: 0 auto; }

/* Buttons / Felder */

/* Badges (Modus-Farbsystem) */
.badge-akvs   { background: var(--akvs-bg);   color: var(--akvs-fg); }
.badge-oeko   { background: var(--oeko-bg);   color: var(--oeko-fg); }
.badge-termin { background: var(--termin-bg); color: var(--termin-fg); }
.badge-oenorm { background: var(--oenorm-bg); color: var(--oenorm-fg); }
.badge-db_lv  { background: var(--dblv-bg);   color: var(--dblv-fg); }

/* Login */
.login-buehne { min-height: 100vh; display: flex; align-items: center; justify-content: center;
  background: var(--provi-background); }
.login-buehne.mit-kopf { min-height: calc(100vh - 230px); }
.login-karte { border: 1px solid var(--provi-border);
  padding: 34px 38px; width: 340px; }
/* Login-Markenzeile: Logo-Bild + "CSM" auf gemeinsamer Grundlinie. */
.login-logo-zeile { display: flex; align-items: center; justify-content: center;
  gap: 10px; margin-bottom: 2px; }
.login-logo-bild { height: 30px; }
.login-logo-csm { font-size:var(--provi-type-page-font-size); font-weight:var(--provi-type-strong-font-weight); letter-spacing: .5px;
  color: var(--provi-text); line-height: 1; }
.login-untertitel { text-align: center; margin: 6px 0 10px; }
.auth-form { display: grid; gap: var(--provi-space-control-inline); margin-top: var(--provi-space-control-inline); }
.auth-form p { margin: 0; }
.login-knopf { width: 100%; }

/* Projektliste (Anatomie des Desktop-Öffnen-Dialogs) */
.suche-zeile { margin-bottom:12px; padding:4px 2px 7px; border-bottom:1px solid var(--provi-border); }
.suche-lupe { color: var(--provi-text-muted); font-size:var(--provi-type-title-font-size);line-height:var(--provi-type-title-line-height); }
.suche-eingabe.provi-input { flex:1; padding:0; border:0; border-radius:0; background:transparent; }
.projekt-panel { display: flex;
  overflow: hidden; min-height: 320px; background: var(--provi-surface-subtle); }
.projekt-liste { flex: 1.35; min-width:0; background:var(--provi-surface-subtle); border-right: 1px solid var(--provi-border); overflow-y: auto;
  max-height: 55vh; }
.projekt-zeile { display: flex; align-items: center; border-top: 1px solid var(--provi-border); }
.projekt-zeile:first-child { border-top: none; }
.pz-text { flex: 1; min-width: 0; }
.pz-name { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.pz-unter { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.pz-zeit { white-space: nowrap; }
/* Mehrere Fachbereichs-Badges je Projekt (Basis + Termin + CO₂, sofern gefüllt) */
.pz-badges { display: flex; gap: 4px; flex-wrap: wrap; justify-content: flex-end; }
.projekt-vorschau { flex: 1; min-width:0; padding: 16px 18px; background: var(--provi-surface); }
.vw-kopf { display: flex; align-items: center; gap: 9px; }
.vw-nummer { margin: 2px 0 12px; }
.vw-zeilen { display: grid; grid-template-columns: auto 1fr; gap: 7px 14px; font-size:var(--provi-type-ui-font-size);
  margin: 0 0 14px;line-height:var(--provi-type-ui-line-height); }
.vw-zeilen dt { color: var(--provi-text-secondary); }
.vw-zeilen dd { margin: 0; text-align: right; }
.vw-knopf { width: 100%; margin-top: 7px; }
.leer-hinweis { padding: 24px; text-align: center; }

.fuss-aktionen { align-items: flex-start; margin-top: 14px; }

/* D30: UI-Schrift aus gemeinsamer Basis; Fach-/Zeilenfarben bleiben lokal. */
button, input, select, textarea { font-family: var(--provi-font-body); }
code, pre { font-family: var(--provi-font-mono); }

/* Vue-Projektliste: native Auswahlbuttons und Fieldset statt eigener Dialog-UI.
   Darstellung kommt aus dem Baukasten; hier bleiben nur Seitenabstaende. */
[data-vue-projects] .projekt-zeile { width:100%;text-align:left;justify-content:flex-start;gap:10px;padding:9px 14px;border-radius:0;border:0;border-top:1px solid var(--provi-border);border-left:3px solid transparent;font-weight:var(--provi-type-regular-font-weight);background:transparent; }
[data-vue-projects] .projekt-zeile:first-child { border-top:0; }
[data-vue-projects] .projekt-zeile[aria-pressed="true"] { border-left-color:var(--provi-text);background:var(--provi-action-subtle); }
[data-vue-projects] .pz-name { font-weight:var(--provi-type-emphasis-font-weight); }
[data-vue-projects] .pz-unter, [data-vue-projects] .pz-zeit { color:var(--provi-text-muted); }
[data-vue-projects] .fuss-aktionen { gap:12px; }
[data-vue-projects] .fuss-aktionen .provi-button { font-weight:var(--provi-type-regular-font-weight); }
[data-vue-projects] .pz-name, [data-vue-projects] .pz-unter { display:block }
[data-vue-projects] fieldset.np-spalten { border:0;padding:0;margin:0;min-width:0 }
