/* /Components/AzureDevOpsImportDialog.razor.rz.scp.css */
/* Eigene Kopie der Dialog-Styles (Kopie aus ProjectEditDialog – scoped CSS ist nicht komponentenübergreifend
   nutzbar – dieselbe Situation wie bei DailyTaskDialog). */
.ado-dialog-backdrop[b-c0b8zhr5vr] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.4);
    z-index: 1040;
}

.ado-dialog[b-c0b8zhr5vr] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    pointer-events: none;
}

.ado-dialog-content[b-c0b8zhr5vr] {
    pointer-events: auto;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 40rem;
    max-height: 90vh;
    background-color: #fff;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
}

.ado-dialog-header[b-c0b8zhr5vr] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #dee2e6;
}

/* Scrollbarer Inhaltsbereich – Header und Footer bleiben sichtbar */
.ado-dialog-body[b-c0b8zhr5vr] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 1.25rem;
}

.ado-dialog-footer[b-c0b8zhr5vr] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid #dee2e6;
}

.ado-dialog-header .min-w-0[b-c0b8zhr5vr],
.ado-list .min-w-0[b-c0b8zhr5vr] {
    min-width: 0;
}

.ado-list label[b-c0b8zhr5vr] {
    cursor: pointer;
}

/* Auf dem Handy volle Breite/Höhe ausnutzen. */
@media (max-width: 575.98px) {
    .ado-dialog[b-c0b8zhr5vr] {
        padding: 0.5rem;
    }

    .ado-dialog-content[b-c0b8zhr5vr] {
        max-height: 95vh;
    }
}
/* /Components/BodyWeightDialog.razor.rz.scp.css */
/* Overlay im Stil der übrigen Dialoge. */
.bw-dialog-backdrop[b-wuq7d94zei] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.4);
    z-index: 1040;
}

.bw-dialog[b-wuq7d94zei] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    pointer-events: none;
}

/* Schmaler als der Satz-Dialog: Es sind nur zwei Felder. */
.bw-dialog-content[b-wuq7d94zei] {
    pointer-events: auto;
    width: 100%;
    max-width: 22rem;
    background-color: #fff;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
}

.bw-dialog-header[b-wuq7d94zei] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid #dee2e6;
}

.bw-dialog-body[b-wuq7d94zei] {
    padding: 1rem;
}

.bw-dialog-footer[b-wuq7d94zei] {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    border-top: 1px solid #dee2e6;
}
/* /Components/DailyTaskDialog.razor.rz.scp.css */
/* Leichtgewichtiges Modal – analog zu TaskEditDialog (scoped, daher eigene Kopie). */
.task-dialog-backdrop[b-26boesw7lc] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.4);
    z-index: 1040;
}

.task-dialog[b-26boesw7lc] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    pointer-events: none;
}

.task-dialog-content[b-26boesw7lc] {
    pointer-events: auto;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 32rem;
    max-height: 90vh;
    background-color: #fff;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
}

.task-dialog-header[b-26boesw7lc] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #dee2e6;
}

.task-dialog-body[b-26boesw7lc] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 1.25rem;
}

.task-dialog-footer[b-26boesw7lc] {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid #dee2e6;
}

/* Drag-Sortierung: Anfasser + Einfügemarke */
.daily-handle[b-26boesw7lc] {
    cursor: grab;
    color: #adb5bd;
    user-select: none;
}

.daily-handle:active[b-26boesw7lc] {
    cursor: grabbing;
}

.daily-drop-before[b-26boesw7lc] {
    box-shadow: 0 -2px 0 -1px var(--bs-primary, #0d6efd);
}

/* Wochentags-Zeile unter dem Titel, an Titel/Buttons ausgerichtet. */
.daily-weekdays[b-26boesw7lc] {
    padding-left: 1.6rem;
    margin-top: 0.35rem;
}

.daily-chip[b-26boesw7lc] {
    border: 1px solid #ced4da;
    background-color: #fff;
    color: #6c757d;
    border-radius: 0.25rem;
    font-size: 0.7rem;
    line-height: 1;
    padding: 0.22rem 0.4rem;
    cursor: pointer;
}

.daily-chip:hover[b-26boesw7lc] {
    border-color: var(--bs-primary, #0d6efd);
}

.daily-chip.active[b-26boesw7lc] {
    background-color: var(--bs-primary, #0d6efd);
    border-color: var(--bs-primary, #0d6efd);
    color: #fff;
}
/* /Components/DrawingEditor.razor.rz.scp.css */
/* ── Editor-Rahmen (Kopie aus NoteEditor.razor.css) ───────────────────────────
   Blazor-CSS ist pro Komponente scoped: Die .note-editor*-Regeln aus
   NoteEditor.razor.css greifen hier NICHT, obwohl dieselben Klassen verwendet werden.
   Deshalb – wie schon bei DailyTaskDialog – eine eigene Kopie. Wird der Titel-Balken
   im NoteEditor geändert, hier mitziehen (beide Editoren sollen gleich aussehen). */

.note-empty[b-q3vruc67oj] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    min-height: 20rem;
}

.note-editor[b-q3vruc67oj] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-width: 0;
}

.note-editor-bar[b-q3vruc67oj] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.note-editor-title[b-q3vruc67oj] {
    border-color: transparent;
    background-color: transparent;
    padding-left: 0.25rem;
    min-width: 0;
}

.note-editor-title:hover[b-q3vruc67oj] {
    border-color: #dee2e6;
}

.note-editor-title:focus[b-q3vruc67oj] {
    border-color: #86b7fe;
    background-color: #fff;
}

.note-editor-status[b-q3vruc67oj] {
    font-size: 0.8rem;
    color: #6c757d;
    white-space: nowrap;
}

.note-editor-meta[b-q3vruc67oj] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.4rem;
    font-size: 0.8rem;
    margin-bottom: 0.5rem;
}

/* Task-Dropdown auf handliche Breite begrenzen – ohne das kann es an langen
   Task-Titeln sehr breit werden und die Spalte auseinanderziehen. */
.note-assign-task[b-q3vruc67oj] {
    min-width: 12rem;
    max-width: 18rem;
}

/* ── Zeichenfläche ────────────────────────────────────────────────────────────── */

/* Füllt den Rest der Spalte (analog .note-editor-html im NoteEditor). */
.drawing-host[b-q3vruc67oj] {
    flex: 1 1 auto;
    min-height: 22rem;
    min-width: 0;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    overflow: hidden;
}

/* js-draw setzt seinem Container fest height:400px – damit würde er den Host nicht
   füllen (tote Fläche darunter). Der Container wird per JS erzeugt, hat also kein
   Scope-Attribut → ::deep. */
.drawing-host[b-q3vruc67oj]  .imageEditorContainer {
    height: 100%;
    max-width: 100%;
}

/* js-draw schaltet bei prefers-color-scheme: dark auf sein dunkles Theme um. Die App
   ist (noch) durchgehend hell – der Editor stünde sonst als schwarzer Block in einer
   weißen Oberfläche. Deshalb die Theme-Variablen auf das helle Set festnageln.
   Sobald die App echten Dark-Mode bekommt, kann das hier wieder entfallen. */
.drawing-host[b-q3vruc67oj]  .imageEditorContainer {
    --background-color-1: white;
    --foreground-color-1: black;
    --background-color-2: #f5f5f5;
    --foreground-color-2: #2c303a;
    --background-color-3: #e5e5e5;
    --foreground-color-3: #1c202a;
    --selection-background-color: #cbdaf1;
    --selection-foreground-color: #2c303a;
    --background-color-transparent: rgba(105, 100, 100, 0.5);
    --shadow-color: rgba(0, 0, 0, 0.5);
    --primary-action-foreground-color: #15b;
}

/* Read-only (anderer Tab bearbeitet): SVG als Bild, gleiche Fläche wie der Editor,
   damit die Ansicht beim Übernehmen nicht springt (analog .note-readonly). */
.drawing-readonly[b-q3vruc67oj] {
    flex: 1 1 auto;
    min-height: 22rem;
    min-width: 0;
    overflow: auto;
    padding: 0.75rem;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    background-color: #f8f9fa;
    text-align: center;
}

.drawing-readonly[b-q3vruc67oj]  svg {
    max-width: 100%;
    height: auto;
}
/* /Components/ExerciseEditDialog.razor.rz.scp.css */
/* Overlay im Stil der übrigen Dialoge (TaskEditDialog, ProjectEditDialog). */
.ex-dialog-backdrop[b-7rj3nypspt] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.4);
    z-index: 1040;
}

.ex-dialog[b-7rj3nypspt] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    pointer-events: none;
}

.ex-dialog-content[b-7rj3nypspt] {
    pointer-events: auto;
    width: 100%;
    max-width: 30rem;
    background-color: #fff;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
}

.ex-dialog-header[b-7rj3nypspt] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #dee2e6;
}

.ex-dialog-body[b-7rj3nypspt] {
    padding: 1.25rem;
}

.ex-dialog-footer[b-7rj3nypspt] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid #dee2e6;
}
/* /Components/ExerciseSetDialog.razor.rz.scp.css */
/* Overlay im Stil der übrigen Dialoge. */
.set-dialog-backdrop[b-1c1bodvt8d] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.4);
    z-index: 1040;
}

.set-dialog[b-1c1bodvt8d] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    pointer-events: none;
}

.set-dialog-content[b-1c1bodvt8d] {
    pointer-events: auto;
    width: 100%;
    max-width: 28rem;
    background-color: #fff;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
}

.set-dialog-header[b-1c1bodvt8d] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid #dee2e6;
}

.set-dialog-body[b-1c1bodvt8d] {
    padding: 1rem;
}

.set-dialog-footer[b-1c1bodvt8d] {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    border-top: 1px solid #dee2e6;
}
/* /Components/JournalContext.razor.rz.scp.css */
.journal-context[b-41lxx597m5] {
    border: 1px solid var(--bs-border-color);
    border-radius: 0.4rem;
    background-color: var(--bs-secondary-bg);
}

/* Die ganze Zeile ist der Auslöser, nicht nur das Zeichen rechts – ein 4 px großes
   Ziel wäre eine Zumutung. */
.journal-context-head[b-41lxx597m5] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.4rem 0.7rem;
    border: none;
    background: none;
    text-align: left;
    cursor: pointer;
    font-size: 0.875rem;
    color: var(--bs-secondary-color, #6c757d);
    border-radius: 0.4rem;
}

.journal-context-head:hover[b-41lxx597m5] {
    color: var(--bs-body-color);
}

.journal-context-summary[b-41lxx597m5] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.journal-context-chevron[b-41lxx597m5] {
    flex-shrink: 0;
    line-height: 1;
}

.journal-context-body[b-41lxx597m5] {
    display: flex;
    flex-wrap: wrap;
    gap: 1.25rem;
    padding: 0 0.7rem 0.7rem;
    font-size: 0.875rem;
}

.journal-context-group[b-41lxx597m5] {
    min-width: 12rem;
}

.journal-context-label[b-41lxx597m5] {
    display: block;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--bs-secondary-color, #6c757d);
    margin-bottom: 0.15rem;
}

.journal-context-group ul[b-41lxx597m5] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.journal-context-group li[b-41lxx597m5] {
    padding: 0.1rem 0;
}
/* /Components/JournalHeatmap.razor.rz.scp.css */
/* Waagerecht scrollbar statt gequetscht: Ein Jahr sind 53 Spalten, die auf schmalen
   Fenstern nicht sinnvoll schrumpfen können – Zellen unter 8 px sind nicht mehr
   klickbar. Lieber scrollen als unbenutzbar. */
.heatmap-wrap[b-m3czbx5ah8] {
    overflow-x: auto;
    padding-bottom: 0.25rem;
}

.heatmap-months[b-m3czbx5ah8] {
    display: grid;
    grid-auto-columns: 0.85rem;
    grid-auto-flow: column;
    gap: 0.15rem;
    margin-left: 1.9rem;
    height: 1rem;
    min-width: max-content;
}

