/* ============================================================
   Cockpit V14 — Design-System (Apple-Anmutung, Jasmins Brand)
   Türkis = aktiv/Links/Fokus/Karl · Navy = primär/Headings/Jasmin
   Pink NIE für Pills — nur Löschen/Fehler/Alarm.
   Luftig, ruhig, Hairlines, weiße Karten auf #f5f5f7, System-Font.
   fonts.css wird separat im Layout verlinkt (vor dieser Datei) —
   die Marken-Fonts bleiben verfügbar, das UI nutzt den System-Stack.
   Kein Inline-JS (CSP) — Inline-Styles erlaubt, nutzen wir aber kaum.
   ============================================================ */

:root {
  color-scheme: light; /* native Controls/Scrollbars hell — V10 setzt im Dunkel-Block dark */
  --navy:#053A6D; --navy-deep:#062256; --tuerkis:#01A09A; --pink:#FF0068;
  --gelb:#F6BC26; --grau:#5B6079;

  --bg:#F5F5F7; --surface:#FFFFFF; --surface-2:#F5F5F7;
  --border:rgba(0,0,0,.08); --border-strong:rgba(0,0,0,.16); --hover:rgba(0,0,0,.04);
  --text:#1D1D1F; --text-muted:#6E6E73; --text-soft:#86868B;

  --radius:16px; --radius-sm:10px; --radius-pill:999px;
  --shadow-pop:0 4px 16px rgba(0,0,0,.10), 0 1px 3px rgba(0,0,0,.05);
  --shadow-card:0 1px 2px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.06);

  /* Apple-Politur: neutrale, weiche Mehrschicht-Schatten —
     xs Ruhe · sm Buttons/Leisten · md Hover-Tiefe · lg schwebende Flächen. */
  --shadow-xs:0 1px 2px rgba(0,0,0,.04);
  --shadow-sm:0 1px 2px rgba(0,0,0,.04), 0 3px 8px rgba(0,0,0,.05);
  --shadow-md:0 2px 4px rgba(0,0,0,.05), 0 8px 24px rgba(0,0,0,.08);
  --shadow-lg:0 4px 12px rgba(0,0,0,.08), 0 16px 48px rgba(0,0,0,.14);
  /* Zeilen-Hover mit hauchzarter Türkis-Tönung statt reinem Grau. */
  --row-hover:#F2F9F8;

  --font-head:-apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-body:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

  /* Pill-Paletten: weicher Grund + kräftigere Schrift desselben Tons */
  --p-grau-bg:#ECECEE;    --p-grau-fg:#5B6079;
  --p-tuerkis-bg:#E4F4F3; --p-tuerkis-fg:#04716C;
  --p-navy-bg:#E8EFF7;    --p-navy-fg:#053A6D;
  --p-gelb-bg:#FBF0D4;    --p-gelb-fg:#8A6410;
  --p-gruen-bg:#E3F4EC;   --p-gruen-fg:#137A50;
  --p-blau-bg:#E5EFFA;    --p-blau-fg:#245B98;
  --p-amber-bg:#FBEFDB;   --p-amber-fg:#9C610F;
  --p-rot-bg:#FCE7E8;     --p-rot-fg:#B5363B;
}

/* ---------- Basis ---------- */

*, *::before, *::after { box-sizing: border-box; }

html, body { height: 100%; }

body {
  margin: 0;
  font: 400 14px/1.5 var(--font-body);
  color: var(--text);
  /* Ruhiger, flacher Apple-Grund — keine Verläufe. */
  background-color: var(--bg);
  background-image: none;
  background-attachment: fixed;
  background-repeat: no-repeat;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4 {
  font-family: var(--font-head);
  font-weight: 600;
  color: var(--navy);
  margin: 0 0 12px;
}
h1 { font-weight: 600; font-size: 22px; letter-spacing: -.02em; }
h2 { font-size: 15px; }
h3 { font-size: 13px; }

a { color: var(--tuerkis); text-decoration: none; }
a:hover { text-decoration: underline; }

button { font: inherit; color: inherit; }

:focus { outline: none; }
a:focus-visible, button:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid rgba(1,160,154,.35);
  outline: 3px solid color-mix(in srgb, var(--tuerkis) 38%, transparent);
  outline-offset: 1px;
}

.muted { color: var(--text-muted); }
.soft  { color: var(--text-soft); }
.mono  { font-variant-numeric: tabular-nums; }
[hidden] { display: none !important; }

/* ---------- Formularelemente (klein, türkiser Fokusring) ---------- */

input[type="text"], input[type="search"], input[type="email"],
input[type="password"], input[type="tel"], input[type="url"],
input[type="date"], input:not([type]), select, textarea {
  font-family: var(--font-body);
  font-size: 13.5px;
  line-height: 1.4;
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  padding: 6px 10px;
  height: 32px;
}
textarea { height: auto; padding: 8px 10px; resize: vertical; }
select { height: 32px; padding-right: 26px; }
input:focus, select:focus, textarea:focus {
  border-color: var(--tuerkis);
  box-shadow: 0 0 0 3px rgba(1,160,154,.35);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--tuerkis) 35%, transparent);
  outline: none;
}
input::placeholder, textarea::placeholder { color: var(--text-soft); }

/* ---------- Buttons ---------- */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 32px;
  padding: 0 14px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-pill);
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  text-decoration: none;
  background: var(--surface);
  color: var(--text);
  white-space: nowrap;
  transition: background .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease, transform .06s ease;
}
.btn:hover { text-decoration: none; background: var(--hover); box-shadow: var(--shadow-xs); }
.btn:active { transform: translateY(1px); box-shadow: none; }
.btn svg { width: 15px; height: 15px; flex-shrink: 0; }

.btn--primary {
  /* Flach und ruhig — Apple-CTA in Marken-Navy, voll gerundet (Pill). */
  background-color: var(--navy);
  background-image: none;
  border-color: var(--navy);
  color: #FFFFFF;
  box-shadow: none;
}
.btn--primary:hover {
  background-color: #09457E;
  background-image: none;
  border-color: #09457E;
  box-shadow: var(--shadow-sm);
}
.btn--primary:active { background-color: var(--navy-deep); box-shadow: none; }

.btn--ghost { background: transparent; border-color: var(--border-strong); color: var(--text-muted); }
.btn--ghost:hover { background: var(--hover); border-color: rgba(0,0,0,.22); color: var(--text); }

.btn--sm { height: 27px; padding: 0 11px; font-size: 12px; }

.btn--icon {
  width: 32px; height: 32px; padding: 0;
  color: var(--text-muted);
}
.btn--icon.btn--sm { width: 27px; height: 27px; }

/* Pink ausschließlich für danger/Löschen/Fehler */
.btn--danger { background: transparent; border-color: var(--pink); color: var(--pink); }
.btn--danger:hover { background: var(--p-rot-bg); color: var(--pink); }
/* V14: Onboarding-Fragebogen in der Kontaktakte — Vorher/Nachher-Skalen. */
.fb-vergleich { display: flex; flex-direction: column; gap: 2px; margin-bottom: 14px; }
.fb-kopf, .fb-zeile { display: grid; grid-template-columns: minmax(150px, 1.2fr) 1fr 1fr; gap: 12px; align-items: center; padding: 7px 0; }
.fb-zeile { border-top: 1px solid var(--border); }
.fb-kopf .fb-spalte { font-size: 12px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--text-soft); }
.fb-label { font-size: 14px; color: var(--text); }
.fb-skala { display: inline-flex; align-items: center; gap: 4px; }
.fb-skala--leer { color: var(--text-soft); }
/* V15: Jahresziel direkt in der Kachel ändern. */
.ziel-edit summary { cursor: pointer; list-style: none; }
.ziel-edit summary::-webkit-details-marker { display: none; }
.ziel-edit summary:hover { color: var(--tuerkis); }
.ziel-edit__form { display: flex; gap: 6px; margin-top: 6px; }
.ziel-edit__form .input { width: 110px; }

/* V15b: editierbare Fragebogen-Zellen — attr-Mechanik ohne attr-Grid-Layout. */
.fb-edit { display: inline-flex; padding: 2px 6px; min-height: 0; border-radius: 8px; cursor: pointer; }
.fb-edit:hover { background: var(--row-hover, rgba(1,160,154,.06)); }
.fb-antwort .fb-edit { display: block; }

/* V15: Sterne statt Punkte (Jasmins Wunsch). */
.fb-stern { font-size: 16px; line-height: 1; color: var(--text-soft); }
.fb-stern--voll.fb-stern--vorher { color: var(--grau); }
.fb-stern--voll.fb-stern--nachher { color: var(--tuerkis); }
.fb-zahl { margin-left: 6px; font-size: 12.5px; font-weight: 600; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.fb-geld { font-weight: 600; font-variant-numeric: tabular-nums; }
.fb-geld--nachher { color: var(--tuerkis); }
.fb-antworten summary { cursor: pointer; font-weight: 600; color: var(--text-muted); padding: 6px 0; }
.fb-antwort { padding: 8px 0; border-top: 1px solid var(--border); }
.fb-antwort__label { display: block; font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--text-soft); margin-bottom: 2px; }
.fb-antwort__text { margin: 0; font-size: 14.5px; }
@media (max-width: 640px) { .fb-kopf, .fb-zeile { grid-template-columns: 1fr; gap: 4px; } .fb-kopf { display: none; } }

/* V14: Gespeicherte Filter-Ansichten (Kontakte). */
.ansichten { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 12px; }
.ansicht-chip { display: inline-flex; align-items: center; gap: 2px; background: var(--surface); border: 1px solid var(--border); border-radius: 999px; padding: 3px 6px 3px 14px; font-size: 13.5px; }
.ansicht-chip a { text-decoration: none; color: var(--text); font-weight: 600; }
.ansicht-chip a:hover { color: var(--tuerkis); }
.ansicht-chip--aktiv { border-color: var(--tuerkis); }
.ansicht-chip form { display: inline-flex; }
.ansicht-chip button { border: 0; background: none; color: var(--text-soft); cursor: pointer; font-size: 15px; padding: 0 6px; border-radius: 50%; }
.ansicht-chip button:hover { color: var(--pink); }
.ansicht-speichern { display: inline-flex; gap: 6px; align-items: center; }
.ansicht-speichern .input { width: 200px; }

/* V14: Umsatz-Kachel + Dashboard-Anpassen + Fristen-Aktionen. */
.umsatz-balken { height: 10px; border-radius: 999px; background: var(--surface-2, #EDF1F5); overflow: hidden; margin: 6px 0 2px; }
.umsatz-balken__voll { height: 100%; width: var(--uz, 0%); border-radius: 999px; background: var(--tuerkis); }
.dash-anpassen__btn { margin-top: 10px; }
.dash-anpassen__panel { margin-top: 8px; padding: 12px 16px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; display: flex; flex-wrap: wrap; gap: 6px 18px; }
.dash-anpassen__zeile { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; cursor: pointer; }
.dash-row__done { flex-shrink: 0; width: 22px; height: 22px; border-radius: 50%; border: 1px solid var(--border); background: var(--surface); color: var(--text-soft); font-size: 12px; line-height: 1; cursor: pointer; }
.dash-row__done:hover { border-color: var(--tuerkis); color: var(--tuerkis); }
.dash-row__done--mute:hover { border-color: var(--grau); color: var(--grau); }

/* V14: Dokumente klappbar nach Art + Jahr. */
.docs-gruppe { border-top: 1px solid var(--border); padding: 4px 0; }
.docs-gruppe summary { cursor: pointer; font-weight: 600; font-size: 14px; color: var(--text); padding: 7px 0; list-style-position: inside; }
.docs-gruppe__zahl { display: inline-block; margin-left: 6px; font-size: 12px; font-weight: 600; color: var(--text-soft); background: var(--surface-2, #EDF1F5); border-radius: 999px; padding: 1px 9px; }
.docs-gruppe__jahr { margin: 6px 0 0; font-size: 11.5px; font-weight: 700; letter-spacing: .05em; color: var(--text-soft); }

/* V14: Papierkorb — Wiederherstellen + Endgültig nebeneinander. */
.trash-actions { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; }
.page-head--simple form[data-confirm] { margin-top: 10px; }

.btn--danger-ghost { background: transparent; border-color: var(--border-strong); color: var(--pink); }
.btn--danger-ghost:hover { background: var(--p-rot-bg); border-color: var(--pink); color: var(--pink); }

/* ---------- Pills (typisierte Auswahl-Chips) ---------- */

.pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
  padding: 2px 9px;
  border-radius: var(--radius-pill);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  background: var(--p-grau-bg);
  color: var(--p-grau-fg);
  /* Feiner Ton-in-Ton-Innenrand für mehr Wertigkeit. */
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.04);
}
.pill--grau    { background: var(--p-grau-bg);    color: var(--p-grau-fg); }
.pill--tuerkis { background: var(--p-tuerkis-bg); color: var(--p-tuerkis-fg); }
.pill--navy    { background: var(--p-navy-bg);    color: var(--p-navy-fg); }
.pill--gelb    { background: var(--p-gelb-bg);    color: var(--p-gelb-fg); }
.pill--gruen   { background: var(--p-gruen-bg);   color: var(--p-gruen-fg); }
.pill--blau    { background: var(--p-blau-bg);    color: var(--p-blau-fg); }
.pill--amber   { background: var(--p-amber-bg);   color: var(--p-amber-fg); }
.pill--rot     { background: var(--p-rot-bg);     color: var(--p-rot-fg); }

.pill-more {
  display: inline-block;
  padding: 2px 7px;
  border-radius: var(--radius-pill);
  font-size: 12px;
  font-weight: 600;
  color: var(--text-soft);
  background: var(--surface-2);
}
.pill-group { display: inline-flex; align-items: center; gap: 5px; flex-wrap: wrap; }

/* ---------- App-Layout ---------- */

body.app { display: flex; min-height: 100vh; }

/* V4: Sidebar fix — scrollt nicht mit; Footer sitzt unten (flex-col). */
.sidebar {
  width: 220px;
  flex-shrink: 0;
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  z-index: 40;
  height: 100vh;
  display: flex;
  flex-direction: column;
  padding: 16px 12px;
  background: #FBFBFD;
  border-right: 1px solid var(--border);
  box-shadow: none;
  transition: width .16s ease;
}

/* Kopfzeile der Sidebar: .sidebar__brand ist der Container (CONTRACT-v4),
   .sidebar__brand-link der Markenzug — der Toggle bleibt auch collapsed sichtbar. */
.sidebar__brand {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 4px 8px 14px;
}
.sidebar__brand-link {
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 18px;
  color: var(--navy);
  white-space: nowrap;
  overflow: hidden;
  text-decoration: none;
}
a.sidebar__brand-link:hover { color: var(--navy); text-decoration: none; }
.sidebar__brand-dot { color: var(--tuerkis); }

.sidebar__toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px; height: 26px;
  flex-shrink: 0;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  cursor: pointer;
}
.sidebar__toggle:hover { background: var(--hover); color: var(--text-muted); }
.sidebar__toggle svg { width: 17px; height: 17px; }

.sidebar__nav { display: flex; flex-direction: column; gap: 2px; flex: 1; min-height: 0; overflow-y: auto; }
.sidebar__nav--sekundaer { flex: 0 0 auto; overflow-y: visible; }

.sidebar__section {
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--text-soft);
  padding: 12px 10px 5px;
  white-space: nowrap;
  overflow: hidden;
}

.nav-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 10px;
  border-radius: var(--radius-sm);
  font-weight: 600;
  font-size: 13.5px;
  color: var(--text-muted);
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
}
.nav-item svg { width: 17px; height: 17px; flex-shrink: 0; }
.nav-item__label { overflow: hidden; text-overflow: ellipsis; }
a.nav-item:hover { background: var(--hover); color: var(--text); text-decoration: none; }
.nav-item--active,
a.nav-item--active,
a.nav-item--active:hover { background: var(--p-tuerkis-bg); color: var(--tuerkis); }
.nav-item--active svg { color: var(--tuerkis); }
.nav-item--soon { color: var(--text-soft); cursor: default; }

.soon-badge {
  margin-left: auto;
  font-size: 9.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  background: var(--surface-2);
  color: var(--text-soft);
  padding: 2px 6px;
  border-radius: var(--radius-pill);
}

/* V4: Footer-Block ganz unten — Einstellungen/Papierkorb klein, Trenner, User-Zeile. */
.sidebar__footer {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 10px 0 2px;
  margin-top: auto;
  border-top: 1px solid var(--border);
}
.nav-item--small { padding: 7px 10px; font-size: 13px; }
.nav-item--small svg { width: 15px; height: 15px; }
.sidebar__sep { height: 1px; margin: 7px 2px; background: var(--border); }
.sidebar__user {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 7px 10px 0;
  font-weight: 600;
  font-size: 12.5px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
}

/* ---------- Nav-Untermenü (Kontakte nach Typ) ---------- */

.nav-group { display: flex; flex-direction: column; }
.nav-item--parent { position: relative; padding-right: 32px; }
.nav-item__chev {
  position: absolute;
  top: 50%;
  right: 5px;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  padding: 0;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  cursor: pointer;
}
.nav-item__chev:hover { background: var(--border); color: var(--text-muted); }
.nav-item__chev::before {
  content: "";
  width: 6px;
  height: 6px;
  border-right: 1.6px solid currentColor;
  border-bottom: 1.6px solid currentColor;
  transform: rotate(-45deg);            /* › zugeklappt */
  transition: transform .14s ease;
}
.nav-group--open .nav-item__chev::before { transform: rotate(45deg) translate(-1px, -1px); }

.nav-sub { list-style: none; margin: 1px 0 0; padding: 0; display: none; }
.nav-group--open .nav-sub { display: block; }
.nav-sub__item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 10px 5px 37px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  font-weight: 500;
  color: var(--text-muted);
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
}
a.nav-sub__item:hover { background: var(--hover); color: var(--text); text-decoration: none; }
.nav-sub__item--active,
a.nav-sub__item--active,
a.nav-sub__item--active:hover { background: var(--p-tuerkis-bg); color: var(--tuerkis); }
.nav-sub__label { overflow: hidden; text-overflow: ellipsis; }
.nav-sub__count {
  margin-left: auto;
  min-width: 18px;
  padding: 0 6px;
  border-radius: var(--radius-pill);
  background: var(--surface-2);
  color: var(--text-soft);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.7;
  text-align: center;
}
.nav-sub__item--active .nav-sub__count { background: rgba(255,255,255,.65); color: var(--p-tuerkis-fg); }

/* Kollabierte Sidebar → 64px, nur Icons (JS setzt Klasse auf aside UND body) */
/* V21e (Jasmin): EIN Rhythmus für die ganze Seitenleiste — gleiche Höhe
   (7px Innenabstand) und gleicher Abstand (6px) für Haupt- und Fußzeile. */
.sidebar__nav > .nav-item, .sidebar__nav > .nav-group,
.sidebar__footer > .nav-item { margin-bottom: 6px; }
.sidebar__nav .nav-item, .sidebar__footer .nav-item { padding-top: 7px; padding-bottom: 7px; }

/* V19b: globale Suche in der Seitenleiste — auf jeder Seite oben. */
.sidebar__suche { margin: 2px 0 12px; }
.sidebar__suche-input { width: 100%; font-size: 13px; }

.sidebar--collapsed { width: 64px; padding: 16px 8px; }
.sidebar--collapsed .sidebar__suche,
.sidebar--collapsed .sidebar__brand-link,
.sidebar--collapsed .nav-item__label,
.sidebar--collapsed .soon-badge,
.sidebar--collapsed .sidebar__section,
.sidebar--collapsed .nav-item__chev,
.sidebar--collapsed .nav-sub,
.sidebar--collapsed .sidebar__user { display: none; }
.sidebar--collapsed .sidebar__brand { justify-content: center; padding: 4px 0 14px; }
.sidebar--collapsed .nav-item { justify-content: center; padding: 8px 0; }
.sidebar--collapsed .nav-item--parent { padding-right: 0; }
.sidebar--collapsed .sidebar__footer { align-items: center; padding-top: 12px; }

