/* Findings Board — Phase 2-C C3+C4 (Vision-Build).
 *
 * Layout: 5-Spalten-Kanban + einzeilige Filter-Bar + Status-Bar unten.
 * Foundation: tokens.css + fip-components.css (.fip-akte, .fip-filter-pill,
 * .fip-kanban-col bereits aus 2-A).
 *
 * AP 11 (Tokens vor Komposition): KEINE Hex-Codes hier — alles var(--token).
 * AP 9 (Position-Asserts): Filter-Bar min/max-height = 50/60 px wird in
 * Smoke 169 + Playwright test_filter_bar_one_line geprueft.
 *
 * Naming-Hygiene: keine Pilot-/ERP-Eigennamen.
 */

/* ============================================================================
   .findings-page — Page-Container
   ============================================================================ */

.findings-page {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  padding: var(--space-5) var(--space-6);
  min-height: calc(100vh - 120px); /* Topbar + Trust-Strip */
  max-width: 1600px;
  margin: 0 auto;
}

.findings-header {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin-bottom: var(--space-2);
}

.findings-header .cockpit-crumb {
  font-family: var(--font-sans);
  font-size: 11px;
  color: var(--slate);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
}

.findings-header .cockpit-title {
  font-family: var(--font-serif);
  font-size: 26px;
  font-weight: 700;
  color: var(--ink);
  margin: 0;
}

.findings-header .fip-pill {
  align-self: flex-start;
  margin-top: var(--space-1);
}

/* ============================================================================
   Phase 2-F-Followup-3 Block D: Werkbank-Header inline-Subtitle
   ============================================================================
   Sven-Direktive 15.05.: "98 Findings · 5 Stages" inline neben "Werkbank"
   statt eigene .fip-pill-Zeile. Kleiner gestylet als Sub-Info.
*/
.werkbank-header { /* wraps .cockpit-header existing styles */ }
.werkbank-title { /* wraps .cockpit-title existing styles */ }
.werkbank-meta {
  font-size: 0.55em;
  font-weight: 400;
  font-style: normal;
  color: var(--slate);
  margin-left: var(--space-2);
  letter-spacing: 0.02em;
}

/* ============================================================================
   Phase 2-F-Followup-3 Block D: Unified Werkbank-Filter-Bar
   ============================================================================
   Category-Pills (links) + Sort + Findings-Suche (rechts) in einer Zeile.
   Rauschen-Toggle GELOESCHT. Findings-Suche analog Beweis-Akte.
*/
.werkbank-filter-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-3);
}
.werkbank-filter-bar .findings-category-strip {
  flex: 1 1 auto;
  margin-bottom: 0;
  background: transparent;
  border: none;
  padding: 0;
}
.werkbank-filter-bar__right {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
}
.findings-search-input {
  font-family: var(--font-sans);
  font-size: 13px;
  padding: 6px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--card);
  color: var(--ink);
  width: 200px;
  transition: border-color .12s ease, box-shadow .12s ease;
}
.findings-search-input:focus {
  outline: none;
  border-color: var(--gold);
  box-shadow: 0 0 0 3px var(--gold-faint);
}
.findings-search-input::placeholder {
  color: var(--light-slate);
}
/* Card-Hide via Search-Filter (Phase 2-F-Followup-3 Block D) */
.findings-card--search-hidden {
  display: none !important;
}