.heatmap-month[b-m3czbx5ah8] {
    font-size: 0.7rem;
    color: var(--bs-secondary-color, #6c757d);
    white-space: nowrap;
}

.heatmap-grid[b-m3czbx5ah8] {
    display: flex;
    gap: 0.15rem;
    min-width: max-content;
}

.heatmap-weekdays[b-m3czbx5ah8] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    width: 1.75rem;
    flex-shrink: 0;
}

.heatmap-weekdays span[b-m3czbx5ah8] {
    height: 0.85rem;
    font-size: 0.65rem;
    line-height: 0.85rem;
    color: var(--bs-secondary-color, #6c757d);
}

.heatmap-week[b-m3czbx5ah8] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.heatmap-cell[b-m3czbx5ah8] {
    display: block;
    width: 0.85rem;
    height: 0.85rem;
    border-radius: 0.15rem;
    background-color: #e9ecef;
}

a.heatmap-cell:hover[b-m3czbx5ah8] {
    outline: 2px solid var(--bs-body-color);
    outline-offset: 1px;
}

/* Tage nach heute bleiben als Platzhalter stehen, damit die Woche nicht zerfällt –
   aber unsichtbar, weil es über sie nichts zu sagen gibt. */
.heatmap-cell.is-future[b-m3czbx5ah8] {
    background-color: transparent;
}

.heatmap-legend[b-m3czbx5ah8] {
    display: flex;
    align-items: center;
    gap: 0.15rem;
    margin-top: 0.6rem;
    margin-left: 1.9rem;
}

.heatmap-legend-label[b-m3czbx5ah8] {
    font-size: 0.7rem;
    color: var(--bs-secondary-color, #6c757d);
    margin: 0 0.3rem;
}

.heatmap-legend-gap[b-m3czbx5ah8] {
    width: 0.75rem;
}
/* /Components/JournalLock.razor.rz.scp.css */
.journal-lock[b-bxa7h7ouyi] {
    display: flex;
    justify-content: center;
    padding: 3rem 1rem;
}

.journal-lock-card[b-bxa7h7ouyi] {
    width: 100%;
    max-width: 20rem;
    text-align: center;
    padding: 2rem 1.5rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.75rem;
    background-color: var(--bs-body-bg);
}

.journal-lock-icon[b-bxa7h7ouyi] {
    font-size: 2rem;
    line-height: 1;
    margin-bottom: 0.75rem;
}

/* Weite Zeichenabstände: Eine PIN liest man als Ziffernfolge, nicht als Wort. */
.journal-lock-input[b-bxa7h7ouyi] {
    letter-spacing: 0.5em;
    font-size: 1.25rem;
    padding-left: 0.5em;
}

.journal-lock-hint[b-bxa7h7ouyi] {
    font-size: 0.75rem;
    line-height: 1.35;
}
/* /Components/JournalOnThisDay.razor.rz.scp.css */
/* Feste Breite, damit die Datumsangaben darunter auf einer Flucht stehen. */
.onthisday-ago[b-xxj6ml4g6z] {
    flex-shrink: 0;
    width: 7rem;
    font-size: 0.8rem;
    color: var(--bs-secondary-color, #6c757d);
}

.onthisday-mood[b-xxj6ml4g6z] {
    flex-shrink: 0;
    font-size: 1.1rem;
    line-height: 1;
}

@media (max-width: 576px) {
    .onthisday-ago[b-xxj6ml4g6z] {
        width: auto;
    }
}
/* /Components/JournalTags.razor.rz.scp.css */
.tags[b-8pc4mqcjo9] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.tags-label[b-8pc4mqcjo9] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--bs-secondary-color, #6c757d);
}

.tags-list[b-8pc4mqcjo9] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem;
}

.tag-chip[b-8pc4mqcjo9] {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    padding: 0.05rem 0.2rem 0.05rem 0.5rem;
    border-radius: 1rem;
    background-color: var(--bs-secondary-bg);
    font-size: 0.8rem;
}

.tag-remove[b-8pc4mqcjo9] {
    border: none;
    background: none;
    padding: 0 0.2rem;
    line-height: 1;
    color: var(--bs-secondary-color, #6c757d);
    cursor: pointer;
}

.tag-remove:hover[b-8pc4mqcjo9] {
    color: var(--bs-danger);
}

/* Wächst mit dem Inhalt, bleibt aber schmal: Ein Stichwort ist ein Wort, kein Satz. */
.tag-input[b-8pc4mqcjo9] {
    border: none;
    background: none;
    outline: none;
    width: 7rem;
    font-size: 0.8rem;
    padding: 0.1rem 0.2rem;
}

.tag-input:focus[b-8pc4mqcjo9] {
    border-bottom: 1px solid var(--bs-primary);
}
/* /Components/JournalTemplateBar.razor.rz.scp.css */
.template-bar[b-1awhjlj5ms] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.3rem;
}

.template-bar-label[b-1awhjlj5ms] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--bs-secondary-color, #6c757d);
    margin-right: 0.2rem;
}

/* Zurückhaltend im Ruhezustand: Die Leiste steht über dem Text und darf ihn nicht
   überstrahlen – sie ist ein Angebot, keine Aufforderung. */
.template-chip[b-1awhjlj5ms] {
    padding: 0.15rem 0.6rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 1rem;
    background: none;
    font-size: 0.8rem;
    color: var(--bs-secondary-color, #6c757d);
    cursor: pointer;
    transition: background-color 0.12s ease, color 0.12s ease;
}

.template-chip:hover[b-1awhjlj5ms] {
    background-color: var(--bs-secondary-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-secondary-color, #6c757d);
}
/* /Components/JournalTrash.razor.rz.scp.css */
.journal-trash-backdrop[b-1x868p2zjn] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.4);
    z-index: 1040;
}

.journal-trash[b-1x868p2zjn] {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(34rem, calc(100vw - 2rem));
    max-height: min(32rem, calc(100vh - 4rem));
    display: flex;
    flex-direction: column;
    background-color: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.35);
    z-index: 1050;
}

.journal-trash-head[b-1x868p2zjn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--bs-border-color);
}

/* Nur die Liste scrollt – die Kopfzeile mit dem Schließen-Knopf bleibt erreichbar. */
.journal-trash-body[b-1x868p2zjn] {
    overflow-y: auto;
    padding: 0.5rem 1rem 1rem;
}

.min-w-0[b-1x868p2zjn] {
    min-width: 0;
}
/* /Components/LoginGate.razor.rz.scp.css */
/* Gleicher Farbverlauf wie die Sidebar (MainLayout) – die Maske soll als
   Teil der App wirken, nicht als Fremdkörper. */
.login-backdrop[b-r2v3xox7k6] {
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}

.login-card[b-r2v3xox7k6] {
    background-color: #fff;
    border-radius: 0.75rem;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.4);
    padding: 2.5rem 2.25rem;
    width: min(22rem, calc(100vw - 2rem));
}

    .login-card h1[b-r2v3xox7k6] {
        font-size: 1.5rem;
        text-align: center;
        margin-bottom: 1.75rem;
    }

.login-error[b-r2v3xox7k6] {
    color: #dc3545;
    font-size: 0.875rem;
    margin: 0.75rem 0 0;
}
/* /Components/MoodPanel.razor.rz.scp.css */
.mood-panel[b-iid5c3n206] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

/* ── Erfassen ────────────────────────────────────────────────────────────────── */

.mood-bar[b-iid5c3n206] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.mood-bar-buttons[b-iid5c3n206] {
    display: flex;
    gap: 0.15rem;
}

/* Große Klickfläche: Ein Emoji anzutippen darf nicht zielen erfordern. */
.mood-button[b-iid5c3n206] {
    font-size: 1.5rem;
    line-height: 1;
    padding: 0.25rem 0.4rem;
    border: 1px solid transparent;
    border-radius: 0.5rem;
    background: none;
    cursor: pointer;
    transition: transform 0.08s ease, background-color 0.12s ease;
}

.mood-button:hover:not(:disabled)[b-iid5c3n206] {
    background-color: color-mix(in srgb, var(--mood-color) 18%, transparent);
    transform: scale(1.12);
}

.mood-button:disabled[b-iid5c3n206] {
    opacity: 0.5;
    cursor: default;
}

.mood-button-sm[b-iid5c3n206] {
    font-size: 1.15rem;
    padding: 0.15rem 0.25rem;
}

/* Die gewählte Stufe wird durch ihre eigene Farbe markiert, nicht durch eine
   Fremdfarbe – sonst konkurrieren zwei Aussagen um dieselbe Fläche. */
.mood-button.is-active[b-iid5c3n206] {
    border-color: var(--mood-color);
    background-color: color-mix(in srgb, var(--mood-color) 22%, transparent);
}

/* ── Senkrechter Zeitstrahl ──────────────────────────────────────────────────── */

/* Drei Spuren nebeneinander: Stunden | Kurve | Beschriftung. Die Höhe kommt als
   Inline-Stil aus der Komponente, damit SVG-Pixel und HTML-Positionen exakt
   dieselbe Skala benutzen. */
.mood-timeline[b-iid5c3n206] {
    position: relative;
    display: flex;
    align-items: stretch;
    gap: 0.25rem;
}

.mood-hours[b-iid5c3n206] {
    position: relative;
    width: 1.75rem;
    flex-shrink: 0;
}

.mood-hour[b-iid5c3n206] {
    position: absolute;
    right: 0;
    transform: translateY(-50%);
    font-size: 0.7rem;
    font-variant-numeric: tabular-nums;
    color: var(--bs-secondary-color, #6c757d);
}

.mood-plot[b-iid5c3n206] {
    flex-shrink: 0;
}

/* Das Rückgrat des Zeitstrahls – zurückhaltend, aber durchgehend. */
.mood-axis[b-iid5c3n206] {
    stroke: var(--bs-border-color);
    stroke-width: 2;
}

.mood-point[b-iid5c3n206] {
    cursor: pointer;
}

.mood-point.is-selected[b-iid5c3n206] {
    stroke: var(--bs-body-color);
    stroke-width: 2;
}

/* ── Beschriftung neben den Punkten ──────────────────────────────────────────── */

.mood-labels[b-iid5c3n206] {
    position: relative;
    flex: 1;
    min-width: 0;
}

.mood-label[b-iid5c3n206] {
    position: absolute;
    left: 0;
    right: 0;
    transform: translateY(-50%);
    display: flex;
    align-items: baseline;
    gap: 0.35rem;
    padding: 0.1rem 0.3rem;
    border-radius: 0.25rem;
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
}

.mood-label:hover[b-iid5c3n206],
.mood-label.is-selected[b-iid5c3n206] {
    background-color: var(--bs-secondary-bg);
}

.mood-label-time[b-iid5c3n206] {
    font-size: 0.8rem;
    font-variant-numeric: tabular-nums;
    color: var(--bs-secondary-color, #6c757d);
    flex-shrink: 0;
}

.mood-label-emoji[b-iid5c3n206] {
    flex-shrink: 0;
}

.mood-label-energy[b-iid5c3n206] {
    font-size: 0.75rem;
    flex-shrink: 0;
}

/* Die Notiz wird einzeilig gekürzt – der lange Text gehört in den Tageseintrag. */
.mood-label-note[b-iid5c3n206] {
    font-size: 0.85rem;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}

/* ── Detail ──────────────────────────────────────────────────────────────────── */

/* In der schmalen Seitenleiste steht die Beschriftung über dem Bedienelement –
   nebeneinander bliebe für beides zu wenig Platz. */
.mood-detail[b-iid5c3n206] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    padding: 0.75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    background-color: var(--bs-secondary-bg);
}

.mood-detail-row[b-iid5c3n206] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.mood-detail-label[b-iid5c3n206] {
    color: var(--bs-secondary-color, #6c757d);
    font-size: 0.8rem;
}

.mood-detail-scale[b-iid5c3n206] {
    display: flex;
    gap: 0.1rem;
}

.mood-detail-time[b-iid5c3n206] {
    width: auto;
    align-self: flex-start;
}

.mood-detail-energy-row[b-iid5c3n206] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.mood-detail-energy[b-iid5c3n206] {
    font-variant-numeric: tabular-nums;
    font-size: 0.85rem;
    flex-shrink: 0;
}

.mood-detail-actions[b-iid5c3n206] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
}
/* /Components/NoteEditor.razor.rz.scp.css */
.note-empty[b-uxqkai9ilo] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    min-height: 20rem;
}