/* V4: volle Breite, weniger Weißraum — Platz für die fixe Sidebar via margin. */
.main {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  width: auto;
  max-width: none;
  margin: 0 0 0 220px;
  padding: 30px;
  transition: margin-left .16s ease;
}
body.sidebar-collapsed .main { margin-left: 64px; }

/* Detailseiten (Kontakt/Deal/Aufgabe): volle Breite (V8, SPEC N) —
   das Padding liefert .main, die Aktivitätsspalte wächst mit. */
.detail-wrap { margin: 0 auto; }

/* ---------- Seitenkopf ---------- */

.page-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}
.page-title { margin: 0; display: inline-flex; align-items: baseline; gap: 9px; }
.page-count {
  display: inline-block;
  padding: 2px 9px;
  border-radius: var(--radius-pill);
  background: var(--surface-2);
  color: var(--text-muted);
  font: 600 12px/1.4 var(--font-body);
}
.page-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* ---------- Werkzeugleiste (Filter / Sort / Suche) ---------- */

.toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.toolbar__spacer { margin-left: auto; }
.result-count { font-size: 12.5px; color: var(--text-soft); }

.search {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.search__icon {
  position: absolute;
  left: 9px;
  width: 15px; height: 15px;
  color: var(--text-soft);
  pointer-events: none;
}
.search__input { width: 230px; max-width: 100%; padding-left: 30px; }

/* Filter-Chips. V16 (Jasmin): Luft zwischen Chip-Zeile und der Tabelle
   darunter — nur für die frei stehende Zeile, nicht in der Toolbar. */
.filter-chips { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 14px; }
.toolbar .filter-chips { margin-bottom: 0; }
.filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 26px;
  padding: 0 6px 0 10px;
  border-radius: var(--radius-pill);
  background: var(--p-tuerkis-bg);
  color: var(--p-tuerkis-fg);
  font-size: 12px;
  font-weight: 600;
}
.filter-chip__x {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px; height: 16px;
  border: none;
  border-radius: 50%;
  background: transparent;
  color: inherit;
  cursor: pointer;
  font-size: 13px;
  line-height: 1;
  opacity: .7;
}
.filter-chip__x:hover { opacity: 1; background: rgba(4,113,108,.14); }

/* ---------- Popover / Menü ---------- */

.pop-wrap { position: relative; display: inline-flex; }

.popover {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 60;
  min-width: 250px;
  padding: 12px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
}
.popover--right { left: auto; right: 0; }

/* Filter-Popover in der Liste: steht als Geschwister nach der Toolbar direkt
   in .main (positionierter Vorfahr). top/left auf auto → an seiner statischen
   Flussposition unter der Werkzeugleiste, nicht in der Viewport-Ecke. */
.popover--filter { top: auto; left: auto; margin: 2px 0 14px; }
.popover__body { display: flex; flex-direction: column; gap: 10px; }
.popover__field { display: flex; flex-direction: column; gap: 5px; }
.popover__label { font-size: 11.5px; font-weight: 600; color: var(--text-muted); }
.popover__field select, .popover__field input { width: 100%; }
.popover__count {
  display: inline-block;
  min-width: 16px;
  padding: 0 5px;
  border-radius: var(--radius-pill);
  background: var(--surface-2);
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 600;
  text-align: center;
}
.popover__actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 4px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

/* Werkzeugleiste: Suche + Sortier-Dropdown */
.toolbar__left { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.toolbar__right { margin-left: auto; display: flex; align-items: center; gap: 8px; }

.quicksearch { position: relative; display: inline-flex; align-items: center; }
.quicksearch__input { width: 250px; max-width: 100%; }

.sortdrop { display: inline-flex; align-items: center; gap: 7px; }
.sortdrop__label { font-size: 12px; font-weight: 600; color: var(--text-soft); }
.sortdrop__form { display: inline-flex; align-items: center; gap: 6px; }

/* Tags-Spalte + Kurzform-Pill "+n" */
.col-tags { min-width: 0; }
.tag-cell { display: inline-flex; align-items: center; gap: 5px; flex-wrap: nowrap; min-width: 0; }
.pill--more { color: var(--text-soft); background: var(--surface-2); }

.popover__row { display: flex; flex-direction: column; gap: 5px; margin-bottom: 10px; }
.popover__row:last-of-type { margin-bottom: 0; }
.popover__row label { font-size: 11.5px; font-weight: 600; color: var(--text-muted); }
.popover__row select, .popover__row input { width: 100%; }
.popover__check { flex-direction: row; align-items: center; gap: 8px; }
.popover__check input { width: auto; height: auto; }
.popover__foot {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

/* Menü (…-Aktionen) */
.menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 60;
  min-width: 180px;
  padding: 5px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
}
.menu__item {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  padding: 7px 9px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text);
  font-size: 13px;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
}
.menu__item:hover { background: var(--hover); }
.menu__item--danger { color: var(--pink); }
.menu__item--danger:hover { background: var(--p-rot-bg); }
.menu__item svg { width: 15px; height: 15px; color: var(--text-soft); }
.menu__item--danger svg { color: var(--pink); }
.menu__sep { height: 1px; margin: 5px 0; background: var(--border); }

/* Options-Liste im Select-/Tag-Popover */
.optlist { max-height: 240px; overflow-y: auto; margin: 0; padding: 0; list-style: none; }
.optlist__item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 6px 8px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text);
  font-size: 13px;
  text-align: left;
  cursor: pointer;
}
.optlist__item:hover, .optlist__item.is-active { background: var(--hover); }
.optlist__item[aria-selected="true"] { font-weight: 600; }
.optlist__check { margin-left: auto; width: 15px; height: 15px; color: var(--tuerkis); }
.optlist__dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.opt-search { width: 100%; margin-bottom: 8px; }
.opt-new {
  display: flex;
  align-items: center;
  gap: 7px;
  width: 100%;
  margin-top: 6px;
  padding: 7px 8px;
  border: none;
  border-top: 1px solid var(--border);
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  background: transparent;
  color: var(--tuerkis);
  font-size: 12.5px;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
}
.opt-new:hover { background: var(--p-tuerkis-bg); }

/* Farbwahl-Punkte (Einstellungen / neue Option) */
.color-picker { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.color-dot {
  width: 22px; height: 22px;
  border: 2px solid transparent;
  border-radius: 50%;
  cursor: pointer;
  padding: 0;
}
.color-dot.is-active { border-color: var(--navy); }
.color-dot[data-color="grau"]    { background: var(--p-grau-fg); }
.color-dot[data-color="tuerkis"] { background: var(--tuerkis); }
.color-dot[data-color="navy"]    { background: var(--navy); }
.color-dot[data-color="gelb"]    { background: var(--gelb); }
.color-dot[data-color="gruen"]   { background: #1F9D6B; }
.color-dot[data-color="blau"]    { background: #2E77C2; }
.color-dot[data-color="amber"]   { background: #D98A1F; }
.color-dot[data-color="rot"]     { background: #E5484D; }

/* ---------- Tabelle (dicht, sticky Kopf) ---------- */

.table-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  /* V8 (SPEC D): schmale Fenster scrollen horizontal statt abzuschneiden. */
  overflow-x: auto;
  overflow-y: hidden;
}
/* Breite Tabellen (Kontaktliste): Mindestbreite → Scroll statt Quetschen. */
.table--breit { min-width: 900px; }
.table-scroll { overflow-x: auto; }

.table { width: 100%; border-collapse: collapse; font-size: 13px; }
.table th {
  position: sticky;
  top: 0;
  z-index: 2;
  text-align: left;
  padding: 10px 16px;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-soft);
  background: var(--surface-2);
  border-bottom: 1px solid var(--border);
  /* Hauchzarte Schattenkante unter dem sticky Kopf (konstant, ohne JS). */
  box-shadow: 0 1px 0 rgba(0,0,0,.04);
  white-space: nowrap;
}
.table th[data-sort] a {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: inherit;
  text-transform: inherit;
  letter-spacing: inherit;
  font: inherit;
}
.table th[data-sort] a:hover { color: var(--text-muted); text-decoration: none; }
.sort-ind {
  display: inline-block;
  width: 0; height: 0;
  opacity: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-bottom: 5px solid var(--tuerkis);
  transition: transform .12s ease;
}
.table th.is-sorted { color: var(--text-muted); }
.table th.is-sorted .sort-ind { opacity: 1; }
.table th.is-sorted[data-dir="desc"] .sort-ind { transform: rotate(180deg); }

.table td {
  padding: 0 16px;
  height: 44px;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
  color: var(--text);
}
.table tbody tr:last-child td { border-bottom: none; }
.table tbody tr.row { transition: background .12s ease; }
.table tbody tr.row:hover { background: var(--row-hover); }
.table tr.row[data-href] { cursor: pointer; }
.td-muted { color: var(--text-muted); }
.cell-muted { color: var(--text-muted); }
.cell-empty { color: var(--text-soft); }

/* Nächster Schritt (Liste) — Datum + Kurztext, rot wenn überfällig */
.next-step { display: inline-flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.next-step small { font-size: 12px; color: var(--text-soft); }
.next-step--overdue,
.next-step--overdue time,
.next-step--overdue small { color: var(--pink); font-weight: 600; }

/* Datum (Detail / AJAX) — rot wenn überfällig, amber wenn bald (≤ 14 Tage) */
.date--overdue { color: var(--pink); font-weight: 600; }
.date--soon { color: var(--p-amber-fg); font-weight: 600; }

/* ---------- Kontakt-Zelle & Avatare ---------- */

.contact-cell { display: flex; align-items: center; gap: 11px; min-width: 0; }
.contact-cell__text { display: flex; flex-direction: column; min-width: 0; }
.contact-cell__text strong,
.contact-cell__name { font-weight: 600; color: var(--text); line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.contact-cell__text small,
.contact-cell__sub { font-size: 12px; color: var(--text-soft); line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.avatar {
  width: 30px;
  height: 30px;
  flex-shrink: 0;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #FFFFFF;
  font: 600 12px/1 var(--font-body);
  letter-spacing: .02em;
  /* Feiner heller Ring + weicher Ansatzschatten. */
  box-shadow: 0 0 0 2px #FFFFFF, 0 1px 3px rgba(0,0,0,.12);
}
/* V10: einheitlich Grau — alte id%4-Klassen bleiben als Alias erhalten. */
.avatar--grau,
.avatar--0, .avatar--1, .avatar--2, .avatar--3 { background: var(--grau); }
.avatar--lg { width: 52px; height: 52px; font-size: 19px; }

/* ---------- Karten ---------- */

.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  padding: 20px 22px;
  transition: box-shadow .18s ease;
}
.card:hover { box-shadow: var(--shadow-md); }
.card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
}
.card__head h2 { margin: 0; }
.card + .card { margin-top: 18px; }

/* ---------- Detailseite ---------- */

.back {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-bottom: 14px;
  font-size: 13px;
  color: var(--text-muted);
}
.back:hover { color: var(--tuerkis); text-decoration: none; }
.back svg { width: 14px; height: 14px; }

.detail-head {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 22px;
}
.detail-head__main { display: flex; align-items: center; gap: 14px; min-width: 0; }
.detail-head h1 { margin: 0; font-size: 21px; }
.detail-head__title { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.detail-head__meta { display: flex; align-items: center; gap: 8px; }
.detail-head .page-actions { margin-left: auto; }

/* Kopf-Identität: großer inline-editierbarer Name + Typ-Pill darunter.
   V4: Namen in EINER Zeile — kein Umbruch mitten im Wort, ellipsis bei Überlänge. */
.detail-head__main { flex: 1 1 auto; min-width: 0; }
.detail-head__ident { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.detail-head__names {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: nowrap;
  white-space: nowrap;
  min-width: 0;
  overflow: hidden;
}
.detail-head__names .attr--head { flex: 0 1 auto; min-width: 0; overflow: hidden; }
/* .attr.attr--head: schlägt die spätere .attr-Grid-Regel (Spezifität) —
   sonst quetscht die 118px-Labelspalte den Namen zusammen. */
.attr.attr--head {
  display: block;
  min-height: 0;
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  cursor: text;
}
.attr.attr--head:hover { background: var(--hover); }
.attr--head .attr__value--name {
  display: block;
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 21px;
  letter-spacing: -.01em;
  line-height: 1.2;
  color: var(--navy);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.attr.attr--head-pill {
  display: inline-flex;
  align-items: center;
  min-height: 0;
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  width: max-content;
  max-width: 100%;
  cursor: pointer;
}
.attr.attr--head-pill:hover { background: var(--hover); }
.attr--head-pill .attr__value { display: inline-flex; }

/* V4.2: Attribute links (~60 %), Aktivität rechts (~40 %). */
.detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
  gap: 22px;
  align-items: start;
}

/* ---------- Attribut-Panel (Attio-Inline-Editing) ---------- */

.detail-attrs { min-width: 0; }
.attr-group { margin-bottom: 6px; }
.attr-group + .attr-group { margin-top: 14px; }

/* V4: Abschnitte als Karten in zwei Spalten — weniger vertikales Gestapel. */
.detail-attrs--grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  align-items: start;
}
.detail-attrs--grid .attr-group,
.detail-attrs--grid .attr-group + .attr-group {
  margin: 0;
  padding: 14px 14px 10px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
}
.attr-group__title {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-soft);
  padding: 0 8px 4px;
  margin: 0;
}
.attr--static:hover { background: transparent; cursor: default; }

.attr {
  display: grid;
  grid-template-columns: minmax(118px, max-content) minmax(0, 1fr);
  align-items: center;
  column-gap: 12px;
  min-height: 34px;
  padding: 3px 8px;
  border-radius: var(--radius-sm);
  position: relative;
}
.attr[data-edit] { cursor: text; }
.attr[data-edit]:hover { background: var(--hover); }
.attr__label {
  font-size: 12.5px;
  color: var(--text-muted);
  align-self: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.attr__value {
  font-size: 13.5px;
  color: var(--text);
  min-width: 0;
  overflow-wrap: anywhere;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.attr__value[data-tags] { gap: 5px; }
.attr__value a { color: var(--tuerkis); }
.attr__empty { color: var(--text-soft); font-style: normal; }
.attr[data-edit]:hover .attr__empty::after {
  content: "";
}
.attr--readonly:hover { background: transparent; cursor: default; }

/* Inline-Editor (vom JS eingesetzt) */
.attr-editor { display: flex; align-items: center; gap: 6px; width: 100%; }
.attr-editor input, .attr-editor textarea, .attr-editor select { width: 100%; }
.attr-editor textarea { min-height: 60px; }
.attr.is-editing { background: transparent; }
.attr.is-saving { opacity: .55; }

/* ---------- Aktivität: Composer, Tabs, Timeline ---------- */

.composer { display: flex; flex-direction: column; gap: 9px; margin-bottom: 4px; }
.composer__input { width: 100%; min-height: 66px; }
.composer__foot { display: flex; align-items: center; justify-content: flex-end; }

.tabs {
  display: inline-flex;
  gap: 2px;
  margin: 14px 0 4px;
  padding: 3px;
  background: var(--surface-2);
  border-radius: var(--radius-sm);
}
.tabs button {
  padding: 5px 12px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-muted);
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
}
.tabs button:hover { color: var(--text); }
.tabs button.is-active { background: var(--surface); color: var(--navy); box-shadow: var(--shadow-card); }

.timeline { list-style: none; margin: 10px 0 0; padding: 0; }
.timeline__item {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  padding: 12px 0;
  border-top: 1px solid var(--border);
  font-size: 13.5px;
  overflow-wrap: anywhere;
}
.timeline__item:first-child { border-top: none; }
.timeline__body { min-width: 0; flex: 1; }
.timeline__meta {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 5px;
  font-size: 12px;
  color: var(--text-soft);
}
.timeline__meta time { color: var(--text-soft); }
.timeline__system { color: var(--text-muted); }
.timeline__system strong { color: var(--text); font-weight: 600; }

.note__text { color: var(--text); line-height: 1.55; }
.note__edited { color: var(--text-soft); }
.note__actions { display: inline-flex; gap: 8px; margin-left: 4px; opacity: 0; transition: opacity .12s ease; }
.timeline__item:hover .note__actions { opacity: 1; }
.note__actions button {
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  padding: 0;
}
.note__actions button:hover { color: var(--tuerkis); }
.note__actions button[data-note-delete]:hover { color: var(--pink); }
.note-edit { display: flex; flex-direction: column; gap: 8px; }
.note-edit textarea { width: 100%; min-height: 60px; }
.note-edit__foot { display: flex; align-items: center; gap: 8px; }

.actor-chip {
  width: 26px;
  height: 26px;
  flex-shrink: 0;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #FFFFFF;
  font: 600 12px/1 var(--font-body);
  box-shadow: 0 0 0 2px #FFFFFF, 0 1px 2px rgba(0,0,0,.10);
}
.actor-chip--jasmin { background: var(--navy); }
.actor-chip--karl { background: var(--tuerkis); }

/* ---------- Einstellungen — Auswahllisten ---------- */

.settings-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  align-items: start;
}
/* V19b: Anker-Menü über den Einstellungen — jeder Bereich direkt anspringbar;
   scroll-margin sorgt für Luft beim Anspringen. */
.einst-anker { display: flex; flex-wrap: wrap; gap: 6px; margin: -6px 0 18px; }
.einst-anker__chip {
  font-size: 12.5px; padding: 4px 12px; border: 1px solid var(--border);
  border-radius: 999px; background: var(--surface); text-decoration: none; color: var(--text-muted);
}
.einst-anker__chip:hover { border-color: var(--tuerkis); color: var(--text); }
.settings-card { scroll-margin-top: 14px; }
/* V19b (Jasmin): die generische .card+.card-Abstandsregel schob im Grid jede
   Karte außer der ersten 18px nach unten — im Grid macht das gap den Abstand. */
.settings-grid > .card + .card { margin-top: 0; }
.settings-card__head { margin-bottom: 12px; }
.settings-card__title { margin: 0 0 3px; }
.settings-card__hint { margin: 0; font-size: 12.5px; color: var(--text-muted); }

.option-list { list-style: none; margin: 0 0 14px; padding: 0; }
.option-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 8px 4px;
  border-bottom: 1px solid var(--border);
}
.option-row:last-child { border-bottom: none; }
.option-row--inactive { opacity: .5; }
.option-row--empty { justify-content: center; }

.option-edit {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  flex: 1;
  min-width: 0;
}
.option-preview { flex-shrink: 0; }
.option-edit__label { flex: 1; min-width: 90px; }

.option-toggle { flex-shrink: 0; }
.option-del { display:inline-flex; }
.option-del__btn { min-width: 34px; }
.option-toggle__btn { min-width: 62px; }

.option-add {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding-top: 6px;
  border-top: 1px solid var(--border);
}
.option-add__label { flex: 1; min-width: 120px; }

/* Farbwahl-Radios (Einstellungen): echte Farb-Punkte statt roher Radios */
.colorpick { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.colorpick__item { display: inline-flex; cursor: pointer; line-height: 0; }
.colorpick__item input { position: absolute; opacity: 0; width: 0; height: 0; margin: 0; }
.colorpick__dot {
  width: 20px; height: 20px;
  border: 2px solid transparent;
  border-radius: 50%;
  box-sizing: border-box;
}
.colorpick__item input:checked + .colorpick__dot { border-color: var(--navy); }

.colorpick__item input:focus-visible + .colorpick__dot { outline: 2px solid var(--tuerkis); outline-offset: 2px; }
/* Kräftiger Farb-Punkt (nicht der weiche Pill-Grund) */
.colorpick__dot.pill--grau    { background: var(--p-grau-fg); }
.colorpick__dot.pill--tuerkis { background: var(--tuerkis); }
.colorpick__dot.pill--navy    { background: var(--navy); }
.colorpick__dot.pill--gelb    { background: var(--gelb); }
.colorpick__dot.pill--gruen   { background: #1F9D6B; }
.colorpick__dot.pill--blau    { background: #2E77C2; }
.colorpick__dot.pill--amber   { background: #D98A1F; }
.colorpick__dot.pill--rot     { background: #E5484D; }

/* ---------- Neuer-Kontakt-Panel / Formular ---------- */

.panel-wrap { max-width: 640px; }
.card--form { margin-top: 4px; }

.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; }
.form-grid--2 { grid-template-columns: 1fr 1fr; }
.form-grid .full { grid-column: 1 / -1; }

.field { display: flex; flex-direction: column; min-width: 0; }
.field--wide { grid-column: 1 / -1; }
.field__label {
  display: block;
  margin-bottom: 5px;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted);
}
.field input, .field select { width: 100%; }

.form-actions { display: flex; align-items: center; gap: 10px; margin-top: 20px; }
.form-narrow { max-width: 560px; }

/* ---------- Pagination ---------- */

.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 18px;
  font-size: 13px;
  color: var(--text-muted);
}

/* ---------- Leerer Zustand ---------- */

.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  padding: 52px 24px;
  text-align: center;
  color: var(--text-muted);
}
.empty-state h2 { color: var(--text); }

/* ---------- Cmd-K Schnellsuche-Modal ---------- */

.cmdk-overlay {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 12vh;
  background: rgba(0,0,0,.30);
  -webkit-backdrop-filter: blur(2px);
  backdrop-filter: blur(2px);
}
.cmdk {
  width: 560px;
  max-width: calc(100vw - 32px);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.cmdk__head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
}
.cmdk__head svg { width: 17px; height: 17px; color: var(--text-soft); flex-shrink: 0; }
.cmdk__input {
  flex: 1;
  border: none;
  height: auto;
  padding: 0;
  font-size: 15px;
  background: transparent;
}
.cmdk__input:focus { box-shadow: none; outline: none; }
.cmdk__hint { font-size: 11px; color: var(--text-soft); border: 1px solid var(--border); border-radius: 4px; padding: 1px 5px; }
.cmdk__results { max-height: 340px; overflow-y: auto; padding: 6px; }
.cmdk__item {
  display: flex;
  align-items: center;
  gap: 11px;
  width: 100%;
  padding: 8px 10px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  text-align: left;
  cursor: pointer;
}
.cmdk__item:hover, .cmdk__item.is-active { background: var(--hover); }
.cmdk__item-name { font-weight: 600; font-size: 13.5px; color: var(--text); }
.cmdk__item-sub { font-size: 12px; color: var(--text-soft); }
.cmdk__empty { padding: 24px; text-align: center; color: var(--text-soft); font-size: 13px; }

/* ---------- Toasts ---------- */

#toast-host {
  position: fixed;
  bottom: 20px;
  right: 20px;
  z-index: 300;
  display: flex;
  flex-direction: column;
  gap: 8px;
  pointer-events: none;
}
.toast {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 200px;
  max-width: 360px;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  background: var(--navy-deep);
  color: #FFFFFF;
  font-size: 13px;
  font-weight: 500;
  /* Tiefer Schatten + feiner türkiser Akzentbalken links. */
  box-shadow: var(--shadow-lg), inset 3px 0 0 0 var(--tuerkis);
  pointer-events: auto;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .18s ease, transform .18s ease;
}
.toast.is-in { opacity: 1; transform: translateY(0); }
.toast--ok { background: var(--navy-deep); }
.toast--fehler { background: var(--pink); box-shadow: var(--shadow-lg), inset 3px 0 0 0 rgba(255,255,255,.85); }
.toast__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--tuerkis); flex-shrink: 0; }
.toast--fehler .toast__dot { background: #FFFFFF; }

/* ---------- Login ---------- */

body.login-page {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
  /* Ruhige, flache Apple-Bühne. */
  background: var(--bg);
}
.login-card {
  width: 380px;
  max-width: 100%;
  padding: 36px 34px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
}
/* V11: Jasmins Logo über dem Titel — im Dunkelmodus auf weißer Platte (Logo-Farben sind dunkel). */
.login-card__logo { display: block; width: 220px; height: auto; margin: 0 auto 14px; }
.login-card h1 { font-size: 28px; margin-bottom: 6px; }
.login-card h1 span { color: var(--tuerkis); }
.login-card p { margin: 0 0 18px; color: var(--text-muted); }
.login-card form { display: flex; flex-direction: column; gap: 13px; }
.login-card input { width: 100%; height: 38px; }
.login-card .btn { width: 100%; height: 38px; }

/* ---------- Flash (serverseitig, POST→Redirect) ---------- */

.flash {
  padding: 11px 15px;
  margin-bottom: 16px;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  font-size: 13.5px;
  transition: opacity .5s ease;
}
.flash--ok { background: var(--p-tuerkis-bg); border-color: #C6E7E5; color: #04605C; }
.flash--fehler { background: var(--p-rot-bg); border-color: #F4C9CB; color: #B5363B; }
.flash--hide { opacity: 0; }

/* ============================================================
   V3 — Pipeline (Kanban), Aktivitäts-Arten, Dokumente
   Attio-Ruhe: feine Linien, weiche Grundtöne, farbige Stage-Pills.
   Pink ausschließlich für Verloren / Löschen / Fehler.
   Kanban-Motor generisch (später für Aufgaben wiederverwendbar).
   ============================================================ */

/* ---------- Pipeline-Kopf: Summenzeile ---------- */

.pipeline-summary {
  display: flex;
  align-items: stretch;
  gap: 0;
  flex-wrap: wrap;
  margin-bottom: 18px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}
.pipeline-summary__item {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 12px 20px;
  min-width: 150px;
  border-right: 1px solid var(--border);
}
.pipeline-summary__item:last-child { border-right: none; }
.pipeline-summary__label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-soft);
}
.pipeline-summary__value {
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 19px;
  line-height: 1.2;
  color: var(--navy);
  font-variant-numeric: tabular-nums;
}
.pipeline-summary__value--gruen { color: var(--p-gruen-fg); }

/* ---------- Kanban-Board ---------- */

/* V4/V8.3: Grid über die volle Breite — ALLE Stages nebeneinander. Passt es
   nicht (z. B. 1280px-Laptop mit ausgeklappter Sidebar), scrollt das Board
   horizontal statt in zwei Zeilen umzubrechen (auto-flow column). */
.kanban {
  display: grid;
  grid-auto-flow: column;
  /* V21f (Jasmin, 16-Zoll-Check): Spalten quetschen sich nicht mehr unter
     260px — das Board scrollt stattdessen horizontal (wie bei den Aufgaben). */
  grid-auto-columns: minmax(260px, 1fr);
  gap: 12px;
  width: 100%;
  align-items: start;
  padding-bottom: 12px;
  overflow-x: auto;
}

.kanban-col {
  display: flex;
  flex-direction: column;
  min-width: 0;
  max-height: calc(100vh - 190px);
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}

.kanban-col__head {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 11px 13px;
  background: var(--surface-2);
  border-bottom: 1px solid var(--border);
  border-radius: var(--radius) var(--radius) 0 0;
  /* V23: Spalte am Kopf greifen und verschieben. */
  cursor: grab;
  touch-action: pan-y;
}
.kanban-col__head:active { cursor: grabbing; }
.kanban-col__title { cursor: grab; }
/* V23: Geist am Zeiger + Platzhalter (Muster Dashboard-Kacheln). */
.kanban-col--dragging {
  box-shadow: 0 16px 40px rgba(20, 30, 50, .22);
  opacity: .96;
  transform: rotate(1deg);
}
.kanban-col-platz {
  border: 2px dashed var(--border);
  border-radius: var(--radius);
  background: var(--surface-2);
  opacity: .5;
}
.kanban-col__meta {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-soft);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.kanban-col__body {
  display: flex;
  flex-direction: column;
  gap: 9px;
  min-height: 64px;
  padding: 11px;
  overflow-y: auto;
  flex: 1 1 auto;
  transition: background .14s ease;
}

/* Dropzone-Highlight beim Ziehen (türkis, ruhig) — weicher Innenschein
   statt harter Kante. */
.kanban-col--over .kanban-col__body {
  background: var(--p-tuerkis-bg);
  box-shadow: inset 0 0 0 1px rgba(1,160,154,.26), inset 0 0 22px rgba(1,160,154,.14);
}

/* Leere Spalte: dezente Dropzone-Hinweisfläche */
.kanban-col__body:empty::after {
  content: "Deals hierher ziehen";
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 60px;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-sm);
  color: var(--text-soft);
  font-size: 12px;
  text-align: center;
  padding: 8px;
}

.kanban-col__add {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  padding: 9px 13px;
  border: none;
  border-top: 1px solid var(--border);
  border-radius: 0 0 var(--radius) var(--radius);
  background: transparent;
  color: var(--text-soft);
  font-family: var(--font-body);
  font-size: 12.5px;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
  transition: background .14s ease, color .14s ease;
}
.kanban-col__add:hover { background: var(--hover); color: var(--tuerkis); }

/* ---------- Kanban-Karte ---------- */

.kanban-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 11px 12px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-card);
  cursor: grab;
  user-select: none;
  transition: border-color .14s ease, box-shadow .14s ease, transform .12s ease;
  overflow-wrap: break-word;
}
.kanban-card:hover { border-color: var(--border-strong); }
.kanban-card:hover:not(.kanban-card--dragging) { box-shadow: var(--shadow-md); transform: translateY(-1px); }