/* ============================================================================
   Phase 2-F-Followup Block E: Drei-Dim-Category-Filter-Strip
   ============================================================================
   Sven-Befund #2 (14.05.): Cockpit-Tile-Click → ?category=recovery
   musste in der Werkbench einen aktiven Filter-Marker anzeigen. Strip ueber
   der existing Hebel-Filter-Bar; bei aktivem Filter explizit „Aktiver
   Filter: <Pill>" + Clear-Link; bei kein Filter Pill-Liste fuer Click-
   Through (Alle / Rueckholung / Einsparung / Compliance).
*/
.findings-category-strip {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  margin-bottom: var(--space-2);
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  flex-wrap: wrap;
}
.findings-category-strip--active {
  background: rgba(212, 168, 67, 0.06);  /* gold-faint Hint dass Filter aktiv */
  border-color: var(--gold-border);
}
.findings-category-strip-label {
  font-family: var(--font-sans);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--slate);
  font-weight: 600;
}
.findings-category-strip .finding-category-pill {
  text-decoration: none;
  cursor: pointer;
  transition: transform .12s ease, box-shadow .12s ease;
}
.findings-category-strip .finding-category-pill:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 6px rgba(26, 39, 68, 0.10);
}
.finding-category-pill--all {
  color: var(--navy);
  background: rgba(26, 39, 68, 0.04);
  border-left: 3px solid var(--slate);
}
.findings-category-strip-clear {
  margin-left: auto;
  font-size: 11px;
  color: var(--slate);
  text-decoration: none;
  padding: 4px 8px;
  border-radius: var(--radius-md);
  transition: background .12s ease;
}
.findings-category-strip-clear:hover {
  background: rgba(26, 39, 68, 0.06);
  color: var(--navy);
}
.findings-category-strip .fip-filter-pill-num {
  margin-left: 4px;
  font-size: 10px;
  font-weight: 700;
  opacity: 0.7;
}

/* ============================================================================
   .findings-filter-bar — einzeilig, max 60px (AP 9)
   ============================================================================ */

.findings-filter-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-4);
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  min-height: 50px;
  max-height: 60px;
  flex-wrap: nowrap;
  overflow-x: auto;
}

.findings-filter-cluster {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: nowrap;
}

.findings-filter-bar .filter-caption {
  font-family: var(--font-sans);
  font-size: 10px;
  color: var(--slate);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 700;
  margin-right: var(--space-1);
  white-space: nowrap;
}

.findings-filter-bar .fip-filter-pill {
  white-space: nowrap;
}

.findings-filter-bar .fp-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
}