.note-editor[b-uxqkai9ilo] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.note-editor-bar[b-uxqkai9ilo] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.note-editor-title[b-uxqkai9ilo] {
    border-color: transparent;
    background-color: transparent;
    padding-left: 0.25rem;
}

.note-editor-title:hover[b-uxqkai9ilo] {
    border-color: #dee2e6;
}

.note-editor-title:focus[b-uxqkai9ilo] {
    border-color: #86b7fe;
    background-color: #fff;
}

.note-editor-status[b-uxqkai9ilo] {
    font-size: 0.8rem;
    color: #6c757d;
    white-space: nowrap;
}

.note-editor-meta[b-uxqkai9ilo] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.4rem;
    font-size: 0.8rem;
    margin-bottom: 0.5rem;
}

/* Task-Dropdown auf handliche Breite begrenzen. */
.note-assign-task[b-uxqkai9ilo] {
    min-width: 12rem;
    max-width: 18rem;
}

/* Editor füllt den restlichen Platz; Radzen setzt eine eigene Mindesthöhe. */
.note-editor-html[b-uxqkai9ilo] {
    flex: 1 1 auto;
    min-height: 22rem;
}

/* Ersetzt den Editor, solange ein anderer Tab die Notiz bearbeitet. Gleiche Fläche
   wie der Editor, damit die Ansicht beim Übernehmen nicht springt. */
.note-readonly[b-uxqkai9ilo] {
    flex: 1 1 auto;
    min-height: 22rem;
    overflow-y: auto;
    padding: 0.75rem;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    background-color: #f8f9fa;
    color: #6c757d;
}
/* /Components/NoteList.razor.rz.scp.css */
.note-list[b-64yzd3xfjn] {
    display: flex;
    flex-direction: column;
}

.note-list-empty[b-64yzd3xfjn] {
    padding: 1rem;
    text-align: center;
    font-size: 0.85rem;
}

.note-list-item[b-64yzd3xfjn] {
    display: block;
    width: 100%;
    text-align: left;
    border: none;
    border-bottom: 1px solid #eee;
    background: transparent;
    padding: 0.6rem 0.75rem;
    cursor: pointer;
}

.note-list-item:hover[b-64yzd3xfjn] {
    background-color: #f8f9fa;
}

.note-list-item.active[b-64yzd3xfjn] {
    background-color: #e7f1ff;
}

.note-list-title[b-64yzd3xfjn] {
    font-weight: 600;
    font-size: 0.9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Schlanke Zeile im Ordnerbaum: eine Zeile, kein Fettdruck, keine Trennlinie.
   Der Eintrag soll sich dem Baum unterordnen, nicht mit den Ordnerzeilen konkurrieren. */
.note-list-item.compact[b-64yzd3xfjn] {
    padding: 0.2rem 0.5rem;
    border-bottom: 0;
}

.note-list-item.compact .note-list-title[b-64yzd3xfjn] {
    font-weight: 400;
    font-size: 0.82rem;
    color: #495057;
}

.note-list-snippet[b-64yzd3xfjn] {
    font-size: 0.8rem;
    color: #6c757d;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin-top: 0.1rem;
}

/* Punkt vor der Notiz im Ordnerbaum. Er belegt dieselbe Spaltenbreite wie das Symbol
   der Ordnerzeilen (0,7rem + 0,35rem Abstand), damit Punkt unter Punkt und Titel unter
   Beschriftung sitzt. Rund und kleiner als die eckigen Ordner-Punkte: eine Notiz ist ein
   Blatt, kein Ordner. */
.note-list-dot[b-64yzd3xfjn] {
    display: inline-block;
    width: 0.7rem;
    margin-right: 0.35rem;
    text-align: center;
    vertical-align: middle;
}

.note-list-dot[b-64yzd3xfjn]::before {
    content: "";
    display: inline-block;
    width: 0.35rem;
    height: 0.35rem;
    border-radius: 50%;
    background-color: #adb5bd;
    vertical-align: middle;
}

/* Kennzeichnet eine Zeichnung im Titel. */
.note-list-kind[b-64yzd3xfjn] {
    margin-right: 0.25rem;
}

/* Vorschaubild einer Zeichnung (kleines PNG aus dem Thumbnail-Feld). */
.note-list-thumb[b-64yzd3xfjn] {
    display: block;
    margin-top: 0.25rem;
    max-width: 100%;
    max-height: 4.5rem;
    border: 1px solid #eee;
    border-radius: 0.25rem;
    background: #fff;
}

.note-list-meta[b-64yzd3xfjn] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.3rem;
    font-size: 0.72rem;
    color: #6c757d;
}

.note-list-tag[b-64yzd3xfjn] {
    background-color: #f1f3f5;
    border-radius: 0.25rem;
    padding: 0.05rem 0.35rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 9rem;
}

.note-list-date[b-64yzd3xfjn] {
    margin-left: auto;
    white-space: nowrap;
}
/* /Components/NoteTree.razor.rz.scp.css */
/* Zeile = Schalter + optionale Aktionen. Die Aktionen erscheinen erst beim Überfahren,
   damit die Seitenleiste ruhig bleibt. */
.note-tree-row[b-flscyp0erh] {
    display: flex;
    align-items: center;
}

.note-tree-row:hover[b-flscyp0erh] {
    background-color: #f1f3f5;
}

.note-tree-row .note-tree-actions[b-flscyp0erh] {
    display: none;
    flex: 0 0 auto;
    padding-right: 0.25rem;
}

.note-tree-row:hover .note-tree-actions[b-flscyp0erh] {
    display: flex;
    gap: 0.1rem;
}

/* Ordnerzeile: sieht aus wie ein Listeneintrag, verhält sich wie ein Schalter. */
/* flex statt width:100%: Sonst drängte der Schalter die Aktionen aus der Zeile. */
.note-tree-folder[b-flscyp0erh] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    flex: 1 1 auto;
    min-width: 0;
    border: 0;
    background: transparent;
    text-align: left;
    padding: 0.25rem 0.5rem 0.25rem 0.4rem;
    font-size: 0.82rem;
    color: #343a40;
    cursor: pointer;
}

/* Eine Ebene tiefer: fester Versatz plus Führungslinie. Weil die Ebenen im DOM
   ineinander liegen, ergibt sich der Gesamteinzug von selbst und die Linie steht
   genau an der Kante der jeweiligen Ebene. */
.note-tree-children[b-flscyp0erh] {
    margin-left: 0.95rem;
    padding-left: 0.15rem;
    border-left: 1px solid #e9ecef;
}

/* Notizen einer Ebene: um Chevron + Punkt + Abstände nach rechts, damit ihre Titel
   auf der Beschriftung eines Unterordners sitzen statt auf dessen Symbol. */
/* 1,45rem = Zeilen-Polsterung (0,4) + Chevron (0,7) + Abstand (0,35). Die Notizzeilen
   bringen ihre Punkt-Spalte selbst mit (siehe .note-list-dot) – sie tritt hier an die
   Stelle des Ordner-Symbols, dadurch stehen Punkt unter Punkt und Titel unter Beschriftung. */
.note-tree-notes[b-flscyp0erh] {
    padding-left: 1.45rem;
    padding-right: 0.25rem;
}

/* Die eingebettete NoteList bringt im schlanken Modus einen eigenen linken Abstand mit.
   Der käme hier zum Einzug oben hinzu und verschöbe die Titel gegenüber den Ordnerzeilen. */
.note-tree-notes[b-flscyp0erh]  .note-list-item.compact {
    padding-left: 0;
}

.note-tree-chevron[b-flscyp0erh] {
    flex: 0 0 auto;
    width: 0.7rem;
    font-size: 0.7rem;
    color: #868e96;
}

/* Fester Platz für das Symbol: Vorher standen hier Emoji unterschiedlicher Breite,
   dadurch verrutschte der Textanfang von Ebene zu Ebene. */
.note-tree-icon[b-flscyp0erh] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 0.7rem;
}

/* Gefüllt = Arbeitsbereich/Projekt in seiner Farbe, hohl = Task/Ordner. */
.note-tree-dot[b-flscyp0erh] {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 2px;
    border: 1px solid #adb5bd;
    background-color: #adb5bd;
}

.note-tree-dot.is-hollow[b-flscyp0erh] {
    background-color: transparent;
    border-color: #adb5bd;
}

/* min-width:0 erlaubt dem Label erst zu schrumpfen, damit text-truncate greift. */
.note-tree-label[b-flscyp0erh] {
    flex: 1 1 auto;
    min-width: 0;
}

/* Anzahl der Notizen im Teilbaum – hilft bei zugeklapptem Ordner. */
.note-tree-count[b-flscyp0erh] {
    flex: 0 0 auto;
    font-size: 0.7rem;
    color: #868e96;
}
/* /Components/PriorityIndicator.razor.rz.scp.css */
.priority-indicator[b-a0laaaz4cd] {
    font-weight: 700;
    font-size: 0.95rem;
    line-height: 1;
    letter-spacing: -0.08em;
    white-space: nowrap;
}

.priority-high[b-a0laaaz4cd] {
    color: #dc3545;
}

.priority-medium[b-a0laaaz4cd] {
    color: #198754;
}

.priority-low[b-a0laaaz4cd] {
    color: #6c757d;
}
/* /Components/ProjectCard.razor.rz.scp.css */
/* Quadratische Icon-Buttons (✎ / 🗑) im Karten-Header. Lag vorher in Home.razor.css
   und wirkte dadurch nicht auf der Arbeitsbereich-Seite. */
.btn-icon[b-y29pkzvnwy] {
    width: 2rem;
    padding-left: 0;
    padding-right: 0;
    text-align: center;
}
/* /Components/ProjectEditDialog.razor.rz.scp.css */
/* Eigene Kopie der Dialog-Styles (scoped CSS ist nicht komponentenübergreifend
   nutzbar – dieselbe Situation wie bei DailyTaskDialog). */
.project-dialog-backdrop[b-okw55uf1v0] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.4);
    z-index: 1040;
}

.project-dialog[b-okw55uf1v0] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    pointer-events: none;
}

.project-dialog-content[b-okw55uf1v0] {
    pointer-events: auto;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 32rem;
    max-height: 90vh;
    background-color: #fff;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
}

.project-dialog-header[b-okw55uf1v0] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #dee2e6;
}

/* Scrollbarer Inhaltsbereich – Header und Footer bleiben sichtbar */
.project-dialog-body[b-okw55uf1v0] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 1.25rem;
}

.project-dialog-footer[b-okw55uf1v0] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid #dee2e6;
}
/* /Components/ProjectSelect.razor.rz.scp.css */
.project-select[b-r2l859owpj] {
    min-width: 12rem;
    max-width: 18rem;
}

/* Farbpunkt hinter dem Projektnamen im Dropdown. */
.project-select-dot[b-r2l859owpj] {
    display: inline-block;
    width: 0.7rem;
    height: 0.7rem;
    border-radius: 50%;
    margin-left: 0.4rem;
    vertical-align: middle;
    flex-shrink: 0;
}
/* /Components/RunningTimerIndicator.razor.rz.scp.css */
/* Sitzt in der Kopfzeile neben "About". Bewusst OHNE feste Obergrenze: In der Zeile ist
   reichlich Platz, und ein abgeschnittener Task-Titel hilft niemandem. min-width:0 lässt
   das Element trotzdem schrumpfen, wenn das Fenster eng wird – dann greift die Kürzung
   am Titel, während Uhr und Summe stehen bleiben. */