/* V16: Erledigte Aufgaben treten optisch zurück — heller statt durchgestrichen,
   beim Überfahren wieder voll lesbar. Wirkt in beiden Themes (Opacity).
   V17 (Jasmin): dasselbe für abgeschlossene Deals (Gewonnen/Verloren). */
.kanban-col[data-status="erledigt"] .kanban-card,
.kanban-col[data-stage="gewonnen"] .kanban-card,
.kanban-col[data-stage="verloren"] .kanban-card { opacity: .5; }
.kanban-col[data-status="erledigt"] .kanban-card:hover,
.kanban-col[data-stage="gewonnen"] .kanban-card:hover,
.kanban-col[data-stage="verloren"] .kanban-card:hover,
.kanban--select .kanban-col .kanban-card.is-selected { opacity: 1; }
.kanban-card:active { cursor: grabbing; }

.kanban-card__title {
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 13.5px;
  line-height: 1.3;
  color: var(--navy);
  overflow-wrap: anywhere;
}
.kanban-card__contact {
  font-size: 12.5px;
  color: var(--text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.kanban-card__foot {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 1px;
}
.kanban-card__value {
  font-weight: 700;
  font-size: 13px;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.kanban-card__due {
  font-size: 12px;
  color: var(--text-soft);
  font-variant-numeric: tabular-nums;
}
.kanban-card__due.date--overdue { color: var(--pink); font-weight: 600; }

/* Drag-Zustände */
.kanban-card--dragging {
  opacity: .55;
  transform: rotate(1.5deg);
  box-shadow: var(--shadow-lg);
}

/* ---------- Aktivitäts-Arten: Composer-Umschalter ---------- */

.composer__arten {
  display: inline-flex;
  gap: 2px;
  padding: 3px;
  background: var(--surface-2);
  border-radius: var(--radius-sm);
  width: max-content;
  max-width: 100%;
  flex-wrap: wrap;
}
.art-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-muted);
  font-family: var(--font-body);
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  transition: background .12s ease, color .12s ease;
}
.art-btn:hover { color: var(--text); }
.art-btn.is-active { background: var(--surface); color: var(--navy); box-shadow: var(--shadow-card); }
.art-btn .art-icon { color: currentColor; }

/* ---------- Aktivitäts-Icons (Timeline + Composer) ---------- */

.art-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 15px;
  height: 15px;
  flex-shrink: 0;
  color: var(--text-soft);
}
.art-icon svg { width: 15px; height: 15px; display: block; }

/* Timeline-Marker: runder Grund je Art, ruhige Brand-Töne */
.timeline__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  flex-shrink: 0;
  border-radius: 50%;
  background: var(--surface-2);
  color: var(--text-muted);
}
.timeline__icon svg { width: 14px; height: 14px; display: block; }
.timeline__icon--call    { background: var(--p-tuerkis-bg); color: var(--p-tuerkis-fg); }
.timeline__icon--meeting { background: var(--p-navy-bg);    color: var(--p-navy-fg); }
.timeline__icon--email   { background: var(--p-blau-bg);    color: var(--p-blau-fg); }
.timeline__icon--notiz   { background: var(--surface-2);    color: var(--text-muted); }

/* ---------- Dokumente-Abschnitt ---------- */

.docs { display: flex; flex-direction: column; gap: 10px; }
.docs__list { list-style: none; margin: 0; padding: 0; }