.findings-sort-chip {
  padding: 6px 12px;
  background: var(--off-white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  outline: none;
}

.findings-sort-chip:focus {
  border-color: var(--gold);
}

.findings-rauschen-toggle {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  white-space: nowrap;
}

.findings-rauschen-toggle input[type="checkbox"] {
  accent-color: var(--gold);
  cursor: pointer;
}

/* ============================================================================
   .findings-kanban — 5-Spalten-Grid
   ============================================================================ */

.findings-kanban {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: var(--space-3);
  flex: 1;
  min-height: 580px;
  align-items: stretch;
}

.findings-kanban-col {
  min-width: 0;
}

/* Status-Dot-Farben pro Spalte */
.fip-kanban-col-dot--neu             { background: var(--light-slate); }
.fip-kanban-col-dot--in_klaerung     { background: var(--gold); }
.fip-kanban-col-dot--validiert       { background: var(--lever-strategic); }
.fip-kanban-col-dot--in_umsetzung    { background: var(--lever-recovery); }
.fip-kanban-col-dot--abgeschlossen   { background: var(--sage); }

.findings-col-empty {
  font-family: var(--font-sans);
  font-size: 12px;
  color: var(--light-slate);
  text-align: center;
  padding: var(--space-5) var(--space-3);
  font-style: italic;
}

/* ============================================================================
   Findings-Cards: .fip-akte-Variant pro Lever-Class (Border-Left-Color)
   ============================================================================ */

.findings-card {
  text-decoration: none;
  display: block;
  border-left: 3px solid var(--gold);
  transition: box-shadow var(--transition), transform var(--transition);
}

.findings-card:hover {
  box-shadow: var(--shadow-sm);
  transform: translateY(-1px);
}

.findings-card--recovery     { border-left-color: var(--lever-recovery); }
.findings-card--wc           { border-left-color: var(--lever-wc); }
.findings-card--einsparung   { border-left-color: var(--lever-einsparung); }
.findings-card--compliance   { border-left-color: var(--lever-compliance); }
.findings-card--strategic    { border-left-color: var(--lever-strategic); }
.findings-card--unknown      { border-left-color: var(--light-slate); }

/* Rauschen-Hide-Mechanik (Default off): Cards mit data-rauschen="1" sind
   hidden, ausser body hat Klasse .show-rauschen (vom JS-Toggle gesetzt). */
.findings-card[data-rauschen="1"] {
  display: none;
}
body.show-rauschen .findings-card[data-rauschen="1"] {
  display: block;
}

/* Hebel-Filter-Mechanik: Body-Class gesetzt vom JS bei Pill-Click. */
body[data-active-lever]:not([data-active-lever="all"]) .findings-card {
  display: none;
}
body[data-active-lever="recovery"] .findings-card[data-lever="recovery"],
body[data-active-lever="wc"] .findings-card[data-lever="wc"],
body[data-active-lever="einsparung"] .findings-card[data-lever="einsparung"],
body[data-active-lever="compliance"] .findings-card[data-lever="compliance"],
body[data-active-lever="strategic"] .findings-card[data-lever="strategic"] {
  display: block;
}
/* Rauschen-Hide bleibt aktiv ueber Hebel-Filter hinweg */
body[data-active-lever]:not([data-active-lever="all"])
  .findings-card[data-rauschen="1"] {
  display: none;
}
body.show-rauschen[data-active-lever="recovery"]
  .findings-card[data-rauschen="1"][data-lever="recovery"],
body.show-rauschen[data-active-lever="wc"]
  .findings-card[data-rauschen="1"][data-lever="wc"],
body.show-rauschen[data-active-lever="einsparung"]
  .findings-card[data-rauschen="1"][data-lever="einsparung"],
body.show-rauschen[data-active-lever="compliance"]
  .findings-card[data-rauschen="1"][data-lever="compliance"],
body.show-rauschen[data-active-lever="strategic"]
  .findings-card[data-rauschen="1"][data-lever="strategic"] {
  display: block;
}

/* ============================================================================
   .findings-status-bar — unten
   ============================================================================ */

.findings-status-bar {
  display: flex;
  gap: var(--space-6);
  align-items: center;
  padding: var(--space-3) var(--space-5);
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
}

.findings-status-stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.findings-status-num {
  font-family: var(--font-serif);
  font-size: 20px;
  font-weight: 700;
  color: var(--ink);
}

.findings-status-label {
  font-family: var(--font-sans);
  font-size: 11px;
  color: var(--slate);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-weight: 600;
}

/* Mini-Akte fuer Findings-Board: minder padding, Tab rechts ausserhalb sichtbar
   nicht erforderlich (Tab kann clipping kriegen wenn sehr schmal). */
.findings-card.fip-akte--mini .fip-akte-tab {
  display: none;
}

/* Card-Stamp groesser im Mini-Kontext nicht — Foundation reicht. */

/* === Responsive (Sven-Screen ist 1440px, aber Hard-Refresh-Test braucht
   sauberen Render bei kleinerer Breite). === */
@media (max-width: 1280px) {
  .findings-kanban {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-2);
  }
}

@media (max-width: 900px) {
  .findings-kanban {
    grid-template-columns: 1fr;
  }
  .findings-filter-bar {
    flex-wrap: wrap;
    max-height: none;
  }
}

/* ============================================================================
   Polish-2 Block D (10.05.2026): Drag-Drop CSS-States
   ============================================================================
   .findings-card.dragging       — Card waehrend Drag (transparent + grab cursor)
   .findings-kanban-col.drag-over — Lane bei Hover-mit-Card (Gold-Tint Border)

   HTML5-Drag-API nutzt diese Klassen via werkbench-drag.js (event-driven).
   Keine Touch-Drag-Pseudo-Klassen — Mobile-Drag waere eigener Sprint.
   ============================================================================ */
.findings-card.dragging {
  opacity: 0.45;
  cursor: grabbing;
  transition: opacity 0.15s ease;
}

.findings-card[draggable="true"] {
  cursor: grab;
}
.findings-card[draggable="true"]:active {
  cursor: grabbing;
}

.findings-kanban-col.drag-over {
  background: var(--cream);
  outline: 2px dashed var(--gold);
  outline-offset: -4px;
}