.running-timer[b-ivoss86luz] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
    color: #212529;
}

/* Pulsierender Punkt: signalisiert "läuft gerade" auch ohne auf die Ziffern zu schauen. */
.running-timer-dot[b-ivoss86luz] {
    flex: 0 0 auto;
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 50%;
    background-color: #dc3545;
    animation: running-timer-pulse-b-ivoss86luz 2s ease-in-out infinite;
}

@keyframes running-timer-pulse-b-ivoss86luz {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.35; }
}

/* min-width:0 erlaubt dem Titel als Flex-Kind erst zu schrumpfen. */
.running-timer-title[b-ivoss86luz] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* tabular-nums: Sonst zappelt die Uhr bei jeder Sekunde in der Breite. */
.running-timer-clock[b-ivoss86luz] {
    flex: 0 0 auto;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

/* Gesamtzeit tritt hinter die laufende Uhr zurück: Die Uhr ist das, was sich gerade
   bewegt, die Summe nur Einordnung. */
.running-timer-total[b-ivoss86luz] {
    flex: 0 0 auto;
    font-size: 0.85em;
    color: #6c757d;
    white-space: nowrap;
}

/* Auf schmalen Schirmen teilen sich Suche und Uhr die Zeile – dann nur die Uhr,
   Titel und Summe stehen ohnehin im Tooltip bzw. auf der Detailseite. */
@media (max-width: 640.98px) {
    .running-timer-title[b-ivoss86luz],
    .running-timer-total[b-ivoss86luz] {
        display: none;
    }
}
/* /Components/SearchPalette.razor.rz.scp.css */
.search-backdrop[b-5gi672kcae] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 1080;
}

.search-palette[b-5gi672kcae] {
    position: fixed;
    top: 12vh;
    left: 50%;
    transform: translateX(-50%);
    width: min(640px, calc(100vw - 2rem));
    background: #fff;
    border-radius: 0.5rem;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.3);
    z-index: 1081;
    overflow: hidden;
}

.search-input[b-5gi672kcae] {
    border: 0;
    border-bottom: 1px solid #dee2e6;
    border-radius: 0;
    font-size: 1.1rem;
    padding: 0.9rem 1rem;
}

.search-input:focus[b-5gi672kcae] {
    box-shadow: none;
    border-bottom-color: #0d6efd;
}

.search-hint[b-5gi672kcae] {
    padding: 0.9rem 1rem;
    color: #6c757d;
    font-size: 0.875rem;
}

.search-results[b-5gi672kcae] {
    list-style: none;
    margin: 0;
    padding: 0.25rem 0;
    max-height: 50vh;
    overflow-y: auto;
}

.search-result[b-5gi672kcae] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.55rem 1rem;
    cursor: pointer;
}

.search-result.active[b-5gi672kcae] {
    background-color: #e9f2ff;
}

.search-icon[b-5gi672kcae] {
    flex: 0 0 auto;
    width: 1.25rem;
    text-align: center;
}

.search-title[b-5gi672kcae] {
    flex: 0 1 auto;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.search-context[b-5gi672kcae] {
    flex: 1 1 auto;
    color: #6c757d;
    font-size: 0.8rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.search-type[b-5gi672kcae] {
    flex: 0 0 auto;
    margin-left: auto;
    color: #adb5bd;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
/* /Components/SubTaskList.razor.rz.scp.css */
/* Sub-Task-Sortierung: Anfasser + Einfügemarke */
.subtask-handle[b-tvzaw4hso7] {
    cursor: grab;
    color: #adb5bd;
    user-select: none;
}

.subtask-handle:active[b-tvzaw4hso7] {
    cursor: grabbing;
}

/* Platzhalter für erledigte Sub-Tasks: ohne ihn rutschen die Zeilen der Erledigt-Gruppe
   gegenüber den offenen nach links. */
.subtask-handle-empty[b-tvzaw4hso7] {
    width: 0.75rem;
    flex-shrink: 0;
}

.subtask-drop-before[b-tvzaw4hso7] {
    box-shadow: 0 -2px 0 -1px var(--bs-primary, #0d6efd);
}

/* Überschrift "Sub-Tasks (2/5)" und Kopfzeile der Erledigt-Gruppe: beides Schalter,
   die aussehen wie Text. */
.subtask-toggle[b-tvzaw4hso7] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    width: 100%;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    text-align: left;
    cursor: pointer;
}

.subtask-done-toggle[b-tvzaw4hso7] {
    padding: 0.35rem 0.5rem;
    color: #6c757d;
    font-size: 0.875rem;
}

.subtask-done-toggle:hover[b-tvzaw4hso7] {
    color: #212529;
}

.subtask-caret[b-tvzaw4hso7] {
    width: 0.75rem;
    flex-shrink: 0;
    color: #868e96;
    font-size: 0.8rem;
    line-height: 1;
}
/* /Components/TaskEditDialog.razor.rz.scp.css */
.task-dialog-backdrop[b-sfe2v0e9d3] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.4);
    z-index: 1040;
}

.task-dialog[b-sfe2v0e9d3] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    pointer-events: none;
}

.task-dialog-content[b-sfe2v0e9d3] {
    pointer-events: auto;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 32rem;
    max-height: 90vh;
    background-color: #fff;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
}

.task-dialog-header[b-sfe2v0e9d3] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #dee2e6;
}

/* Scrollbarer Inhaltsbereich – Header und Footer bleiben sichtbar */
.task-dialog-body[b-sfe2v0e9d3] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 1.25rem;
}

.task-dialog-footer[b-sfe2v0e9d3] {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid #dee2e6;
}
/* /Components/TaskSeriesDialog.razor.rz.scp.css */
/* Leichtgewichtiges Modal – analog zu TaskEditDialog/DailyTaskDialog (scoped, daher eigene Kopie). */
.task-dialog-backdrop[b-vktf034plk] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.4);
    z-index: 1040;
}

.task-dialog[b-vktf034plk] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    pointer-events: none;
}

.task-dialog-content[b-vktf034plk] {
    pointer-events: auto;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 36rem;
    max-height: 90vh;
    background-color: #fff;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
}

.task-dialog-header[b-vktf034plk] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #dee2e6;
}

.task-dialog-body[b-vktf034plk] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 1.25rem;
}

.task-dialog-footer[b-vktf034plk] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid #dee2e6;
}

/* Die gerade bearbeitete Serie in der Liste hervorheben. */
.series-item.is-editing[b-vktf034plk] {
    border-left: 3px solid var(--bs-primary, #0d6efd);
}

/* Slot-Zeile: Wochentag schmal, Zeitfelder gleich breit; auf dem Phone darf sie umbrechen. */
.series-slot-row[b-vktf034plk] {
    flex-wrap: wrap;
}

    .series-slot-row select[b-vktf034plk] {
        flex: 0 0 5.5rem;
    }

    .series-slot-row[b-vktf034plk]  input {
        flex: 1 1 6rem;
    }
/* /Layout/MainLayout.razor.rz.scp.css */
.page[b-fqnoo13gx1] {
    position: relative;
    display: flex;
    flex-direction: column;
}

main[b-fqnoo13gx1] {
    flex: 1;
    /* min-width: 0 ist hier essenziell: Als Flex-Item hat main sonst min-width:auto und
       kann NICHT unter die Mindestbreite seines Inhalts schrumpfen. Ein Kind mit großer
       Eigenbreite (z. B. das <canvas> von js-draw im Zeichen-Editor) zieht damit main –
       und in der Folge die ganze Seite – beliebig breit; in Firefox schaukelte sich das
       mit js-draws Größenanpassung bis ~65000px hoch. Mit min-width:0 bestimmt der
       verfügbare Platz die Breite, und breite Inhalte scrollen/clippen in ihrem Container. */
    min-width: 0;
}

.sidebar[b-fqnoo13gx1] {
    background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}

.top-row[b-fqnoo13gx1] {
    background-color: #f7f7f7;
    border-bottom: 1px solid #d6d5d5;
    justify-content: flex-end;
    height: 3.5rem;
    display: flex;
    align-items: center;
}

    .top-row[b-fqnoo13gx1]  a, .top-row[b-fqnoo13gx1]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
    }

/* Such-Button: Tastenkombination als dezente "Key-Caps" statt Bootstraps
   fast schwarzem <kbd>-Default (das stach im Outline-Button zu stark hervor). */
.search-btn[b-fqnoo13gx1] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

    .search-btn kbd[b-fqnoo13gx1] {
        background-color: #f1f3f5;
        color: #495057;
        border: 1px solid #d0d5da;
        border-bottom-width: 2px; /* leichter Tasten-/Tiefen-Effekt */
        border-radius: 0.25rem;
        padding: 0.05rem 0.35rem;
        font-family: inherit;
        font-size: 0.72rem;
        font-weight: 600;
        line-height: 1.4;
        box-shadow: none;
    }

    .search-btn .kbd-plus[b-fqnoo13gx1] {
        color: #adb5bd;
        font-size: 0.72rem;
    }

    /* Beim Hover färbt Bootstrap den Outline-Button grau – Key-Caps dann
       aufhellen, damit sie nicht im Hintergrund untergehen. */
    .search-btn:hover kbd[b-fqnoo13gx1],
    .search-btn:focus kbd[b-fqnoo13gx1] {
        background-color: #fff;
        border-color: #ced4da;
    }

    .search-btn:hover .kbd-plus[b-fqnoo13gx1],
    .search-btn:focus .kbd-plus[b-fqnoo13gx1] {
        color: rgba(255, 255, 255, 0.85);
    }

    .top-row[b-fqnoo13gx1]  a:hover, .top-row[b-fqnoo13gx1]  .btn-link:hover {
        text-decoration: underline;
    }

    .top-row[b-fqnoo13gx1]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
    .top-row[b-fqnoo13gx1] {
        justify-content: space-between;
    }

    .top-row[b-fqnoo13gx1]  a, .top-row[b-fqnoo13gx1]  .btn-link {
        margin-left: 0;
    }
}

@media (min-width: 641px) {
    .page[b-fqnoo13gx1] {
        flex-direction: row;
    }

    .sidebar[b-fqnoo13gx1] {
        width: 250px;
        height: 100vh;
        position: sticky;
        top: 0;
    }

    .top-row[b-fqnoo13gx1] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

    .top-row.auth[b-fqnoo13gx1]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }

    .top-row[b-fqnoo13gx1], article[b-fqnoo13gx1] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }
}
/* /Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-vy5veus96r] {
    background-color: rgba(255, 255, 255, 0.1);
}

.top-row[b-vy5veus96r] {
    min-height: 3.5rem;
    background-color: rgba(0,0,0,0.4);
}

.navbar-brand[b-vy5veus96r] {
    font-size: 1.1rem;
}

.bi[b-vy5veus96r] {
    display: inline-block;
    position: relative;
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0.75rem;
    top: -1px;
    background-size: cover;
}

.bi-house-door-fill-nav-menu[b-vy5veus96r] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}

.bi-calendar-check-nav-menu[b-vy5veus96r] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-calendar-check' viewBox='0 0 16 16'%3E%3Cpath d='M10.854 7.146a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 1 1 .708-.708L7.5 9.793l2.646-2.647a.5.5 0 0 1 .708 0z'/%3E%3Cpath d='M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z'/%3E%3C/svg%3E");
}

.bi-calendar3-nav-menu[b-vy5veus96r] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-calendar3' viewBox='0 0 16 16'%3E%3Cpath d='M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z'/%3E%3Cpath d='M6.5 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2z'/%3E%3C/svg%3E");
}

.bi-gear-nav-menu[b-vy5veus96r] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-gear-fill' viewBox='0 0 16 16'%3E%3Cpath d='M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872l-.1-.34zM8 10.93a2.929 2.929 0 1 1 0-5.86 2.929 2.929 0 0 1 0 5.858z'/%3E%3C/svg%3E");
}

.bi-trash-nav-menu[b-vy5veus96r] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-trash' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/%3E%3Cpath d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/%3E%3C/svg%3E");
}

.bi-journal-text-nav-menu[b-vy5veus96r] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-journal-text' viewBox='0 0 16 16'%3E%3Cpath d='M5 10.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z'/%3E%3Cpath d='M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z'/%3E%3Cpath d='M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z'/%3E%3C/svg%3E");
}

/* Aufgeschlagenes Buch (Bootstrap Icons "book") – bewusst anders als das linierte
   Heft der Notizen, damit die beiden in der Leiste nicht verwechselt werden. */