.doc {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 8px 4px;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.doc:last-child { border-bottom: none; }
.doc__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  flex-shrink: 0;
  border-radius: var(--radius-sm);
  background: var(--surface-2);
  color: var(--text-muted);
}
.doc__icon svg { width: 14px; height: 14px; display: block; }
.doc__icon--lexoffice { background: var(--p-navy-bg);    color: var(--p-navy-fg); }
.doc__icon--google    { background: var(--p-gelb-bg);    color: var(--p-gelb-fg); }
.doc__icon--sonstige  { background: var(--surface-2);    color: var(--text-muted); }
.doc__link {
  flex: 1;
  min-width: 0;
  color: var(--tuerkis);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.doc__del {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  font-size: 15px;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transition: opacity .12s ease, background .12s ease, color .12s ease;
}
.doc:hover .doc__del { opacity: 1; }
.doc__del:hover { background: var(--p-rot-bg); color: var(--pink); }

.doc-add {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding-top: 4px;
}
.doc-add input[name="label"] { flex: 1 1 130px; min-width: 0; }
.doc-add input[name="url"] { flex: 2 1 180px; min-width: 0; }
.doc-add select { flex: 0 0 auto; }

/* ============================================================
   V4 — Feinschliff: Spalten-Toggle, Bulk-Leiste, Typeahead
   ============================================================ */

/* ---------- Spalten ein-/ausblenden (Kontaktliste) ---------- */

.col-hidden { display: none !important; }

.popover--cols { min-width: 200px; padding: 8px; }
.cols-item {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 6px 8px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  color: var(--text);
  cursor: pointer;
  user-select: none;
}
.cols-item:hover { background: var(--hover); }
.cols-item input {
  width: 15px;
  height: 15px;
  margin: 0;
  flex-shrink: 0;
  accent-color: var(--tuerkis);
}

/* ---------- Bulk-Auswahl: Checkbox-Spalte + Leiste ---------- */

.table th.col-check,
.table td.col-check { width: 36px; padding: 0 2px 0 12px; }
.col-check input {
  width: 15px;
  height: 15px;
  margin: 0;
  display: block;
  cursor: pointer;
  accent-color: var(--tuerkis);
}

.bulkbar {
  position: sticky;
  bottom: 14px;
  z-index: 50;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 14px;
  padding: 10px 14px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
}
.bulkbar__count {
  font-size: 13px;
  font-weight: 700;
  color: var(--navy);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.bulkbar select { max-width: 180px; }
.bulkbar__label { font-size: 12px; color: var(--text-muted); white-space: nowrap; }
/* V22: gewählte Labels der Massenänderung als Pillen neben dem Wähler. */
.bulkbar__tags { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }

/* V16: Auswahl-Modus auf den Kanban-Boards — Kreis oben rechts je Karte,
   ausgewählte Karten bekommen Haken + Türkis-Ring. */
.kanban--select .kanban-card { cursor: pointer; position: relative; }
.kanban--select .kanban-card::after {
  content: '';
  position: absolute; top: 8px; right: 8px;
  width: 18px; height: 18px; border-radius: 50%;
  border: 2px solid var(--border-strong);
  background: var(--surface);
  font-size: 12px; line-height: 15px; text-align: center; font-weight: 700;
}
.kanban--select .kanban-card.is-selected { outline: 2px solid var(--tuerkis); outline-offset: 1px; }
/* V22: im Auswahl-Modus zählt „alle wählen" — die Ausblenden-Werkzeuge des
   Spaltenkopfs weichen so lange (die Bulk-Leiste kann das ohnehin). */
.kanban--select .kanban-col__tool[data-hide-done],
.kanban--select .kanban-col__tool[data-show-done] { display: none; }
.kanban--select .kanban-card.is-selected::after {
  content: '✓';
  color: #fff; background: var(--tuerkis); border-color: var(--tuerkis);
}
.bulkbar__note {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1 1 260px;
  min-width: 200px;
}
.bulkbar__note input,
.bulkbar__note textarea { flex: 1; min-width: 0; }

/* V17: zweite Untergruppe in einer Karten-Spalte (Adresse → Firma). */
.subsection--folgend { margin-top: 18px; }

/* V17: Erledigte aus-/einblenden — Auge auf der Karte, Werkzeuge im Spaltenkopf. */
.task-hide {
  margin-left: auto;
  border: 0; background: transparent; padding: 2px;
  color: var(--text-soft); cursor: pointer; line-height: 0; border-radius: 6px;
}
.task-hide:hover { color: var(--text); background: var(--hover); }
.kanban-card--verborgen { border-style: dashed; }
.kanban-col__tool {
  border: 0; background: transparent; padding: 0 2px;
  font-size: 11.5px; color: var(--text-soft); cursor: pointer; text-decoration: none;
}
.kanban-col__tool:hover { color: var(--text); text-decoration: underline; }

/* V18: Spalte zuklappen — Chevron im Kopf; zugeklappt bleiben Kopf +
   Hinweiszeile, Karten und Quick-Add verschwinden. */
.kanban-col__zu {
  border: 0; background: transparent; padding: 2px;
  color: var(--text-soft); cursor: pointer; line-height: 0; border-radius: 6px;
}
.kanban-col__zu:hover { color: var(--text); background: var(--hover); }
.kanban-col__zu svg { transition: transform .15s ease; }
.kanban-col--zu .kanban-col__zu svg { transform: rotate(-90deg); }
.kanban-col--zu .kanban-col__body,
.kanban-col--zu .kanban-col__add,
.kanban-col--zu .kanban-quickadd { display: none; }
.kanban-col--zu { cursor: pointer; max-height: none; }
.kanban-col--zu::after {
  content: attr(data-zu-info);
  display: block;
  padding: 10px 12px 12px;
  font-size: 12px;
  color: var(--text-soft);
  text-align: center;
}

/* ---------- V16: Automatisierungen-Seite ---------- */
.automatik-intro { margin: -6px 0 18px; font-size: 13.5px; max-width: 720px; }
.auto-liste { display: grid; gap: 14px; }
.auto-zeile { border-top: 1px solid var(--border); padding-top: 12px; }
.auto-zeile:first-child { border-top: 0; padding-top: 0; }
.auto-zeile__kopf { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.auto-zeile__text { margin: 4px 0 0; font-size: 13.5px; color: var(--text-muted); max-width: 720px; }
.auto-zeile__meta { margin: 4px 0 0; font-size: 12.5px; color: var(--text-soft); font-variant-numeric: tabular-nums; }
/* V17: Schalter + Fristen-Eingaben + Technik-Erklärung. */
.auto-schalter { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; }
.auto-fristen { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 8px; }
.auto-fristen label { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-muted); }
.auto-frist { width: 64px; text-align: right; }
.auto-inline { display: inline-flex; align-items: center; gap: 6px; }
.auto-zeile--aktionen { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
/* V18: Wächter — Anstoß-Knopf in der Status-Zeile + Dashboard-Warnung. */
.auto-zeile__meta--status { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.auto-anstoss { height: 24px; padding: 0 10px; font-size: 12px; }
.auto-warnung {
  margin: 0 0 16px;
  padding: 10px 14px;
  background: var(--p-rot-bg, rgba(255,0,104,.08));
  border: 1px solid var(--pink);
  border-radius: var(--radius);
  font-size: 13.5px;
}
.auto-warnung a { font-weight: 600; }
.auto-warnung__hinweis { color: var(--text-muted); }

.automatik-technik { margin-bottom: 16px; }
.automatik-technik__summary { cursor: pointer; margin-bottom: 0; }
.automatik-technik__text { max-width: 760px; }
.automatik-technik__text p { margin: 8px 0 0; }

/* ---------- V19b: Automatik-Status-Kachel (Übersicht) ---------- */
.auto-status { display: grid; gap: 7px; }
.auto-status__zeile { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; line-height: 1.5; }
.auto-status__punkt { width: 9px; height: 9px; border-radius: 50%; background: var(--text-soft); flex-shrink: 0; align-self: flex-start; margin-top: 5px; }
.auto-status__zeile--gelaufen .auto-status__punkt { background: var(--gruen, #34c759); }
.auto-status__zeile--ausstehend .auto-status__punkt { background: var(--gelb, #f6bc26); }
.auto-status__zeile--verpasst .auto-status__punkt,
.auto-status__zeile--fehler .auto-status__punkt { background: var(--pink); }
.auto-status__label { font-weight: 600; white-space: nowrap; }
.auto-status__text { color: var(--text-muted); font-size: 12.5px; }
.auto-status__zeile--verpasst .auto-status__text,
.auto-status__zeile--fehler .auto-status__text { color: var(--pink); }
.auto-status__zeile--aus { opacity: .55; }

/* V20c: Anstoß direkt aus der Kachel — Knopf rechtsbündig, dezent. */
.auto-status__anstoss { margin-left: auto; flex-shrink: 0; }
.auto-status__wartet { margin-left: auto; flex-shrink: 0; font-size: 11.5px; color: var(--gruen, #34c759); white-space: nowrap; }
.auto-zeile__anstoss-hinweis { color: var(--text-soft); font-size: 12px; }

/* V20c/V21: heutige Kalender-Termine rechts neben dem Gruß (Jasmin). */
.dash-greet__termine { margin: 4px 0 0; font-size: 13px; color: var(--text); text-align: right; max-width: 460px; }
.dash-greet__termine .dash-termin { display: block; line-height: 1.6; }
.dash-termin__zeit { font-weight: 600; color: var(--tuerkis, #01a09a); font-variant-numeric: tabular-nums; }
.dash-termin--mehr, .dash-termin--leer { color: var(--text-muted); }
.dash-termine__label { display: block; margin-top: 4px; font-size: 11.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--text-soft); }
.dash-greet__termine .dash-termine__label:first-child { margin-top: 0; }
@media (max-width: 900px) { .dash-greet__termine { text-align: left; max-width: none; } }

/* ---------- V19: Meetings-Übersicht (meetlist-Ersatz) ---------- */
.meet-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
@media (max-width: 1100px) { .meet-grid { grid-template-columns: 1fr; } }

.meet-monate { display: flex; align-items: flex-end; gap: 10px; padding: 6px 2px 0; overflow-x: auto; }
.meet-monat { display: flex; flex-direction: column; align-items: center; gap: 4px; min-width: 34px; }
.meet-monat__wert { font-size: 11.5px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.meet-monat__balken { width: 22px; background: var(--tuerkis); border-radius: 6px 6px 2px 2px; }
.meet-monat__label { font-size: 11px; color: var(--text-soft); white-space: nowrap; }

.meet-ranking { display: grid; gap: 5px; max-height: 460px; overflow-y: auto; padding-right: 4px; }
/* V20b (Jasmin): kompakt und einzeilig — Name | dünner Balken | 28× · 29 % | Datum. */
.meet-rang { display: grid; grid-template-columns: minmax(120px, 170px) 1fr 92px 78px; align-items: center; gap: 10px; }
.meet-gruppe { margin: 10px 0 6px; font-size: 11.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--text-soft); }
.meet-gruppe:first-of-type { margin-top: 0; }
.meet-gruppe__anzahl { font-weight: 600; color: var(--text-soft); }
.meet-rang__name { font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.meet-rang__balken { height: 6px; background: var(--hover); border-radius: 999px; overflow: hidden; }
.meet-rang__balken span { display: block; height: 100%; background: var(--tuerkis); border-radius: 999px; }
.meet-rang__zahl { font-size: 12px; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.meet-rang__letzte { font-size: 12px; color: var(--text-soft); text-align: right; font-variant-numeric: tabular-nums; }
.meet-rang__letzte--weg { color: var(--pink); font-weight: 600; }

.meet-liste { display: grid; gap: 0; }
/* V20 (Jasmin): feste Spalten — Datum | 👤n | Art | Titel | Dauer | Teilnehmer,
   alles auf einer sauberen Linie. */
.meet-zeile {
  display: grid;
  grid-template-columns: 80px 44px 132px minmax(180px, 1.2fr) 70px 2fr;
  align-items: baseline;
  gap: 10px;
  padding: 9px 0;
  border-top: 1px solid var(--border);
}
.meet-zeile:first-child { border-top: 0; }
@media (max-width: 1100px) { .meet-zeile { grid-template-columns: 80px 44px 1fr 70px; } .meet-zeile__pill, .meet-zeile__leute { display: none; } }
.meet-zeile__datum { font-size: 12.5px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.meet-zeile__titel { font-weight: 600; font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.meet-zeile__anzahl { font-size: 12px; color: var(--text-soft); font-variant-numeric: tabular-nums; }
.meet-zeile__dauer { font-size: 12.5px; color: var(--text-muted); font-variant-numeric: tabular-nums; text-align: right; }
.meet-zeile__leute { display: inline-flex; gap: 5px; flex-wrap: wrap; }
.meet-chip { font-size: 12px; padding: 1px 8px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); text-decoration: none; }
.meet-chip:hover { border-color: var(--border-strong); }

/* ---------- V16: Aufgaben-Leiste über der Kontakt-Kartei ---------- */
.task-strip { margin-bottom: 16px; padding-top: 14px; padding-bottom: 12px; }
.task-strip__kopf { display: flex; align-items: baseline; justify-content: space-between; gap: 12px 24px; flex-wrap: wrap; }
.task-strip__titel { margin-bottom: 4px; display: flex; align-items: baseline; gap: 10px; }
.task-strip__anzahl { font-size: 12px; font-weight: 700; color: var(--text-muted); background: var(--hover); border-radius: 999px; padding: 1px 8px; }
.task-strip__kopf .vorlage-form { margin-top: 0; }
.task-strip__leer { margin: 2px 0 0; font-size: 13px; }
/* Aufgaben fließen platzsparend in Spalten, statt eine lange Liste zu bilden. */
.task-mini-list--strip { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 2px 28px; }

/* ---------- Kontakt-Typeahead ---------- */

.typeahead { position: relative; width: 100%; min-width: 0; }
.typeahead__input { width: 100%; padding-right: 30px; }
.typeahead__clear {
  position: absolute;
  top: 6px;
  right: 5px;
  display: none;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  padding: 0;
  border: none;
  border-radius: 50%;
  background: transparent;
  color: var(--text-soft);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
}
.typeahead--filled .typeahead__clear { display: inline-flex; }
.typeahead__clear:hover { background: var(--p-rot-bg); color: var(--pink); }
.typeahead__list {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  z-index: 70;
  margin: 0;
  padding: 5px;
  list-style: none;
  max-height: 260px;
  overflow-y: auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
}
.typeahead__item {
  display: flex;
  flex-direction: column;
  gap: 1px;
  padding: 7px 9px;
  border-radius: var(--radius-sm);
  font-size: 13.5px;
  color: var(--text);
  cursor: pointer;
}
.typeahead__item small { font-size: 12px; color: var(--text-soft); }
.typeahead__item:hover,
.typeahead__item.is-active { background: var(--hover); }

/* ---------- Responsive ---------- */

/* < 1200px: Attribut-Karten wieder einspaltig */
@media (max-width: 1199px) {
  .detail-attrs--grid { grid-template-columns: minmax(0, 1fr); }
}

/* < 1200px: Kanban horizontal scrollbar mit fester Spaltenbreite — beide
   Boards (V8.3: vorher <1000px/230px; verhindert den Spalten-Umbruch in
   zwei Zeilen bei Tablet-Landscape mit Sidebar). Das auto-fit-Grid gilt
   erst ab 1200px Viewport. */
@media (max-width: 1199px) {
  .kanban {
    display: flex;
    align-items: flex-start;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .kanban-col { flex: 0 0 260px; width: 260px; min-width: 260px; }
}

/* < 1100px: optionale Spalten ausblenden
   (V4.2: .detail-grid stapelt erst unter 900px — siehe unten) */
@media (max-width: 1099px) {
  .col-optional { display: none; }
  .main { padding: 22px 22px 56px; }
  .settings-grid { grid-template-columns: 1fr; }
}

/* < 760px: Sidebar → Topbar mit Burger-Overlay (V8.2 — löst die frühere
   Row-Nav ab); Tabellen bleiben Tabellen und scrollen horizontal in ihren
   Karten (V8.2 — der frühere Karten-Stapel ohne Labels entfällt). */
@media (max-width: 759px) {
  body.app { flex-direction: column; }

  /* Topbar: Brand links, Burger rechts — Nav + Footer erst im Overlay.
     Die .sidebar--collapsed-Varianten neutralisieren den Desktop-Zustand
     aus localStorage (spätere Regel gleicher Spezifität gewinnt). */
  .sidebar, .sidebar--collapsed {
    position: static;
    width: 100%;
    height: auto;
    flex-direction: column;
    gap: 0;
    padding: 6px 14px;
    border-right: none;
    border-bottom: 1px solid var(--border);
  }
  .sidebar .sidebar__brand {
    width: 100%;
    justify-content: space-between;
    align-items: center;
    padding: 0;
  }
  .sidebar .sidebar__brand-link { display: block; }
  .sidebar .sidebar__toggle { display: inline-flex; width: 40px; height: 40px; }
  .sidebar__section, .sidebar__sep { display: none; }
  .sidebar .sidebar__nav, .sidebar .sidebar__footer { display: none; }

  /* Offenes Overlay (JS toggelt body.mobilenav-open): komplette Nav als
     Liste, Untermenüs aufgeklappt, Einstellungen/Papierkorb/Abmelden unten,
     Body-Scroll gesperrt. Schließen via Burger, Link-Klick oder Escape. */
  body.mobilenav-open { overflow: hidden; }
  body.mobilenav-open .sidebar {
    position: fixed;
    inset: 0;
    z-index: 120;
    height: 100vh;
    overflow-y: auto;
    border-bottom: none;
    padding: 6px 14px 16px;
  }
  body.mobilenav-open .sidebar .sidebar__nav {
    display: flex;
    flex-direction: column;
    overflow: visible;
    padding: 8px 0 0;
    /* V14-Fix: flex-shrink 0 statt 1 — sonst schrumpft die Nav bei kleiner
       Viewport-Höhe und ihre Einträge überlappen den Footer. Mit 0 wächst
       der Inhalt nach unten und das Overlay scrollt (overflow-y: auto oben). */
    flex: 1 0 auto;
  }
  body.mobilenav-open .sidebar .sidebar__footer {
    display: flex;
    flex-direction: column;
    border-top: 1px solid var(--border);
    padding: 10px 0 2px;
    margin-top: auto;
  }
  body.mobilenav-open .sidebar .sidebar__user { display: flex; }
  body.mobilenav-open .sidebar .nav-sub { display: block; }
  .sidebar .nav-item__chev { display: none; }   /* Untermenüs sind immer offen */
  .sidebar .nav-item--parent { padding-right: 10px; }
  .sidebar .nav-item { justify-content: flex-start; padding: 10px; white-space: nowrap; }
  .sidebar .nav-item__label { display: inline; }
  .sidebar .nav-sub__item { padding: 10px 10px 10px 37px; }

  .main, body.sidebar-collapsed .main { margin-left: 0; padding: 16px 14px 48px; }
  .form-grid { grid-template-columns: 1fr; }
  .cmdk { width: calc(100vw - 24px); }

  /* Kanban bleibt horizontal scrollbar — feste 260px-Spalten (SPEC v8.2:
     statt 82vw), die nächste Spalte lugt als Scroll-Hinweis herein. */
  .kanban-col { flex: 0 0 260px; width: 260px; min-width: 260px; max-height: none; }
  .kanban-col__body { max-height: 62vh; }
  .pipeline-summary__item { flex: 1 1 45%; min-width: 130px; }
  .doc-add input[name="label"], .doc-add input[name="url"] { flex-basis: 100%; }
}

/* ============================================================
   V4.1 — Pipeline-Politur + Kundentyp-Farbpunkte
   Spalten zart getönt statt bunter Pills; Quelle neutral;
   Motivkompass als kräftige Punkte mit hauchdünner Kontur.
   ============================================================ */

/* ---------- Kanban-Spalten: zarter Flächenton + 2px-Oberkante ----------
   Tint = Soft-Pill-Grund, zusätzlich ~45 % Richtung Weiß aufgehellt.
   Karten bleiben weiß; deal_move/DOM unverändert (nur Spaltenklasse). */

.kanban-col--grau    { --col-tint: #F6F7F8; --col-strong: #5B6079; }
.kanban-col--blau    { --col-tint: #F1F6FC; --col-strong: #2E77C2; }
.kanban-col--gelb    { --col-tint: #FDF7E7; --col-strong: #F6BC26; }
.kanban-col--navy    { --col-tint: #F2F6FB; --col-strong: #053A6D; }
.kanban-col--gruen   { --col-tint: #F0F9F5; --col-strong: #1F9D6B; }
.kanban-col--rot     { --col-tint: #FDF2F2; --col-strong: #E5484D; }
/* Auch tuerkis/amber sind als Options-Farbe wählbar (Einstellungen). */
.kanban-col--tuerkis { --col-tint: #F0F9F8; --col-strong: #01A09A; }
.kanban-col--amber   { --col-tint: #FCF6EC; --col-strong: #C77E16; }

.kanban-col--grau, .kanban-col--blau, .kanban-col--gelb,
.kanban-col--navy, .kanban-col--gruen, .kanban-col--rot,
.kanban-col--tuerkis, .kanban-col--amber {
  /* Zarter Verlauf: Tint oben, Richtung unten minimal ausklingend. */
  background: linear-gradient(180deg, var(--col-tint) 0%, #FFFFFF 170%);
  border-top: 2px solid var(--col-strong);
}
.kanban-col--grau    .kanban-col__head,
.kanban-col--blau    .kanban-col__head,
.kanban-col--gelb    .kanban-col__head,
.kanban-col--navy    .kanban-col__head,
.kanban-col--gruen   .kanban-col__head,
.kanban-col--rot     .kanban-col__head,
.kanban-col--tuerkis .kanban-col__head,
.kanban-col--amber   .kanban-col__head {
  background: var(--col-tint);
}

/* Stage-Name im Spaltenkopf: keine Pill mehr — neutraler, fetter Text. */
.kanban-col__title {
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---------- Neutrale Pill (Quelle auf Deal-Karten) ---------- */

.pill--neutral {
  background: var(--surface);
  border: 1px solid var(--border-strong);
  color: var(--text-muted);
  padding: 1px 8px;   /* 1px Rahmen → Gesamthöhe wie die farbigen Pills */
}

/* ---------- Kundentyp-Farbpunkte (Motivkompass) ----------
   Kräftige Töne mit hauchdünner dunkler Kontur — lesbar auf Weiß. */

.dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.18);
}
.dot--rot   { background: #E5484D; }
.dot--gelb  { background: #F6BC26; }
.dot--gruen { background: #1F9D6B; }
.dot--blau  { background: #2E77C2; }

.motiv {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  vertical-align: middle;
}
.motiv__label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* Punkte im Auswahl-Popover: gleiche Optik, Abstand zum Label über gap. */
.optlist__item .dot { flex-shrink: 0; }

/* ---------- Pipeline-Filterzeile (Quelle) ----------
   Gleiche Anmutung wie die Kontakte-Toolbar: Select + entfernbarer Chip.
   .toolbar / .filter-chip / .filter-chip__x kommen aus V2 und gelten mit.
   Der Chip ist hier ein <a href> (funktioniert auch ohne JS). */

.pipeline-filter { display: inline-flex; align-items: center; gap: 7px; }
.pipeline-filter__label {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-soft);
}
.pipeline-filter select { max-width: 220px; }

.input--sm { height: 28px; font-size: 12.5px; padding: 4px 9px; }
select.input--sm { padding-right: 24px; }

a.filter-chip, a.filter-chip:hover { text-decoration: none; }

/* ============================================================
   V4.2 — Kontaktakte: zwei große Karten statt Einzelkästchen
   Die kleinen .attr-group-Karten (.detail-attrs--grid) bleiben
   für den Deal-Detail bestehen — hier nur die neuen Blöcke.
   ============================================================ */

.big-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  padding: 20px 22px;
  min-width: 0;
  transition: box-shadow .18s ease;
}
.big-card:hover { box-shadow: var(--shadow-md); }
.big-card + .big-card { margin-top: 18px; }
.big-card__title {
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 15px;
  color: var(--navy);
  margin: 0 0 14px;
}

/* Innenraster: Karte 1 dreispaltig (--3), Karte 2 zweispaltig (Default).
   Trennlinien hauchzart zwischen den Spalten, großzügiger Abstand. */
.big-card__cols {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 0;
  align-items: start;
}
.big-card__cols--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.big-card__cols--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.big-card__cols > * {
  min-width: 0;
  padding: 0 18px;
}
.big-card__cols > *:first-child { padding-left: 0; }
.big-card__cols > * + * { border-left: 1px solid var(--border); }
.big-card__cols + .big-card__cols {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}
.big-card__col { min-width: 0; }

/* Schmalere Label-Spalte in den großen Karten — die Werte brauchen
   in den Innen-Spalten den Platz (Basis-.attr hat 118px). */
/* V14: Labels wie „Umsatz gesamt (brutto)" nicht mehr abschneiden. */
.big-card .attr { grid-template-columns: minmax(104px, max-content) minmax(0, 1fr); }

.subsection { min-width: 0; }
.subsection__empty { font-size: 13px; padding: 0 8px; }

.subsection__title {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-soft);
  margin: 0 0 6px;
  padding: 0 8px;
}

/* Fußzeile unter den Karten: eine dezente Textzeile, KEINE Karte. */
.detail-meta,
.detail-meta-footer {
  margin: 14px 0 0;
  padding: 0 4px;
  font-size: 12.5px;
  color: var(--text-soft);
}

/* ---------- Responsive V4.1/V4.2 ---------- */

/* < 1600px: drei Innen-Spalten werden zu eng → 2 Spalten,
   die dritte Sektion rückt in voller Breite darunter. */
@media (max-width: 1599px) {
  .big-card__cols--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .big-card__cols--3 > *:nth-child(3) {
    grid-column: 1 / -1;
    border-left: none;
    border-top: 1px solid var(--border);
    padding: 14px 0 0;
  }
}

/* < 1200px: interne Spalten der großen Karten stapeln.
   V8.3 (4): Karte 1 (dreispaltig, .big-card__cols--3) bleibt bis 900px
   zweispaltig (Regel <1600 oben greift weiter) — erst darunter stapelt
   auch sie (eigener Block unten). */
@media (max-width: 1199px) {
  .big-card__cols:not(.big-card__cols--3) { grid-template-columns: minmax(0, 1fr); }
  .big-card__cols:not(.big-card__cols--3) > * { padding: 0; }
  .big-card__cols:not(.big-card__cols--3) > * + * {
    border-left: none;
    border-top: 1px solid var(--border);
    padding-top: 14px;
  }
}

/* < 900px: Kontakt-/Deal-Detail komplett einspaltig — jetzt auch die
   dreispaltige Karte 1 (V8.3: oberhalb bleibt sie zweispaltig). */
@media (max-width: 899px) {
  .detail-grid { grid-template-columns: minmax(0, 1fr); }
  .big-card__cols--3 { grid-template-columns: minmax(0, 1fr); }
  .big-card__cols--3 > * { padding: 0; }
  .big-card__cols--3 > * + *,
  .big-card__cols--3 > *:nth-child(3) {
    border-left: none;
    border-top: 1px solid var(--border);
    padding-top: 14px;
  }
}

/* ============================================================
   V5 — Aufgaben: Listen-Tabs, Task-Karten, Quick-Add, Checkliste,
   Abhängigkeiten, Links, Timer, Board-Filter, Kontakt-Aufgaben.
   MeisterTask-Ruhe: Farbe nur mit Bedeutung, Pink nur Gefahr.
   ============================================================ */

/* ---------- Listen-Tabs (Board-Kopf, <a> statt <button>) ---------- */

.tabs--lists { display: inline-flex; margin: 0 0 14px; }
.tabs--lists .tab {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 12px;
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-size: 12.5px;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}
.tabs--lists a.tab:hover { color: var(--text); text-decoration: none; }
.tabs--lists .tab.is-active { background: var(--surface); color: var(--navy); box-shadow: var(--shadow-card); }
.tabs__count {
  min-width: 18px;
  padding: 0 6px;
  border-radius: var(--radius-pill);
  background: var(--surface-2);
  color: var(--text-soft);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.7;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.tabs--lists .tab.is-active .tabs__count { background: var(--p-navy-bg); color: var(--p-navy-fg); }

/* ---------- Board-Filterzeile (Muster Pipeline-Filter) ---------- */

.tasks-filter { display: inline-flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.tasks-filter__label { font-size: 12px; font-weight: 600; color: var(--text-soft); }
.tasks-filter select { max-width: 180px; }
.tasks-filter__check {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text-muted);
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.tasks-filter__check input { width: 14px; height: 14px; margin: 0; accent-color: var(--tuerkis); }
.tasks-filter__q { width: 200px; }

/* ---------- Task-Board: eigener Leer-Hinweis ---------- */

.kanban[data-obj="task"] .kanban-col__body:empty::after { content: "Aufgaben hierher ziehen"; }

/* ---------- Task-Karten (Zusätze innerhalb .kanban-card, render_task_card) ---------- */

.task-card__head { display: flex; align-items: center; gap: 6px; }
.task-card__id,
.task-id {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--text-soft);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.task-card__head .task-blocked,
.task-card__head .task-timer-on { margin-left: auto; }
.task-card__head .task-blocked + .task-timer-on { margin-left: 0; }

.task-card__prio { display: flex; align-items: center; gap: 6px; }
.prio-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; background: var(--p-grau-fg); }
.prio-dot--rot  { background: #E5484D; }
.prio-dot--gelb { background: var(--gelb); }
.prio-dot--grau { background: var(--p-grau-fg); }
.task-card__prio-label { font-size: 11.5px; font-weight: 600; color: var(--text-muted); }

.task-card__labels { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }

.task-card__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 1px;
}
.task-sub-count {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--text-soft);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.task-blocked { display: inline-flex; align-items: center; color: var(--p-amber-fg); font-size: 12px; }
.task-blocked svg { width: 13px; height: 13px; display: block; }
.task-timer-on {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--tuerkis);
  animation: task-timer-pulse 1.6s ease-in-out infinite;
}
@keyframes task-timer-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .3; }
}

/* ---------- Quick-Add je Spalte ---------- */

.kanban-quickadd { padding: 0 11px 9px; }
.kanban-quickadd input { width: 100%; background: var(--surface); }

/* ---------- Aufgaben-Detail: Kopf + Blockattribut ---------- */

.task-detail-id {
  align-self: center;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-soft);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.attr--block { display: block; padding: 3px 8px; margin-bottom: 10px; }
.attr--block .attr__label { display: block; margin-bottom: 2px; font-size: 12.5px; color: var(--text-muted); }
.attr--block .attr__value { display: block; line-height: 1.55; }

/* ---------- Unteraufgaben (Checkliste, render_sub_item) ----------
   Runde Custom-Checkbox (appearance:none): checked = türkis gefüllt
   mit weißem Innenring — kein Bild, kein Pseudo-Element auf <input>. */

.subs { list-style: none; margin: 0 0 8px; padding: 0; }
.sub-item {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 6px 4px;
  border-bottom: 1px solid var(--border);
  font-size: 13.5px;
}
.sub-item:last-child { border-bottom: none; }
.sub-item__check {
  appearance: none;
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin: 0;
  padding: 0;
  border: 1.6px solid var(--border-strong);
  border-radius: 50%;
  background: var(--surface);
  cursor: pointer;
  transition: background .12s ease, border-color .12s ease, box-shadow .12s ease;
}
.sub-item__check:hover { border-color: var(--tuerkis); }
.sub-item__check:checked {
  background: var(--tuerkis);
  border-color: var(--tuerkis);
  box-shadow: inset 0 0 0 3px var(--surface);
}
.sub-item__title {
  flex: 1;
  min-width: 0;
  overflow-wrap: anywhere;
  text-align: left;
  cursor: text;
  border-radius: var(--radius-sm);
  padding: 2px 4px;
  margin: -2px -4px;
  transition: background .12s ease;
}
.sub-item__title:hover { background: var(--hover); }
.sub-item__title:focus-visible { outline: 2px solid var(--tuerkis); outline-offset: 1px; }
.sub-item--done .sub-item__title { color: var(--text-soft); text-decoration: line-through; }
/* V22: Inline-Umbenennen — Feld bekommt die ganze Zeile (Datum und
   Löschknopf weichen so lange, damit genug Platz zum Tippen bleibt). */
.sub-item__edit { flex: 1; min-width: 0; }
.sub-item.is-renaming .sub-item__due,
.sub-item.is-renaming .sub-item__del { display: none; }
.sub-item__del {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  font-size: 15px;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transition: opacity .12s ease, background .12s ease, color .12s ease;
}
.sub-item:hover .sub-item__del { opacity: 1; }
.sub-item__del:hover { background: var(--p-rot-bg); color: var(--pink); }
.sub-add { display: flex; align-items: center; gap: 8px; padding-top: 2px; }
.sub-add input { flex: 1; min-width: 0; }
.subs-count {
  margin-left: 6px;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--text-soft);
  font-variant-numeric: tabular-nums;
  text-transform: none;
  letter-spacing: 0;
}

/* ---------- Abhängigkeiten ---------- */

.deps { display: flex; flex-direction: column; gap: 12px; }
.deps__group { min-width: 0; }
.deps__title {
  margin: 0 0 4px;
  padding: 0 4px;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-soft);
}
.deps__list { list-style: none; margin: 0 0 6px; padding: 0; }
.dep {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 4px;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.dep:last-child { border-bottom: none; }
.dep__link {
  flex: 1;
  min-width: 0;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dep__link:hover { color: var(--tuerkis); text-decoration: none; }
.dep__del {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  font-size: 15px;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transition: opacity .12s ease, background .12s ease, color .12s ease;
}
.dep:hover .dep__del { opacity: 1; }
.dep__del:hover { background: var(--p-rot-bg); color: var(--pink); }
.deps__empty { margin: 0; padding: 2px 4px; font-size: 12.5px; color: var(--text-soft); }
.typeahead--dep { max-width: 320px; }

/* ---------- Link-Anhänge (render_task_link) ---------- */

.task-link {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 8px 4px;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.task-link:last-child { border-bottom: none; }
.task-link__a {
  flex: 1;
  min-width: 0;
  color: var(--tuerkis);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-link__del {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  font-size: 15px;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transition: opacity .12s ease, background .12s ease, color .12s ease;
}
.task-link:hover .task-link__del { opacity: 1; }
.task-link__del:hover { background: var(--p-rot-bg); color: var(--pink); }

/* ---------- Time-Tracking-Timer ---------- */

.timer { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 6px 4px; }
.timer__btn { min-width: 86px; height: 36px; font-size: 13.5px; }
.timer__btn--on {
  background: var(--tuerkis);
  border-color: var(--tuerkis);
  color: #FFFFFF;
  animation: timer-btn-pulse 1.8s ease-out infinite;
}
.timer__btn--on:hover { background: #028F8A; border-color: #028F8A; color: #FFFFFF; }
@keyframes timer-btn-pulse {
  0% { box-shadow: 0 0 0 0 rgba(1,160,154,.30); }
  70% { box-shadow: 0 0 0 9px rgba(1,160,154,0); }
  100% { box-shadow: 0 0 0 0 rgba(1,160,154,0); }
}
.timer__display {
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 18px;
  color: var(--navy);
  font-variant-numeric: tabular-nums;
  letter-spacing: .02em;
}
.timer--on .timer__display { color: var(--p-tuerkis-fg); }
.timer__edit {
  border: none;
  background: transparent;
  padding: 0;
  color: var(--text-muted);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.timer__edit:hover { color: var(--tuerkis); }
.timer__adjust { display: inline-flex; align-items: center; gap: 6px; }
.timer__adjust input { width: 90px; }

/* ---------- Aufgaben in der Kontaktakte ---------- */

.big-card__cols--1 { grid-template-columns: minmax(0, 1fr); }

.task-mini-list { list-style: none; margin: 0 0 10px; padding: 0; }
.task-mini {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 7px 4px;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.task-mini:last-child { border-bottom: none; }
.task-mini__check { width: 15px; height: 15px; margin: 0; flex-shrink: 0; cursor: pointer; accent-color: var(--tuerkis); }
.task-mini__link {
  flex: 1;
  min-width: 0;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-mini__link:hover { color: var(--tuerkis); text-decoration: none; }
.task-mini--done .task-mini__link { color: var(--text-soft); text-decoration: line-through; }
.task-mini__due { flex-shrink: 0; font-size: 12px; font-variant-numeric: tabular-nums; }

.vorlage-form {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 4px;
  padding-top: 8px;
  border-top: 1px solid var(--border);
}
.vorlage-form select { flex: 1 1 160px; min-width: 0; max-width: 240px; }

/* ============================================================
   V6 — Dashboard + Edelmetall-Portfolio
   Attio-Ruhe: Farbe nur mit Bedeutung — Fällig-Ampel, Listen-Punkte,
   Metall-Punkte, G/V grün/rot. Pink/Rot nur Gefahr/überfällig.
   ============================================================ */

/* ---------- Begrüßung ---------- */

/* V21c (Jasmin): Kopf als Leiste in Kachel-Optik (nicht fixiert). */
.dash-greet {
  margin-bottom: 20px;
  display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; flex-wrap: wrap;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  padding: 14px 20px;
}
.dash-greet__kopf { position: relative; }
.dash-greet h1 { margin: 0 0 2px; }
.dash-greet__date { margin: 0; font-size: 13px; color: var(--text-muted); }

/* ---------- Kachel-Grid: 3 Spalten ≥1400, 2 <1400, 1 <900 ---------- */

.dash-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  align-items: start;
}
.dash-grid > .big-card { margin: 0; }

/* V15c: JS baut Spalten-Stapel ins Grid — Kacheln stapeln sich natürlich,
   verschiedene Höhen reißen keine Löcher. Ohne JS bleibt das flache Grid.
   Die Stapel spannen die volle Zeilenhöhe auf, damit man auch unter einer
   kurzen Spalte noch ablegen kann. */
.dash-grid--frei { align-items: stretch; }
.dash-col { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.dash-col > .big-card { margin: 0; flex: 0 0 auto; }

/* Beim Ziehen: gestrichelter Slot in Kachelgröße — zeigt, wo die Kachel
   landet, und hält den Ursprungsort offen. */
.dash-platzhalter {
  flex: 0 0 auto;
  border: 2px dashed var(--tuerkis);
  border-radius: var(--radius);
  background: var(--hover);
}
@media (max-width: 1399px) {
  .dash-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 899px) {
  .dash-grid { grid-template-columns: minmax(0, 1fr); }
}

.dash-card__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}
.dash-card__head .big-card__title { margin: 0; }
.dash-card__more { flex-shrink: 0; font-size: 12px; font-weight: 600; white-space: nowrap; }

/* ---------- Kompakte Kachel-Zeilen ---------- */

.dash-list { list-style: none; margin: 0; padding: 0; }
.dash-row {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  padding: 7px 0;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.dash-row:last-child { border-bottom: none; }
.dash-row__link {
  flex: 1;
  min-width: 0;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dash-row__link:hover { color: var(--tuerkis); text-decoration: none; }
.dash-row__label {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dash-row__meta {
  flex-shrink: 0;
  font-size: 12px;
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.dash-row__due { flex-shrink: 0; font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.dash-row--done .dash-row__link { color: var(--text-soft); text-decoration: line-through; }

/* Große Kennzahl (Dashboard-Kacheln + Portfolio-Kopf) */
.dash-big {
  display: block;
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 28px;
  letter-spacing: -.01em;
  line-height: 1.15;
  color: var(--navy);
  font-variant-numeric: tabular-nums;
}
.dash-empty { margin: 0; padding: 8px 0; font-size: 13px; color: var(--text-soft); }
/* V11: Beträge verwischen (Screenshots) — Auge-Button je Kachel, localStorage. */
.dash-card__eye { display: inline-flex; align-items: center; align-self: center; border: 0; background: none; padding: 4px; margin-left: auto; cursor: pointer; color: var(--text-soft); border-radius: 6px; }
.dash-card__eye:hover { color: var(--text); background: var(--row-hover); }
.dash-card__eye + .dash-card__more { margin-left: 8px; }
.dash-card--blur .dash-card__eye { color: var(--tuerkis); }
/* Alles außer dem Kachel-Kopf verwischen — Überschrift bleibt lesbar. */
.dash-card--blur > *:not(.dash-card__head) { filter: blur(9px); user-select: none; pointer-events: none; }
/* V11: Kacheln umsortierbar (Ziehen am Kachel-Kopf, Desktop). */
.dash-card__head { cursor: grab; }
.dash-card--dragging { opacity: .55; transform: scale(.985); box-shadow: 0 12px 32px rgba(0,0,0,.18); }
@media (hover: none) { .dash-card__head { cursor: default; } }
/* V10: „Morgen fällig"-Ausblick unter der Heute-Kachel — dezent abgesetzt. */
.dash-sub-label { margin: 10px 0 2px; padding-top: 8px; border-top: 1px solid var(--border); font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--text-soft); }
.dash-list--morgen .dash-row__link { color: var(--text-soft); }
.dash-hint { margin: 10px 0 0; font-size: 12px; color: var(--text-soft); }

.dash-kpis {
  display: flex;
  align-items: flex-end;
  gap: 22px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.dash-kpi__label {
  display: block;
  margin-bottom: 2px;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-soft);
}
.dash-kpi__value {
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 17px;
  line-height: 1.3;
  color: var(--navy);
  font-variant-numeric: tabular-nums;
}
.dash-kpi__value--gruen { color: var(--p-gruen-fg); }

/* Listen-Farbpunkt (Aufgaben-Zeilen, kräftige Options-Töne) */
.list-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; background: var(--p-grau-fg); }
.list-dot--grau    { background: var(--p-grau-fg); }
.list-dot--tuerkis { background: var(--tuerkis); }
.list-dot--navy    { background: var(--navy); }
.list-dot--gelb    { background: var(--gelb); }
.list-dot--gruen   { background: #1F9D6B; }
.list-dot--blau    { background: #2E77C2; }
.list-dot--amber   { background: #D98A1F; }
.list-dot--rot     { background: #E5484D; }

/* Metall-Punkte (Dashboard-Kachel + Portfolio-Sektionen) */
.dot--gold      { background: #C9A227; }
.dot--silber    { background: #A8ADB4; }
.dot--platin    { background: #8E9BA6; }
.dot--palladium { background: #7A8B99; }

/* ---------- Portfolio ---------- */

/* Zahlen rechtsbündig tabellarisch (Portfolio-Tabelle + Kachel-Zeilen) */
.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.table th.num { text-align: right; }
.dash-row .num { flex-shrink: 0; font-size: 13px; }

/* Gewinn/Verlust: grün/rot mit Bedeutung */
.gv--plus  { color: #1F9D6B; }
.gv--minus { color: #E5484D; }

.portfolio-head {
  display: flex;
  align-items: flex-end;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}
.portfolio-head__gv {
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 17px;
  font-variant-numeric: tabular-nums;
  padding-bottom: 3px;
}
.portfolio-head__stand { flex-basis: 100%; margin: 0; font-size: 12.5px; color: var(--text-soft); }
/* V11: „Aktualisieren"-Button in der Stand-Zeile. */
.portfolio-head__refresh { margin-left: 10px; }

.metal-card__title { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }

/* Kurszeile mit Inline-Edit */
.metal-kurs {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin: 0 0 12px;
  font-size: 13px;
  color: var(--text-muted);
}
.kurs-inline {
  padding: 2px 7px;
  border-radius: var(--radius-sm);
  color: var(--text);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  cursor: text;
}
.kurs-inline:hover { background: var(--hover); }
.kurs-inline input { width: 110px; }
.kurs-inline.is-editing { padding: 0; }
.metal-kurs__einheit { margin-left: -7px; color: var(--text-muted); }
.metal-kurs__oz { color: var(--text-muted); font-size: 13px; }
.metal-kurs__stand { font-size: 12px; color: var(--text-soft); }

/* Positions-Tabelle: editierbare Zellen zeigen den Attio-Hover */
.table--metal td[data-mfield] { cursor: text; }
.table--metal td[data-mfield]:hover { background: var(--hover); }
.table--metal td[data-mfield] input { width: 100%; min-width: 80px; }
.table--metal .th-del { width: 40px; }

.metal-row__del {
  width: 22px;
  height: 22px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  font-size: 15px;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transition: opacity .12s ease, background .12s ease, color .12s ease;
}
tr:hover .metal-row__del { opacity: 1; }
.metal-row__del:hover { background: var(--p-rot-bg); color: var(--pink); }

/* „+ Position"-Formularzeile unter der Tabelle */
.metal-add {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 10px 14px;
  border-top: 1px solid var(--border);
}
.metal-add__bez    { flex: 2 1 190px; min-width: 0; }
.metal-add__stueck { flex: 0 1 70px; min-width: 0; }
.metal-add__gramm  { flex: 0 1 95px; min-width: 0; }
.metal-add__preis  { flex: 0 1 110px; min-width: 0; }
.metal-add__datum  { flex: 0 0 auto; }

@media (max-width: 759px) {
  .metal-add__bez { flex-basis: 100%; }
}

/* ============================================================
   V8 — Nachschliff: Timer-Banner, Advanced Filter, + Spalte,
   Deal-Zeilen, Vorlagen, Zeiten, Custom Fields, URL-/Doc-Stift.
   Attio-Ruhe bleibt: Farbe nur mit Bedeutung, Pink nur Gefahr.
   ============================================================ */

/* ---------- Timer-Banner (SPEC C): schmal, türkis-soft, sticky in main ---------- */

.timerbar {
  position: sticky;
  top: 10px;
  z-index: 45;
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0 0 16px;
  padding: 6px 14px;
  background: var(--surface, #FFFFFF);
  border: 1px solid rgba(1, 160, 154, .30);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  color: var(--p-tuerkis-fg);
  font-size: 13px;
  font-weight: 600;
}
@keyframes timerbar-pulse {
  0%   { box-shadow: var(--shadow-sm), 0 6px 14px rgba(1,160,154,.08), 0 0 0 0 rgba(1,160,154,.18); }
  70%  { box-shadow: var(--shadow-sm), 0 6px 14px rgba(1,160,154,.08), 0 0 0 6px rgba(1,160,154,0); }
  100% { box-shadow: var(--shadow-sm), 0 6px 14px rgba(1,160,154,.08), 0 0 0 0 rgba(1,160,154,0); }
}
.timerbar a {
  color: var(--p-tuerkis-fg);
  font-weight: 600;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.timerbar__zeit {
  margin-left: auto;
  font-family: var(--font-head);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.timerbar .btn { flex-shrink: 0; }

/* ---------- Advanced Filter (SPEC E): Builder-Popover + Chips ---------- */

.popover--af { width: 680px; max-width: calc(100vw - 300px); }
@media (max-width: 999px) {
  .popover--af { max-width: calc(100vw - 60px); }
}

.af-quick {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  flex-wrap: wrap;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--border);
}
.af-quick .popover__field { flex: 1 1 120px; }
.af-quick__check { flex: 1 1 100%; }

.af-rows { display: flex; flex-direction: column; gap: 8px; }
.af-row {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) minmax(110px, .9fr) minmax(140px, 1.2fr) 24px;
  gap: 8px;
  align-items: center;
}
.af-row__novalue { color: var(--text-soft); font-size: 12.5px; }
.af-row__valwrap { min-width: 0; display: flex; }
.af-row__valwrap .af-row__value { width: 100%; }
.af-row__del {
  width: 22px;
  height: 22px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
}
.af-row__del:hover { background: var(--p-rot-bg); color: var(--pink); }

.af-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}
.af-mode {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-soft);
}

/* ---------- „+ Spalte" an den Boards (SPEC G) ---------- */

.kanban-addcol {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
  padding-top: 2px;
}
.kanban-addcol__btn {
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius);
  background: transparent;
  color: var(--text-soft);
  font-family: var(--font-body);
  font-size: 12.5px;
  font-weight: 600;
  padding: 10px;
  cursor: pointer;
  transition: color .14s ease, border-color .14s ease, background .14s ease;
}
.kanban-addcol__btn:hover {
  color: var(--tuerkis);
  border-color: var(--tuerkis);
  background: var(--surface);
}
.kanban-addcol__link {
  font-size: 12px;
  color: var(--text-soft);
  text-align: center;
}
.kanban-addcol__link:hover { color: var(--tuerkis); }
/* V8.3: gilt im gesamten Scroll-Modus des Boards (<1200px, s. o.). */
@media (max-width: 1199px) {
  .kanban-addcol { flex: 0 0 160px; width: 160px; min-width: 160px; }
}

/* ---------- Deal-Zeilen in der Kontaktakte (SPEC H) ---------- */

.mini-rows { display: flex; flex-direction: column; }
.mini-row {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  padding: 7px 4px;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.mini-row:last-child { border-bottom: none; }
.mini-row .pill { flex-shrink: 0; }
.mini-row__link {
  flex: 1;
  min-width: 0;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mini-row__link:hover { color: var(--tuerkis); text-decoration: none; }
.mini-row__wert {
  flex-shrink: 0;
  font-weight: 600;
  font-size: 12.5px;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ---------- URL-Stift am Attribut (SPEC J) ---------- */

.attr__editbtn {
  position: absolute;
  top: 50%;
  right: 6px;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  padding: 0;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  cursor: pointer;
  opacity: 0;
  transition: opacity .12s ease, background .12s ease, color .12s ease;
}
.attr:hover .attr__editbtn { opacity: 1; }
.attr__editbtn:hover { background: var(--border); color: var(--text-muted); }
.attr.is-editing .attr__editbtn,
.attr.is-saving .attr__editbtn { display: none; }

/* ---------- Dokument-Stift + Inline-Formular (SPEC K) ---------- */

.doc__edit {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  padding: 0;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  cursor: pointer;
  opacity: 0;
  transition: opacity .12s ease, background .12s ease, color .12s ease;
}
.doc:hover .doc__edit { opacity: 1; }
.doc__edit:hover { background: var(--hover); color: var(--tuerkis); }
.doc-editform { flex: 1; min-width: 0; padding-top: 0; }

/* ---------- Vorlagen-Verwaltung (SPEC I) ---------- */

.tpl-wrap { max-width: 980px; }
.tpl-card--inactive { opacity: .55; }
.tpl-card__head {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.tpl-card__name {
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 15px;
  color: var(--navy);
  min-width: 0;
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  cursor: text;
}
.tpl-card__name:hover { background: var(--hover); }
.tpl-card__name input { width: 260px; max-width: 100%; }
.tpl-card__head .option-toggle__btn { margin-left: auto; }

.tpl-items td[data-tif] { cursor: text; }
.tpl-items td[data-tif]:hover { background: var(--hover); }
.tpl-items td[data-tif] input,
.tpl-items td[data-tif] select { width: 100%; min-width: 70px; }
.tpl-items .tpl-item__titel { width: 52%; }
.tpl-items th.tpl-item__actions,
.tpl-items td.tpl-item__actions { width: 96px; text-align: right; white-space: nowrap; }
.tpl-item__btn {
  width: 22px;
  height: 22px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
}
.tpl-item__btn:hover { background: var(--hover); color: var(--text); }
.tpl-item__btn--del:hover { background: var(--p-rot-bg); color: var(--pink); }

.tpl-item-add {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 10px 14px;
  border-top: 1px solid var(--border);
}
.tpl-item-add__titel { flex: 2 1 220px; min-width: 0; }
.tpl-item-add__tage { flex: 0 1 80px; min-width: 0; }

.tpl-new {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 18px;
}
.tpl-new input { width: 280px; max-width: 100%; }

.vorlage-form__manage { font-size: 12px; white-space: nowrap; }
.vorlage-form--leer { margin: 4px 0 0; padding: 8px 8px 0; }

/* ---------- Zeiten-Übersicht (SPEC B) ---------- */

.zeit-range {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}
.zeit-range__links {
  display: inline-flex;
  gap: 2px;
  padding: 3px;
  background: var(--surface-2);
  border-radius: var(--radius-sm);
}
.zeit-range__link {
  padding: 5px 12px;
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-size: 12.5px;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}
.zeit-range__link:hover { color: var(--text); text-decoration: none; }
.zeit-range__link.is-active {
  background: var(--surface);
  color: var(--navy);
  box-shadow: var(--shadow-card);
}
.zeit-range__form {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
  margin-left: auto;
}
.zeit-range__label { font-size: 12px; font-weight: 600; color: var(--text-soft); }

.zeit-gesamt { margin-bottom: 18px; }

.zeit-tabellen {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  gap: 16px;
  align-items: start;
}
@media (max-width: 999px) {
  .zeit-tabellen { grid-template-columns: minmax(0, 1fr); }
}
.zeit-table td small { display: block; font-size: 11.5px; }

/* ---------- Custom-Field-Karten in den Einstellungen (SPEC L) ---------- */

.cfield-name {
  flex: 1;
  min-width: 0;
  padding: 3px 7px;
  border-radius: var(--radius-sm);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--text);
  cursor: text;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cfield-name:hover { background: var(--hover); }
.cfield-name input { width: 100%; }

/* ---------- Reduzierte Bewegung ---------- */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    transition-duration: .001ms !important;
  }
  /* V5: Puls-Signale stehen ganz still (Timer-Punkt + Button + Banner). */
  .task-timer-on, .timer__btn--on, .timerbar { animation: none !important; }
}

/* ============================================================
   V8.2 — Mobil-Tauglichkeit (SPEC-v8.2)
   Alles hier greift NUR auf Touch-Geräten (@media hover:none /
   pointer:coarse) bzw. auf Schmal (max-width:759px — der bestehende
   Breakpoint der Topbar). Desktop bleibt pixel-identisch.
   ============================================================ */

/* Move-Fallback-Button an Kanban-Karten: JS hängt ihn immer an,
   sichtbar wird er nur auf Touch (Media-Block unten). */
.kanban-card__move { display: none; }

/* ---------- Touch (Regel 1 + 2): Hover-Aktionen immer sichtbar,
   Tap-Ziele ≥ 40×40 px — Desktop-Optik unverändert ---------- */

@media (hover: none), (pointer: coarse) {
  /* Regel 1: alles, was Desktop nur bei :hover einblendet, ist auf Touch da. */
  .note__actions,
  .attr__editbtn,
  .kanban-col__edit,
  .doc__del, .doc__edit,
  .sub-item__del,
  .dep__del,
  .task-link__del,
  .metal-row__del { opacity: 1; }

  /* Regel 2: kleine Buttons (Stift, ×, ↑↓) auf 40×40 px. */
  .attr__editbtn,
  .kanban-col__edit,
  .doc__del, .doc__edit,
  .sub-item__del, .dep__del, .task-link__del,
  .metal-row__del, .af-row__del, .tpl-item__btn { width: 40px; height: 40px; }
  .af-row { grid-template-columns: minmax(120px, 1fr) minmax(110px, .9fr) minmax(140px, 1.2fr) 40px; }
  .tpl-items th.tpl-item__actions,
  .tpl-items td.tpl-item__actions { width: 136px; }
  .note__actions button { padding: 10px 8px; }
  .timer__edit { padding: 10px 8px; }
  .typeahead__clear { width: 32px; height: 32px; top: 0; }
  .filter-chip { min-height: 40px; }
  .filter-chip__x { width: 32px; height: 32px; }
  .nav-item__chev { width: 40px; height: 40px; right: 2px; }
  .nav-item--parent { padding-right: 46px; }
  .colorpick__dot, .color-dot, input[type="color"].colorpick__custom { width: 28px; height: 28px; }
  .pagination .btn, .timerbar .btn { min-height: 40px; }
  .kanban-col__add { padding: 13px; }
  .optlist__item { padding: 11px 8px; }
  .menu__item { padding: 11px 9px; }
  .art-btn { padding: 9px 12px; }
  .tabs--lists .tab, .tabs button { padding: 9px 12px; }
  .zeit-range__link { padding: 9px 12px; }
  .dash-row { padding: 10px 0; }

  /* Checkboxen: größere Box (22px) + großzügige Zeilenhöhe als Hitbox. */
  .col-check input,
  .task-mini__check,
  .sub-item__check,
  .cols-item input,
  .tasks-filter__check input,
  input[data-task-complete] { width: 22px; height: 22px; }
  .task-mini, .mini-row, .dep, .doc, .sub-item, .task-link { min-height: 44px; }

  /* Kanban: „⇄"-Fallback fürs Verschieben (Drag&Drop gibt es auf Touch
     nicht) — Karte macht rechts Platz, Button oben rechts. */
  .kanban-card { position: relative; padding-right: 50px; }
  .kanban-card__move {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 6px;
    right: 6px;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-sm);
    background: var(--surface);
    color: var(--text-muted);
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
  }
}

/* ---------- Schmal (< 760px): Sheets, volle Breiten, sticky Spalten ---------- */

@media (max-width: 759px) {
  /* Regel 5: der Body scrollt nie horizontal — breite Inhalte scrollen
     in ihren Containern (.table-card, .table-scroll, .kanban). */
  html { overflow-x: hidden; }

  /* Regel 3: 16px in allen Feldern → iOS zoomt nicht hinein.
     select.input--sm/textarea.input--sm schlagen die 12.5px der Klasse. */
  input:not([type="checkbox"]):not([type="radio"]),
  select, select.input--sm,
  textarea, textarea.input--sm { font-size: 16px; }

  /* Regel 4: Popover werden zu Bottom-Sheets. !important schlägt auch
     Inline-Positionsstile (JS lässt sie unter 760px zusätzlich weg). */
  .popover {
    position: fixed !important;
    top: auto !important;
    left: 8px !important;
    right: 8px !important;
    bottom: 8px !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    margin: 0 !important;
    max-height: 75vh;
    overflow: auto;
    z-index: 230;
  }
  .popover .optlist { max-height: 50vh; }

  /* ⌘K-Schnellsuche ebenfalls als Bottom-Sheet. */
  .cmdk-overlay { align-items: flex-end; padding: 0 8px 8px; }
  .cmdk { width: 100%; display: flex; flex-direction: column; max-height: 75vh; }
  .cmdk__results { max-height: none; flex: 1 1 auto; }

  /* Filter-Builder: Bedingungszeilen stapeln (Feld/Op/Wert untereinander). */
  .af-quick .popover__field { flex: 1 1 100%; }
  .af-row { grid-template-columns: minmax(0, 1fr) 40px; row-gap: 6px; }
  .af-row__field { grid-column: 1; grid-row: 1; }
  .af-row__del { grid-column: 2; grid-row: 1; justify-self: end; }
  .af-row__op,
  .af-row__valwrap,
  .af-row__novalue { grid-column: 1 / -1; }
  .af-row + .af-row { margin-top: 4px; padding-top: 10px; border-top: 1px dashed var(--border); }

  /* Kopfzeilen + Werkzeugleisten: Suche volle Breite, Aktionen umbrechen. */
  .page-actions { width: 100%; }
  .detail-head .page-actions { margin-left: 0; }
  .quicksearch, .quicksearch__input, .search__input { width: 100%; }
  .toolbar__left, .toolbar__right { flex: 1 1 100%; }
  .toolbar__right { margin-left: 0; justify-content: space-between; }

  /* Pipeline-/Aufgaben-Filterzeile: Selects + Suchfeld volle Breite. */
  .pipeline-filter, .tasks-filter { width: 100%; flex-wrap: wrap; }
  .pipeline-filter select, .tasks-filter select { flex: 1 1 100%; width: 100%; max-width: none; }
  .pipeline-filter__q, .tasks-filter__q { flex: 1 1 100%; width: 100%; }
  .zeit-range__form { margin-left: 0; }
  /* Link-/Tab-Leisten scrollen in sich statt den Viewport zu sprengen. */
  .zeit-range__links, .tabs--lists { max-width: 100%; overflow-x: auto; }

  /* Kontaktliste: Checkbox+Name kleben links, der Rest scrollt darunter durch. */
  .table th.col-check, .table td.col-check { width: 44px; min-width: 44px; }
  .table--breit th.col-check, .table--breit td.col-check {
    position: sticky;
    left: 0;
    z-index: 3;
    background: var(--surface);
  }
  .table--breit td.cell-name, .table--breit th[data-sort="name"] {
    position: sticky;
    left: 44px;
    z-index: 3;
    background: var(--surface);
  }
  .table--breit thead th.col-check,
  .table--breit thead th[data-sort="name"] { z-index: 4; background: var(--surface-2); }
  .table--breit tbody tr.row:hover td.col-check,
  .table--breit tbody tr.row:hover td.cell-name { background: var(--row-hover); }
  .table--breit td.cell-name .contact-cell__text { max-width: 40vw; }

  /* Bulkbar: fest unten, Aktionen umbrechen, Selects volle Breite. */
  .bulkbar {
    position: fixed;
    left: 8px;
    right: 8px;
    bottom: 8px;
    margin: 0;
    z-index: 60;
  }
  .bulkbar select { max-width: none; width: 100%; flex: 1 1 100%; }

  /* Detailkopf: Name + Pill dürfen umbrechen statt zu ellipsieren. */
  .detail-head__names { flex-wrap: wrap; white-space: normal; }
  .attr--head .attr__value--name { white-space: normal; overflow-wrap: anywhere; }

  /* Inline-Formulare stapeln: jedes Feld volle Breite.
     (.sub-add hat als einziges kein flex-wrap — hier nachrüsten.) */
  .sub-add { flex-wrap: wrap; }
  .metal-add > *, .tpl-item-add > *, .tpl-new > *, .doc-add > *,
  .sub-add > *, .vorlage-form > *, .option-add > * {
    flex: 1 1 100%;
    width: 100%;
    min-width: 0;
    max-width: none;
  }
}

/* < 480px: attr-Zeilen stapeln — Label über dem Wert statt 118px-Spalte.
   (.attr--head/.attr--head-pill behalten ihre eigene, spezifischere Anzeige.) */
@media (max-width: 479px) {
  .attr { display: block; }
  .attr__label { margin-bottom: 2px; }
}

/* ============================================================
   V8.3 — Tablet-Stufe (760–1199px, SPEC-v8.2 unten)
   Drei Bereiche: <760 Mobil (V8.2, unverändert) · 760–1099 Tablet
   (Icon-Schiene + Overlay) · ≥1100 Desktop (unverändert inkl.
   localStorage-Collapse). Kanban/Toolbars/Detail gelten bis <1200.
   ============================================================ */

/* ---------- (1) Sidebar 760–1099px: erzwungene 64px-Icon-Schiene ----------
   Kollabierte Optik unabhängig von localStorage (die Regeln unten schlagen
   den Normalzustand UND neutralisieren .sidebar--collapsed nicht — beide
   sehen gleich aus); .main sitzt fest bei 64px. Der Toggle öffnet die volle
   220px-Leiste als Overlay ÜBER dem Inhalt (body.tabletnav-open, JS im
   Sidebar-Modul) — .main verschiebt sich dabei NICHT. */

@media (min-width: 760px) and (max-width: 1099px) {
  .sidebar, .sidebar--collapsed { width: 64px; padding: 16px 8px; }
  .sidebar .sidebar__brand-link,
  .sidebar .nav-item__label,
  .sidebar .soon-badge,
  .sidebar .sidebar__section,
  .sidebar .nav-item__chev,
  .sidebar .nav-sub,
  .sidebar .sidebar__user { display: none; }
  .sidebar .sidebar__brand { justify-content: center; padding: 4px 0 14px; }
  .sidebar .nav-item { justify-content: center; padding: 8px 0; }
  .sidebar .nav-item--parent { padding-right: 0; }
  .sidebar .sidebar__footer { align-items: center; padding-top: 12px; }
  .main, body.sidebar-collapsed .main { margin-left: 64px; }

  /* Offenes Overlay: 220px, Schatten, z über Content (unter Popovern/Cmd-K).
     Spezifität body.tabletnav-open .sidebar … (0,3,0) schlägt sowohl die
     Schienen-Regeln oben als auch die .sidebar--collapsed-Regeln (0,2,0). */
  body.tabletnav-open .sidebar {
    width: 220px;
    padding: 16px 12px;
    z-index: 120;
    box-shadow: var(--shadow-pop);
  }
  body.tabletnav-open .sidebar .sidebar__brand-link { display: inline; }
  body.tabletnav-open .sidebar .nav-item__label { display: inline; }
  body.tabletnav-open .sidebar .soon-badge { display: inline-block; }
  body.tabletnav-open .sidebar .sidebar__section { display: block; }
  body.tabletnav-open .sidebar .nav-item__chev { display: inline-flex; }
  body.tabletnav-open .sidebar .nav-group--open .nav-sub { display: block; }
  body.tabletnav-open .sidebar .sidebar__user { display: flex; }
  body.tabletnav-open .sidebar .sidebar__brand { justify-content: space-between; padding: 4px 8px 14px; }
  body.tabletnav-open .sidebar .nav-item { justify-content: flex-start; padding: 7px 10px; }
  body.tabletnav-open .sidebar .nav-item--small { padding: 7px 10px; }
  body.tabletnav-open .sidebar .nav-item--parent { padding-right: 46px; }
  body.tabletnav-open .sidebar .sidebar__footer { align-items: stretch; padding-top: 10px; }
}

/* ---------- (3) Toolbars 760–1199px: sauber umbrechen, Suchfeld ≥220px ----
   .toolbar/.toolbar__left/.tasks-filter wickeln bereits (flex-wrap) —
   hier nur die fehlenden Teile: rechte Gruppe + Pipeline-Filterzeile
   dürfen umbrechen, Suchfelder fallen nie unter 220px. */

@media (min-width: 760px) and (max-width: 1199px) {
  .toolbar__right { flex-wrap: wrap; }
  .pipeline-filter { flex-wrap: wrap; }
  .search__input, .quicksearch__input,
  .pipeline-filter__q, .tasks-filter__q { min-width: 220px; }
}

/* ---------- (4) Detail 900–1199px: Aktivitätsspalte nicht quetschen ------
   Links/Rechts bleibt 3fr/2fr, aber die rechte Spalte (Composer, Tabs,
   Timeline) fällt nie unter 300px; die Tab-Leiste darf umbrechen.
   (Karte-1-Innenspalten 3→2 unter 1200, 1 unter 900: bestehende
   big-card__cols-Blöcke oben, V8.3-justiert.) */

@media (min-width: 900px) and (max-width: 1199px) {
  .detail-grid { grid-template-columns: minmax(0, 3fr) minmax(300px, 2fr); }
  .tabs { flex-wrap: wrap; }
}

/* ---------- (5) Dashboard 900–1199px: Kachel-Mindestbreite absichern -----
   Zwei Spalten (bestehend <1400) nur, solange jede Kachel ≥340px behält —
   darunter (rechnerisch erst unter 900, dort greift ohnehin die
   Einspalt-Regel) bricht das Grid nicht mehr unter die Mindestbreite. */

@media (min-width: 900px) and (max-width: 1199px) {
  .dash-grid { grid-template-columns: repeat(2, minmax(340px, 1fr)); }
}

/* ============================================================
   V9 — Optik-Politur (nur Tiefe/Feineffekte, null Layout-Änderung)
   Schatten-System, Einblend-Mikroanimationen, Scrollbars,
   Kennzahlen-Veredelung. Reduced-Motion: der globale Block oben
   stellt alle Transitions/Animationen still (.001ms !important).
   ============================================================ */

/* Einblend-Mikroanimation für Popover/Menüs/⌘K — rein per CSS:
   @starting-style greift beim Wechsel von display:none (hidden-Attribut)
   zu sichtbar; Browser ohne Support zeigen schlicht ohne Animation. */
.popover:not([hidden]), .menu:not([hidden]), .typeahead__list:not([hidden]) {
  transition: opacity .14s ease, transform .14s ease;
}
.cmdk-overlay:not([hidden]) { transition: opacity .14s ease; }
.cmdk { transition: opacity .14s ease, transform .14s ease; }
@starting-style {
  .popover:not([hidden]), .menu:not([hidden]), .typeahead__list:not([hidden]) {
    opacity: 0;
    transform: translateY(-6px);
  }
  .cmdk-overlay:not([hidden]) { opacity: 0; }
  .cmdk { opacity: 0; transform: translateY(6px); }
}

/* Scrollbars: dezent grau-soft über die Standard-Eigenschaft.
   Bewusst KEIN ::-webkit-scrollbar — das würde macOS-Overlay-Scrollbars
   deaktivieren und damit Layoutbreiten verschieben. */
html { scrollbar-color: #C7C7CC transparent; }

/* Dashboard-Kennzahlen: hauchzarter Navy-Tiefenverlauf in der Ziffer —
   beide Töne dunkler als der Grundton, Lesbarkeit bleibt identisch. */
@supports (-webkit-background-clip: text) {
  .dash-big {
    background-image: linear-gradient(180deg, var(--navy) 0%, var(--navy-deep) 115%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
  }
}

/* ============================================================
   V9-Feedback — Mengen-Einheit (g/oz), Spalten-Rename-Stift,
   Erfasste Zeiten (Aufgaben-Detail), Zeiten-Auswertung (toggl-artig),
   freie Farben (color-mix, CSP-sauber via style-Attribut).
   ============================================================ */

/* ---------- (1) Menge in g/oz: Formular + Inline-Editor ---------- */

.metal-add__menge   { flex: 0 1 80px; min-width: 0; }
.metal-add__einheit { flex: 0 0 62px; min-width: 0; }

/* Editor der Mengen-Zelle: Wert-Input + g/oz-Mini-Select nebeneinander. */
.menge-edit { display: inline-flex; align-items: center; gap: 4px; }
.table--metal td[data-mfield] .menge-edit__wert { width: 76px; min-width: 0; }
.table--metal td[data-mfield] .menge-edit__einheit { width: 58px; min-width: 0; padding-right: 20px; }

/* Kleine Zweitangabe in Tabellenzellen (Gramm-Basis unter oz-Mengen). */
.cell-sub { font-size: 11.5px; color: var(--text-soft); white-space: nowrap; }

/* ---------- (2) Stift am Kanban-Spaltenkopf (Muster .attr__editbtn) ---------- */

.kanban-col__edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  padding: 0;
  margin-right: auto;   /* pinnt den Stift direkt neben den Titel (head ist flex) */
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-soft);
  cursor: pointer;
  flex-shrink: 0;
  opacity: 0;
  transition: opacity .12s ease, background .12s ease, color .12s ease;
}
.kanban-col__head:hover .kanban-col__edit { opacity: 1; }
.kanban-col__edit:hover { background: var(--border); color: var(--text-muted); }
/* Während des Umbenennens: Input füllt den Kopf, Stift verschwindet. */
.kanban-col--renaming .kanban-col__title { flex: 1 1 auto; }
.kanban-col--renaming .kanban-col__edit { display: none; }
.kanban-col__title input { width: 100%; height: 26px; font-size: 13px; }

/* ---------- (4) Erfasste Zeiten (Time-Tracking-Karte) ---------- */

.time-entries { margin-top: 10px; padding: 0 4px; }
.time-entries__list { list-style: none; margin: 0 0 6px; padding: 0; }
.time-entry {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 4px 0;
  border-bottom: 1px solid var(--border);
  font-size: 12.5px;
}
.time-entry:last-child { border-bottom: none; }
.time-entry__wann { color: var(--text-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.time-entry__dauer { margin-left: auto; font-weight: 600; font-variant-numeric: tabular-nums; }
.time-entry__chip { width: 18px; height: 18px; font-size: 10px; }
.time-entries__more { font-size: 12px; }
.time-entries__empty { margin: 8px 0 0; padding: 0 4px; font-size: 12.5px; color: var(--text-soft); }

/* ---------- (6) Zeiten: Tages-Balken, Gruppierungen, Einzel-Einträge ---------- */

.zeit-bars {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  margin-bottom: 16px;
  padding: 16px 16px 10px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  overflow-x: auto;
}
/* Balken-Spalte: 96px Balkenbahn + 18px Label-Zeile (padding-bottom);
   ::before = Füllung, Höhe aus style="--h:NN%" (Prozent der Balkenbahn). */
.zeit-bar {
  position: relative;
  flex: 1 0 26px;
  max-width: 56px;
  height: 114px;
  padding-bottom: 18px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  cursor: default;
}
.zeit-bar::before {
  content: "";
  display: block;
  min-height: 2px;
  height: var(--h, 0%);
  background: var(--tuerkis);
  border-radius: 3px;
}
.zeit-bar:hover::before { background: #04716C; }
.zeit-bar--we::before { opacity: .45; }
.zeit-bar__label {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  text-align: center;
  font-size: 10.5px;
  color: var(--text-soft);
  white-space: nowrap;
  overflow: hidden;
  font-variant-numeric: tabular-nums;
}
.zeit-bar--we .zeit-bar__label { color: color-mix(in srgb, var(--text-soft) 60%, transparent); }

/* Gruppierungs-Karten „Nach Liste" / „Nach Kontakt" */
.zeit-gruppen {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 18px;
  align-items: start;
}
.zeit-gruppen .big-card + .big-card { margin-top: 0; }
.zeit-gruppe__rows { list-style: none; margin: 0; padding: 0; }
.zeit-gruppe__row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 0;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.zeit-gruppe__row:last-child { border-bottom: none; }
.zeit-gruppe__name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.zeit-gruppe__zeit { font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.mini-balken {
  flex: 0 0 90px;
  height: 6px;
  border-radius: var(--radius-pill);
  background: rgba(1, 160, 154, .12);
  overflow: hidden;
}
.mini-balken::before {
  content: "";
  display: block;
  height: 100%;
  width: var(--w, 0%);
  min-width: 2px;
  background: var(--tuerkis);
  border-radius: inherit;
}
.zeit-gruppe__pct {
  flex: 0 0 42px;
  text-align: right;
  font-size: 12px;
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
}
.zeit-block { margin-bottom: 18px; }
.zeit-block .table-card { box-shadow: none; }

@media (max-width: 999px) {
  .zeit-gruppen { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 759px) {
  .zeit-bar { flex-basis: 18px; min-width: 18px; }
  .mini-balken { flex-basis: 54px; }
  .zeit-range__csv { margin-left: 0; }
}

/* ---------- (7) Freie Farben: color-mix-Rezepte (SPEC Punkt 7) ----------
   Basieren auf --surface/--text — funktionieren hell wie dunkel automatisch
   (einzige Dunkel-Ausnahme: der .pill-box-shadow-Override, s. Dunkel-Blöcke). */

.pill--custom {
  background: color-mix(in srgb, var(--pc) 16%, var(--surface));
  color: color-mix(in srgb, var(--pc) 85%, var(--text));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--pc) 30%, transparent);
}
.kanban-col--custom {
  background: color-mix(in srgb, var(--cc) 10%, var(--surface));
  border-top: 2px solid var(--cc);
}
.kanban-col--custom .kanban-col__head {
  background: color-mix(in srgb, var(--cc) 10%, var(--surface));
}
.prio-dot--custom { background: var(--dc); }
.list-dot--custom { background: var(--dc); }

/* Farbwähler: nativer <input type="color"> als runder Punkt neben den Token. */
input[type="color"].colorpick__custom,
input[type="color"].color-dot--custom {
  -webkit-appearance: none;
  appearance: none;
  width: 20px;
  height: 20px;
  padding: 0;
  border: 2px solid transparent;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
}
input[type="color"].color-dot--custom { width: 22px; height: 22px; }
input[type="color"].colorpick__custom::-webkit-color-swatch-wrapper,
input[type="color"].color-dot--custom::-webkit-color-swatch-wrapper { padding: 0; }
input[type="color"].colorpick__custom::-webkit-color-swatch,
input[type="color"].color-dot--custom::-webkit-color-swatch { border: none; border-radius: 50%; }
input[type="color"].colorpick__custom::-moz-color-swatch,
input[type="color"].color-dot--custom::-moz-color-swatch { border: none; border-radius: 50%; }
.colorpick__item--custom { position: relative; display: inline-flex; align-items: center; gap: 5px; line-height: 0; }
.colorpick__customradio { position: absolute; opacity: 0; width: 0; height: 0; margin: 0; }
.colorpick__customradio:checked + .colorpick__custom { border-color: var(--navy); }
/* V14: „Eigene Farbe" unverwechselbar — Regenbogen-Ring + Mini-Label (Jasmin fand ihn nicht). */
input[type="color"].colorpick__custom {
  /* .colorpick__item input versteckt alle Inputs (Radios) — den Farbwähler
     ausdrücklich sichtbar machen (war seit V9 unsichtbar, Jasmins Fund). */
  position: static;
  opacity: 1;
  width: 24px;
  height: 24px;
  padding: 2px;
  border: none;
  background: conic-gradient(#FF5F5F, #F6BC26, #3DCF8E, #37A6FF, #B16DFF, #FF5F5F);
}
input[type="color"].colorpick__custom::-webkit-color-swatch { border: 2px solid #FFFFFF; }
.colorpick__custom-label { font-size: 11px; color: var(--text-soft); user-select: none; line-height: 1; }
.colorpick__customradio:focus-visible + .colorpick__custom { outline: 2px solid var(--tuerkis); outline-offset: 2px; }

/* ============================================================
   V10 — Hell-/Dunkel-Modus
   Drei Zustaende: Hell / Dunkel / System (Default). Der Server rendert
   html[data-theme="hell|dunkel"] aus dem Cookie cockpit_theme (FOUC-frei,
   CSP-konform — kein Inline-JS). Ohne Attribut entscheidet das System
   (prefers-color-scheme). Der Dunkel-Block steht deshalb ZWEIMAL:
   explizit (data-theme="dunkel") und als System-Fallback im Media-Query
   (:not([data-theme="hell"])) — Inhalte SYNCHRON HALTEN!
   ============================================================ */

/* ---------- Theme-Toggle (Sidebar-Footer + Login-Ecke) ----------
   Drei Inline-SVGs; CSS blendet je html[data-theme] genau eines ein —
   Default (kein Attribut) = Auto-Icon. */

.theme-toggle {
  border: none;
  background: transparent;
  width: 100%;
  text-align: left;
  cursor: pointer;
}
.theme-toggle:hover { background: var(--hover); color: var(--text); }
.theme-toggle__icon { display: none; width: 15px; height: 15px; flex-shrink: 0; }
html:not([data-theme]) .theme-toggle__icon--auto,
html[data-theme="dunkel"] .theme-toggle__icon--dunkel,
html[data-theme="hell"] .theme-toggle__icon--hell { display: block; }

.theme-toggle--floating {
  position: fixed;
  top: 14px;
  right: 14px;
  z-index: 50;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: var(--surface);
  color: var(--text-muted);
  box-shadow: var(--shadow-sm);
}
.theme-toggle--floating:hover { color: var(--text); box-shadow: var(--shadow-md); }
.theme-toggle--floating .theme-toggle__icon { width: 17px; height: 17px; }

/* ---------- Dunkel-Block 1/2: explizit gewaehlt (data-theme="dunkel") ----------
   SYNCHRON HALTEN mit Block 2/2 (System-Dunkel) weiter unten! */

/* --- Token-Umschaltung: Grundflächen, Text, Linien, Schatten, Pills --- */
:root[data-theme="dunkel"] {
  color-scheme: dark;
  scrollbar-color: #48484A transparent;

  /* Türkis minimal heller, Pink heller (Überfällig/Danger bleibt AA-lesbar). */
  --tuerkis:#14B3AC;
  --pink:#FF4D8D;

  --bg:#000000; --surface:#1C1C1E; --surface-2:#2C2C2E;
  --border:rgba(255,255,255,.12); --border-strong:rgba(255,255,255,.20); --hover:rgba(255,255,255,.06);
  --text:#F5F5F7; --text-muted:#98989D; --text-soft:#8E8E93;
  /* Zeilen-Hover mit türkisem Hauch — dunkles Pendant zu #F2F9F8. */
  --row-hover:#1C2B29;

  /* Schatten: schwarzbasiert, höhere Alpha — Navy-Tint trägt im Dunkeln nicht. */
  --shadow-pop:0 4px 16px rgba(0,0,0,.45), 0 1px 3px rgba(0,0,0,.35);
  --shadow-card:0 1px 2px rgba(0,0,0,.25);
  --shadow-xs:0 1px 2px rgba(0,0,0,.30);
  --shadow-sm:0 1px 2px rgba(0,0,0,.30), 0 3px 8px rgba(0,0,0,.30);
  --shadow-md:0 2px 4px rgba(0,0,0,.30), 0 8px 24px rgba(0,0,0,.40);
  --shadow-lg:0 0 0 1px rgba(255,255,255,.08), 0 16px 48px rgba(0,0,0,.60);

  /* Pill-Paletten: dunkler Ton-Grund + hellere Schrift desselben Tons (alle ≥ AA). */
  --p-grau-bg:#2C2C2E;    --p-grau-fg:#C7C7CC;
  --p-tuerkis-bg:#12312F; --p-tuerkis-fg:#5FD3CC;
  --p-navy-bg:#16283C;    --p-navy-fg:#8FB8E4;
  --p-gelb-bg:#332B14;    --p-gelb-fg:#E8C563;
  --p-gruen-bg:#143026;   --p-gruen-fg:#5BC896;
  --p-blau-bg:#172B40;    --p-blau-fg:#7FB1E8;
  --p-amber-bg:#34270F;   --p-amber-fg:#E0A54E;
  --p-rot-bg:#3A1524;     --p-rot-fg:#F08A93;
}

/* --- Grundflächen: Body-/Sidebar-Verlauf dunkel, Login-Bühne türkis-navy --- */
:root[data-theme="dunkel"] body {
  background-color: var(--bg);
  background-image: none;
}
:root[data-theme="dunkel"] .sidebar {
  background: #1C1C1E;
  box-shadow: none;
}
:root[data-theme="dunkel"] body.login-page {
  background: radial-gradient(640px 480px at 50% 42%, rgba(20,179,172,.08), rgba(20,179,172,0) 70%), #000000;
}

/* --- Navy-Texte → helles Eisblau (Navy bleibt nur Flächen-Anker) --- */
:root[data-theme="dunkel"] h1, :root[data-theme="dunkel"] h2, :root[data-theme="dunkel"] h3, :root[data-theme="dunkel"] h4,
:root[data-theme="dunkel"] .sidebar__brand-link, :root[data-theme="dunkel"] a.sidebar__brand-link:hover,
:root[data-theme="dunkel"] .kanban-card__title,
:root[data-theme="dunkel"] .pipeline-summary__value,
:root[data-theme="dunkel"] .bulkbar__count,
:root[data-theme="dunkel"] .timer__display,
:root[data-theme="dunkel"] .dash-kpi__value,
:root[data-theme="dunkel"] .dash-big,
:root[data-theme="dunkel"] .big-card__title,
:root[data-theme="dunkel"] .tpl-card__name,
:root[data-theme="dunkel"] .attr--head .attr__value--name,
:root[data-theme="dunkel"] .tabs button.is-active,
:root[data-theme="dunkel"] .art-btn.is-active,
:root[data-theme="dunkel"] .tabs--lists .tab.is-active,
:root[data-theme="dunkel"] .zeit-range__link.is-active { color: #F5F5F7; }
/* Zustands-Farben, die die Liste oben sonst überstimmen würde: */
:root[data-theme="dunkel"] .timer--on .timer__display { color: var(--p-tuerkis-fg); }
:root[data-theme="dunkel"] .pipeline-summary__value--gruen,
:root[data-theme="dunkel"] .dash-kpi__value--gruen { color: var(--p-gruen-fg); }
/* --- Segmente: aktiver Knopf heller als die Schiene (Apple-Dunkel) --- */
:root[data-theme="dunkel"] .tabs button.is-active,
:root[data-theme="dunkel"] .art-btn.is-active,
:root[data-theme="dunkel"] .tabs--lists .tab.is-active,
:root[data-theme="dunkel"] .zeit-range__link.is-active { background: #3A3A3C; }
@supports (-webkit-background-clip: text) {
  :root[data-theme="dunkel"] .dash-big { background-image: linear-gradient(180deg, #F5F5F7 0%, #C7C7CC 115%); }
}

/* --- Buttons: Primär auf helleres Navy, Ghost-Kante dunkel --- */
:root[data-theme="dunkel"] .btn--primary { background-color: #0B4E8C; border-color: #0B4E8C; }
:root[data-theme="dunkel"] .btn--primary:hover { background-color: #0D5AA1; border-color: #0D5AA1; }
:root[data-theme="dunkel"] .btn--primary:active { background-color: #094173; }
:root[data-theme="dunkel"] .btn--ghost:hover { border-color: rgba(255,255,255,.28); }

/* --- Pills: heller Innenrand statt Navy-Hauch --- */
:root[data-theme="dunkel"] .pill { box-shadow: inset 0 0 0 1px rgba(255,255,255,.06); }

/* --- Kanban-Spalten: dunkle Tints, Oberkante bleibt kräftig --- */
:root[data-theme="dunkel"] .kanban-col--grau    { --col-tint:#232326; --col-strong:#98989D; }
:root[data-theme="dunkel"] .kanban-col--blau    { --col-tint:#152A3E; --col-strong:#4E93DE; }
:root[data-theme="dunkel"] .kanban-col--gelb    { --col-tint:#2E2712; --col-strong:#F6BC26; }
:root[data-theme="dunkel"] .kanban-col--navy    { --col-tint:#172642; --col-strong:#3E77BC; }
:root[data-theme="dunkel"] .kanban-col--gruen   { --col-tint:#12302A; --col-strong:#2FB981; }
:root[data-theme="dunkel"] .kanban-col--rot     { --col-tint:#351B1E; --col-strong:#E8686C; }
:root[data-theme="dunkel"] .kanban-col--tuerkis { --col-tint:#10302E; --col-strong:#14B3AC; }
:root[data-theme="dunkel"] .kanban-col--amber   { --col-tint:#322510; --col-strong:#DE9A33; }
:root[data-theme="dunkel"] .kanban-col--grau, :root[data-theme="dunkel"] .kanban-col--blau, :root[data-theme="dunkel"] .kanban-col--gelb,
:root[data-theme="dunkel"] .kanban-col--navy, :root[data-theme="dunkel"] .kanban-col--gruen, :root[data-theme="dunkel"] .kanban-col--rot,
:root[data-theme="dunkel"] .kanban-col--tuerkis, :root[data-theme="dunkel"] .kanban-col--amber {
  background: linear-gradient(180deg, var(--col-tint) 0%, #141416 170%);
}

/* --- Gewinn/Verlust + Flash: hellere Signalfarben --- */
:root[data-theme="dunkel"] .gv--plus  { color: #3DCF8E; }
:root[data-theme="dunkel"] .gv--minus { color: #F2707A; }
:root[data-theme="dunkel"] .flash--ok { border-color: #1E4B48; color: var(--p-tuerkis-fg); }
:root[data-theme="dunkel"] .flash--fehler { border-color: #5A2730; color: var(--p-rot-fg); }

/* --- Toasts: hellere Navy-Fläche, Fehler-Rot tief genug für Weiß --- */
:root[data-theme="dunkel"] .toast, :root[data-theme="dunkel"] .toast--ok { background: #2C2C2E; }
:root[data-theme="dunkel"] .toast--fehler { background: #8E1B44; }

/* --- Timerbar: dunkles Türkis-Soft (Grund via Token), Kante nachziehen --- */
:root[data-theme="dunkel"] .timerbar { background: #1C1C1E; border-color: rgba(20,179,172,.35); }

/* --- Avatare/Actor-Chips: Ring auf --surface statt Weiß --- */
:root[data-theme="dunkel"] .avatar { box-shadow: 0 0 0 2px var(--surface), 0 1px 3px rgba(0,0,0,.45); }
:root[data-theme="dunkel"] .login-card__logo { background: #FFFFFF; border-radius: 12px; padding: 10px 14px; }
:root[data-theme="dunkel"] .actor-chip { box-shadow: 0 0 0 2px var(--surface), 0 1px 2px rgba(0,0,0,.40); }

/* --- Motiv-Punkte: feine helle Kontur statt dunkler --- */
:root[data-theme="dunkel"] .dot { box-shadow: inset 0 0 0 1px rgba(231,237,244,.30); }

/* --- Inputs: Fläche --surface-2, Schrift/Kanten über Tokens --- */
:root[data-theme="dunkel"] input[type="text"], :root[data-theme="dunkel"] input[type="search"], :root[data-theme="dunkel"] input[type="email"],
:root[data-theme="dunkel"] input[type="password"], :root[data-theme="dunkel"] input[type="tel"], :root[data-theme="dunkel"] input[type="url"],
:root[data-theme="dunkel"] input[type="date"], :root[data-theme="dunkel"] input:not([type]), :root[data-theme="dunkel"] select, :root[data-theme="dunkel"] textarea {
  background: var(--surface-2);
}
:root[data-theme="dunkel"] .kanban-quickadd input { background: var(--surface-2); }
:root[data-theme="dunkel"] .cmdk__input { background: transparent; }

/* --- Kleinteile: sticky-Kopf-Kante, ⌘K-Overlay, Zähler, Farbwahl, Chips --- */
:root[data-theme="dunkel"] .table th { box-shadow: 0 1px 0 rgba(255,255,255,.06); }
:root[data-theme="dunkel"] .cmdk-overlay { background: rgba(0,0,0,.60); }
:root[data-theme="dunkel"] .nav-sub__item--active .nav-sub__count { background: rgba(0,0,0,.35); color: var(--p-tuerkis-fg); }
:root[data-theme="dunkel"] .color-dot.is-active { border-color: #8FB8E4; }
:root[data-theme="dunkel"] .colorpick__item input:checked + .colorpick__dot { border-color: #8FB8E4; }
:root[data-theme="dunkel"] .filter-chip__x:hover { background: rgba(95,211,204,.18); }

/* --- V9-Feedback: Zeiten-Balken/Mini-Balken + freie Farben --- */
:root[data-theme="dunkel"] .zeit-bar:hover::before { background: #5FD3CC; }
:root[data-theme="dunkel"] .mini-balken { background: rgba(20,179,172,.18); }
:root[data-theme="dunkel"] .colorpick__customradio:checked + .colorpick__custom { border-color: #8FB8E4; }
/* .pill--custom: der generische .pill-box-shadow-Override oben würde den
   color-mix-Innenrand überschreiben — hier gezielt wiederherstellen. */
:root[data-theme="dunkel"] .pill--custom { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--pc) 30%, transparent); }

/* ---------- Dunkel-Block 2/2: System-Dunkel ohne explizite Wahl ----------
   Identischer Inhalt wie Block 1/2 (nur Praefix :root:not([data-theme="hell"])) —
   SYNCHRON HALTEN! */

@media (prefers-color-scheme: dark) {
  /* --- Token-Umschaltung: Grundflächen, Text, Linien, Schatten, Pills --- */
  :root:not([data-theme="hell"]) {
    color-scheme: dark;
    scrollbar-color: #48484A transparent;

    /* Türkis minimal heller, Pink heller (Überfällig/Danger bleibt AA-lesbar). */
    --tuerkis:#14B3AC;
    --pink:#FF4D8D;

    --bg:#000000; --surface:#1C1C1E; --surface-2:#2C2C2E;
    --border:rgba(255,255,255,.12); --border-strong:rgba(255,255,255,.20); --hover:rgba(255,255,255,.06);
    --text:#F5F5F7; --text-muted:#98989D; --text-soft:#8E8E93;
    /* Zeilen-Hover mit türkisem Hauch — dunkles Pendant zu #F2F9F8. */
    --row-hover:#1C2B29;

    /* Schatten: schwarzbasiert, höhere Alpha — Navy-Tint trägt im Dunkeln nicht. */
    --shadow-pop:0 4px 16px rgba(0,0,0,.45), 0 1px 3px rgba(0,0,0,.35);
    --shadow-card:0 1px 2px rgba(0,0,0,.25);
    --shadow-xs:0 1px 2px rgba(0,0,0,.30);
    --shadow-sm:0 1px 2px rgba(0,0,0,.30), 0 3px 8px rgba(0,0,0,.30);
    --shadow-md:0 2px 4px rgba(0,0,0,.30), 0 8px 24px rgba(0,0,0,.40);
    --shadow-lg:0 0 0 1px rgba(255,255,255,.08), 0 16px 48px rgba(0,0,0,.60);

    /* Pill-Paletten: dunkler Ton-Grund + hellere Schrift desselben Tons (alle ≥ AA). */
    --p-grau-bg:#2C2C2E;    --p-grau-fg:#C7C7CC;
    --p-tuerkis-bg:#12312F; --p-tuerkis-fg:#5FD3CC;
    --p-navy-bg:#16283C;    --p-navy-fg:#8FB8E4;
    --p-gelb-bg:#332B14;    --p-gelb-fg:#E8C563;
    --p-gruen-bg:#143026;   --p-gruen-fg:#5BC896;
    --p-blau-bg:#172B40;    --p-blau-fg:#7FB1E8;
    --p-amber-bg:#34270F;   --p-amber-fg:#E0A54E;
    --p-rot-bg:#3A1524;     --p-rot-fg:#F08A93;
  }

  /* --- Grundflächen: Body-/Sidebar-Verlauf dunkel, Login-Bühne türkis-navy --- */
  :root:not([data-theme="hell"]) body {
    background-color: var(--bg);
    background-image: none;
  }
  :root:not([data-theme="hell"]) .sidebar {
    background: #1C1C1E;
    box-shadow: none;
  }
  :root:not([data-theme="hell"]) body.login-page {
    background: radial-gradient(640px 480px at 50% 42%, rgba(20,179,172,.08), rgba(20,179,172,0) 70%), #000000;
  }

  /* --- Navy-Texte → helles Eisblau (Navy bleibt nur Flächen-Anker) --- */
  :root:not([data-theme="hell"]) h1, :root:not([data-theme="hell"]) h2, :root:not([data-theme="hell"]) h3, :root:not([data-theme="hell"]) h4,
  :root:not([data-theme="hell"]) .sidebar__brand-link, :root:not([data-theme="hell"]) a.sidebar__brand-link:hover,
  :root:not([data-theme="hell"]) .kanban-card__title,
  :root:not([data-theme="hell"]) .pipeline-summary__value,
  :root:not([data-theme="hell"]) .bulkbar__count,
  :root:not([data-theme="hell"]) .timer__display,
  :root:not([data-theme="hell"]) .dash-kpi__value,
  :root:not([data-theme="hell"]) .dash-big,
  :root:not([data-theme="hell"]) .big-card__title,
  :root:not([data-theme="hell"]) .tpl-card__name,
  :root:not([data-theme="hell"]) .attr--head .attr__value--name,
  :root:not([data-theme="hell"]) .tabs button.is-active,
  :root:not([data-theme="hell"]) .art-btn.is-active,
  :root:not([data-theme="hell"]) .tabs--lists .tab.is-active,
  :root:not([data-theme="hell"]) .zeit-range__link.is-active { color: #F5F5F7; }
  /* Zustands-Farben, die die Liste oben sonst überstimmen würde: */
  :root:not([data-theme="hell"]) .timer--on .timer__display { color: var(--p-tuerkis-fg); }
  :root:not([data-theme="hell"]) .pipeline-summary__value--gruen,
  :root:not([data-theme="hell"]) .dash-kpi__value--gruen { color: var(--p-gruen-fg); }
  /* --- Segmente: aktiver Knopf heller als die Schiene (Apple-Dunkel) --- */
  :root:not([data-theme="hell"]) .tabs button.is-active,
  :root:not([data-theme="hell"]) .art-btn.is-active,
  :root:not([data-theme="hell"]) .tabs--lists .tab.is-active,
  :root:not([data-theme="hell"]) .zeit-range__link.is-active { background: #3A3A3C; }
  @supports (-webkit-background-clip: text) {
    :root:not([data-theme="hell"]) .dash-big { background-image: linear-gradient(180deg, #F5F5F7 0%, #C7C7CC 115%); }
  }

  /* --- Buttons: Primär auf helleres Navy, Ghost-Kante dunkel --- */
  :root:not([data-theme="hell"]) .btn--primary { background-color: #0B4E8C; border-color: #0B4E8C; }
  :root:not([data-theme="hell"]) .btn--primary:hover { background-color: #0D5AA1; border-color: #0D5AA1; }
  :root:not([data-theme="hell"]) .btn--primary:active { background-color: #094173; }
  :root:not([data-theme="hell"]) .btn--ghost:hover { border-color: rgba(255,255,255,.28); }

  /* --- Pills: heller Innenrand statt Navy-Hauch --- */
  :root:not([data-theme="hell"]) .pill { box-shadow: inset 0 0 0 1px rgba(255,255,255,.06); }

  /* --- Kanban-Spalten: dunkle Tints, Oberkante bleibt kräftig --- */
  :root:not([data-theme="hell"]) .kanban-col--grau    { --col-tint:#232326; --col-strong:#98989D; }
  :root:not([data-theme="hell"]) .kanban-col--blau    { --col-tint:#152A3E; --col-strong:#4E93DE; }
  :root:not([data-theme="hell"]) .kanban-col--gelb    { --col-tint:#2E2712; --col-strong:#F6BC26; }
  :root:not([data-theme="hell"]) .kanban-col--navy    { --col-tint:#172642; --col-strong:#3E77BC; }
  :root:not([data-theme="hell"]) .kanban-col--gruen   { --col-tint:#12302A; --col-strong:#2FB981; }
  :root:not([data-theme="hell"]) .kanban-col--rot     { --col-tint:#351B1E; --col-strong:#E8686C; }
  :root:not([data-theme="hell"]) .kanban-col--tuerkis { --col-tint:#10302E; --col-strong:#14B3AC; }
  :root:not([data-theme="hell"]) .kanban-col--amber   { --col-tint:#322510; --col-strong:#DE9A33; }
  :root:not([data-theme="hell"]) .kanban-col--grau, :root:not([data-theme="hell"]) .kanban-col--blau, :root:not([data-theme="hell"]) .kanban-col--gelb,
  :root:not([data-theme="hell"]) .kanban-col--navy, :root:not([data-theme="hell"]) .kanban-col--gruen, :root:not([data-theme="hell"]) .kanban-col--rot,
  :root:not([data-theme="hell"]) .kanban-col--tuerkis, :root:not([data-theme="hell"]) .kanban-col--amber {
    background: linear-gradient(180deg, var(--col-tint) 0%, #141416 170%);
  }

  /* --- Gewinn/Verlust + Flash: hellere Signalfarben --- */
  :root:not([data-theme="hell"]) .gv--plus  { color: #3DCF8E; }
  :root:not([data-theme="hell"]) .gv--minus { color: #F2707A; }
  :root:not([data-theme="hell"]) .flash--ok { border-color: #1E4B48; color: var(--p-tuerkis-fg); }
  :root:not([data-theme="hell"]) .flash--fehler { border-color: #5A2730; color: var(--p-rot-fg); }

  /* --- Toasts: hellere Navy-Fläche, Fehler-Rot tief genug für Weiß --- */
  :root:not([data-theme="hell"]) .toast, :root:not([data-theme="hell"]) .toast--ok { background: #2C2C2E; }
  :root:not([data-theme="hell"]) .toast--fehler { background: #8E1B44; }

  /* --- Timerbar: dunkles Türkis-Soft (Grund via Token), Kante nachziehen --- */
  :root:not([data-theme="hell"]) .timerbar { background: #1C1C1E; border-color: rgba(20,179,172,.35); }

  /* --- Avatare/Actor-Chips: Ring auf --surface statt Weiß --- */
  :root:not([data-theme="hell"]) .avatar { box-shadow: 0 0 0 2px var(--surface), 0 1px 3px rgba(0,0,0,.45); }
  :root:not([data-theme="hell"]) .login-card__logo { background: #FFFFFF; border-radius: 12px; padding: 10px 14px; }
  :root:not([data-theme="hell"]) .actor-chip { box-shadow: 0 0 0 2px var(--surface), 0 1px 2px rgba(0,0,0,.40); }

  /* --- Motiv-Punkte: feine helle Kontur statt dunkler --- */
  :root:not([data-theme="hell"]) .dot { box-shadow: inset 0 0 0 1px rgba(231,237,244,.30); }

  /* --- Inputs: Fläche --surface-2, Schrift/Kanten über Tokens --- */
  :root:not([data-theme="hell"]) input[type="text"], :root:not([data-theme="hell"]) input[type="search"], :root:not([data-theme="hell"]) input[type="email"],
  :root:not([data-theme="hell"]) input[type="password"], :root:not([data-theme="hell"]) input[type="tel"], :root:not([data-theme="hell"]) input[type="url"],
  :root:not([data-theme="hell"]) input[type="date"], :root:not([data-theme="hell"]) input:not([type]), :root:not([data-theme="hell"]) select, :root:not([data-theme="hell"]) textarea {
    background: var(--surface-2);
  }
  :root:not([data-theme="hell"]) .kanban-quickadd input { background: var(--surface-2); }
  :root:not([data-theme="hell"]) .cmdk__input { background: transparent; }

  /* --- Kleinteile: sticky-Kopf-Kante, ⌘K-Overlay, Zähler, Farbwahl, Chips --- */
  :root:not([data-theme="hell"]) .table th { box-shadow: 0 1px 0 rgba(255,255,255,.06); }
  :root:not([data-theme="hell"]) .cmdk-overlay { background: rgba(0,0,0,.60); }
  :root:not([data-theme="hell"]) .nav-sub__item--active .nav-sub__count { background: rgba(0,0,0,.35); color: var(--p-tuerkis-fg); }
  :root:not([data-theme="hell"]) .color-dot.is-active { border-color: #8FB8E4; }
  :root:not([data-theme="hell"]) .colorpick__item input:checked + .colorpick__dot { border-color: #8FB8E4; }
  :root:not([data-theme="hell"]) .filter-chip__x:hover { background: rgba(95,211,204,.18); }

  /* --- V9-Feedback: Zeiten-Balken/Mini-Balken + freie Farben --- */
  :root:not([data-theme="hell"]) .zeit-bar:hover::before { background: #5FD3CC; }
  :root:not([data-theme="hell"]) .mini-balken { background: rgba(20,179,172,.18); }
  :root:not([data-theme="hell"]) .colorpick__customradio:checked + .colorpick__custom { border-color: #8FB8E4; }
  /* .pill--custom: der generische .pill-box-shadow-Override oben würde den
     color-mix-Innenrand überschreiben — hier gezielt wiederherstellen. */
  :root:not([data-theme="hell"]) .pill--custom { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--pc) 30%, transparent); }
}


/* ============================================================
   V24 (UI/UX-Audit): Touch-Trefferflächen ≥ 44px NUR auf Touchgeräten.
   Am Desktop (Maus) bleibt alles wie bisher — greift per pointer: coarse.
   Vergrößert die Tap-Fläche über Padding/min-height, ohne die sichtbare
   Optik der Icons/Links zu verändern.
   ============================================================ */
@media (pointer: coarse) {
  .dash-card__eye,
  .kanban-col__tool,
  .kanban-col__zu,
  .btn--icon.btn--sm,
  .task-strip__check,
  .doc-link__del,
  .chip__x,
  .filter-chip__remove {
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  /* Textlinks „alle ansehen", Anker-Chips, kleine Buttons: höhere Tap-Zone. */
  .dash-card__more,
  .einst-anker__chip,
  .btn--sm,
  .kanban-col__add,
  .nav-sub__item {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
  /* Checkboxen in Listen/Boards komfortabel treffbar. */
  input[type="checkbox"] {
    min-width: 22px;
    min-height: 22px;
  }
}

/* V21: Deal-Karten-Kopf — Aktionen (Auge/Löschen) rechtsbündig; Buttons
   erscheinen dezent erst beim Überfahren der Karte (Desktop). */
.task-card__head--deal { justify-content: flex-end; min-height: 18px; }
@media (hover: hover) {
  .kanban-card .task-card__head--deal .task-hide { opacity: 0; transition: opacity .12s ease; }
  .kanban-card:hover .task-card__head--deal .task-hide,
  .kanban-card:focus-within .task-card__head--deal .task-hide { opacity: 1; }
}

/* V22c: Spalten-Überschriften im Meeting-Ranking (gleiches Grid wie .meet-rang). */
.meet-rang--kopf { margin-bottom: 2px; }
.meet-rang__kopf {
  font-size: 11px; font-weight: 700; letter-spacing: .05em;
  text-transform: uppercase; color: var(--text-soft);
}
.meet-rang__kopf--r { text-align: right; }
.meet-zeile--kopf { border-bottom: 1px solid var(--hover); padding-bottom: 4px; margin-bottom: 2px; }
