/**
 * aufgaben.css — Modul-Styles Aufgaben-Listenansicht.
 *
 * Generische Listen-Patterns kommen aus _shared/functions/list-view/grid-css/. Dieses File
 * enthält nur Aufgaben-spezifisches: Spaltenbreiten, Cell-Klassen,
 * Tree-Connector, Eisenhower-Hover-Override, Stats-Pillen, Modal-Styles.
 */

/* ================================================================ */
/* Akteur-Missing-Banner (v0.6.1)                                    */
/* ================================================================ */
/* Erscheint über der Liste, wenn der Akteur-Lookup für den aktuellen
   User scheitert. Privat-Filter fällt dann auf user_created zurück
   und macht eigene verantwortete Aufgaben unsichtbar — der Banner
   muss auffällig sein. */
.al-akteur-banner {
  margin: 0 0 12px 0;
  padding: 10px 14px;
  /* #180-Nachzügler: --err-bg/--err waren nie als Token definiert
     (Fallback griff immer) — jetzt echte Tokens. */
  background: color-mix(in srgb, var(--primary, #c8134b) 8%, var(--white, #fff));
  color: var(--primary, #c8134b);
  border: 1px solid var(--primary, #c8134b);
  border-radius: 6px;
  font-size: 14px;
  line-height: 1.4;
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.al-akteur-banner i { margin-top: 2px; }
.al-akteur-banner code {
  background: var(--tint-neutral);
  padding: 1px 4px;
  border-radius: 3px;
  font-size: 13px;
}

/* ================================================================ */
/* Page-Layout & Bar-Toggles                                        */
/* ================================================================ */

/* Erledigt-Toggle nutzt jetzt `.idf-list-toggle` aus _shared/list-grid —
   modul-eigene Regel mit SSOT-Phase-3 weggefallen. */

/* ================================================================ */
/* Grid: Spaltenbreiten + Cell-Spezifika (Flag-Pillen, Header-Marker) */
/* ================================================================ */

.al-grid {
  /* Reihenfolge: Drag-Handle · Erledigt-Pille · Titel · Fällig · Zuständig
     · Unternehmen · Projekt · Auftrag · W · D · M · 🔒 · Bestellung · Löschen.
     Status ist KEINE eigene Spalte mehr — er sitzt als Badge in der Titel-
     Zelle (außer „offen", das wird als Default ausgeblendet).
     Icon-only-Spalten (Drag, W/D/M/Privat, Zeit, Bestellung, Löschen) sind 44 px
     breit — passt zum Action-Cell-Standard und lässt Platz für Icon + Sort-
     Pfeil (`is-sorted.is-asc::after`/`.is-desc::after`). Vorher waren Drag 24
     und W/D/M/P/Del 36 — Sort-Pfeil drängte das Header-Icon raus. */
  display: grid;
  /* Breiten aus der CSS-Variable (col-resize-Baustein); Fallback = Defaults. */
  grid-template-columns: var(--al-cols,
    44px 52px minmax(220px, 1fr) 170px 200px 200px 180px 180px 44px 44px 44px 44px 44px 44px 44px);
  align-items: stretch;
  gap: 0;
}

/* Projekt/Auftrag-Spalten (genau-eine-Zuweisung via Combobox, Typ m2mSingle).
   Layout wie Zuständig/Unternehmen: klickbarer Text, im Edit füllt die
   Combobox die Cell. */
.al-rows .al-row .al-grid > div.al-cell-projekt:not(.is-editing),
.al-rows .al-row .al-grid > div.al-cell-auftrag:not(.is-editing) {
  cursor: pointer;
  gap: 6px;
}
.al-rows .al-row .al-grid > div.al-cell-projekt.is-editing,
.al-rows .al-row .al-grid > div.al-cell-auftrag.is-editing {
  cursor: default;
  padding: 0;
}
.al-rows .al-row .al-grid > div.al-cell-projekt.is-editing .combobox,
.al-rows .al-row .al-grid > div.al-cell-projekt.is-editing .combobox-trigger,
.al-rows .al-row .al-grid > div.al-cell-auftrag.is-editing .combobox,
.al-rows .al-row .al-grid > div.al-cell-auftrag.is-editing .combobox-trigger {
  width: 100%;
  height: 36px;
  box-sizing: border-box;
}

/* Header- und Body-Cell-Defaults kommen aus _shared/functions/list-view/grid-css/. Hier
   nur Aufgaben-spezifische Cell-Overrides für die Flag-Spalten. */
.al-thead .al-cell-flag { justify-content: center; padding: 0; }
.al-thead .al-cell-flag i { opacity: 0.7; }
.al-rows .al-row .al-grid > div.al-cell-flag {
  justify-content: center;
  padding: 4px 0;
}
/* Compact-Flag-Pillen-Look (28×28 transparent, Hover, Active) kommt seit
   #174/T9 aus dem Shared `.idf-list-cell-action .idf-flag-check.is-compact`
   (idf-flag-check.css v1.6.0) — kein Modul-Override mehr (inkl. des alten
   v0.6.7-Spezifitäts-Workarounds). */

/* ================================================================ */
/* Hierarchie + Effekte (Tree-Connector, Fortschritts-Overlay,      */
/* Save-Schimmer)                                                   */
/* ================================================================ */

/* Layout für `.al-rows` und `.al-row` kommt aus _shared/functions/list-view/grid-css/
   (.idf-list-rows / .idf-list-row). Hier nur Aufgaben-spezifisches:
   Fortschritts-Overlay als ::after und Z-Index-Stacking. */

/* Fortschritts-Anzeige als halbtransparenter grauer Overlay über der
   Zeile. Breite via CSS-Var `--fortschritt` aus renderRow gesetzt
   (`style="--fortschritt: 50%"`). Liegt hinter den Cell-Inhalten via
   z-index, damit Texte und Pillen darüber lesbar bleiben.

   Q4 (weiße Zeilen, kein Eisenhower-Tint) bekommt einen dezenteren
   Overlay, damit der Effekt visuell ähnlich wirkt wie auf den farbigen
   Pastell-Zeilen — 0.06-Schwarz auf weiß sieht dunkler aus als auf
   einer farbigen Fläche, wo es sich aufhellend mischt.

   Einlauf-Animation: Element startet bei `transform: scaleX(0)`
   (Overlay unsichtbar). Der `afterRender`-Hook in `aufgaben-row-
   wiring.js` setzt nach DOM-Mount per doppeltem `requestAnimationFrame`
   die Klasse `is-progress-ready` auf jede Zeile — die schaltet auf
   `scaleX(1)` mit 800ms `transition`. `transform-origin: left center`
   sorgt für Wachstum von links. `transition: width 200ms ease` bleibt
   für Slider-Updates im Detail-Modal (greift auf width, der Einlauf
   auf transform — kollidiert nicht). */
.al-rows .al-row::after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: var(--fortschritt, 0%);
  background: var(--tint-neutral);
  transform: scaleX(0);
  transform-origin: left center;
  transition: width 200ms ease, transform 800ms cubic-bezier(0.22, 0.61, 0.36, 1);
  pointer-events: none;
  z-index: 0;
}
.al-rows .al-row.is-progress-ready::after {
  transform: scaleX(1);
}
/* 0.035 = fachlicher Eisenhower-Q4-Schleier (zwischen --shade-03 und
   --shade-04) - bewusster Zwischenwert, Audit L5b/#201. */
.al-rows .al-row.eh-q4::after { background: rgba(0, 0, 0, 0.035); }

/* Reduced-Motion: kein Einlauf, Overlay sofort auf Zielbreite. */
@media (prefers-reduced-motion: reduce) {
  .al-rows .al-row::after {
    transform: scaleX(1);
    transition: none;
  }
}
.al-rows .al-row .al-grid { position: relative; z-index: 1; }
/* Save-Animation läuft seit SSOT-Phase-3 über `.idf-list-row.is-saving`
   aus _shared/list-grid. Eigene `.al-row-saved`-Regel weggefallen. */

/* Hierarchie-Einrückung für Sub-Aufgaben (max 2 Ebenen sichtbar).
   v0.6.4: Tree-Connector ist jetzt ein eigenes DOM-Element
   (`<span class="al-tree-connector">`) im Flex-Flow der Title-Cell,
   direkt vor `.al-titel-group`. Die alte ::before/::after-Variante
   mit fixen X-Werten (63 px für Level 1, 143 px für Level 2) brach,
   sobald die Display-Nummer breiter wurde (1.1.1 vs. 67.10) oder
   das Privat-Schloss erschien — die Lücke zwischen Connector-Strich
   und Title-Text klaffte unterschiedlich weit. Jetzt sitzt der
   Connector durch den Flex-Flow IMMER direkt vor dem Title-Text,
   egal wie breit Number/Lock sind. Cell-padding-left bleibt für die
   reine Einrückung der jeweiligen Ebene zuständig. */
.al-rows .al-row.al-level-1 .al-grid > div.al-cell-titel,
.al-rows .al-row.al-level-2 .al-grid > div.al-cell-titel {
  position: relative;
  /* v0.6.6: overflow von „hidden" (aus list-grid-Default) auf „visible"
     gehoben — der Tree-Connector muss über die Cell-Padding-Bereiche
     hinausgehen, damit die vertikalen Linien benachbarter Subs sich
     überlappen und als durchgehende Linie (├ … ├ … └) erscheinen.
     Title-Ellipsis bleibt sicher: .al-titel-text clippt sich selbst
     mit eigenem overflow:hidden. */
  overflow: visible;
}
/* Einrückung pro Ebene: 22 px Sprung. Top-Title sitzt bei Cell-padding-
   left = 12 px (list-grid-Default), Sub-Connector dann bei x=22 (= 10 px
   nach Top-Title-Beginn), Sub-Sub-Connector bei x=44. Joerg-Entscheid
   2026-05-06 nach mehreren Iterationen mit größeren Einrückungen — die
   ursprünglichen 80/160 wirkten zu weit nach rechts geschoben. */
.al-rows .al-row.al-level-1 .al-grid > div.al-cell-titel {
  padding-left: 22px;
}
.al-rows .al-row.al-level-2 .al-grid > div.al-cell-titel {
  padding-left: 44px;
}

/* Der Connector-Span. 12 px breit, über die volle Cell-Inhalt-Höhe
   (`align-self: stretch`). Vertikale Linie als border-left auf dem
   ::before-Pseudo, horizontaler Strich als ::after. */
.al-tree-connector {
  position: relative;
  align-self: stretch;
  flex: 0 0 12px;
  width: 12px;
  pointer-events: none;
}
.al-tree-connector::before {
  /* Vertikale Linie. v0.6.6: top/bottom auf -13 px statt -1/0, damit
     die Linie über die Cell-Padding-Bereiche (12 px) hinausgeht und
     den Row-Border-Bottom (1 px) überlappt. Effekt: bei zwei Subs
     untereinander treffen sich beide Linien am Row-Border und
     ergeben eine durchgehende ├…├-Linie. Cell muss dafür
     `overflow: visible` haben (siehe oben). */
  content: '';
  position: absolute;
  left: 0;
  top: -13px;
  bottom: -13px;
  width: 0;
  border-left: 2px solid currentColor;
  opacity: 0.3;
}
.al-rows .al-row.is-last-sub .al-tree-connector::before {
  /* └ — letzte Sub: Linie endet auf halber Span-Höhe (= Cell-Mitte). */
  bottom: 50%;
}
.al-tree-connector::after {
  /* Horizontaler Strich auf halber Cell-Höhe, von der vertikalen
     Linie nach rechts bis zum Connector-Ende (12 px). */
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  width: 12px;
  height: 0;
  border-top: 2px solid currentColor;
  opacity: 0.3;
}

/* ================================================================ */
/* Cell-Spezifika: Group-Trennung + Title-Cell + Sub-Elemente       */
/* (Number, Lock, Status-Badge, Title-Text)                         */
/* ================================================================ */

/* Spalten-Trennlinien und Group-Padding wurden mit SSOT-Phase 3
   entfernt (User-Feedback v0.32.0). Die Liste wirkt jetzt durchgehend
   ohne vertikale Linien zwischen Spalten — konsistent mit Werkzeuge
   und Protokolle. */
/* Titel: einreihig, kürzt mit … bei Überlauf.
   Layout: [num] [lock] [Group: text + pen] [status-badge].
   - .al-titel-group   ist der Wrapper aus Text + Pen-Button. Er nimmt
                        natürliche Breite, schrumpft bei langen Titeln
                        (min-width: 0 + ellipsis im Text). Hover-Trigger
                        für den Pen-Button.
   - .al-titel-text    ellipsis innerhalb der Group.
   - .al-titel-status-badge  wird per `margin-left: auto` ans rechte
                              Cell-Ende geschoben (wenn vorhanden). */
.al-rows .al-row .al-grid > div.al-cell-titel {
  font-weight: 500;
  gap: 8px;
  min-width: 0;
  justify-content: flex-start;
}
/* Stack-Wrapper um titel-group + Link-Annotation. Existiert immer
   (auch ohne Annotation), damit das Markup einheitlich bleibt. Ohne
   Annotation verhaelt sich der Stack visuell wie das alte titel-group. */
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-stack {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 2px;
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
}
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-group {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex: 0 1 auto;
  min-width: 0;
  max-width: 100%;
}
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-text {
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left !important;
}
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-status-badge {
  margin-left: auto;
}
/* Inline-Edit-Input für den Titel — der Skin (transparenter Hintergrund,
   Akzent-Border-Bottom, kein Radius, kein Layout-Sprung) kommt aus
   _shared/functions/inline-editing/idf-inline-edit.css (.idf-inline-edit-input);
   die JS-Aufrufe hängen die Klasse ans Input. Hier nur Layout: das
   Input expandiert im Edit-Modus auf den verfügbaren Cell-Restraum
   (zusammen mit `.al-titel-group.is-editing` bzw.
   `.al-cell-titel.is-editing`, Regeln weiter unten). */
.al-rows .al-row .al-grid > div.al-cell-titel input.al-titel-edit {
  flex: 1 1 auto;
  font-weight: 500;
}
/* Während Edit expandiert die gesamte Pipeline auf den vollen Restraum
   der Cell: Stack → Group → Input. `is-editing` wird von IDF.inlineEdit
   direkt am `.al-cell-titel` gesetzt (Option `parentEditingTarget` im
   Aufgaben-Wrapper).

   Achsen-Logik (wichtig — daran ist v0.8.10 + v0.8.11 gescheitert):
   - Cell ist `display: flex` row → Stack ist horizontales flex-Item.
     Hier greift `flex: 1 1 auto` und macht den Stack so breit wie der
     Cell-Restraum (main axis = horizontal).
   - Stack ist `display: inline-flex` COLUMN. Im column-Container ist
     die Hauptachse vertikal. `flex: 1 1 auto` auf Stack-Children regelt
     also die HÖHE, nicht die Breite. Die horizontale Breite eines
     Stack-Childs kommt aus `align-items` / `align-self` — Stack hat
     `align-items: flex-start`, Children bleiben damit auf natürlicher
     Breite. Lösung: `align-self: stretch` auf die Group setzt sie auf
     volle Stack-Breite — und damit kann der Input auf 100% expandieren.

   Status-Badge (`margin-left: auto`) verliert seine flex-Lücke nicht,
   weil er im Cell, nicht im Stack sitzt — die Anordnung bleibt also
   [stack][badge] mit Badge rechts. `:has()` als Fallback. */
.al-rows .al-row .al-grid > div.al-cell-titel.is-editing .al-titel-stack {
  flex: 1 1 auto;
  max-width: 100%;
}
.al-rows .al-row .al-grid > div.al-cell-titel.is-editing .al-titel-group,
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-group:has(input.al-titel-edit) {
  align-self: stretch;
  width: 100%;
  max-width: 100%;
}

/* === Editierbare Cells — Pen-Icon-Affordance ======================= */

/* Datum / Zuständig / Unternehmen tragen jeweils ein Pen-Icon im
   Markup (.al-cell-edit-btn neben .idf-list-cell-text). Das Icon ist
   default unsichtbar und faded beim Cell-Hover ein — gleiche Sprache
   wie der Pen am Titel, nur ohne extra Wrapper, weil die Cell selbst
   schon der Hover-Container ist. Cell-Text bleibt direkt klickbar
   (Cursor pointer). */
.al-rows .al-row .al-grid > div.al-cell-faellig:not(.is-editing),
.al-rows .al-row .al-grid > div.al-cell-verant:not(.is-editing),
.al-rows .al-row .al-grid > div.al-cell-untern:not(.is-editing) {
  cursor: pointer;
  gap: 6px;
}
/* Text-Span-Ellipsis kommt seit T4 aus der Shared-Klasse
   `.idf-list-cell-text` (list-grid.css) — der frühere modul-lokale
   `.al-cell-text`-Block (flex/min-width/overflow/ellipsis) ist damit
   obsolet und entfernt. Shared nutzt `flex: 1 1 auto` (Pen am rechten
   Cell-Rand, konsistent mit werkzeuge/protokolle). */
/* Pen-Button (Datum/Zuständig/Unternehmen) sowie der Hover-Toggle der
   Cell kommen seit #81 aus _shared/functions/inline-editing/idf-inline-edit.css.
   Cells tragen `idf-inline-edit-host`, der Button `idf-inline-edit-btn`
   — modul-spezifischer CSS-Block ist damit obsolet. */

/* === Inline-Edit: Zuständig / Unternehmen (Combobox) =============== */

/* Im Edit-Modus übernimmt die Combobox die Interaktion — Cell-Padding
   raus, damit die Combobox bündig anliegt. Cursor neutral. */
.al-rows .al-row .al-grid > div.al-cell-verant.is-editing,
.al-rows .al-row .al-grid > div.al-cell-untern.is-editing {
  cursor: default;
  padding: 0;
  overflow: visible;
}
/* Combobox füllt die Cell aus. Trigger ist klein gehalten wie im
   Filter-Bar-Pattern (36 px Höhe, eckiger Border, kein Magic-Look). */
.al-rows .al-row .al-grid > div.al-cell-verant.is-editing .combobox,
.al-rows .al-row .al-grid > div.al-cell-verant.is-editing .combobox-trigger,
.al-rows .al-row .al-grid > div.al-cell-untern.is-editing .combobox,
.al-rows .al-row .al-grid > div.al-cell-untern.is-editing .combobox-trigger {
  width: 100%;
  height: 36px;
  box-sizing: border-box;
}
.al-rows .al-row .al-grid > div.al-cell-verant.is-editing .combobox-trigger,
.al-rows .al-row .al-grid > div.al-cell-untern.is-editing .combobox-trigger {
  font-size: var(--font-md, 14px);
}

/* Pen-Button am Titel + Hover-Logik kommen seit #81 aus
   _shared/functions/inline-editing/idf-inline-edit.css. Markup trägt
   `idf-inline-edit-host` an `.al-titel-group` und `idf-inline-edit-btn`
   am Pen — der modul-spezifische Block ist damit obsolet. */
/* Pen-Ausblend während Inline-Edit kommt seit #81 aus dem Shared-Pattern:
   IDF.inlineEdit setzt `is-editing` zugleich am `.al-titel-group` (Host)
   UND am `.al-cell-titel` (Layout-Container). Die Shared-CSS-Regel
   `.idf-inline-edit-host:not(.is-editing):hover .idf-inline-edit-btn`
   matcht damit während Edit nicht mehr → Pen unsichtbar, ohne `:has()`. */
/* v0.6.5: .al-titel-num komplett entfernt — Display-Nummern (1, 1.1,
   1.1.1) sind aus dem Render raus. Die Tree-Connector-Linie reicht
   als Hierarchie-Markierung; die Nummern hatten bei variabler
   Stelligkeit den Title-Anfang verschoben und damit die durchgehende
   Connector-Linie zwischen Subs einer Gruppe unterbrochen. */

/* Privat-Schloss als Solid-Icon vor dem Titel. */
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-lock {
  color: var(--mid, #555);
  font-size: 14px;
  flex-shrink: 0;
}
/* Status-Pille am Ende der Titel-Cell — Color-Modifier-only.
   Geometrie/Typografie (13 px UPPERCASE, getöntes BG) kommt jetzt aus
   dem shared `.idf-pill-tag` in `_shared/functions/list-view/grid-css/idf-list-grid.css`,
   damit Aufgaben-Status genauso aussieht wie SafeGuard-Prüfpunkte-Typ,
   BA-Status, DS-Risiko etc.
   `flex-shrink: 0` (gegen Quetschen in der flex-Titel-Row) bleibt hier,
   weil das ein modul-spezifisches Layout-Bedürfnis ist. */
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-status-badge {
  flex-shrink: 0;
}
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-status-badge[data-status="in_bearbeitung"]   { background: var(--tint-accent); color: var(--accent, #167ea0); }
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-status-badge[data-status="zur_freigabe"]     { background: var(--tint-yellow); color: var(--yellow-text, #b58600); }
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-status-badge[data-status="freigegeben"]      { background: var(--tint-orange); color: var(--orange, #e8710a); }
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-status-badge[data-status="erledigt"]         { background: var(--tint-confirm); color: var(--confirm, #0c998e); }
.al-rows .al-row .al-grid > div.al-cell-titel .al-titel-status-badge[data-status="zurueckgestellt"]  { background: var(--tint-neutral);     color: var(--mid, #555); }
/* `.is-overdue` und `.is-today` (Datum-Modifier) kommen aus _shared/functions/list-view/grid-css/. */

/* ================================================================ */
/* Listen-Aktionen: Drag-Handle, Lösch-Button, Erledigt-Pille       */
/* (alle einheitlich 28×28, transparent default, Hover-Background)  */
/* ================================================================ */

/* Drag-Handle (erste Spalte, 24 px breit) — fa-grip-vertical, on-hover
   sichtbar, damit die Liste im Ruhezustand nicht von Greifer-Symbolen
   überladen wirkt. Während eines aktiven Drags bleibt das Handle der
   gegriffenen Zeile sichtbar (idf-sortable-chosen) und der globale
   Cursor ist grabbing (body.idf-sortable-dragging). */
.al-cell-drag {
  justify-content: center;
  padding: 0 !important;
  position: relative;
}
/* Drag-Handle, Done-Pille und Lösch-Button kommen seit shared
   list-grid v0.2.0 aus _shared/functions/list-view/grid-css/idf-list-grid.css —
   Klassen `.idf-list-drag-handle`, `.idf-list-done-pill`,
   `.idf-list-delete-btn`. Alle Defaults (28×28, opacity-Stufen,
   Hover-Background, Active-States, body.idf-sortable-dragging-Hook,
   .is-drag-disabled-Hider) leben dort.

   Hier nur die Row-Hover-Stufe „opacity 0.6" — die hängt am
   modul-spezifischen Row-Selector und kann nicht generisch sein. */
.al-rows .al-row:hover .idf-list-drag-handle,
.al-rows .al-row:hover .idf-list-done-pill,
.al-rows .al-row:hover .idf-list-delete-btn { opacity: 0.6; }

/* Drag-Spalten-Header — Icon dezent, Akzent wenn aktiv (= sortField=sort). */
.al-thead .al-cell-drag i {
  color: var(--mid, #555);
  opacity: 0.7;
  font-size: 14px;
}
.al-thead .al-cell-drag.is-sorted i {
  color: var(--accent, #167ea0);
  opacity: 1;
}

/* Lösch-Spalte / Erledigt-Spalte — Pillen-Layout aus
   _shared/functions/list-view/grid-css/. Hier nur die Cell-spezifischen Padding-Resets,
   damit die 28-px-Pille mittig sitzt. */
.al-cell-delete,
.al-cell-done-toggle,
.al-cell-zeit,
.al-cell-bestellung {
  justify-content: center;
  padding: 0 !important;
}

/* Bestellung-Pille trägt die Klasse `.idf-flag-check` und wird oben (zusammen
   mit `.al-cell-flag`) identisch zu den W/D/M/Privat-Pillen gestylt — alle
   Listen-Pillen sehen damit gleich aus. Keine eigene Regel hier nötig. */

/* Empty / Loading / Load-More: kommen aus _shared/functions/list-view/grid-css/. */

/* ================================================================ */
/* Responsiv (≤ 1200 px) — horizontaler Scroll                      */
/* ================================================================ */

@media (max-width: 1200px) {
  main.al-main { overflow-x: auto; }
  /* min-width = Summe der Grid-Spalten + Padding-Reserve. Bei jeder
     Änderung der Grid-Spalten anpassen. */
  .al-thead, .al-rows, .al-stats { min-width: 1548px; }
  .al-bar { padding: 12px 14px; }
  .al-thead { padding: 0 14px; }
  .al-rows .al-row { padding: 0 14px; }
  .al-stats { padding: 8px 14px; }
}

/* ================================================================ */
/* Modal-Spezifika für Aufgaben — Form-Layout selbst lebt in        */
/* _shared/blocks/forms/idf-forms.css. Hier nur Modul-Eigenheiten.         */
/* ================================================================ */

/* Combobox-Popup-Defaults (Schrift 0.9375rem, Brand-Rot Selected-State,
   "Neu anlegen"-Padding) leben seit 2026-05 in
   _shared/infrastructure/core/idf-core.css — vorher modul-lokal hier, hat aber zu
   abweichender Combobox-Optik in Protokollen / anderen Modulen geführt.
   Hier nichts mehr, alles greift über den Shared-Default. */

/* Modal-Form-Helpers für das Aufgaben-Modal (`.status-row`,
   `.sa-erledigt-toggle`, `.idf-form .idf-flag-check`,
   `.idf-form .idf-eh-status`, Fortschritts-Display) sind seit
   2026-05-24 im Shared:
   `_shared/functions/detail-modal/idf-standard-artefakt.css`.
   Begründung: das Modal wird per `IDF.aufgaben.openAufgabe()`
   auch von protokolle (Punkte-Editor) und dashboard (Tasks-
   Panel) aufgerufen — die Modul-Hosts mussten sonst `aufgaben.css`
   als Cross-Modul-Abhängigkeit mitladen, nur fürs Modal-CSS.
   Jetzt liefert standard-artefakt das vollständig mit. */

/* ================================================================ */
/* Verwandt-Tab — Sublabel + AI-Aktionen (v0.7.0)                    */
/* ================================================================ */
/* Relation-Item-Liste (Meta-Spalte, Menge-Zelle .idf-sa-relation-qty,
   Zeilen-Hover, AI-Action-Buttons) lebt jetzt im Shared-Baustein
   _shared/functions/detail-modal/idf-standard-artefakt.css, damit das Modal
   in JEDEM Kontext (auch cross-modul aus Protokoll/Dashboard/SafeGuard/Gantt)
   gleich aussieht. Hier bewusst keine modul-lokale Kopie mehr. */