.bi-book-nav-menu[b-vy5veus96r] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811V2.828zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492V2.687zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z'/%3E%3C/svg%3E");
}

/* Hantel – selbst gezeichnet: Bootstrap Icons hat kein passendes Symbol. Aufbau wie
   die übrigen Icons (16×16, weiß gefüllt): zwei Scheiben und die Stange dazwischen. */
.bi-dumbbell-nav-menu[b-vy5veus96r] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Crect x='1' y='4' width='2.5' height='8' rx='.75'/%3E%3Crect x='3.5' y='7' width='9' height='2'/%3E%3Crect x='12.5' y='4' width='2.5' height='8' rx='.75'/%3E%3C/svg%3E");
}

.bi-plus-square-fill-nav-menu[b-vy5veus96r] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}

.bi-list-nested-nav-menu[b-vy5veus96r] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}

.nav-item[b-vy5veus96r] {
    font-size: 0.9rem;
    padding-bottom: 0.5rem;
}

    .nav-item:first-of-type[b-vy5veus96r] {
        padding-top: 1rem;
    }

    .nav-item:last-of-type[b-vy5veus96r] {
        padding-bottom: 1rem;
    }

    .nav-item[b-vy5veus96r]  a {
        color: #d7d7d7;
        border-radius: 4px;
        height: 3rem;
        display: flex;
        align-items: center;
        line-height: 3rem;
    }

.nav-item[b-vy5veus96r]  a.active {
    background-color: rgba(255,255,255,0.37);
    color: white;
}

.nav-item[b-vy5veus96r]  a:hover {
    background-color: rgba(255,255,255,0.1);
    color: white;
}

/* Aktive Projekte als Unterpunkte unter "Übersicht" */
.nav-subitems[b-vy5veus96r] {
    padding-top: 0;
    padding-bottom: 0.25rem;
}

/* Vertikaler Abstand vom oberen Rand bis zur Mitte der ersten Textzeile bzw.
   des Punktes. Wird für den Punkt-Offset und die Baum-Ticks geteilt, damit
   auch bei mehrzeiligen (umbrechenden) Projektnamen alles auf der ersten
   Zeile ausgerichtet bleibt. */
.nav-subitems[b-vy5veus96r] {
    --nav-sublink-tick-top: 1rem;
}

.nav-subitems[b-vy5veus96r]  a.nav-sublink {
    position: relative;
    align-items: flex-start;
    height: auto;
    min-height: 2.25rem;
    line-height: 1.3;
    font-size: 0.85rem;
    padding: 0.45rem 0.6rem 0.45rem 2.5rem;
    color: #b9b9b9;
}

/* Punkt an der ersten Textzeile ausrichten statt vertikal zentriert */
.nav-subitems[b-vy5veus96r]  a.nav-sublink .nav-project-dot {
    margin-top: 0.25rem;
}

/* Baum-Verbindungslinie: senkrechter Strich (├ / └) */
.nav-subitems[b-vy5veus96r]  a.nav-sublink::before {
    content: "";
    position: absolute;
    left: 1.1rem;
    top: 0;
    bottom: 0;
    width: 1px;
    background-color: rgba(255, 255, 255, 0.25);
}

/* Beim letzten Eintrag endet der senkrechte Strich an der ersten Zeile (└) */
.nav-subitems[b-vy5veus96r]  a.nav-sublink:last-child::before {
    bottom: auto;
    height: var(--nav-sublink-tick-top);
}

/* Baum-Verbindungslinie: waagerechter Strich zum Eintrag */
.nav-subitems[b-vy5veus96r]  a.nav-sublink::after {
    content: "";
    position: absolute;
    left: 1.1rem;
    top: var(--nav-sublink-tick-top);
    width: 0.7rem;
    height: 1px;
    background-color: rgba(255, 255, 255, 0.25);
}

/* Arbeitsbereich-Kopfzeile (klickbar) über den zugehörigen Projekten. */
.nav-workspace[b-vy5veus96r] {
    padding-bottom: 0;
}

/* padding-left ist so gewählt, dass der Punkt direkt über der Baumlinie
   (2.1rem) der zugehörigen Projekte sitzt – die Linie fällt sichtbar herab.
   height/line-height überschreiben die 3rem aus ".nav-item ::deep a". */
.nav-workspace[b-vy5veus96r]  a.nav-workspace-link {
    display: flex;
    align-items: center;
    height: auto;
    line-height: 1.4;
    padding: 0.6rem 1rem 0.15rem 1.8rem;
    border-radius: 4px;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: #9a9a9a;
}

.nav-workspace[b-vy5veus96r]  a.nav-workspace-link:hover {
    color: #fff;
    background-color: rgba(255, 255, 255, 0.1);
}

.nav-workspace[b-vy5veus96r]  a.nav-workspace-link.active {
    color: #fff;
}

.nav-workspace-dot[b-vy5veus96r] {
    display: inline-block;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 2px;
    margin-right: 0.5rem;
    background-color: #6c757d;
    flex-shrink: 0;
}

.nav-project-dot[b-vy5veus96r] {
    display: inline-block;
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 50%;
    margin-right: 0.6rem;
    background-color: #6c757d;
    flex-shrink: 0;
}

@media (min-width: 641px) {
    .navbar-toggler[b-vy5veus96r] {
        display: none;
    }

    .collapse[b-vy5veus96r] {
        /* Never collapse the sidebar for wide screens */
        display: block;
    }

    .nav-scrollable[b-vy5veus96r] {
        /* Allow sidebar to scroll for tall menus */
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
    }
}

/* /Pages/Calendar.razor.rz.scp.css */
.calendar-sidebar[b-nl7apn2h85] {
    flex: 0 0 15rem;
    width: 15rem;
    max-height: calc(100vh - 11rem);
    overflow-y: auto;
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    padding: 0.6rem;
    background-color: #f8f9fa;
}

.calendar-unscheduled-item[b-nl7apn2h85] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.4rem;
    border-radius: 0.375rem;
    cursor: pointer;
    font-size: 0.85rem;
}

.calendar-unscheduled-item:hover[b-nl7apn2h85] {
    background-color: #fff;
}

.calendar-unscheduled-item.armed[b-nl7apn2h85] {
    background-color: #cfe2ff;
}

/* Ungeplante Tasks nach Arbeitsbereich gruppiert: umrandete Box je Bereich,
   Kopfzeile in der Bereichsfarbe. Der frühere Projekt-Farbpunkt vor den Tasks
   ist dadurch entfallen. */
.cal-ws-group[b-nl7apn2h85] {
    border: 1px solid;
    border-radius: 0.375rem;
    overflow: hidden;
    margin-bottom: 0.5rem;
    background-color: #fff;
}

.cal-ws-name[b-nl7apn2h85] {
    padding: 0.15rem 0.5rem;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Projektzeile innerhalb einer Arbeitsbereichs-Box: steht einmal je Projekt
   (nicht an jedem Task), damit die Seitenleiste schlank bleibt. */
.cal-project-label[b-nl7apn2h85] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.2rem 0.5rem 0.1rem;
    font-size: 0.7rem;
    color: #6c757d;
}

/* Ab dem zweiten Projekt eine feine Trennlinie. */
.cal-project-label:not(:first-of-type)[b-nl7apn2h85] {
    border-top: 1px solid #e9ecef;
    margin-top: 0.15rem;
}

.cal-project-dot[b-nl7apn2h85] {
    display: inline-block;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 2px;
    flex-shrink: 0;
}

/* Tasks sitzen direkt in der Box – etwas enger als zuvor. */
.cal-ws-group .calendar-unscheduled-item[b-nl7apn2h85] {
    border-radius: 0;
    padding-left: 0.55rem;
}

.cal-ws-group .calendar-unscheduled-item:hover[b-nl7apn2h85] {
    background-color: #f1f3f5;
}

/* Filter-Legende über dem Kalender */
.cal-legend[b-nl7apn2h85] {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 0.75rem;
    padding: 0.4rem 0.7rem;
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    background-color: #f8f9fa;
}

.cal-legend-label[b-nl7apn2h85] {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: #6c757d;
}

.cal-legend-item[b-nl7apn2h85] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    color: #495057;
    border: none;
    background: transparent;
    padding: 0;
    cursor: pointer;
}

.cal-legend-item:hover[b-nl7apn2h85] {
    color: #000;
}

.cal-legend-item.is-active[b-nl7apn2h85] {
    font-weight: 600;
}

.cal-legend-item.is-inactive[b-nl7apn2h85] {
    opacity: 0.4;
}

.cal-legend-dot[b-nl7apn2h85] {
    display: inline-block;
    width: 0.8rem;
    height: 0.8rem;
    border-radius: 3px;
    flex-shrink: 0;
}

.cal-legend-clear[b-nl7apn2h85] {
    font-size: 0.75rem;
    color: #6c757d;
    border: none;
    background: transparent;
    padding: 0;
    cursor: pointer;
    text-decoration: underline;
}

.cal-legend-clear:hover[b-nl7apn2h85] {
    color: #000;
}

/* Termin-Inhalt (eigenes Template) */
.cal-appt[b-nl7apn2h85] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    overflow: hidden;
    height: 100%;
}

/* Termin ohne Uhrzeit: eine schmale Zeile statt eines Blocks. Mehr passt in die halbe
   Stunde Höhe nicht hinein, mit der solche Termine gezeichnet werden. */
.cal-appt-allday[b-nl7apn2h85] {
    flex-direction: row;
    align-items: center;
    gap: 0.3rem;
    white-space: nowrap;
}

.cal-appt-title[b-nl7apn2h85] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
}

/* Link zur Detailseite im Termin – erscheint dezent, schiebt sich nach rechts. */
.cal-appt-link[b-nl7apn2h85] {
    margin-left: auto;
    color: inherit;
    text-decoration: none;
    opacity: 0.65;
    font-size: 0.85em;
}

.cal-appt-link:hover[b-nl7apn2h85] {
    opacity: 1;
}

/* Bereit/Wartend-Icon vor dem Titel */
.cal-ready-badge[b-nl7apn2h85] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 0.95rem;
    height: 0.95rem;
    border-radius: 50%;
    font-size: 0.62rem;
    line-height: 1;
    color: #fff;
    flex-shrink: 0;
}

.cal-ready[b-nl7apn2h85] {
    background-color: #28a745;
}

.cal-blocked[b-nl7apn2h85] {
    background-color: #dc3545;
}

/* Inline-Sub-Tasks (nur Tagesansicht, Termine mit Uhrzeit) */
.cal-appt-subs[b-nl7apn2h85] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    margin-top: 0.15rem;
    overflow-y: auto;
}

.cal-appt-sub[b-nl7apn2h85] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.75rem;
    margin: 0;
    cursor: pointer;
}

.cal-appt-sub input[b-nl7apn2h85] {
    margin: 0;
    flex-shrink: 0;
}
/* /Pages/Home.razor.rz.scp.css */
.btn-icon[b-pd503cch3q] {
    width: 2rem;
    padding-left: 0;
    padding-right: 0;
    text-align: center;
}

