/* /Components/Layout/LoginLayout.razor.rz.scp.css */
/* Layout-Datei bewusst leer — Styling kommt komplett aus app.css (.weber-login-page) */
/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-u151vzakpf] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

#blazor-error-ui .dismiss[b-u151vzakpf] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-hbcurux86z],
.components-reconnect-repeated-attempt-visible[b-hbcurux86z],
.components-reconnect-failed-visible[b-hbcurux86z],
.components-pause-visible[b-hbcurux86z],
.components-resume-failed-visible[b-hbcurux86z],
.components-rejoining-animation[b-hbcurux86z] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-hbcurux86z],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-hbcurux86z],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-hbcurux86z],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-hbcurux86z],
#components-reconnect-modal.components-reconnect-retrying[b-hbcurux86z],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-hbcurux86z],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-hbcurux86z],
#components-reconnect-modal.components-reconnect-failed[b-hbcurux86z],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-hbcurux86z] {
    display: block;
}


#components-reconnect-modal[b-hbcurux86z] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-hbcurux86z 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-hbcurux86z 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-hbcurux86z 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-hbcurux86z]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-hbcurux86z 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-hbcurux86z {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-hbcurux86z {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-hbcurux86z {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-hbcurux86z] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-hbcurux86z] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-hbcurux86z] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-hbcurux86z] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-hbcurux86z] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-hbcurux86z] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-hbcurux86z] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-hbcurux86z 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-hbcurux86z] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-hbcurux86z {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/KiBoard.razor.rz.scp.css */
/* KI-Board (07.10.2026). Ein Eintrag ist eine Karte mit Kopf, Text, Antworten und Aktionen.
   Begonnene Eintraege tragen links einen Balken in der Warnfarbe, damit eine haengende Aufgabe
   in der Liste auffaellt; erledigte sind zurueckgenommen. Nur CSS-Variablen aus weber.css,
   damit der dunkle Modus mitzieht. */
.kiboard-eintrag[b-mn7s7hoc62] {
    border: 1px solid var(--weber-alternate);
    border-left: 4px solid var(--weber-primary);
    border-radius: var(--weber-radius);
    background: var(--weber-secondary-bg);
    padding: 12px 16px;
    margin: 12px 0;
}

.kiboard-eintrag.ist-begonnen[b-mn7s7hoc62] {
    border-left-color: var(--weber-warning);
}

.kiboard-eintrag.ist-erledigt[b-mn7s7hoc62] {
    border-left-color: var(--weber-success);
    opacity: 0.85;
}

.kiboard-kopf[b-mn7s7hoc62] {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: baseline;
}

.kiboard-art[b-mn7s7hoc62] {
    border-radius: var(--weber-radius-pill);
    background: var(--weber-primary-bg);
    color: var(--weber-secondary-text);
    padding: 1px 10px;
    font-size: 0.85em;
}

.kiboard-status[b-mn7s7hoc62] {
    margin-left: auto;
    color: var(--weber-secondary-text);
    font-size: 0.9em;
}

.kiboard-text[b-mn7s7hoc62] {
    white-space: pre-wrap;
    margin: 8px 0;
}

.kiboard-antworten[b-mn7s7hoc62] {
    margin-top: 8px;
}

.kiboard-antwort[b-mn7s7hoc62] {
    border-left: 2px solid var(--weber-alternate);
    padding-left: 10px;
    margin: 6px 0;
}

.kiboard-aktionen[b-mn7s7hoc62] {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: flex-end;
    margin-top: 8px;
}

.kiboard-aktionen .weber-input[b-mn7s7hoc62] {
    flex: 1 1 320px;
}
/* /Components/Pages/LogAnalyse.razor.rz.scp.css */
.log-filter[b-didknxf30v] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px 16px;
    margin-bottom: 12px;
}

.log-tabelle[b-didknxf30v] {
    overflow-x: auto;
    max-height: 60vh;
    overflow-y: auto;
}

.log-tabelle table[b-didknxf30v] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.log-tabelle thead th[b-didknxf30v] {
    position: sticky;
    top: 0;
    background: #f3f4f6;
    text-align: left;
    padding: 8px 10px;
    border-bottom: 2px solid #d1d5db;
    white-space: nowrap;
}

.log-tabelle tbody td[b-didknxf30v] {
    padding: 6px 10px;
    border-bottom: 1px solid #e5e7eb;
    vertical-align: top;
}

.log-tabelle tbody tr.is-warn[b-didknxf30v] {
    background: #fffbeb;
}

.log-tabelle tbody tr.is-error[b-didknxf30v] {
    background: #fef2f2;
}