/* ================================================================
 * Phase 2-Z-D Block D — Mehrfach-Aktion ("Cockpit-Bulk-Aktion")
 * Inbox: cowork-bridge/inbox/_shared/phase-2-z-d-cleanup-bundle-2026-05-18.md
 * Sven-Direktive: deutsche Sprache + Cockpit-Konsistenz (navy/gold).
 * ================================================================ */

/* Toggle-Button in Top-Filter-Bar */
.findings-bulk-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  padding: 6px 14px;
  border: 1px solid var(--paper-edge, #d8cdb8);
  border-radius: var(--radius-md, 6px);
  background: var(--paper, #fff);
  color: var(--navy, #1d3557);
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: background var(--transition-fast, 0.15s), border-color var(--transition-fast, 0.15s);
}
.findings-bulk-toggle:hover {
  background: var(--cream, #fdf9f3);
  border-color: var(--gold, #b89046);
}
.findings-bulk-toggle[aria-pressed="true"] {
  background: var(--navy, #1d3557);
  color: var(--paper, #fff);
  border-color: var(--navy, #1d3557);
}

/* Card-Bulk-Check-Overlay (hidden default, visible bei .findings-board--bulk) */
.findings-card-bulk-check {
  display: none;
}
.findings-board--bulk .findings-card-bulk-check {
  display: flex;
  position: absolute;
  top: 8px;
  right: 8px;
  width: 22px;
  height: 22px;
  align-items: center;
  justify-content: center;
  background: var(--paper, #fff);
  border: 2px solid var(--paper-edge, #d8cdb8);
  border-radius: 4px;
  font-size: 14px;
  color: transparent;
  z-index: 2;
  transition: background var(--transition-fast, 0.15s), border-color var(--transition-fast, 0.15s);
}
.findings-board--bulk .findings-card {
  position: relative;
}
.findings-board--bulk .findings-card:hover .findings-card-bulk-check {
  border-color: var(--gold, #b89046);
}
.findings-board--bulk .findings-card--selected .findings-card-bulk-check {
  background: var(--gold, #b89046);
  border-color: var(--gold, #b89046);
  color: var(--paper, #fff);
}
.findings-board--bulk .findings-card--selected {
  outline: 2px solid var(--gold, #b89046);
  outline-offset: 1px;
}
.findings-board--bulk .findings-card {
  cursor: pointer;
}

/* Sticky-Bottom Bulk-Bar */
.findings-bulk-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: -100px;  /* hidden via translate */
  background: var(--navy, #1d3557);
  color: var(--paper, #fff);
  padding: 12px 24px;
  z-index: 100;
  transition: bottom var(--transition-base, 0.25s) ease-out;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.15);
}
.findings-bulk-bar--visible {
  bottom: 0;
}
.findings-bulk-bar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1400px;
  margin: 0 auto;
  gap: 16px;
  flex-wrap: wrap;
}
.findings-bulk-bar-status {
  font-family: 'Inter', sans-serif;
  font-size: 14px;
}
.findings-bulk-bar-status strong {
  font-family: 'JetBrains Mono', monospace;
  font-size: 16px;
  font-weight: 600;
  color: var(--gold-bright, #c4a05a);
  margin-right: 6px;
}
.findings-bulk-bar-actions {
  display: flex;
  gap: 8px;
}
.findings-bulk-action-btn {
  padding: 8px 16px;
  border-radius: var(--radius-md, 6px);
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  border: none;
  transition: opacity var(--transition-fast, 0.15s);
}
.findings-bulk-action-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.findings-bulk-action-btn--primary {
  background: var(--gold, #b89046);
  color: var(--paper, #fff);
}
.findings-bulk-action-btn--primary:hover:not(:disabled) {
  background: var(--gold-bright, #c4a05a);
}
.findings-bulk-action-btn--secondary {
  background: transparent;
  color: var(--paper, #fff);
  border: 1px solid rgba(255, 255, 255, 0.3);
}
.findings-bulk-action-btn--secondary:hover {
  background: rgba(255, 255, 255, 0.1);
}

@media (max-width: 600px) {
  .findings-bulk-bar-inner { flex-direction: column; gap: 8px; }
}