.inbox-task[b-pd503cch3q] {
    cursor: grab;
}

.inbox-task:active[b-pd503cch3q] {
    cursor: grabbing;
}

/* Projekte einer Status-Sektion nach Arbeitsbereich gruppiert: umrandete Box je
   Bereich mit neutral gehaltener Kopfzeile. Farbe tragen die Projektkarten. */
.ws-group[b-pd503cch3q] {
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    overflow: hidden;
    margin-bottom: 0.75rem;
    background-color: #fff;
}

.ws-group:last-child[b-pd503cch3q] {
    margin-bottom: 0;
}

.ws-group-header[b-pd503cch3q] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.25rem 0.6rem;
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    background-color: #f8f9fa;
    border-bottom: 1px solid #dee2e6;
    color: #495057;
}

/* Einziger Farbtupfer: der Arbeitsbereich bleibt an seiner Farbe erkennbar. */
.ws-group-dot[b-pd503cch3q] {
    display: inline-block;
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 2px;
    flex-shrink: 0;
}

.ws-group-count[b-pd503cch3q] {
    margin-left: auto;
    flex-shrink: 0;
    padding: 0 0.4rem;
    border-radius: 0.75rem;
    font-size: 0.72rem;
    background-color: #e9ecef;
    color: #6c757d;
}

.ws-group-body[b-pd503cch3q] {
    padding: 0.75rem;
}

/* Hervorhebung der Projektkarte, während ein Task darüber gezogen wird */
.drop-target-active[b-pd503cch3q] {
    outline: 2px dashed var(--bs-primary, #0d6efd);
    outline-offset: 2px;
    box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);
}
/* /Pages/Journal.razor.rz.scp.css */
/* Zentriert statt linksbündig: Der Platz, den der Bildschirm mehr hat als die Seite
   braucht, verteilt sich dann gleichmäßig auf beide Seiten und liest sich als Rand.
   Linksbündig sammelte er sich rechts und wirkte wie "nach links geschoben". */
.journal-layout[b-3szbzenl28] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    max-width: 120rem;
    margin-inline: auto;
}

/* Schreiben links, Stimmung rechts. Die Seitenleiste hat feste Breite: Ihr Inhalt
   wird nicht breiter, wenn der Bildschirm es wird – jeder zusätzliche Pixel gehört
   dem Editor. */
/* align-items bewusst NICHT auf start: Die Seitenleiste soll sich auf die Höhe des
   Editors ziehen, damit beide Spalten unten bündig enden statt auszufransen. */
.journal-body[b-3szbzenl28] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 22rem;
    gap: 1.5rem;
}

/* Bewusst OHNE eigene max-width: Ein Deckel hier und ein Deckel am Layout arbeiten
   gegeneinander – die Differenz bliebe als toter Raum in der Spalte stehen und sähe
   aus wie ein zufälliger Abstand zur Seitenleiste. Begrenzt wird nur das Layout.
   Zugleich die Karte für Titel und Editor: So beginnen und enden links und rechts
   zwei gleichwertige Kästen auf derselben Linie. */
.journal-main[b-3szbzenl28] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-width: 0;
    padding: 0.9rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    background-color: var(--bs-body-bg);
}

.journal-side[b-3szbzenl28] {
    min-width: 0;
}

/* Eigenes Gefäß für die Seitenleiste: Links steht ein klar umrandeter Editorkasten,
   rechts stand loser Text auf Weiß – gleiche Wichtigkeit, ungleiches Gewicht. Das
   ließ die rechte Spalte wie Übriggebliebenes wirken. */
.journal-side-card[b-3szbzenl28] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    height: 100%;
    padding: 0.9rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    background-color: var(--bs-body-bg);
}

/* Schiebt die Tages-Aktionen an den Fuß der Karte. */
.journal-side-actions[b-3szbzenl28] {
    margin-top: auto;
    padding-top: 0.75rem;
    border-top: 1px solid var(--bs-border-color);
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.journal-bar[b-3szbzenl28] {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.journal-nav[b-3szbzenl28] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    flex-shrink: 0;
}

.journal-date[b-3szbzenl28] {
    width: auto;
}

/* Kein text-transform: capitalize – das macht aus "heute" ein "Heute" und aus
   "vor 12 Tagen" ein "Vor 12 Tagen". Den Wochentag schreibt die deutsche Kultur
   ohnehin groß. */
.journal-when[b-3szbzenl28] {
    flex-shrink: 0;
    white-space: nowrap;
}

/* Rechts außen, bündig mit der rechten Kante der Seitenleisten-Karte. Mindestbreite,
   damit der Wechsel der Zustände die Überschrift daneben nicht verschiebt. */
.journal-status[b-3szbzenl28] {
    margin-left: auto;
    flex-shrink: 0;
    min-width: 9rem;
    text-align: right;
    white-space: nowrap;
}

.journal-status-icon[b-3szbzenl28] {
    margin-right: 0.3rem;
}

/* ── Überschrift in der Kopfzeile ─────────────────────────────────────────────── */

/* Nimmt den freien Platz in der Mitte ein – genau dort klaffte vorher die Lücke. */
.journal-title-slot[b-3szbzenl28] {
    flex: 1;
    min-width: 6rem;
    display: flex;
    align-items: center;
}

/* Im Ruhezustand bewusst zurückhaltend: Die Überschrift wird selten gesetzt, ein
   dauerhaft sichtbares Eingabefeld wäre Gewicht für den Ausnahmefall. */
.journal-title-add[b-3szbzenl28] {
    border: none;
    background: none;
    padding: 0.15rem 0.3rem;
    border-radius: 0.25rem;
    font-size: 0.875rem;
    color: var(--bs-secondary-color, #6c757d);
    cursor: pointer;
}

.journal-title-add:hover[b-3szbzenl28] {
    background-color: var(--bs-secondary-bg);
    color: var(--bs-body-color);
}

/* Gesetzte Überschrift liest sich als Text, nicht als Formularfeld – anklickbar
   bleibt sie trotzdem. */
.journal-title-text[b-3szbzenl28] {
    border: none;
    background: none;
    padding: 0.15rem 0.3rem;
    border-radius: 0.25rem;
    font-weight: 600;
    text-align: left;
    cursor: text;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.journal-title-text:hover[b-3szbzenl28] {
    background-color: var(--bs-secondary-bg);
}

.journal-title[b-3szbzenl28] {
    max-width: 32rem;
}

/* Höhe fest genug, dass der Editor beim Tageswechsel nicht springt.
   ::deep ist nötig, weil die Höhe am Schreibbereich INNERHALB der Radzen-Komponente
   hängen muss – auf der Wurzel gesetzt gibt Radzen sie nicht weiter, und der Editor
   bleibt zwei Zeilen hoch. */
/* Kein eigener Rahmen mehr – den trägt jetzt die Karte drumherum. Zwei ineinander
   geschachtelte Rahmen wären genau die Art von Kante, die unruhig wirkt. */
.journal-main[b-3szbzenl28]  .rz-html-editor {
    min-height: 65vh;
    display: flex;
    flex-direction: column;
    flex: 1;
    border: none;
}

.journal-main[b-3szbzenl28]  .rz-html-editor-content {
    flex: 1;
    min-height: 55vh;
}

/* Unter 1200 px übereinander – und die Stimmung wandert NACH OBEN: Sie in fünf
   Sekunden festzuhalten ist ihr Zweck, unter einem langen Text wäre sie weg. */
@media (max-width: 1200px) {
    .journal-body[b-3szbzenl28] {
        grid-template-columns: minmax(0, 1fr);
    }

    .journal-side[b-3szbzenl28] {
        order: -1;
    }

    /* Einspaltig darf die Karte nicht auf Editorhöhe wachsen. */
    .journal-side-card[b-3szbzenl28] {
        height: auto;
    }
}

@media (max-width: 640px) {
    .journal-status[b-3szbzenl28] {
        margin-left: 0;
        text-align: left;
    }

    /* Auf schmalen Schirmen darf die Überschrift eine eigene Zeile bekommen. */
    .journal-title-slot[b-3szbzenl28] {
        flex-basis: 100%;
        order: 1;
    }
}
/* /Pages/JournalSearch.razor.rz.scp.css */
.search-layout[b-wnqo6sbjgn] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    max-width: 70rem;
    margin-inline: auto;
}

.search-controls[b-wnqo6sbjgn] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
}

.search-query[b-wnqo6sbjgn] {
    flex: 1;
    min-width: 14rem;
}

.search-range[b-wnqo6sbjgn] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-shrink: 0;
}

.search-range input[b-wnqo6sbjgn] {
    width: auto;
}

/* ── Stichwort-Wolke ─────────────────────────────────────────────────────────── */

.tag-cloud[b-wnqo6sbjgn] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
    margin-top: 0.75rem;
}

.tag-cloud-chip[b-wnqo6sbjgn] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.15rem 0.6rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 1rem;
    background: none;
    font-size: 0.8rem;
    cursor: pointer;
}

.tag-cloud-chip:hover[b-wnqo6sbjgn] {
    background-color: var(--bs-secondary-bg);
}

.tag-cloud-chip.is-active[b-wnqo6sbjgn] {
    background-color: var(--bs-primary);
    border-color: var(--bs-primary);
    color: #fff;
}

.tag-cloud-count[b-wnqo6sbjgn] {
    font-variant-numeric: tabular-nums;
    opacity: 0.65;
}

/* ── Treffer ─────────────────────────────────────────────────────────────────── */

/* Zwei Zeilen Auszug, dann Schluss – die Liste soll überflogen werden können. */
.search-snippet[b-wnqo6sbjgn] {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.search-hit-tags[b-wnqo6sbjgn] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    margin-top: 0.3rem;
}

.tag-chip-small[b-wnqo6sbjgn] {
    padding: 0.05rem 0.5rem;
    border-radius: 1rem;
    background-color: var(--bs-secondary-bg);
    font-size: 0.75rem;
    color: var(--bs-secondary-color, #6c757d);
}
/* /Pages/JournalTrend.razor.rz.scp.css */
.trend-layout[b-63i0b03h8h] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    max-width: 120rem;
    margin-inline: auto;
}

.trend-bar[b-63i0b03h8h] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.trend-range[b-63i0b03h8h] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

/* Vier Kennzahlen in einer Reihe, gleich breit – so liest man sie als Gruppe und
   nicht als vier einzelne Aussagen. */
.trend-summary[b-63i0b03h8h] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
    gap: 0.75rem;
}

.trend-stat[b-63i0b03h8h] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    padding: 0.75rem 0.9rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.5rem;
    background-color: var(--bs-body-bg);
}

.trend-stat-value[b-63i0b03h8h] {
    font-size: 1.35rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
}

.trend-stat-label[b-63i0b03h8h] {
    font-size: 0.8rem;
    color: var(--bs-secondary-color, #6c757d);
}
/* /Pages/Notes.razor.rz.scp.css */
/* Master-Detail: Liste links (feste Breite), Editor rechts. */
.notes-layout[b-40sapnfkbt] {
    display: flex;
    gap: 1rem;
    align-items: stretch;
    height: calc(100vh - 8rem);
}

.notes-sidebar[b-40sapnfkbt] {
    flex: 0 0 20rem;
    display: flex;
    flex-direction: column;
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    overflow: hidden;
    background-color: #fff;
}

.notes-sidebar-header[b-40sapnfkbt] {
    padding: 0.75rem;
    border-bottom: 1px solid #dee2e6;
}

/* Trennt die beiden Sichten in der Seitenleiste: oben die abgeleiteten Ordner,
   darunter die selbst angelegten. */
.notes-section-header[b-40sapnfkbt] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-top: 0.75rem;
    padding: 0.35rem 0.5rem;
    border-top: 1px solid #dee2e6;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: #868e96;
}

.notes-section-add[b-40sapnfkbt] {
    font-size: 1rem;
    line-height: 1;
    text-decoration: none;
}