.log-tabelle .nowrap[b-didknxf30v] {
    white-space: nowrap;
}

.log-tabelle .nachricht[b-didknxf30v] {
    white-space: pre-wrap;
    word-break: break-word;
    font-family: Consolas, "Courier New", monospace;
    min-width: 400px;
}
/* /Components/Pages/ManageEmployee.razor.rz.scp.css */
/* Kurzname aendern in der Detailansicht (07.10.2026). Eingabefeld und Knopf stehen nebeneinander,
   wie in den Anlegezeilen der Seite "Taetigkeiten verwalten" (.tv-form). align-items: flex-end
   haelt den Knopf auf der Grundlinie des Feldes, auch wenn das Feld eine Beschriftung bekommt. */
.me-kurzname-zeile[b-yeq7a7ad2x] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: flex-end;
    margin-bottom: 8px;
}

.me-kurzname-zeile .weber-input[b-yeq7a7ad2x] {
    min-width: 260px;
}

/* Probe der Projektion nach QMDoku (07.10.2026). Sie steht abgesetzt unter der Kurznamen-Zeile,
   weil sie nichts speichert - der Abstand soll das sichtbar machen. */
.me-projektion[b-yeq7a7ad2x] {
    margin-top: 14px;
    padding-top: 10px;
    border-top: 1px solid #e2e8f0;
}

.me-projektion-liste[b-yeq7a7ad2x] {
    margin: 6px 0 0;
    padding-left: 18px;
    font-size: 12px;
    line-height: 1.6;
    color: #475569;
    max-height: 220px;
    overflow-y: auto;
}

/* Hervorgehoben sind die Zeilen, die Stufe 2 sich vornimmt: die vier Stammfelder und - seit
   08.10.2026 - ZeileFehlt. Funktion, Ke und RechtFehlt bleiben Protokoll und sollen sich deshalb
   NICHT wie eine anstehende Aenderung lesen. */
.me-projektion-liste li.wuerde-schreiben[b-yeq7a7ad2x] {
    color: #1E2439;
    font-weight: 500;
}

/* Stufe 2, das Schreiben (07.10.2026). Der Knopf steht UNTER der Abweichungsliste, nicht neben dem
   Probenknopf: Geschrieben wird genau diese Liste, also soll der Blick sie passieren. */
.me-projektion-schreiben[b-yeq7a7ad2x] {
    margin-top: 10px;
}

/* Die Rueckfrage ersetzt den Knopf an derselben Stelle, damit die Liste darueber nicht wegspringt. */
.me-projektion-nachfrage[b-yeq7a7ad2x] {
    margin-top: 10px;
    padding: 10px 12px;
    border: 1px solid #d4dbe6;
    border-radius: 6px;
    background: #f7f9fc;
}

.me-projektion-nachfrage p[b-yeq7a7ad2x] {
    margin: 0 0 8px;
    font-size: 13px;
    color: #1E2439;
}

.me-projektion-nachfrage button[b-yeq7a7ad2x] {
    margin-right: 8px;
}

/* Listenansicht: je Person ein Block. Rollbar, weil die Liste bei 309 Mitarbeitern lang wird. */
.me-liste-rollen[b-yeq7a7ad2x] {
    max-height: 60vh;
    overflow-y: auto;
}

.me-liste-person[b-yeq7a7ad2x] {
    padding: 8px 0;
    border-bottom: 1px solid #eef2f7;
}

.me-liste-kopf[b-yeq7a7ad2x] {
    font-size: 13px;
    color: #1E2439;
}

/* Die Zahl der Abweichungen, die Stufe 2 wirklich schreiben wuerde - in Weber-Blau, damit sie sich
   von den uebrigen abhebt, ohne wie eine Warnung zu wirken. */
.me-liste-schreibt[b-yeq7a7ad2x] {
    color: #005CB1;
    font-weight: 600;
    margin-left: 4px;
}
/* /Components/Pages/RechteZuordnung.razor.rz.scp.css */
.rz-form[b-nc3gw36yay] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: flex-end;
    margin-bottom: 12px;
}