/* Anzahl der Notizen im Abschnitt – gleiche Optik wie die Zahl an den Ordnerzeilen. */
.notes-section-count[b-40sapnfkbt] {
    font-size: 0.7rem;
    font-weight: 400;
    color: #868e96;
}

/* Notizen direkt in einem Abschnitt (z. B. "Ohne Zuordnung"): Sie haben keine
   Ordnerzeile über sich und brauchen deshalb den Einzug hier statt aus dem Baum.
   Derselbe Wert wie im Baum, damit ihre Titel auf den Beschriftungen der ersten
   Baumebene sitzen. */
.notes-section-notes[b-40sapnfkbt] {
    padding-left: 1.45rem;
    padding-right: 0.25rem;
}

.notes-section-notes[b-40sapnfkbt]  .note-list-item.compact {
    padding-left: 0;
}

/* Inline-Formular für Anlegen, Umbenennen und Verschieben eines Ordners.
   Untereinander statt nebeneinander: Name, Zielordner und zwei Knöpfe passen in einer
   20rem breiten Leiste nicht in eine Zeile. */
.note-folder-form[b-40sapnfkbt] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 0.35rem 0.5rem;
}

.note-folder-form-actions[b-40sapnfkbt] {
    display: flex;
    justify-content: flex-end;
    gap: 0.25rem;
}

/* Split-Button „Neue Notiz / Neue Zeichnung". Bootstrap-JS (Popper) ist nicht
   eingebunden, daher wird das Menü hier selbst positioniert. */
.new-note-group[b-40sapnfkbt] {
    position: relative;
}

.new-note-menu[b-40sapnfkbt] {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 20;
    margin-top: 0.125rem;
}

/* Fängt Klicks außerhalb ab und schließt das Menü. */
.new-note-backdrop[b-40sapnfkbt] {
    position: fixed;
    inset: 0;
    z-index: 10;
}

/* Liste scrollt innerhalb der Seitenleiste. */
.notes-sidebar[b-40sapnfkbt]  .note-list {
    overflow-y: auto;
}

.notes-main[b-40sapnfkbt] {
    flex: 1 1 auto;
    min-width: 0;
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    padding: 1rem;
    background-color: #fff;
    overflow-y: auto;
}

@media (max-width: 768px) {
    .notes-layout[b-40sapnfkbt] {
        flex-direction: column;
        height: auto;
    }

    .notes-sidebar[b-40sapnfkbt] {
        flex-basis: auto;
        max-height: 40vh;
    }
}
/* /Pages/Papierkorb.razor.rz.scp.css */
/* Typ-Badge auf einheitliche Breite, damit die Titel bündig starten. */
.trash-type[b-sery4h16i8] {
    flex: 0 0 auto;
    width: 8.5rem;
    text-align: center;
}

/* Erlaubt text-truncate im Flex-Kind (Bootstrap liefert min-width:0 nicht mit). */
.min-w-0[b-sery4h16i8] {
    min-width: 0;
}
/* /Pages/ProjectDetail.razor.rz.scp.css */
/* Haupt-Task: dunkler Balken links – das Gegenstück zum blauen Balken der Sub-Tasks.
   Gleiche Breite wie dort, unterschieden wird allein über die Farbe:
   dunkel = Haupt-Task, blau + eingerückt = Sub-Task. */
.maintask-item[b-ysla6eqo8u] {
    border-left: 3px solid #343a40;
}

/* Erledigt tritt der Balken zurück, sonst zieht er den Blick auf abgehakte Zeilen. */
.maintask-item.task-completed[b-ysla6eqo8u] {
    border-left-color: #adb5bd;
}

.subtask-item[b-ysla6eqo8u] {
    border-left: 3px solid #0d6efd;
    background-color: #fafafa;
}

/* Task-Titel als Link zur Detailseite: wirkt wie normaler Text, unterstreicht beim Hover. */
.task-title-link[b-ysla6eqo8u] {
    color: inherit;
    text-decoration: none;
}

.task-title-link:hover[b-ysla6eqo8u] {
    text-decoration: underline;
}

.task-completed[b-ysla6eqo8u] {
    background-image: repeating-linear-gradient(
        -45deg,
        transparent,
        transparent 6px,
        rgba(0, 0, 0, 0.06) 6px,
        rgba(0, 0, 0, 0.06) 12px
    );
    background-color: #f5f5f5;
}

/* Schnell-Abschluss-Haken in der Task-Zeile: etwas größer als der Bootstrap-Default,
   damit er als Klickziel taugt und optisch zum Status-Dropdown daneben passt. */
.task-done-check[b-ysla6eqo8u] {
    width: 1.15rem;
    height: 1.15rem;
    cursor: pointer;
}

/* Ziehgriff und Einfügemarke – gleiche Optik wie in SubTaskList und im Kanban-Board. */
.task-handle[b-ysla6eqo8u] {
    cursor: grab;
    color: #adb5bd;
    user-select: none;
}

.task-handle:active[b-ysla6eqo8u] {
    cursor: grabbing;
}

.task-drop-before[b-ysla6eqo8u] {
    box-shadow: 0 -2px 0 -1px var(--bs-primary, #0d6efd);
}

/* Pfeil vor dem Task-Titel, der seine Sub-Tasks auf- und zuklappt. Sieht aus wie das
   Caret der Erledigt-Gruppe, ist aber Teil der Task-Zeile. */
.subtask-caret[b-ysla6eqo8u] {
    width: 1rem;
    flex-shrink: 0;
    padding: 0;
    border: 0;
    background: none;
    color: #6c757d;
    line-height: 1;
    cursor: pointer;
}

.subtask-caret:hover[b-ysla6eqo8u] {
    color: #212529;
}

/* Platzhalter, damit Tasks ohne Sub-Tasks (bzw. Zeilen ohne Ziehgriff) nicht
   gegenüber ihren Nachbarn verspringen. */
.subtask-caret-empty[b-ysla6eqo8u] {
    width: 1rem;
    flex-shrink: 0;
}

.task-handle-empty[b-ysla6eqo8u] {
    width: 0.75rem;
    flex-shrink: 0;
}

/* Fortschritt am zugeklappten Task: "2/5". Bewusst zurückhaltend – die Zahl ergänzt
   den Titel, sie soll ihn nicht überstimmen. */
.subtask-summary[b-ysla6eqo8u] {
    margin-left: 0.4rem;
    padding: 0.05rem 0.35rem;
    border-radius: 0.75rem;
    background-color: #e9ecef;
    color: #6c757d;
    font-size: 0.72rem;
    white-space: nowrap;
}

/* Erledigt-Gruppe INNERHALB eines Sub-Task-Blocks: gleiche Kopfzeile wie bei den
   Haupt-Tasks, nur auf Sub-Task-Ebene eingerückt. */
.subtask-done-group[b-ysla6eqo8u] {
    padding: 0 0 0 3rem;
}

/* Kopfzeile der Erledigt-Gruppe: unauffällig, aber über die ganze Breite klickbar. */
.done-group[b-ysla6eqo8u] {
    padding: 0;
    background-color: #f8f9fa;
}

.done-group-toggle[b-ysla6eqo8u] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.5rem 0.75rem;
    border: 0;
    background: none;
    color: #6c757d;
    font-size: 0.875rem;
    text-align: left;
}

.done-group-toggle:hover[b-ysla6eqo8u] {
    color: #212529;
}

.done-group-caret[b-ysla6eqo8u] {
    width: 0.75rem;
    flex-shrink: 0;
}
/* /Pages/Settings.razor.rz.scp.css */
.settings-card[b-aaqxclgcjq] {
    max-width: 640px;
}
/* /Pages/Sport.razor.rz.scp.css */
/* Schmale Zahlenfelder der Schnell-Erfassung: Die Zeile soll auch mit vier Feldern
   (km/min/sek/RPE) auf eine Kartenbreite passen. */
.quick-field[b-xllzthkpct] {
    width: 4.5rem;
}

.quick-field input[b-xllzthkpct] {
    text-align: right;
}

/* Sitzt in einer schmalen Kartenkopfzeile neben "mehr →": Ein normaler btn-sm würde die
   Zeile höher machen als die daneben. */
.bw-add[b-xllzthkpct] {
    padding: 0 0.4rem;
    font-size: 0.75rem;
    line-height: 1.4;
}

.set-list li[b-xllzthkpct] {
    padding: 0.15rem 0;
    border-bottom: 1px solid #f1f3f5;
}

.set-list li:last-child[b-xllzthkpct] {
    border-bottom: 0;
}

.set-number[b-xllzthkpct] {
    width: 1.2rem;
    flex-shrink: 0;
}

.exercise-link[b-xllzthkpct] {
    color: inherit;
    text-decoration: none;
}

.exercise-link:hover[b-xllzthkpct] {
    text-decoration: underline;
}

/* Raster "Übungen pro Tag": je Zeile eine Übung, je Spalte ein Tag. Muster wie der
   Beitragsgraph auf GitHub – die Farbintensität trägt die Anzahl der Sätze. */
.raster[b-xllzthkpct] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.raster-row[b-xllzthkpct] {
    display: grid;
    grid-template-columns: 7rem 1fr;
    align-items: center;
    gap: 0.5rem;
}

.raster-label[b-xllzthkpct] {
    font-size: 0.8rem;
    color: #495057;
}

/* Die 30 Spalten teilen sich die Restbreite gleichmäßig – dadurch passt das Raster
   in jede Kartenbreite, ohne zu scrollen. */
.raster-cells[b-xllzthkpct] {
    display: grid;
    grid-template-columns: repeat(30, 1fr);
    gap: 2px;
}

/* Zugleich Schaltfläche für die Tagesauswahl – daher der Button-Reset: Ohne ihn brächte
   das <button> Rahmen und Innenabstand mit und spränge aus dem Quadrat. */
.raster-cell[b-xllzthkpct] {
    aspect-ratio: 1;
    border-radius: 2px;
    background-color: #ebedef;
    border: 0;
    padding: 0;
    cursor: pointer;
}

.raster-cell:hover[b-xllzthkpct] {
    outline: 1px solid #adb5bd;
}

/* Die markierte Zelle steht in jeder Zeile – zusammen ergeben sie die Spalte des
   gewählten Tages. Ring nach außen statt Rahmen, sonst schrumpfte das farbige Feld. */
.raster-cell-selected[b-xllzthkpct],
.raster-cell-selected:hover[b-xllzthkpct] {
    outline: 2px solid #212529;
    outline-offset: 1px;
}

/* Die Ringe der Nachbarzeilen dürfen sich nicht gegenseitig überdecken. */
.raster-cell-selected[b-xllzthkpct] {
    position: relative;
    z-index: 1;
}

.raster-level-1[b-xllzthkpct] {
    background-color: rgba(13, 110, 253, 0.35);
}

.raster-level-2[b-xllzthkpct] {
    background-color: rgba(13, 110, 253, 0.65);
}

.raster-level-3[b-xllzthkpct] {
    background-color: rgba(13, 110, 253, 1);
}

.raster-axis[b-xllzthkpct] {
    margin-top: 0.15rem;
}

/* Schmale Schirme: Der Name kostet neben 30 Spalten zu viel Breite – bei 375 px blieben
   knapp 4 px je Zelle. Deshalb Name über die Zeile stellen, dann bekommen die Tage die
   volle Breite (~11 px je Zelle). */
@media (max-width: 767.98px) {
    .raster-row[b-xllzthkpct] {
        grid-template-columns: 1fr;
        gap: 0.1rem;
    }

    .raster-label[b-xllzthkpct] {
        font-size: 0.75rem;
    }

    .raster[b-xllzthkpct] {
        gap: 0.5rem;
    }
}
/* /Pages/SportAnalysis.razor.rz.scp.css */
.exercise-link[b-srp08uv3c3] {
    color: inherit;
    text-decoration: none;
}

.exercise-link:hover[b-srp08uv3c3] {
    text-decoration: underline;
}
/* /Pages/SportExercises.razor.rz.scp.css */
/* Ziehgriff und Einfügemarke – gleiche Optik wie in SubTaskList und ProjectDetail. */
.exercise-handle[b-lyj2stbu5h] {
    cursor: grab;
    color: #adb5bd;
    user-select: none;
}

.exercise-handle:active[b-lyj2stbu5h] {
    cursor: grabbing;
}

.exercise-drop-before[b-lyj2stbu5h] {
    box-shadow: 0 -2px 0 -1px var(--bs-primary, #0d6efd);
}

.exercise-link[b-lyj2stbu5h] {
    color: inherit;
    text-decoration: none;
}

.exercise-link:hover[b-lyj2stbu5h] {
    text-decoration: underline;
}

/* Inaktive Übungen: sichtbar, aber zurückgenommen. */
.exercise-inactive[b-lyj2stbu5h] {
    background-color: #f8f9fa;
    color: #6c757d;
}

/* Kopfzeile der Inaktiv-Gruppe – Muster wie die Erledigt-Gruppe in ProjectDetail. */
.inactive-group[b-lyj2stbu5h] {
    padding: 0;
    background-color: #f8f9fa;
}

.inactive-group-toggle[b-lyj2stbu5h] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.5rem 0.75rem;
    border: 0;
    background: none;
    color: #6c757d;
    font-size: 0.875rem;
    text-align: left;
}

.inactive-group-toggle:hover[b-lyj2stbu5h] {
    color: #212529;
}

.inactive-group-caret[b-lyj2stbu5h] {
    width: 0.75rem;
    flex-shrink: 0;
}
/* /Pages/SportHistory.razor.rz.scp.css */
.exercise-link[b-z7sm0vvrh7] {
    color: inherit;
    text-decoration: none;
}

.exercise-link:hover[b-z7sm0vvrh7] {
    text-decoration: underline;
}
/* /Pages/TaskDetail.razor.rz.scp.css */
/* Beschreibung als Anzeige: Zeilenumbrüche/Absätze aus dem Text erhalten. */
.task-detail-description[b-r7qqplqdqr] {
    white-space: pre-wrap;
    word-break: break-word;
}
/* /Pages/Today.razor.rz.scp.css */
/* Listenzeilen der Heute-Seite: Auf schmalen Bildschirmen (Phone) brechen Meta-Infos
   und Buttons in eine zweite Zeile um, statt den Titel zusammenzuquetschen.
   Aufbau: .task-row = Zeile, .task-main = Checkbox + Titel, .task-meta = alles rechts. */
.task-row[b-dhwefs18tt] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.task-main[b-dhwefs18tt] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    /* Mindestbreite: Ist weniger Platz da, wandert .task-meta in die nächste Zeile. */
    flex: 1 1 12rem;
    min-width: 0;
}

    .task-main a[b-dhwefs18tt],
    .task-main span[b-dhwefs18tt] {
        overflow-wrap: anywhere;
    }

.task-meta[b-dhwefs18tt] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}
/* /Pages/WorkspaceDetail.razor.rz.scp.css */
/* Board als zusammenhängende Tabelle: ein Rahmen, Spalten durch
   Trennlinien getrennt (kein Abstand), durchgehende Kopfzeilen-Reihe. */
/* Projekt-Übersicht über dem Board (ersetzt die frühere Farblegende).
   Gefiltert wird ausschließlich über den Trichter-Button auf der Karte –
   die Karte selbst ist bewusst NICHT klickbar, sonst konkurriert der Filter
   mit dem Titel-Link. */
/* ::deep, weil die Karte aus der ProjectCard-Komponente kommt und damit einen
   anderen CSS-Isolation-Scope trägt als diese Seite. */
[b-21275ug3ny] .ws-project-card {
    transition: opacity 0.12s ease, box-shadow 0.12s ease;
}

/* Gewähltes Filter-Projekt hervorheben, die übrigen zurücknehmen. */
[b-21275ug3ny] .ws-project-card.is-selected {
    box-shadow: 0 0 0 2px rgba(13, 110, 253, 0.55);
}

[b-21275ug3ny] .ws-project-card.is-dimmed {
    opacity: 0.45;
}

/* Pausierte/archivierte Projekte: kompakte Chips, nur zum Filtern. */
/* Einklappbarer Header über den inaktiven Projekten (Default: zugeklappt). */
.ws-inactive-toggle[b-21275ug3ny] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border: 0;
    background: transparent;
    padding: 0;
    font-size: 0.8rem;
    color: #6c757d;
    cursor: pointer;
}

.ws-inactive-toggle:hover[b-21275ug3ny] {
    color: #495057;
}

.ws-inactive-caret[b-21275ug3ny] {
    font-size: 0.7rem;
    line-height: 1;
}

.ws-inactive-row[b-21275ug3ny] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 0.6rem;
}

.ws-inactive-chip[b-21275ug3ny] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.78rem;
    color: #495057;
    background-color: #f8f9fa;
    border: 1px solid #dee2e6;
    border-radius: 1rem;
    padding: 0.1rem 0.55rem;
    cursor: pointer;
}

.ws-inactive-chip:hover[b-21275ug3ny] {
    border-color: #adb5bd;
}

.ws-inactive-chip.is-selected[b-21275ug3ny] {
    border-color: #0d6efd;
    font-weight: 600;
}

.ws-inactive-chip.is-dimmed[b-21275ug3ny] {
    opacity: 0.45;
}

.ws-inactive-dot[b-21275ug3ny] {
    display: inline-block;
    width: 0.65rem;
    height: 0.65rem;
    border-radius: 3px;
    flex-shrink: 0;
}

.kanban-board[b-21275ug3ny] {
    display: flex;
    height: calc(100vh - 13rem);
    overflow-x: auto;
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    background-color: #fff;
}

.kanban-column[b-21275ug3ny] {
    flex: 1 1 13rem;
    min-width: 13rem;
    display: flex;
    flex-direction: column;
    border-right: 1px solid #dee2e6;
}

.kanban-column:last-child[b-21275ug3ny] {
    border-right: none;
}

.kanban-column.collapsed[b-21275ug3ny] {
    flex: 0 0 2.75rem;
    min-width: 2.75rem;
}

.kanban-column.drop-active[b-21275ug3ny] {
    background-color: rgba(13, 110, 253, 0.06);
}

/* Kopfzeilen-Reihe (thead-Optik): gleiche Höhe, durchgehender Hintergrund */
.kanban-column-header[b-21275ug3ny] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    height: 2.75rem;
    padding: 0.5rem 0.6rem;
    background-color: #f8f9fa;
    border-bottom: 1px solid #dee2e6;
    font-size: 0.85rem;
}

.kanban-column.collapsed .kanban-column-header[b-21275ug3ny] {
    flex-direction: column;
    justify-content: center;
    gap: 0.25rem;
    padding: 0.4rem 0.2rem;
}

.kanban-collapse-btn[b-21275ug3ny] {
    border: none;
    background: transparent;
    padding: 0;
    font-size: 1.1rem;
    line-height: 1;
    color: #6c757d;
    cursor: pointer;
}

.kanban-column-body[b-21275ug3ny] {
    flex: 1 1 auto;
    padding: 0.5rem;
    overflow-y: auto;
}

.kanban-column.collapsed .kanban-column-body[b-21275ug3ny] {
    padding: 0.25rem;
    overflow: hidden;
}

.kanban-card[b-21275ug3ny] {
    background-color: #fff;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    padding: 0.5rem 0.6rem;
    margin-bottom: 0.5rem;
    cursor: grab;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.kanban-card:active[b-21275ug3ny] {
    cursor: grabbing;
}

/* Einfügemarke: Linie oberhalb der Karte, vor der eingefügt wird */
.kanban-card.drop-before[b-21275ug3ny] {
    box-shadow: 0 -3px 0 -1px var(--bs-primary, #0d6efd);
}

.kanban-card-title[b-21275ug3ny] {
    font-weight: 500;
    font-size: 0.875rem;
    display: flex;
    align-items: flex-start;
    gap: 0.35rem;
}

/* Titel + Merkmale links, das ✎-Symbol rechts – flex-start hält den Button
   oben, wenn der Titel über mehrere Zeilen läuft. */
.kanban-card-title-main[b-21275ug3ny] {
    flex: 1 1 auto;
    min-width: 0;
}

/* Quadratischer Icon-Button (✎) auf der Karte. .btn-icon liegt sonst nur im
   scoped CSS von ProjectCard/Home und wirkt daher hier nicht (CSS-Isolation). */
.btn-icon[b-21275ug3ny] {
    flex: 0 0 auto;
    width: 1.75rem;
    padding-left: 0;
    padding-right: 0;
    text-align: center;
    line-height: 1.2;
}

/* Merkmal-Symbole (z. B. hinterlegter Link) neben dem Kartentitel. Als Link gedacht:
   kein cursor:default mehr (der Browser zeigt die Hand), keine Unterstreichung – das
   Symbol soll unauffällig bleiben und beim Hover nur kräftiger werden. */
.kanban-card-badge[b-21275ug3ny] {
    font-size: 0.75rem;
    opacity: 0.7;
    text-decoration: none;
}

.kanban-card-badge:hover[b-21275ug3ny] {
    opacity: 1;
}

/* Titel-Link zur Detailseite: sieht aus wie der Kartentext, unterstreicht beim Hover. */
.kanban-card-link[b-21275ug3ny] {
    color: inherit;
    text-decoration: none;
}

.kanban-card-link:hover[b-21275ug3ny] {
    text-decoration: underline;
}

/* "Warten auf" steht vollständig auf der Karte (kein text-truncate). Flex mit
   align-items:flex-start hält Folgezeilen bündig unter dem Text statt unter dem Symbol –
   ein hängender Einzug, der mehrzeilige Werte lesbar hält. */
.kanban-card-waiting[b-21275ug3ny] {
    display: flex;
    gap: 0.3rem;
    align-items: flex-start;
}

.kanban-card-waiting-icon[b-21275ug3ny] {
    flex: 0 0 auto;
}

/* min-width:0 erlaubt dem Text überhaupt erst zu schrumpfen (Flex-Kind), overflow-wrap
   bricht auch lange Zeichenketten ohne Leerzeichen um – etwa eine Ticket-URL, die sonst
   die Karte und damit die ganze Spalte breiter zöge. */
.kanban-card-waiting-text[b-21275ug3ny] {
    min-width: 0;
    overflow-wrap: anywhere;
}

/* Trennlinie zwischen Task und Sub-Tasks (wie im Edit-Dialog) */
.kanban-card-divider[b-21275ug3ny] {
    margin: 0.5rem 0 0.4rem;
    border: 0;
    border-top: 1px solid rgba(0, 0, 0, 0.6);
}

.kanban-subtask-toggle[b-21275ug3ny] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    border: none;
    background: transparent;
    padding: 0;
    font-size: 0.78rem;
    color: #6c757d;
    cursor: pointer;
}

.kanban-subtask-list[b-21275ug3ny] {
    list-style: none;
    margin: 0.35rem 0 0;
    padding: 0;
}

.kanban-subtask-item[b-21275ug3ny] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    padding: 0.1rem 0;
}

.kanban-empty[b-21275ug3ny] {
    text-align: center;
    padding: 0.5rem;
}

/* Eingeklappte Spalte: vertikaler Titel im Body */
.kanban-collapsed-toggle[b-21275ug3ny] {
    display: flex;
    justify-content: center;
    width: 100%;
    padding: 0.5rem 0;
    border: none;
    background: transparent;
    cursor: pointer;
}

.kanban-collapsed-title[b-21275ug3ny] {
    writing-mode: vertical-rl;
    font-weight: 600;
    font-size: 0.8rem;
    white-space: nowrap;
    color: #6c757d;
}