.rz-field[b-nc3gw36yay] {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.rz-field label[b-nc3gw36yay] {
    font-size: 12px;
    color: #555;
}

.rz-field[b-nc3gw36yay]  .weber-dropdown {
    min-width: 240px;
}

/* Org-Kaskaden-Dropdowns fest auf 220px halten (kein Wachsen). */
.rz-org .rz-field[b-nc3gw36yay]  .weber-dropdown,
.rz-org .rz-field[b-nc3gw36yay]  .weber-dropdown-toggle {
    width: 220px;
    min-width: 220px;
    max-width: 220px;
}

/* Ausgewaehlten Text bei Bedarf abschneiden. */
.rz-org .rz-field[b-nc3gw36yay]  .weber-dropdown-value {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Primaere Rolle und Abteilung des gewaehlten Mitarbeiters: reine Anzeige unter dem Dropdown. */
.rz-info[b-nc3gw36yay] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    margin-top: 8px;
    font-size: 14px;
}

.rz-info-zeile[b-nc3gw36yay] {
    display: flex;
    align-items: baseline;
    gap: 6px;
}

.rz-info-label[b-nc3gw36yay] {
    font-size: 12px;
    color: #555;
}

.rz-info-wert[b-nc3gw36yay] {
    font-weight: 600;
}

.rz-panel-sub[b-nc3gw36yay] {
    font-weight: 600;
    margin: 6px 0 8px 0;
}

.rz-chk[b-nc3gw36yay] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 14px;
}

.rz-msg[b-nc3gw36yay] {
    font-size: 13px;
    color: #555;
}

/* Erklaert eine leere Auswahlliste (09.10.2026). Zwei Toene, weil die Faelle verschieden sind:
   „nichts hinterlegt" ist ein GUELTIGER Zustand (692 von 932 Baustellen haben keine Kolonnen),
   „Abfrage gescheitert" ist ein Fehler. Beides rot zu faerben wuerde die Unterscheidung
   wegwerfen, die diese Anzeige ueberhaupt erst eingefuehrt hat.

   Die Farben kommen als CI-Token, nicht als Hexwert: --wb-warn und --wb-error kippen im
   Dunkelmodus von selbst (#B26A00 -> #FFC46B bzw. #C8321F -> #FF8A75). Ein fester Wert bliebe
   dort dunkel auf dunkel - und das merkt niemand, bis jemand den Modus umschaltet.
   Die Weber-CI erlaubt diese Farben ausdruecklich „nur an Zahlen und Texten", also als
   Schriftfarbe und nicht als Flaeche. */
.rz-hinweis[b-nc3gw36yay] {
    margin-top: 4px;
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.35;
    color: var(--wb-warn, #B26A00);
}

.rz-hinweis--fehler[b-nc3gw36yay] {
    color: var(--wb-error, #C8321F);
}

.rz-error[b-nc3gw36yay] {
    color: #c8102e;
    font-weight: 600;
}

.rz-empty[b-nc3gw36yay] {
    text-align: center;
    color: #94a3b8;
}

/* Wirksame RechteSchluessel im Fenster "aktuelle Rechte" (06.10.2026). Als <pre>, weil der
   Baustein SchluesselAnzeige.Uebersicht zeilenweise formatiert - derselbe Text, der am eigenen
   Benutzernamen als Mouseover steht. Umbruch erlaubt, damit lange Pfadketten nicht quer
   hinauslaufen, und markierbar: Beim Abtippen von Schluesseln entstehen genau die Zahlendreher,
   die man hinterher sucht. */
.rz-rechte[b-nc3gw36yay] {
    margin: 0;
    max-height: 60vh;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
    font-family: Consolas, "Courier New", monospace;
    font-size: 12px;
    line-height: 1.5;
    user-select: text;
}
/* /Components/Pages/TaetigkeitenVerwalten.razor.rz.scp.css */
.tv-form[b-wct0wiz461] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: flex-end;
    margin-bottom: 14px;
}

.tv-field[b-wct0wiz461] {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.tv-field label[b-wct0wiz461] {
    font-size: 12px;
    color: #555;
}

.tv-field .weber-input[b-wct0wiz461] {
    min-width: 220px;
}

.tv-field[b-wct0wiz461]  .weber-dropdown {
    min-width: 240px;
}

.tv-chk[b-wct0wiz461] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 14px;
}

.tv-msg[b-wct0wiz461] {
    font-size: 13px;
    color: #555;
}

.tv-error[b-wct0wiz461] {
    color: #c8102e;
    font-weight: 600;
}

.tv-empty[b-wct0wiz461] {
    text-align: center;
    color: #94a3b8;
}

/* Zelle mit Mitarbeiter-Tooltip (06.10.2026): Der Zeiger sagt, dass dort etwas zu holen ist - ein
   title-Attribut allein ist unsichtbar, und niemand fährt auf eine Zahl, von der er nichts weiss. */
.tv-hat-tooltip[b-wct0wiz461] {
    cursor: help;
    text-decoration: underline dotted;
    text-underline-offset: 3px;
}
