/* Partner-Bereich — der Bereichs-Stil.
 *
 * Lag bis zum 06.09.2026 als <style>-Block in partner.php: 1.756 Zeilen, ~152 KB, die bei JEDEM
 * Aufruf erneut über die Leitung gingen, obwohl app/.htaccess für .css einen Tages-Cache setzt und
 * sich der Inhalt zwischen zwei Deploys nie ändert. Der Block enthielt keinen einzigen PHP-Tag und
 * keinen relativen Pfad (die eine url() ist eine data:-URI) — er war 1:1 verschiebbar.
 *
 * REIHENFOLGE: Diese Datei MUSS nach styles.css und shares.css geladen werden. Mehrere Regeln hier
 * gewinnen allein durch ihre Position gegen gleich spezifische Regeln dort; shares.css:143 f.
 * dokumentiert das ausdrücklich und wehrt sich an einer Stelle mit einem Doppelklassen-Trick.
 */
  /* ===== ImmoBricks-Shell: dunkle linke Sidebar (Forest 900) + Content-Spalte ===== */
  .ib-shell{display:flex;align-items:stretch;min-height:100vh}
  .ib-sidebar{flex:none;width:248px;background:var(--forest-900);color:var(--ink);display:flex;flex-direction:column;gap:4px;padding:16px 14px 14px;position:sticky;top:0;height:100vh;overflow-y:auto;transition:width var(--dur-base) var(--ease-out)}
  /* Marke + Einklapp-Schalter */
  .ib-brand-row{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:2px 4px 12px}
  .ib-brand{display:flex;align-items:center;gap:10px;min-width:0}
  .ib-brand-mark{flex:none;width:38px;height:26px;display:flex;align-items:center;justify-content:center}
  .ib-brand-mark svg{width:100%;height:100%}
  .ib-brand-text .brand-word b{font-weight:800}
  .ib-brand-text{display:flex;flex-direction:column;line-height:1.15;min-width:0}
  .ib-brand-text .brand-word{font-family:var(--font-head);font-weight:300;font-size:1.15rem;color:#fff;letter-spacing:-.01em}
  .ib-brand-text small{font-size:.74rem;color:var(--ink-faint);font-weight:500;}
  /* Demo-Badge: feste Farben, unabhängig vom Theme (Sidebar ist immer dunkel) */
  .ib-brand-text #demoBadge{margin-top:5px;align-self:flex-start;background:rgba(203,167,106,.16)!important;color:#D9C29A!important;border:1px solid rgba(203,167,106,.30)!important;text-transform:none!important;letter-spacing:0}
  .ib-collapse{flex:none;width:30px;height:30px;border:none;border-radius:4px;background:none;color:var(--ink-faint);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background var(--dur-fast),color var(--dur-fast)}
  .ib-collapse:hover{background:rgba(255,255,255,.07);color:#fff}
  .ib-collapse:focus-visible{outline:2px solid #fff;outline-offset:-2px}
  /* Hamburger + Off-Canvas-Menü: nur mobil sichtbar (siehe Media Query unten) */
  .ib-hamburger{display:none;flex:none;width:34px;height:34px;border:none;border-radius:4px;background:none;color:var(--ink);align-items:center;justify-content:center;cursor:pointer;transition:background var(--dur-fast)}
  .ib-hamburger:hover{background:rgba(255,255,255,.08)}
  .ib-hamburger:focus-visible{outline:2px solid #fff;outline-offset:-2px}
  .ib-hamburger .ic-close{display:none}
  .ib-nav-backdrop{display:none}
  /* Globale Suche: Kunden/Objekte/Vorgänge/Leads, Ergebnis-Panel als fixed Overlay (entkommt dem overflow:auto der Sidebar) */
  .ib-search{padding:0 4px 14px}
  .ib-search-box{position:relative}
  .ib-search-ico{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink-faint);pointer-events:none;display:flex}
  .ib-search-input{width:100%;font:inherit;font-size:.85rem;padding:.58em .7em .58em 2.15em;border:1px solid rgba(255,255,255,.14);border-radius:4px;background:rgba(255,255,255,.06);color:#EAF0EB;transition:background var(--dur-fast),border-color var(--dur-fast)}
  .ib-search-input::placeholder{color:#7D8F82}
  .ib-search-input:hover{background:rgba(255,255,255,.09)}
  .ib-search-input:focus{outline:none;background:rgba(255,255,255,.1);border-color:var(--green-500,var(--green))}
  .ib-search-results{position:fixed;z-index:80;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow,0 12px 30px rgba(0,0,0,.16));max-height:min(70vh,520px);overflow-y:auto;padding:6px}
  .ib-search-results.hidden{display:none}
  .ib-search-group + .ib-search-group{margin-top:4px}
  .ib-search-group-lbl{font-size:.68rem;font-weight:700;color:var(--ink-soft);padding:8px 10px 4px}
  .ib-search-empty{padding:16px 12px;color:var(--ink-soft);font-size:.86rem;text-align:center}
  .ib-search-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:none;background:none;border-radius:4px;cursor:pointer;text-align:left;font:inherit;color:var(--ink)}
  .ib-search-item:hover,.ib-search-item.active{background:var(--accent-soft,rgba(42,122,87,.1))}
  .ib-search-item-ico{flex:none;width:28px;height:28px;border-radius:4px;display:flex;align-items:center;justify-content:center;background:var(--surface-2,var(--bg));color:var(--green-600,var(--accent))}
  .ib-search-item-ico svg{width:15px;height:15px}
  .ib-search-item-text{min-width:0;flex:1 1 auto;display:flex;flex-direction:column;line-height:1.25}
  .ib-search-item-title{font-weight:600;font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ib-search-item-sub{font-size:.76rem;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ib-collapsed .ib-search{display:none}
  /* Partner-Logo: direkt in die Sidebar, transparent, volle Breite, max 50px hoch */
  .ib-partner{padding:2px 4px 14px}
  .ib-partner:empty{display:none}
  .ib-partner .brand-sep{display:none}
  /* Partner-Logo dauerhaft S/W + invertiert (Sidebar immer dunkel → dunkle Logos werden hell) */
  .ib-partner .brand-partner-logo{display:block;width:100%;max-height:50px;object-fit:contain;object-position:left center;filter:grayscale(1) invert(1) brightness(1.12) contrast(.92)}
  .ib-partner .brand-partner-name{font-family:var(--font-body);font-weight:600;font-size:.95rem;color:#EAF0EB;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* Navigation */
  .ib-nav{display:flex;flex-direction:column;gap:3px;flex:1 1 auto}
  .ib-nav-item{position:relative;display:flex;align-items:center;gap:12px;width:100%;margin:0;padding:10px 11px;border:none;border-radius:4px;background:none;color:var(--ink-soft);font:inherit;font-weight:500;font-size:.95rem;cursor:pointer;text-align:left;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
  .ib-nav-item:hover{background:rgba(255,255,255,.06);color:#fff}
  .ib-nav-item.active{background:var(--green-700);color:#fff}
  .ib-nav-item.active::after{display:none}          /* Unterstrich-Indikator der Basis-Tabs deaktivieren */
  .ib-nav-item:focus-visible{outline:2px solid #fff;outline-offset:-2px}
  .ib-nav-ico{flex:none;width:20px;height:20px;display:flex;align-items:center;justify-content:center}
  .ib-nav-ico svg{width:20px;height:20px}
  .ib-nav-lbl{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ib-nav-item .tab-badge{margin-left:auto;flex:none}
  /* „Anfragen" = Unterpunkt von „Objekte": eingerückt mit Verbinder-Linie. Die Sichtbarkeit
     steuert activateTab (nur Bauträger, nur solange der Bereich Objekte/Anfragen aktiv ist). */
  .ib-nav-item.ib-nav-sub{margin-left:27px;width:calc(100% - 27px);padding-top:8px;padding-bottom:8px;font-size:.9rem}
  .ib-nav-item.ib-nav-sub::before{content:"";position:absolute;left:-16px;top:-9px;bottom:50%;width:13px;border-left:1.5px solid rgba(255,255,255,.22);border-bottom:1.5px solid rgba(255,255,255,.22);border-bottom-left-radius:9px;pointer-events:none}
  /* Fuss: Profil (Bild + Name/Firma) + Theme-Toggle + Abmelde-Icon */
  .ib-side-foot{margin-top:8px;padding-top:12px;border-top:1px solid rgba(255,255,255,.09);display:flex;align-items:center;gap:9px}
  .ib-avatar{flex:none;width:36px;height:36px;border-radius:3px;overflow:hidden;background:var(--green-600);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--font-head);font-weight:700;font-size:.85rem}
  .ib-avatar img{width:100%;height:100%;object-fit:cover;display:block}
  .ib-profile-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;line-height:1.25}
  .ib-profile-name{font-family:var(--font-body);font-weight:600;font-size:.86rem;color:#EAF0EB;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ib-profile-sub{font-size:.74rem;color:var(--ink-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ib-icon-btn{flex:none;width:32px;height:32px;border:none;border-radius:4px;background:none;color:var(--ink-faint);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:background var(--dur-fast),color var(--dur-fast)}
  .ib-icon-btn:hover{background:rgba(255,255,255,.08);color:#fff}
  .ib-icon-btn:focus-visible{outline:2px solid #fff;outline-offset:-2px}
  .ib-side-foot .theme-toggle{border:none}
  /* Eingeklappt: nur Icons */
  .ib-shell.ib-collapsed .ib-sidebar{width:66px;padding-left:9px;padding-right:9px}
  .ib-collapsed .ib-brand-text{display:none}
  .ib-collapsed .ib-brand-row{flex-direction:column;justify-content:center;gap:10px;padding:2px 0 12px}
  .ib-collapsed .ib-partner{display:none}
  .ib-collapsed .ib-nav-item{justify-content:center;padding:10px 0;gap:0}
  .ib-collapsed .ib-nav-lbl{display:none}
  .ib-collapsed .ib-nav-item .tab-badge{position:absolute;top:5px;right:9px;margin:0;min-width:8px;width:8px;height:8px;padding:0;font-size:0;border-radius:3px}
  .ib-collapsed .ib-nav-item.ib-nav-sub{margin-left:0;width:100%}
  .ib-collapsed .ib-nav-item.ib-nav-sub::before{display:none}
  .ib-collapsed .ib-side-foot{flex-direction:column;gap:8px}
  .ib-collapsed .ib-profile-text,.ib-collapsed .ib-side-foot .theme-toggle,.ib-collapsed .ib-side-foot .ib-logout{display:none}
  /* Content-Spalte — volle Fensterbreite */
  .ib-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}

  /* Offene Handlungen — steht über allen Reitern, solange draußen jemand wartet. Bronze als
     Aufmerksamkeitsfläche: kräftig genug, um nicht überlesen zu werden, ohne die Warnfarbe zu
     verbrauchen, die einem echten Fehler gehört. */
  /* Bronze-Text braucht je Theme eine eigene Helligkeit: dunkles Bronze verschwindet auf dunklem
     Grund, helles wäre auf Weiß nicht lesbar. */
  :root{--todo-ink:#7E6127}
  [data-theme="dark"]{--todo-ink:#DDC38F}
  .ib-todo{margin:0 0 20px;padding:13px 15px 12px;border-radius:6px;
    background:color-mix(in srgb,var(--gold) 13%,var(--surface));
    border:1px solid color-mix(in srgb,var(--gold) 44%,var(--line));
    display:flex;flex-direction:column;gap:9px}
  .ib-todo-h{display:flex;align-items:center;gap:8px;color:var(--ink)}
  .ib-todo-h b{font-size:.95rem;font-weight:700;flex:1 1 auto}
  .ib-todo-zu{flex:none;display:flex;align-items:center;justify-content:center;width:26px;height:26px;
    border-radius:4px;border:1px solid transparent;background:none;color:var(--ink-faint);cursor:pointer;padding:0}
  .ib-todo-zu:hover{background:var(--surface);border-color:color-mix(in srgb,var(--gold) 40%,var(--line));color:var(--ink)}
  .ib-todo-zu:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

  /* Zusammengelegt: eine Zeile, die sagt wie viel wartet — und sich mit einem Klick wieder öffnet.
     Sie bleibt bronzefarben, damit man sie nicht mit einer gewöhnlichen Meldung verwechselt. */
  .ib-todo.is-mini{padding:0;border:0;background:none}
  .ib-todo-mini{display:flex;align-items:center;gap:9px;width:100%;text-align:left;font:inherit;
    color:var(--ink);cursor:pointer;padding:9px 14px;border-radius:6px;
    background:color-mix(in srgb,var(--gold) 13%,var(--surface));
    border:1px solid color-mix(in srgb,var(--gold) 40%,var(--line));
    transition:border-color .12s,background .12s}
  .ib-todo-mini:hover{border-color:color-mix(in srgb,var(--gold) 66%,var(--line));
    background:color-mix(in srgb,var(--gold) 18%,var(--surface))}
  .ib-todo-mini:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .ib-todo-mini b{flex:1 1 auto;font-size:.9rem;font-weight:700}
  .ib-todo-mini-cta{flex:none;font-size:.8rem;font-weight:650;color:var(--todo-ink)}
  .ib-todo-ic{flex:none;display:flex;color:var(--todo-ink)}
  .ib-todo-list{display:flex;flex-direction:column;gap:6px}
  .ib-todo-row{display:flex;align-items:stretch;gap:6px}
  /* Ausgeblendet, aber zum Nachsehen wieder hervorgeholt: blasser, damit der Unterschied zu dem,
     was noch offen vor einem liegt, sofort sichtbar ist. */
  .ib-todo-row.is-off{opacity:.55}
  .ib-todo-x{flex:none;display:flex;align-items:center;justify-content:center;width:34px;
    background:var(--surface);border:1px solid color-mix(in srgb,var(--gold) 26%,var(--line));
    border-radius:6px;color:var(--ink-faint);cursor:pointer;padding:0;
    transition:color .12s,border-color .12s,background .12s}
  .ib-todo-x:hover{color:var(--ink);border-color:color-mix(in srgb,var(--gold) 62%,var(--line))}
  .ib-todo-x:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .ib-todo-foot{display:flex;flex-wrap:wrap;align-items:center;gap:16px}
  .ib-todo-item{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:11px;text-align:left;font:inherit;
    color:var(--ink);background:var(--surface);border:1px solid color-mix(in srgb,var(--gold) 26%,var(--line));
    border-radius:6px;padding:9px 12px;cursor:pointer;transition:border-color .12s,transform .12s}
  .ib-todo-item:hover{border-color:color-mix(in srgb,var(--gold) 62%,var(--line));transform:translateX(1px)}
  .ib-todo-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .ib-todo-kind{flex:none;font-size:.68rem;font-weight:800;
    color:var(--todo-ink);background:color-mix(in srgb,var(--gold) 20%,transparent);
    border:1px solid color-mix(in srgb,var(--gold) 40%,var(--line));border-radius:3px;padding:.22em .7em;
    white-space:nowrap}
  .ib-todo-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
  .ib-todo-t{font-size:.92rem;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ib-todo-s{font-size:.79rem;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ib-todo-age{flex:none;font-size:.76rem;color:var(--ink-faint);white-space:nowrap}
  /* Was länger als drei Tage liegt, sagt das deutlicher — Dringlichkeit ohne zweite Farbe. */
  .ib-todo-item.is-old .ib-todo-age{color:var(--todo-ink);font-weight:700}
  .ib-todo-arr{flex:none;color:var(--ink-faint)}
  .ib-todo-item:hover .ib-todo-arr{color:var(--ink-soft)}
  .ib-todo-more{font:inherit;font-size:.83rem;font-weight:650;color:var(--todo-ink);
    background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
  .ib-todo-more:hover{color:var(--ink)}
  @media(max-width:640px){
    .ib-todo-age,.ib-todo-arr{display:none}
    .ib-todo-item{align-items:flex-start;flex-wrap:wrap}
  }
  /* Mobil: Sidebar wird zur schlanken Kopfleiste (Hamburger); Navigation als Off-Canvas-Menü von links */
  @media(max-width:900px){
    .ib-shell,.ib-shell.ib-collapsed{flex-direction:column}
    .ib-sidebar,.ib-shell.ib-collapsed .ib-sidebar{width:auto;height:auto;position:sticky;top:0;z-index:37;flex-direction:row;align-items:center;gap:8px;padding:9px 12px;overflow:visible}
    /* Support-Banner auf Mobil: nur Offset (top), NICHT die Höhe erzwingen — die mobile Sidebar bleibt height:auto. */
    body.imp-active .ib-sidebar,body.imp-active .ib-shell.ib-collapsed .ib-sidebar{top:var(--imp-h)!important}
    .ib-brand-row,.ib-collapsed .ib-brand-row{flex-direction:row;justify-content:flex-start;padding:0;gap:8px;flex:none}
    .ib-collapse{display:none}
    .ib-hamburger{display:flex}
    .ib-brand-text,.ib-partner,.ib-search{display:none}
    .ib-side-foot{flex-direction:row;align-items:center;margin:0 0 0 auto;padding:0;border-top:none;flex:none;gap:4px}
    /* Beim Öffnen eines Vorgangs klappt die Seitenleiste ein (.ib-collapsed, am Desktop
       gewollt). Auf dem Handy IST die Leiste aber die obere Kopfzeile — dort stapelten die
       Einklapp-Regeln (Zeile ~126/127) Avatar und Glocke untereinander und blendeten Theme
       und Abmelden aus; die Kopfzeile wuchs dadurch von 54 auf 94 px. Sie gewinnen wegen
       zweier Klassen gegen die Regel darüber, deshalb hier ausdrücklich zurücknehmen. */
    .ib-collapsed .ib-side-foot{flex-direction:row;gap:4px}
    .ib-collapsed .ib-side-foot .theme-toggle,.ib-collapsed .ib-side-foot .ib-logout{display:inline-flex}
    .ib-profile-text{display:none}
    .ib-nav-backdrop{position:fixed;left:0;right:0;bottom:0;top:var(--ib-topbar-h,58px);background:rgba(8,14,11,.55);z-index:35;opacity:0;pointer-events:none;transition:opacity var(--dur-base) var(--ease-out)}
    .ib-shell.ib-mobile-nav-open .ib-nav-backdrop{opacity:1;pointer-events:auto}
    .ib-nav{position:fixed;left:0;top:var(--ib-topbar-h,58px);bottom:0;width:min(78vw,300px);flex-direction:column;align-items:stretch;gap:3px;background:var(--forest-900);padding:14px;overflow-y:auto;box-shadow:2px 0 28px rgba(0,0,0,.35);transform:translateX(-100%);transition:transform var(--dur-base) var(--ease-out);z-index:36}
    .ib-shell.ib-mobile-nav-open .ib-nav{transform:translateX(0)}
    .ib-nav-item{flex:none;padding:13px 12px}
    .ib-shell.ib-mobile-nav-open .ib-hamburger .ic-burger{display:none}
    .ib-shell.ib-mobile-nav-open .ib-hamburger .ic-close{display:flex}
  }
  .p-wrap{max-width:none;margin:0;padding:26px 34px 60px}
  .p-auth{max-width:420px;margin:8vh auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:34px}
  .p-auth h1{font-size:1.5rem;margin-bottom:6px}
  .p-auth .sub{color:var(--ink-soft);font-size:.92rem;margin-bottom:18px}
  .p-auth form{display:flex;flex-direction:column;gap:13px}
  /* Tab-Navigation: schlichte Text-Tabs mit oranger Unterstreichung (kompakter; KEINE overflow-Scrollbar auf Desktop) */
  /* ===== Backend-Redesign: gemeinsame Komponenten ===== */
  .page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap;margin-bottom:24px}
  .page-sub{color:var(--ink-soft);font-size:1rem;line-height:1.5;margin:9px 0 0;max-width:640px}
  /* Quick-Filter-Leiste: Suche + Status-Zählpillen + Anzahl */
  .qbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 12px}
  .qbar-search{position:relative;flex:0 1 320px;min-width:220px}
  .qbar-search input{width:100%;font:inherit;padding:.62em .8em .62em 2.3em;border:1.5px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink)}
  .qbar-search input:focus{outline:none;border-color:var(--accent)}
  .qbar-search svg{position:absolute;left:.8em;top:50%;transform:translateY(-50%);color:var(--ink-soft);pointer-events:none}
  .qbar-pills{display:flex;gap:8px;flex-wrap:wrap;flex:1 1 auto}
  .qpill{display:inline-flex;align-items:center;gap:7px;font:inherit;font-weight:600;font-size:.9rem;color:var(--ink-soft);background:var(--surface);border:1.5px solid var(--line);border-radius:3px;padding:.42em 1em;cursor:pointer;white-space:nowrap;transition:.14s}
  .qpill:hover{border-color:var(--accent)}
  .qpill .n{font-size:.82rem;color:var(--ink-soft);font-weight:700}
  .qpill.active{background:var(--accent-soft);border-color:transparent;color:var(--accent-dark)}
  .qpill.active .n{color:var(--accent-dark)}
  .qpill:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}
  .qbar-count{margin-left:auto;color:var(--ink-soft);font-size:.9rem;white-space:nowrap}
  /* Avatar-Quadrat mit Initialen (Farbe per JS inline gesetzt) */
  .av{flex:0 0 auto;width:38px;height:38px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.82rem;font-family:var(--font-body)}
  .av.sm{width:28px;height:28px;border-radius:3px;font-size:.68rem}
  /* Partner-KPI-Karten: Label oben, große Serifenzahl */
  .pk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px}
  .pk-card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow-sm);padding:18px 18px 16px;overflow:hidden}
  .pk-top{display:flex;align-items:center;gap:11px;margin-bottom:14px}
  .pk-ic{flex:none;width:34px;height:34px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--ink-soft);background:var(--surface-2);border:1px solid var(--line)}
  .pk-ic svg{width:18px;height:18px}
  .pk-label{font-size:.72rem;font-weight:600;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .pk-val{font-family:var(--font-num);font-size:1.9rem;font-weight:600;color:var(--ink);line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
  .pk-sub{font-size:.8rem;color:var(--ink-soft);margin-top:9px}
  .pk-sub .up{color:var(--green);font-weight:700}
  /* Leads: KPIs · 14-Tage-Chart · Filterleiste · Status */
  .lead-kpis{margin:0 0 16px}
  .lead-kpis .pk-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
  .lead-chart-card{background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow-sm);padding:15px 18px 12px;margin:0 0 18px}
  .lead-chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}
  .lead-chart-title{font-weight:700;color:var(--ink);font-size:.95rem}
  .lead-chart-avg{font-size:.82rem;color:var(--ink-soft)}
  .lead-chart{display:flex;align-items:flex-end;gap:5px;height:92px}
  .lead-bar{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5px;min-width:0;height:100%}
  .lead-bar-fill{width:100%;max-width:26px;background:var(--accent);border-radius:3px 3px 2px 2px;min-height:3px;transition:height .35s}
  .lead-bar-fill.empty{background:var(--line)}
  .lead-bar-day{font-size:.6rem;color:var(--ink-soft);white-space:nowrap}
  .lead-filterbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px}
  .lead-filterbar .qbar-search{position:relative;flex:1 1 300px;min-width:200px;max-width:460px}
  .lead-filterbar .qbar-search input{width:100%;font:inherit;font-size:.95rem;padding:.72em .9em .72em 2.5em;border:1.5px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink)}
  .lead-filterbar .qbar-search input:focus{outline:none;border-color:var(--accent)}
  .lead-filterbar .qbar-search svg{position:absolute;left:.75em;top:50%;transform:translateY(-50%);color:var(--ink-soft);pointer-events:none}
  .lead-filterbar select{appearance:none;-webkit-appearance:none;font:inherit;font-size:.92rem;font-weight:600;padding:.72em 2.4em .72em 1em;border:1.5px solid var(--line);border-radius:6px;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23867862' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right .85em center;color:var(--ink);cursor:pointer}
  .lead-filterbar select:focus{outline:none;border-color:var(--accent)}
  .lead-reset{font:inherit;font-size:.88rem;color:var(--accent-dark);background:none;border:none;cursor:pointer;padding:.5em .3em;font-weight:600}
  .lead-trash-toggle,.obj-archive-toggle{display:inline-flex;align-items:center;gap:7px;margin-left:auto;font:inherit;font-size:.92rem;font-weight:600;color:var(--ink-soft);background:var(--surface);border:1.5px solid var(--line);border-radius:6px;padding:.62em 1em;cursor:pointer}
  .lead-trash-toggle .n{font-weight:700;color:var(--ink)}
  .lead-trash-toggle.active,.obj-archive-toggle.active{background:var(--accent-soft);border-color:transparent;color:var(--accent-dark)}
  .lead-filter-count{color:var(--ink-soft);font-size:.9rem;font-weight:600;white-space:nowrap}
  #leadPills{margin:0 0 14px}
  /* Status-Badge + Body-Level-Menü (kein Clipping in der Tabelle) */
  .lead-badge{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;font-weight:700;padding:.3em .8em;border-radius:3px;border:1px solid transparent;cursor:pointer;font-family:var(--font-body);white-space:nowrap}
  .lead-badge[disabled]{cursor:default}
  .lead-badge.st-neu{background:rgba(214,158,46,.16);color:var(--gold)}
  .lead-badge.st-kontaktiert{background:rgba(37,99,170,.13);color:#1d5fa8}
  .lead-badge.st-qualifiziert{background:rgba(47,158,143,.16);color:#1f8073}
  .lead-badge.st-umgewandelt{background:var(--green-soft);color:var(--green)}
  .lead-badge .caret{font-size:.62em;opacity:.65;margin-left:1px}
  .lead-badge:not([disabled]):hover{border-color:rgba(0,0,0,.12)}
  #leadStatusMenu{position:fixed;z-index:1200;background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:0 10px 30px rgba(58,46,28,.16);padding:5px;min-width:160px;display:flex;flex-direction:column;gap:2px}
  #leadStatusMenu.hidden{display:none}
  #leadStatusMenu button{display:flex;align-items:center;gap:8px;text-align:left;font:inherit;font-size:.86rem;padding:.5em .7em;border:none;background:none;border-radius:4px;cursor:pointer;color:var(--ink)}
  #leadStatusMenu button:hover{background:var(--bg)}
  #leadStatusMenu button .dot{width:13px;height:6.5px;border-radius:2px;flex:0 0 auto}
  #leadStatusMenu button.cur{font-weight:700}
  .lead-cell-name{display:flex;align-items:center;gap:11px;min-width:0}
  .lead-cell-name .nm{font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .lead-cell-name .dt{font-size:.78rem;color:var(--ink-soft)}
  .lead-contact .em{color:var(--ink);overflow:hidden;text-overflow:ellipsis;display:block;max-width:230px}
  .lead-contact .ph{font-size:.8rem;color:var(--ink-soft)}
  .lead-actions{display:flex;align-items:center;gap:6px;justify-content:flex-end;flex-wrap:nowrap}
  .lead-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--ink-soft);cursor:pointer;transition:.12s}
  .lead-iconbtn:hover{border-color:var(--accent);color:var(--accent-dark)}
  .lead-iconbtn.danger:hover{border-color:var(--red);color:var(--red)}
  .lead-addbtn{display:inline-flex;align-items:center;gap:4px;font:inherit;font-size:.84rem;font-weight:600;padding:.42em .72em;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--ink);cursor:pointer;white-space:nowrap}
  .lead-addbtn:hover{border-color:var(--accent);color:var(--accent-dark)}
  .lead-addbtn.done{color:var(--green);border-color:transparent;background:var(--green-soft);cursor:default}
  .lead-empty-row td{padding:28px!important;color:var(--ink-soft);text-align:center}
  /* Spaltenbreiten: Kontakt flexibel, Rest inhaltsbreit → keine aufgeblähte Aktionsspalte */
  .lead-table-rich th:nth-child(1),.lead-table-rich td:nth-child(1){width:1%;min-width:190px}
  .lead-table-rich th:nth-child(2),.lead-table-rich td:nth-child(2){width:auto}
  .lead-table-rich th:nth-child(3),.lead-table-rich td:nth-child(3){width:1%}
  .lead-table-rich th:nth-child(4),.lead-table-rich td:nth-child(4){width:1%}
  .lead-table-rich th:nth-child(5),.lead-table-rich td:nth-child(5){width:1%}
  .lead-table-rich th:nth-child(6),.lead-table-rich td:nth-child(6){width:1%}
  .lead-table-rich tbody tr{cursor:pointer}
  .lead-table-rich tbody tr:hover td{background:var(--bg)}
  .lead-table-rich tbody tr.is-new:hover td{background:rgba(214,158,46,.13)}
  /* Avatar mit „neu"-Punkt + farbiger Nutzungsart-Untertitel */
  .lead-av-wrap{position:relative;flex:0 0 auto;display:inline-flex}
  .lead-newdot{position:absolute;top:-3px;right:-3px;width:10px;height:10px;border-radius:50%;background:var(--accent);border:2px solid var(--surface)}
  .lead-role{font-weight:600}
  .lead-role.r-kapital{color:#1d5fa8}
  .lead-role.r-bestand{color:var(--green)}
  .lead-role.r-eigen{color:#6b41a8}
  /* Status-Punkte in den Quick-Filter-Pills */
  .lead-pills .qdot{display:inline-block;width:13px;height:6.5px;border-radius:2px;margin-right:3px;vertical-align:middle}
  .qdot.st-neu{background:#d69e2e}
  .qdot.st-kontaktiert{background:#1d5fa8}
  .qdot.st-qualifiziert{background:#2f9e8f}
  .qdot.st-umgewandelt{background:var(--green)}
  /* Versale, sortierbare Spaltenköpfe */
  .lead-table-rich th{font-size:.72rem;color:var(--ink-soft);font-weight:700;background:var(--surface-2);border-bottom:1px solid var(--line)}
  .lead-table-rich th.lead-sort{cursor:pointer;user-select:none;white-space:nowrap}
  .lead-table-rich th.lead-sort:hover{color:var(--ink)}
  .lead-table-rich th .sort-a{color:var(--accent-dark);font-weight:700}
  .lead-table-rich th .sort-i{opacity:.35}
  .lead-table-rich th.lead-sort:focus-visible{outline:2px solid var(--accent-dark);outline-offset:-2px;border-radius:3px}
  /* ===== Dashboard-Tab ===== */
  .dash-greet{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin:2px 0 22px}
  .dash-h1{font-family:var(--font-head);font-weight:700;font-size:clamp(1.6rem,2.4vw,2.05rem);color:var(--ink);margin:0;letter-spacing:-.01em}
  .dash-sub{font-size:.95rem;color:var(--ink-soft);margin:7px 0 0}
  .dash-greet-act{display:flex;align-items:center;gap:10px;flex:none}
  /* KPI-Karten: neutral (Gestaltung „Frisch“, 02.10.2026 — keine farbige Oberkante, keine getönte Kachel) */
  .dash-kpis{display:flex;gap:14px;margin:0 0 26px}
  .dash-kpi{flex:1;position:relative;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:18px 18px 16px;min-width:0;box-shadow:var(--shadow-sm);overflow:hidden}
  .dash-kpi-top{display:flex;align-items:center;gap:11px;margin-bottom:14px}
  .dash-kpi-ic{flex:none;width:34px;height:34px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--ink-soft);background:var(--surface-2);border:1px solid var(--line)}
  .dash-kpi-ic svg{width:18px;height:18px}
  .dash-kpi-lbl{font-size:.72rem;font-weight:600;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dash-kpi-val{font-family:var(--font-num);font-weight:600;font-size:1.9rem;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em;display:flex;align-items:baseline;gap:8px}
  .dash-kpi-delta{font-family:var(--font-body);font-size:.72rem;font-weight:700;color:var(--green);background:var(--green-soft);padding:2px 8px;border-radius:3px;white-space:nowrap;line-height:1.4}
  .dash-kpi-sub{font-size:.8rem;color:var(--ink-soft);margin-top:9px}
  .dash-sec-head{display:flex;align-items:center;gap:12px;margin:0 0 14px}
  .dash-sec-ico{width:26px;height:26px;flex:none;border-radius:4px;display:flex;align-items:center;justify-content:center}
  .dash-sec-title{font-family:var(--font-head);font-weight:600;font-size:1.35rem;color:var(--ink)}
  .dash-sec-pill{font-size:.72rem;font-weight:700;padding:3px 10px;border-radius:3px}
  .dash-sec-rule{flex:1;height:1px;background:var(--line)}
  .dash-sec-link{font:inherit;font-size:.84rem;font-weight:600;color:var(--ink-soft);background:none;border:none;cursor:pointer;padding:4px 6px}
  .dash-sec-link:hover{color:var(--ink)}
  .dash-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:18px;margin:0 0 30px;align-items:start}
  .dash-card{background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow-sm);padding:6px 6px 10px;min-width:0}
  .dash-card-pad{padding:18px 20px}
  .dash-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:12px 14px 11px;font-size:.95rem;font-weight:700;color:var(--ink)}
  .dash-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border-top:1px solid var(--line)}
  .dash-card-head + .dash-row{border-top:none}
  .dash-row:hover{background:var(--bg)}
  .dash-row[role="button"]{cursor:pointer}
  .dash-row-main{min-width:0;flex:1}
  .dash-row-t{font-size:.92rem;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dash-row-m{font-size:.82rem;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dash-check{flex:none;width:21px;height:21px;border-radius:3px;border:2px solid var(--line);background:transparent;cursor:pointer;position:relative}
  .dash-check.done{background:var(--green);border-color:var(--green)}
  .dash-check.done::after{content:"";position:absolute;left:5px;top:1px;width:5px;height:9px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg)}
  .dash-task.is-done{opacity:.5}
  .dash-task.is-done .dash-row-t{text-decoration:line-through}
  .dash-tag{font-size:.72rem;font-weight:600;padding:4px 10px;border-radius:3px;flex:none;white-space:nowrap}
  .dash-mini-btn{flex:none;font:inherit;font-size:.78rem;font-weight:600;background:transparent;border:1px solid var(--line);border-radius:4px;padding:6px 11px;cursor:pointer;white-space:nowrap}
  .dash-mini-btn:hover{border-color:var(--accent)}
  .dash-pipe{display:flex;align-items:center;gap:11px;padding:5px 0}
  .dash-dot{width:14px;height:7px;flex:none;border-radius:2px}
  .dash-pipe-l{font-size:.9rem;color:var(--ink);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dash-pipe-v{font-size:.84rem;color:var(--ink-soft);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}
  .dash-pipe-c{font-size:.86rem;font-weight:700;color:var(--ink);width:30px;text-align:right;font-variant-numeric:tabular-nums}
  .dash-sum{display:flex;align-items:center;justify-content:space-between;margin-top:10px}
  .dash-sum-sep{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
  .dash-sum span{font-size:.86rem;color:var(--ink-soft)}
  .dash-sum b{font-family:var(--font-num);font-weight:500;font-size:1.2rem;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
  .dash-hot{font-size:.66rem;font-weight:700;color:#B07420;background:#FBEED7;padding:2px 7px;border-radius:3px;flex:none}
  .dash-price{font-size:.9rem;font-weight:700;color:#B07420;flex:none;font-variant-numeric:tabular-nums}
  .dash-funnel{margin-bottom:10px}
  .dash-funnel-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px;font-size:.85rem;color:var(--ink)}
  .dash-bar{height:9px;background:#F1EADF;border-radius:3px;overflow:hidden}
  .dash-bar>span{display:block;height:100%;border-radius:3px;transition:width .3s}
  .dash-pill-n{font-size:.78rem;font-weight:600;color:var(--ink-soft);background:#F1EADF;padding:4px 10px;border-radius:3px;flex:none;white-space:nowrap}
  /* Dashboard „Zuletzt verwendete Objekte": kleines Vorschaubild bzw. Haus-Icon */
  .dash-obj-thumb{flex:none;width:34px;height:34px;border-radius:4px;background:var(--surface-2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--ink-soft);overflow:hidden}
  .dash-obj-thumb img{width:100%;height:100%;object-fit:cover}
  .dash-chev{flex:none;color:var(--ink-soft);font-size:1.15rem;width:22px;text-align:center}
  .dash-link-card{display:flex;flex-direction:column}
  .dash-link-top{display:flex;align-items:center;gap:11px}
  .dash-link-tx{font-size:.86rem;color:var(--ink-soft);line-height:1.5;margin:14px 0 0}
  .dash-link-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;margin-top:16px;font:inherit;font-size:.92rem;font-weight:700;color:#fff;background:#6B5599;border:none;border-radius:6px;padding:13px 16px;cursor:pointer;box-shadow:0 2px 8px rgba(107,85,153,.28)}
  .dash-link-btn:hover{background:#5A4683}
  .dash-act{display:flex;gap:14px;padding:12px 0;border-top:1px solid var(--line)}
  .dash-act-ico{width:30px;height:30px;flex:none;border-radius:3px;display:flex;align-items:center;justify-content:center}
  .dash-act-main{min-width:0;flex:1}
  .dash-act-tx{font-size:.92rem;color:var(--ink);line-height:1.45}
  .dash-act-dom{font-size:.66rem;font-weight:700;padding:2px 7px;border-radius:3px;margin-right:7px;vertical-align:middle}
  .dash-empty{padding:20px 14px;color:var(--ink-soft);font-size:.9rem;text-align:center}
  @media(max-width:760px){.dash-grid{grid-template-columns:1fr}
.dash-kpis{flex-wrap:wrap}
.dash-kpi{flex:1 1 140px!important}}
  /* ===== Lead-Detail-Dialog ===== */
  #leadDialog{position:fixed;inset:0;z-index:1100;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow:auto;background:rgba(58,46,28,.45)}
  #leadDialog.hidden{display:none}
  .lead-dlg{background:var(--bg);border-radius:3px;box-shadow:0 30px 80px rgba(58,46,28,.32);max-width:680px;width:100%;position:relative}
  .lead-dlg-close{position:absolute;top:18px;right:18px;width:44px;height:44px;border-radius:6px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-size:1.4rem;line-height:1;color:var(--ink-soft);display:flex;align-items:center;justify-content:center}
  .lead-dlg-close:hover{color:var(--ink);border-color:var(--accent)}
  .lead-dlg-head{display:flex;align-items:flex-start;gap:16px;padding:26px 28px 20px;border-bottom:1px solid var(--line)}
  .lead-dlg-head .av{width:56px;height:56px;border-radius:6px;font-size:1.15rem}
  .lead-dlg-id{flex:1;min-width:0;padding-right:40px}
  .lead-dlg-name{font-family:var(--font-head);font-size:1.7rem;font-weight:700;color:var(--ink);margin:0 0 9px}
  .lead-dlg-pills{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:9px}
  .lead-dlg-pill{font-size:.78rem;font-weight:700;padding:.26em .8em;border-radius:3px}
  .lead-dlg-pill.src{background:var(--accent-soft);color:var(--accent-dark)}
  .lead-dlg-pill.role.r-kapital{background:rgba(37,99,170,.13);color:#1d5fa8}
  .lead-dlg-pill.role.r-bestand{background:var(--green-soft);color:var(--green)}
  .lead-dlg-pill.role.r-eigen{background:rgba(126,90,175,.15);color:#6b41a8}
  .lead-dlg-dt{color:var(--ink-soft);font-size:.9rem}
  .lead-dlg-contact{font-size:.98rem;color:var(--ink);display:flex;gap:16px;flex-wrap:wrap}
  .lead-dlg-contact a{color:var(--accent-dark);text-decoration:none}
  .lead-dlg-contact a:hover{text-decoration:underline}
  .lead-dlg-bl{color:var(--ink-soft);font-size:.93rem;margin-top:6px}
  .lead-dlg-body{padding:20px 28px 4px}
  .lead-dlg-sec{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 12px}
  .lead-dlg-sec-l{font-size:.74rem;font-weight:700;color:var(--ink-soft)}
  .lead-dlg-link{color:var(--accent-dark);font-weight:600;font-size:.92rem;background:none;border:none;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
  .lead-kpi-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--surface)}
  .lead-kpi-cell{padding:18px 20px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
  .lead-kpi-cell:nth-child(2n){border-right:none}
  .lead-kpi-cell:nth-last-child(-n+2){border-bottom:none}
  .lead-kpi-v{font-family:var(--font-head);font-size:1.5rem;font-weight:700;color:var(--ink);line-height:1.1}
  .lead-kpi-v.green{color:var(--green)}
  .lead-kpi-v.accent{color:var(--accent-dark)}
  .lead-kpi-l{font-size:.72rem;font-weight:700;color:var(--ink-soft);margin-top:8px}
  .lead-dlg-flabel{font-weight:600;color:var(--ink);margin:22px 0 9px}
  .lead-dlg-statussel{width:100%;font:inherit;padding:.72em .9em;border:1.5px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);cursor:pointer}
  .lead-dlg-statussel:focus{outline:none;border-color:var(--accent)}
  .lead-note-add{display:flex;gap:10px;align-items:stretch;margin-bottom:14px}
  .lead-note-add textarea{flex:1;font:inherit;padding:.7em .8em;border:1.5px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);resize:vertical;min-height:74px}
  .lead-note-add textarea:focus{outline:none;border-color:var(--accent)}
  .lead-note-add .btn{align-self:flex-start}
  .lead-dlg-foot{display:flex;align-items:center;gap:10px;padding:18px 28px;border-top:1px solid var(--line);margin-top:8px}
  .lead-dlg-foot .spacer{flex:1}
  @media(max-width:560px){.lead-kpi-grid{grid-template-columns:1fr}
.lead-kpi-cell{border-right:none}
.lead-dlg-name{font-size:1.4rem}
.lead-dlg-foot{flex-wrap:wrap}
.lead-dlg-foot .spacer{display:none}}
  /* „Offene Aufgaben"-Karte (ausgebaut) */
  .task-panel{background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow-sm);padding:18px 20px;margin-bottom:22px}
  .task-panel-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:4px}
  .task-panel-title{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:1.05rem;color:var(--ink)}
  .task-chip{font-size:.76rem;font-weight:700;padding:.2em .7em;border-radius:3px}
  .task-chip.open{background:var(--accent-soft);color:var(--accent-dark)}
  .task-chip.over{background:#f7e3dc;color:var(--red)}
  .task-all{margin-left:auto;font-weight:700;color:var(--accent-dark);background:none;border:none;font:inherit;cursor:pointer}
  .task-all:hover{text-decoration:underline}
  .task-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line);transition:opacity .5s ease}
  .task-row:first-of-type{border-top:none;margin-top:6px}
  .task-check{flex:0 0 auto;width:19px;height:19px;accent-color:var(--green);cursor:pointer;border-radius:3px}
  .task-check:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}
  .task-row .tmain{min-width:0;flex:1 1 auto}
  .task-row .ttitle{font-weight:600;color:var(--ink);transition:color .4s ease}
  .task-row .tcust{color:var(--ink-soft);font-size:.85rem}
  .task-row .tdate{flex:0 0 auto;color:var(--ink-soft);font-size:.86rem;white-space:nowrap}
  .task-row .tdate.over{color:var(--red);font-weight:600}
  .task-row .tbadge-slot{flex:0 0 auto;display:inline-flex}
  .task-row .tbadge{font-size:.72rem;font-weight:700;padding:.2em .7em;border-radius:3px;white-space:nowrap}
  .task-row .tbadge.over{background:#f7e3dc;color:var(--red)}
  .task-row .tbadge.today{background:var(--accent-soft);color:var(--accent-dark)}
  .task-row .tbadge.done{background:var(--green-soft);color:var(--green)}
  .task-goto{flex:0 0 auto;font:inherit;font-weight:600;font-size:.84rem;color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:6px;padding:.4em .9em;cursor:pointer;white-space:nowrap;transition:.14s;box-shadow:0 1px 4px rgba(120,90,40,.07)}
  .task-goto:hover{border-color:var(--accent);color:var(--accent-dark)}
  .task-goto:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}
  /* Abhak-Animation: durchstreichen + verblassen, dann verschwindet die Zeile (JS entfernt nach 1 s) */
  .task-row.is-done{opacity:.45}
  .task-row.is-done .ttitle{text-decoration:line-through;color:var(--ink-soft)}
  /* Tabellen-Sektionskopf (z. B. ANGEPINNT) */
  .tbl-section td{background:var(--bg);color:var(--accent-dark);font-size:.7rem;font-weight:700;padding:7px 14px!important}
  .tbl-section .pin-ico{margin-right:5px}
  /* führende Pin-Punkt-Spalte (gefüllt = angepinnt) */
  .dot-col{width:30px;padding-right:0!important;text-align:center}
  .pin-dot{background:none;border:none;cursor:pointer;padding:11px;line-height:0;border-radius:50%}
  .pin-dot .dot{display:block;width:10px;height:10px;border-radius:50%;border:1.6px solid var(--line);background:transparent;transition:.14s}
  .pin-dot:hover .dot{border-color:var(--accent-dark)}
  .pin-dot.on .dot{background:var(--accent);border-color:var(--accent)}
  .pin-dot:focus-visible{outline:2px solid var(--accent-dark);outline-offset:1px}
  /* Name-Zelle mit Avatar + Rolle */
  .cust-cell{display:flex;align-items:center;gap:12px;min-width:0}
  .cust-meta{display:flex;flex-direction:column;min-width:0}
  .cust-name{font-weight:700;color:var(--ink);line-height:1.2}
  .cust-role{color:var(--ink-soft);font-size:.82rem;margin-top:1px}
  .adv-cell{display:inline-flex;align-items:center;gap:8px;min-width:0}
  .adv-cell .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  /* Globaler sichtbarer Fokus für interaktive Elemente im Partner-Bereich (A11y) */
  .btn:focus-visible,.link-btn:focus-visible,.modal-close:focus-visible,.pin-btn:focus-visible,.auth-tab:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}
  .skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--accent);color:var(--accent-ink);padding:10px 16px;border-radius:0 0 6px 0;font-weight:700;text-decoration:none}
  .skip-link:focus{left:0}
  .tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:7px;border-radius:3px;background:#b3401f;color:#fff;font-size:.7rem;font-weight:700;line-height:1;vertical-align:middle}
  /* Eintrag mit Handlungsbedarf (neuer Lead / neue Einwertungs-Anfrage) hervorheben */
  .lead-table tbody tr.is-new td{background:rgba(214,158,46,.08)}
  .lead-table tbody tr.is-new td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
.acc-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:22px}
  .acc-card h2{font-size:1.15rem;margin-bottom:2px}
.acc-avatar{width:64px;height:64px;border-radius:3px;background:var(--bg);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--font-head);font-weight:700;font-size:1.3rem;color:var(--accent-dark);flex:0 0 auto;overflow:hidden}
  /* Das Bild MUSS eine eigene Größe bekommen: Als Flex-Element ist seine Mindestbreite die
     natürliche Breite (256 px vom Zuschnitt), es schrumpft also von allein nicht. Ohne diese
     Zeile stand ein 256er-Bild ungeskaliert in einem 64er-Kreis — sichtbar war nur die Mitte,
     das Foto wirkte stark hineingezoomt. object-fit gehört ans Bild, nicht an den Rahmen. */
  .acc-avatar img{width:100%;height:100%;min-width:0;object-fit:cover;display:block;border-radius:3px}
  .acc-avatar.sm{width:44px;height:44px;font-size:1rem}
  .acc-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
  .acc-form .full{grid-column:1/-1}
  .acc-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px;flex-wrap:wrap}
  .acc-photo-row{display:flex;gap:14px;align-items:center}
  /* Firmenangaben: Logo-Vorschau auf heller Fläche (auch im Dunkelmodus, Logos sind für Weiß gemacht), Fußtext-Vorschau */
  .acc-logo-zeile{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:4px 0 6px}
  .acc-logo-vor{display:inline-flex;align-items:center;justify-content:center;min-width:160px;height:64px;padding:8px 14px;background:#fff;border:1px solid var(--line)}
  .acc-logo-vor img{max-height:48px;max-width:220px;display:block}
  .acc-logo-vor .muted{color:#6b736e;font-size:.85rem}
  .acc-pflicht{font-style:normal;font-weight:400;font-size:.78rem;color:var(--ink-soft)}
  .acc-firma-block{margin-top:6px}
  .acc-firma-vor{white-space:pre-line;margin:6px 0 0;padding:12px 14px;background:var(--bg);border:1px solid var(--line);font-size:.86rem;line-height:1.55;color:var(--ink-soft)}
  .acc-firma-vor.ist-leer{color:var(--warn,#9a5b12)}
  /* Auswertungs-Elemente: Vorgabe, was der Kunde standardmäßig sieht.
     Eine Zeile je Element, Beschriftung links, Schalter rechts — die Liste wird lang, also
     bleibt jede Zeile ruhig und gleich aufgebaut. Gruppen folgen der Reihenfolge der Auswertung. */
  .rs-group + .rs-group{margin-top:20px}
  .rs-group h3{font-size:.76rem;color:var(--ink-soft);
    font-weight:700;margin:0 0 4px}
  .rs-row{display:flex;align-items:center;gap:18px;padding:11px 0;border-bottom:1px solid var(--line)}
  .rs-row:last-child{border-bottom:0}
  .rs-txt{flex:1;min-width:0}
  .rs-txt b{display:block;font-size:.93rem;font-weight:600;color:var(--ink)}
  /* NUR direkte Kinder: Der Marker im <b> ist ebenfalls ein span und würde sonst zum Block
     ausgewalzt — er ist spezifischer als .rs-tag und hätte dessen inline-block überschrieben. */
  .rs-txt > span{display:block;font-size:.83rem;color:var(--ink-soft);margin-top:2px}
  .rs-tag{display:inline-block;font-size:.72rem;font-weight:700;
    color:var(--ink-soft);background:var(--bg);border:1px solid var(--line);border-radius:3px;
    padding:1px 7px;margin-left:7px;vertical-align:1px}
  .rs-fix{flex:none;font-size:.8rem;color:var(--ink-soft)}
  /* --- Speicher: erst der Stand, dann die Hebel ------------------------------------------
     Der Balken zeigt die Aufteilung, nicht nur die Summe: Wer weiß, dass die E-Mails den Platz
     fressen, sucht nicht bei den Bildern. Rot wird nichts, solange nichts brennt — die Warnfarbe
     bleibt den letzten zehn Prozent vorbehalten, sonst nutzt sie sich ab. */
  .sp-kopf{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:9px}
  .sp-zahl{font-size:1.05rem;color:var(--ink-soft)}
  .sp-zahl b{font-size:1.5rem;font-family:var(--font-head);color:var(--ink)}
  .sp-rest{margin-left:auto;font-size:.86rem;color:var(--ink-faint)}
  .sp-rest.eng{color:var(--gold)}
  .sp-rest.voll{color:var(--neg,#C0392B);font-weight:700}
  .sp-balken{display:flex;height:12px;border-radius:3px;overflow:hidden;background:var(--bg);
    border:1px solid var(--line)}
  .sp-balken span{display:block;min-width:2px}
  .sp-balken .sp-leer{flex:1}
  .sp-balken.voll{border-color:var(--neg,#C0392B)}
  .sp-legende{display:flex;gap:18px;flex-wrap:wrap;margin-top:10px;font-size:.83rem;color:var(--ink-soft)}
  .sp-legende i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:6px}
  .sp-legende b{color:var(--ink);font-weight:600}
  .sp-warnung{margin:14px 0 0;padding:10px 14px;border-radius:6px;font-size:.87rem;
    background:var(--hint-bg);color:var(--ink-soft);border:1px solid var(--line)}
  .sp-warnung.voll{background:rgba(192,57,43,.09);border-color:rgba(192,57,43,.35);color:var(--ink)}
  .sp-h3{font-size:.98rem;margin:0 0 10px}
  .sp-hebel{display:flex;flex-direction:column;gap:10px}
  .sp-h{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 14px;
    border:1px solid var(--line);border-radius:6px;background:var(--bg)}
  .sp-h-t{flex:1;min-width:220px}
  .sp-h-t b{display:block;font-size:.92rem;color:var(--ink)}
  .sp-h-t span{display:block;font-size:.83rem;color:var(--ink-soft);margin-top:2px}
  .sp-h-a{display:flex;align-items:center;gap:12px}
  .sp-h-b{font-family:var(--font-head);font-size:1.02rem;color:var(--ink)}
  .sp-dok{display:flex;flex-direction:column}
  .sp-d{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font:inherit;cursor:pointer;
    padding:9px 4px;background:none;border:0;border-bottom:1px solid var(--line)}
  .sp-d:last-child{border-bottom:0}
  .sp-d:hover{background:var(--bg)}
  .sp-d-n{flex:1;min-width:0;font-size:.88rem;font-weight:600;color:var(--ink);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .sp-d-k{font-size:.8rem;color:var(--ink-faint);white-space:nowrap}
  .sp-d-s{font-size:.84rem;color:var(--ink-soft);min-width:64px;text-align:right}
  @media (max-width:560px){ .sp-d-k{display:none} }

  /* Feineinstellung unter einer Zeile — heute nur der ETF-Vergleich, der drei Zustände kennt. */
  .rs-sub{display:flex;flex-direction:column;gap:5px;margin-top:8px}
  .rs-sub label{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--ink-soft);cursor:pointer}
  .rs-sub input{width:auto;margin:0;accent-color:var(--accent);flex:none}
  .rs-sub label:hover{color:var(--ink)}
  .rs-sw{position:relative;flex:none;width:46px;height:27px;display:inline-flex}
  .rs-sw input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer}
  .rs-sw i{flex:1;border-radius:3px;background:var(--line);transition:background .18s ease}
  .rs-sw i::after{content:"";position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:3px;
    background:#fff;box-shadow:0 1px 3px rgba(20,38,31,.3);transition:transform .18s ease}
  .rs-sw input:checked ~ i{background:var(--accent)}
  .rs-sw input:checked ~ i::after{transform:translateX(19px)}
  .rs-sw input:focus-visible ~ i{outline:2px solid var(--accent-dark);outline-offset:2px}
  .rs-sw input:disabled{cursor:not-allowed}
  .rs-sw input:disabled ~ i{opacity:.45}
  .rs-foot{margin-right:auto;align-self:center;font-size:.86rem;color:var(--ink-soft)}
  @media (max-width:560px){
    .rs-row{gap:12px}
    .rs-txt span{font-size:.8rem}
  }
  /* Einstellungen: Sidebar-Layout */
  .acc-layout{display:grid;grid-template-columns:248px minmax(0,1fr);gap:26px;align-items:start}
  .acc-nav{position:sticky;top:18px}
  .acc-nav-liste{display:flex;flex-direction:column;gap:2px}
  /* Aufklappbare Kategorien: Der Titel IST der Schalter, die Punkte fahren darunter aus. Offen
     ist immer nur eine — eine Liste mit Überschriften war dieselbe Wand wie vorher, nur höher. */
  .acc-nav-gruppe{display:flex;flex-direction:column}
  .acc-nav-titel{display:flex;align-items:center;gap:8px;width:100%;text-align:left;
    padding:.6em .8em;border:1px solid transparent;border-radius:6px;background:transparent;
    color:var(--ink);font:inherit;font-size:.9rem;font-weight:700;cursor:pointer;
    transition:background .12s}
  .acc-nav-titel:hover{background:var(--bg)}
  .acc-nav-chev{margin-left:auto;opacity:.5;transition:transform .18s}
  .acc-nav-gruppe.offen>.acc-nav-titel .acc-nav-chev{transform:rotate(180deg)}
  /* 0fr → 1fr statt max-height: Die Höhe kommt aus dem Inhalt, kein geratener Grenzwert, der bei
     einer Kategorie zu früh abschneidet. visibility hält geschlossene Punkte aus der Tab-Reihe. */
  .acc-nav-punkte{display:grid;grid-template-rows:0fr;transition:grid-template-rows .18s ease}
  .acc-nav-gruppe.offen>.acc-nav-punkte{grid-template-rows:1fr}
  /* Kein Innenabstand an dieser Hülle: Sie ist das Grid-Kind, dessen Höhe auf 0 faehrt — ein
     Padding bliebe als Leerzeile unter jeder geschlossenen Kategorie stehen. Einrückung und
     Abstand tragen deshalb die Punkte selbst. */
  .acc-nav-punkte>div{min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:2px;
    visibility:hidden;transition:visibility 0s .18s}
  .acc-nav-punkte .acc-nav-item{margin-left:10px}
  .acc-nav-punkte .acc-nav-item:first-child{margin-top:2px}
  .acc-nav-punkte .acc-nav-item:last-child{margin-bottom:6px}
  .acc-nav-gruppe.offen>.acc-nav-punkte>div{visibility:visible;transition:visibility 0s}
  /* Schmal die ganze Navigation in einer Zeile: zeigt, wo man ist, und klappt die Bereiche auf. */
  .acc-nav-mob{display:none;align-items:center;gap:10px;width:100%;padding:.7em .9em;
    border:1px solid var(--line);border-radius:6px;background:var(--surface);
    box-shadow:var(--shadow-sm);color:var(--ink);font:inherit;font-size:.95rem;font-weight:700;
    cursor:pointer}
  .acc-nav-mob-i{display:flex;color:var(--accent-dark)}
  .acc-nav[data-offen="1"] .acc-nav-mob .acc-nav-chev{transform:rotate(180deg)}
  .acc-nav-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:.66em .8em;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--ink-soft);font:inherit;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .12s,color .12s}
  .acc-nav-item svg{flex:0 0 auto;opacity:.75}
  .acc-nav-item:hover{background:var(--bg);color:var(--ink)}
  .acc-nav-item.active{background:var(--accent-soft);color:var(--accent-dark);border-color:var(--accent-soft)}
  .acc-nav-item.active svg{opacity:1;color:var(--accent-dark)}
  .acc-quota{margin-top:14px;border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:14px 15px;box-shadow:var(--shadow-sm)}
  .acc-quota-l{font-size:.7rem;color:var(--ink-soft);font-weight:700}
  .acc-quota-v{font-family:var(--font-head);font-size:1.25rem;color:var(--ink);margin:3px 0 9px}
  .acc-quota-v b{color:var(--accent-dark)}
  .acc-quota-bar{height:7px;border-radius:3px;background:var(--bg);overflow:hidden;border:1px solid var(--line)}
  .acc-quota-bar>span{display:block;height:100%;background:var(--accent);border-radius:3px;transition:width .3s}
  /* Demo-Schalter unter den Team-Plätzen: eine Zeile hoch, sonst nichts. Die Erklärung steht im
     Dialog, den das Einschalten öffnet — hier wäre sie ein Absatz, den niemand zweimal liest. */
  .acc-demo{margin-top:14px;border:1px solid var(--line);border-radius:6px;background:var(--surface);
    box-shadow:var(--shadow-sm);padding:11px 13px;display:flex;align-items:center;gap:10px}
  .acc-demo-l{flex:1 1 auto;min-width:0;font-size:.86rem;font-weight:700;color:var(--ink-soft)}
  .acc-content{min-width:0}
  .acc-content .acc-card{padding:26px 28px}
  .acc-content .acc-card + .acc-card{margin-top:18px}
  .acc-content .acc-form{max-width:none}
  .acc-prof-head{display:flex;align-items:center;gap:16px}
  .acc-prof-id{min-width:0;flex:1}
  .acc-prof-id h2{font-family:var(--font-head);font-size:1.4rem;font-weight:700;color:var(--ink);margin:0 0 1px}
  .acc-role-badge{flex:0 0 auto;align-self:flex-start;font-size:.72rem;font-weight:700;padding:.28em .8em;border-radius:3px;background:var(--accent-soft);color:var(--accent-dark)}
.acc-card-hr{border:none;border-top:1px solid var(--line);margin:18px 0}
  /* Schmal war die Navigation eine Wand aus Pillen — vier Zeilen Knöpfe über dem Inhalt, in
     denen der aktive Punkt unterging. Jetzt ist sie ein Knopf mit dem aktuellen Bereich; die
     Kategorien liegen darunter in einer Fläche, die sich nach der Wahl wieder schließt. */
  @media(max-width:760px){
/* display:contents loest die Seitenspalte auf, damit Team-Plaetze und Demo-Schalter UNTER den
   Inhalt rutschen koennen. Vorher standen sie zwischen Navigation und Einstellung — zwei Karten
   Nebensache, an denen man auf jedem Handy erst vorbeiscrollte. */
.acc-layout{display:flex;flex-direction:column;gap:14px;align-items:stretch}
.acc-nav{display:contents}
.acc-nav-mob{display:flex;order:1}
.acc-nav-liste{display:none;order:2;margin-top:-6px;border:1px solid var(--line);border-radius:6px;
  background:var(--surface);box-shadow:var(--shadow-sm);padding:8px}
.acc-nav[data-offen="1"] .acc-nav-liste{display:flex}
.acc-content{order:3}
.acc-quota{order:4;width:100%;margin-top:0}
.acc-demo{order:5;margin-top:0}}
.sub-list{display:flex;flex-direction:column;gap:10px}
  .sub-row{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:6px;background:var(--bg)}
  .sub-row .who{min-width:0}
  .sub-row .who .nm{font-weight:600}
  .sub-row .who .em{font-size:.82rem;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:230px}
  .sub-row .tags{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto;align-items:center}
  .sub-row .acts{display:flex;gap:6px;flex-wrap:wrap}
  .sub-badge{font-size:.72rem;font-weight:600;padding:.22em .7em;border-radius:3px;border:1px solid var(--line);white-space:nowrap}
  .sub-badge.ok{background:rgba(40,140,90,.12);color:#1f7a4d;border-color:transparent}
  .sub-badge.wait{background:rgba(214,158,46,.16);color:var(--gold);border-color:transparent}
  .sub-badge.off{background:rgba(120,120,120,.14);color:#666;border-color:transparent}
  .sub-badge.expired{background:#f7e3dc;color:var(--red);border-color:transparent}
  .sub-badge.website{background:rgba(37,99,170,.13);color:#1d5fa8;border-color:transparent}
  .sub-badge.all{background:var(--bg);color:var(--ink-soft)}
  .sub-badge.koop{background:var(--accent-soft);color:var(--accent);border-color:transparent}
  .sub-badge.fin{background:color-mix(in srgb,var(--gold) 20%,transparent);color:var(--bronze-600);border-color:transparent}
  /* Admin: Kontoart als drei Flächen, Kooperationen je Mandant als Liste. */
  .pe-art{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:6px}
  .pe-art-o{display:flex;align-items:flex-start;gap:9px;padding:11px 12px;border:1.5px solid var(--line);border-radius:6px;cursor:pointer;background:var(--surface)}
  .pe-art-o:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
  .pe-art-o input{margin-top:3px;accent-color:var(--accent)}
  .pe-art-o span{display:flex;flex-direction:column;gap:3px}
  .pe-art-o b{font-size:.9rem;color:var(--ink)}
  .pe-art-o small{font-size:.76rem;line-height:1.4;color:var(--ink-soft)}
  .pe-koop{display:flex;flex-direction:column}
  .pe-koop-z{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:6px 12px;padding:9px 0;border-top:1px solid var(--line);font-size:.86rem}
  .pe-koop-z:first-child{border-top:0}
  .pe-koop-t{min-width:0}
  .pe-koop-m{font-size:.78rem;color:var(--ink-soft);white-space:nowrap}
  .pe-koopneu{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:12px;align-items:end}
  .pe-koopneu .ed-feld{display:flex;flex-direction:column;gap:6px;font-size:.84rem;font-weight:600}
  .pe-koopneu select{width:100%;min-height:42px;padding:9px 12px}
  @media (max-width:720px){ .pe-koopneu{grid-template-columns:1fr} }
  @media (max-width:720px){ .pe-art{grid-template-columns:1fr} .pe-koop-z{grid-template-columns:auto minmax(0,1fr)} .pe-koop-m{grid-column:2} .pe-koop-z .btn{grid-column:2;justify-self:start} }
.ref-consent{display:flex;gap:9px;align-items:flex-start;margin-top:12px;padding:11px 13px;border:1.5px solid var(--line);border-radius:6px;font-size:.83rem;line-height:1.45;color:var(--ink);cursor:pointer}
  .ref-consent input{accent-color:var(--accent);width:16px;height:16px;flex:none;margin-top:1px}
  .ref-consent.ok{cursor:default;border-color:transparent;background:var(--accent-soft);color:var(--accent);font-weight:600}
  .ref-consent.ok>span:first-child{font-weight:800;flex:none}
  /* Kundenübergabe in der Reservierungsanfrage */
  .gw-req-cust{margin-top:14px;padding-top:13px;border-top:1px solid var(--line)}
  .gw-req-toggle{display:flex;gap:9px;align-items:flex-start;cursor:pointer}
  .gw-req-toggle>input{accent-color:var(--accent);width:16px;height:16px;flex:none;margin-top:2px}
  .gw-req-toggle>span{min-width:0}
  .gw-req-toggle b{display:block;font-size:.9rem;color:var(--ink)}
  .gw-req-sub{display:block;font-weight:400;font-size:.8rem;color:var(--ink-soft);line-height:1.45;margin-top:2px}
  /* Vertriebspartner / Empfehlungslinks (B5) */
  .vp-addrow{display:flex;gap:10px;flex-wrap:wrap}
  .vp-addrow input{flex:1;min-width:200px;padding:.6em .85em;border:1px solid var(--line);border-radius:6px;font:inherit;background:var(--bg)}
  .vp-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}
  .vp-item{border:1px solid var(--line);border-radius:6px;padding:12px 14px;background:var(--bg)}
  .vp-item.vp-inactive{opacity:.62}
  .vp-item-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}
  .vp-item-name{font-weight:600;color:var(--ink)}
  .vp-item-meta{font-size:.8rem;color:var(--ink-soft)}
  .vp-link-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
  .vp-link{flex:1;min-width:160px;padding:.5em .7em;border:1px solid var(--line);border-radius:6px;font:inherit;font-size:.85rem;color:var(--ink-soft);background:var(--surface)}
  .vp-del{flex:0 0 auto;color:var(--ink-soft)}
  .vp-del:hover{color:var(--red);border-color:var(--red)}
.ov-sec{margin-top:18px}
  /* .modal-card .ov-sec-t überschreibt die generische Modal-Titel-h3-Regel (Einrückung/Linie) → bündig */
  .modal-card .ov-sec-t{font-size:.74rem;font-weight:700;color:var(--gold);margin:0 0 8px;padding:0;border-bottom:none}
  .ov-rows{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 32px}
  .ov-row{display:flex;flex-direction:column;gap:1px;padding:7px 0;border-bottom:1px dashed var(--line);min-width:0}
  .ov-k{color:var(--ink-soft);font-size:.78rem}
  .ov-v{font-weight:600;word-break:break-word;min-width:0}
  .ov-v.empty{color:var(--ink-soft);font-weight:400}
  .ov-link{color:var(--gold);text-decoration:none}
  .ov-link:hover{text-decoration:underline}
.lead-table tbody tr[data-cust]:focus-visible,.lead-table tbody tr[data-pid]:focus-visible{box-shadow:inset 0 0 0 2px var(--accent);outline:none}
  .crm-card:focus-visible{box-shadow:inset 0 0 0 2px var(--accent);outline:none}
  /* Geteilte horizontale Zeile (Dialog-/Drawer-Formulare) – aktiviert die Inline-justify/align/margin-Vorgaben */
  .crm-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
  .dup-card{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:6px;padding:12px 14px;margin-bottom:10px}
  .acc-empty{padding:18px;border:1px dashed var(--line);border-radius:6px;color:var(--ink-soft);text-align:center}

  /* ---------- Einstellungen → Bankmappe (Finanzierer) ----------
     Je Unterlage eine Zeile, rechts drei Stufen. Die gewählte Stufe trägt ihre Farbe, damit man die
     Mappe überfliegen kann: Rot hält eine Übergabe auf, Grün ist ein Wunsch, Grau fällt weg. */
  .bmk-gesp{flex:none;align-self:flex-start;font-size:.78rem;font-weight:700;color:var(--green);
    opacity:0;transition:opacity var(--dur-base) var(--ease-out)}
  .bmk-gesp.on{opacity:1}
  .bmk-legende{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
  .bmk-leg{padding:10px 12px;border-radius:6px;background:var(--surface-2);font-size:.8rem;line-height:1.45;color:var(--ink-soft)}
  .bmk-leg b{display:block;margin-bottom:2px;font-size:.84rem}
  .bmk-leg.is-zwingend b{color:var(--red)}
  .bmk-leg.is-gewuenscht b{color:var(--accent-dark)}
  .bmk-leg.is-nein b{color:var(--ink-soft)}
  .bmk-stand{display:flex;flex-wrap:wrap;gap:6px 16px;margin:16px 0 0;font-size:.8rem;color:var(--ink-soft)}
  .bmk-z b{font-variant-numeric:tabular-nums;font-size:.92rem}
  .bmk-z.is-zwingend b{color:var(--red)}
  .bmk-z.is-gewuenscht b{color:var(--accent-dark)}
  .bmk-z.is-nein b{color:var(--ink-soft)}
  .bmk-std{margin-left:auto;color:var(--ink-faint)}
  .bmk-std-b{font:inherit;font-weight:700;color:var(--accent-dark);background:none;border:0;padding:0;cursor:pointer}
  .bmk-std-b:hover{text-decoration:underline}
  .bmk-abw{display:block;margin-top:1px;font-size:.72rem;color:var(--ink-faint)}
  .bmk-gruppe{margin-top:24px}
  .bmk-gruppe-t{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:0 0 6px;
    font-family:var(--font-head);font-size:1rem;font-weight:700;color:var(--ink)}
  .bmk-gruppe-t span{font-family:var(--font-body,inherit);font-size:.78rem;font-weight:500;color:var(--ink-faint)}
  .bmk-note{margin:0 0 8px;font-size:.8rem;line-height:1.5;color:var(--ink-soft);max-width:72ch}
  .bmk-liste{list-style:none;margin:0;padding:0}
  .bmk-zeile{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 0;border-top:1px solid var(--line)}
  .bmk-zeile:first-child{border-top:0}
  .bmk-l{min-width:0;font-size:.88rem;color:var(--ink);hyphens:auto;overflow-wrap:break-word}
  .bmk-zeile.is-nein .bmk-l{color:var(--ink-faint)}
  .bmk-r{display:flex;align-items:center;gap:8px;flex:none}
  .bmk-seg{display:inline-flex;flex:none;gap:2px;padding:3px;border-radius:var(--r-pill);background:var(--surface-2);border:1px solid var(--line)}
  .bmk-s{font:inherit;font-size:.76rem;font-weight:600;color:var(--ink-soft);background:none;border:0;
    padding:.36em .9em;border-radius:var(--r-pill);cursor:pointer;white-space:nowrap;
    transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
  .bmk-s:hover:not(:disabled):not(.on){color:var(--ink)}
  .bmk-s:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
  .bmk-s:disabled{cursor:not-allowed;opacity:.38}
  .bmk-s.on{cursor:default;opacity:1}
  .bmk-s.on.is-zwingend{background:color-mix(in srgb,var(--red) 13%,var(--surface));color:var(--red)}
  .bmk-s.on.is-gewuenscht{background:var(--accent-soft);color:var(--accent-dark)}
  .bmk-s.on.is-nein{background:color-mix(in srgb,var(--ink-faint) 24%,var(--surface));color:var(--ink)}
  .bmk-name{flex:1;min-width:0;font:inherit;font-size:.88rem;color:var(--ink);background:transparent;
    border:1.5px solid transparent;border-radius:4px;padding:.3em .5em;margin-left:-.5em}
  .bmk-name:hover:not(:disabled){border-color:var(--line)}
  .bmk-name:focus{outline:none;border-color:var(--accent);background:var(--bg)}
  .bmk-weg{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:3px;
    border:0;background:none;color:var(--ink-faint);cursor:pointer}
  .bmk-weg:hover{background:color-mix(in srgb,var(--red) 10%,transparent);color:var(--red)}
  .bmk-weg:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
  .bmk-neu{display:flex;gap:10px;margin-top:10px}
  .bmk-neu input{flex:1;min-width:0;font:inherit;font-size:.88rem;padding:.5em .75em;border:1.5px solid var(--line);
    border-radius:6px;background:var(--bg);color:var(--ink)}
  .bmk-neu input:focus{outline:none;border-color:var(--accent)}
  /* Gestapelt, sobald die KARTE schmal wird — nicht erst das Fenster: Neben der Einstellungs-
     Navigation ist sie schon bei mittlerer Breite zu eng für Bezeichnung und drei Stufen. */
  #accMappe{container-type:inline-size}
  @container (max-width:540px){
    .bmk-legende{grid-template-columns:1fr}
    .bmk-zeile{flex-wrap:wrap;row-gap:6px}
    .bmk-l{flex:1 1 100%}
    .bmk-zeile>.bmk-seg,.bmk-r{flex:1 1 100%}
    .bmk-seg{display:flex}
    .bmk-r .bmk-seg{flex:1}
    .bmk-s{flex:1 1 0;padding-left:.3em;padding-right:.3em}
  }
  @media(max-width:560px){.acc-form{grid-template-columns:1fr}
.sub-row{flex-wrap:wrap}
.sub-row .tags,.sub-row .acts{margin-left:0}}
  /* Mobile-Shell: Topbar umbrechen (E-Mail aus), Tab-Leiste scrollbar, Tabellen horizontal scrollbar */
  @media(max-width:600px){.p-wrap{padding:18px 14px 70px}
    .view-tabs{width:auto;max-width:100%;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}
    .view-tab{white-space:nowrap}
    .lead-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  }
  /* Mobile: breite Tabellen → gestapelte Karten (statt horizontalem Scrollen) */
  @media(max-width:620px){
    .lead-table-wrap{overflow:visible}
    .lead-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
    .lead-table,.lead-table tbody{display:block;width:100%}
    .lead-table tr{display:block;position:relative;border:1px solid var(--line);border-radius:6px;margin-bottom:10px;padding:12px 14px 8px;background:var(--surface)}
    .lead-table tr.is-new{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
    .lead-table tr.is-new td{background:none}
    /* Pin auf Mobile: ganze Karte tönen statt Einzelzellen (Desktop-Regel tr.pinned td greift sonst durch) */
    .lead-table tr.pinned{background:var(--accent-soft);border-color:var(--accent)}
    .lead-table tr.pinned td{background:none}
    .lead-table td{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:4px 0;border:none;text-align:right;box-shadow:none}
    .lead-table td::before{content:attr(data-label);color:var(--ink-soft);font-size:.78rem;font-weight:600;text-align:left;flex:0 0 auto}
    .lead-table td[data-label=""]::before,.lead-table td.pin-col::before,.lead-table td.dot-col::before,.lead-table td.td-primary::before{content:none}
    .lead-table td.td-primary{display:block;text-align:left;font-size:1.05rem;padding:0 40px 4px 0}
    /* left:auto + background:none sind PFLICHT: styles.css:774 setzt fuer JEDE Tabelle
       td:first-child{position:sticky;left:0;background:var(--surface)} — gedacht fuer die breite
       Jahresentwicklungs-Tabelle mit klebender erster Spalte. In der Karten-Ansicht ueberlebte
       das left:0 die Umstellung auf position:absolute: die Punkt-Spalte spannte dadurch ueber
       die ganze Karte (335 statt 24 px) und verdeckte mit ihrem deckenden Hintergrund den
       Kundennamen vollstaendig. */
    .lead-table td.pin-col,.lead-table td.dot-col{position:absolute;top:8px;right:8px;left:auto;
      padding:0;width:auto;background:none;box-shadow:none}
    .lead-table td:empty{display:none}
    /* Sektionskopf (ANGEPINNT) als schlichte Zeile, nicht als Karte */
    .lead-table tr.tbl-section{border:none;background:none;padding:10px 2px 2px;margin:0}
    .lead-table tr.tbl-section td{display:block;text-align:left;background:none!important;padding:0!important}
    .lead-table tr.tbl-section td::before{content:none}
    /* Berater-Avatar in der Karten-Zelle rechtsbündig zur Werteseite */
    .lead-table td .adv-cell{justify-content:flex-end}
  }
.calc-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px;display:flex;flex-direction:column;gap:8px}
  .calc-card h3{font-size:1.1rem}
  .calc-card .meta{font-size:.82rem;color:var(--ink-soft)}
  .calc-card .kpi{font-family:var(--font-head);font-weight:600;color:var(--accent-dark)}
.calc-meta-bar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px 20px;margin-bottom:14px;display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:14px;align-items:end}
  @media(max-width:820px){.calc-meta-bar{grid-template-columns:1fr 1fr}}
  .calc-meta-bar .field{gap:5px}
  .calc-export-bar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:14px 20px;margin-bottom:18px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
  .calc-export-bar .ceb-label{font-weight:600;color:var(--ink);font-size:.95rem}
  .calc-export-bar .ceb-actions{display:flex;gap:12px;flex-wrap:wrap;margin-left:auto}
  .calc-export-bar .ceb-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:7px}
  @media(max-width:560px){.calc-export-bar .ceb-actions{margin-left:0;width:100%}
.calc-export-bar .ceb-actions .btn{flex:1}}
  .lead-table th{background:var(--bg);font-weight:600}
  /* Analytics */
  .an-kpi .v{font-family:var(--font-num);font-size:1.7rem;font-weight:500;color:var(--ink);line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
  @media(max-width:760px){.an-grid2{grid-template-columns:1fr}}
  /* CRM */
  .crm-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
  .crm-kpi-head{display:flex;justify-content:flex-end;margin-bottom:12px}
  .crm-kpi-head label{display:inline-flex;align-items:center;gap:8px;font-size:.85rem}
  .crm-kpi-head select{font:inherit;padding:.4em .7em;border:1.5px solid var(--line);border-radius:4px;background:var(--surface);color:var(--ink);cursor:pointer}
  /* Segment-Umschalter wie im Entwurf: beiger Track, weißer aktiver Pill mit weichem Schatten (kompakt) */
  .seg{display:inline-flex;gap:3px;background:#DCE7DF;border:none;border-radius:6px;padding:3px}
  .seg-btn{border:none;background:none;font:inherit;font-weight:600;font-size:.88rem;color:var(--ink-soft);padding:.4em .9em;border-radius:4px;cursor:pointer;transition:.15s}
  .seg-btn:hover{color:var(--ink)}
  .seg-btn.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px rgba(20,38,31,.16)}
  .seg-btn:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}
  /* Weißer Text auf den gelben (Primär-)Buttons im Backend */
  .btn-primary{color:#fff}
  /* Kompaktere, erhöhte Buttons + weiße Ghost-Buttons in Toolbar, Drawer & Dialogen (wie im Entwurf) */
  .page-actions .btn,#vorgangDetailView .btn,#modal .btn,#confirmDialog .btn,.dash-greet-act .btn{padding:.55em 1.05em;font-size:.92rem;border-radius:6px}
  .page-actions .btn-ghost,#vorgangDetailView .btn-ghost,#modal .btn-ghost,#confirmDialog .btn-ghost,.dash-greet-act .btn-ghost{background:var(--surface);box-shadow:0 2px 8px rgba(120,90,40,.10)}
  .page-actions .btn-ghost:hover:not(:disabled),#vorgangDetailView .btn-ghost:hover:not(:disabled),#modal .btn-ghost:hover:not(:disabled),.dash-greet-act .btn-ghost:hover:not(:disabled){box-shadow:0 5px 14px rgba(120,90,40,.15)}
  .page-actions .btn-primary,#vorgangDetailView .btn-primary,#modal .btn-primary,#confirmDialog .btn-primary,.dash-greet-act .btn-primary{box-shadow:0 4px 12px rgba(197,130,28,.24)}
  /* Schmale Buttons behalten ihr Maß auch in diesen Containern — sonst überschreiben die Regeln
     darüber .btn-slim und man bekommt doch wieder den fetten Knopf (Designregel: immer schlank). */
  .page-actions .btn.btn-slim,#vorgangDetailView .btn.btn-slim,#modal .btn.btn-slim,#confirmDialog .btn.btn-slim,.dash-greet-act .btn.btn-slim{padding:.5em 1.05em;font-size:.88rem;border-radius:6px;box-shadow:none}
  .page-actions .btn.btn-slim.btn-ghost,#vorgangDetailView .btn.btn-slim.btn-ghost,#modal .btn.btn-slim.btn-ghost,#confirmDialog .btn.btn-slim.btn-ghost,.dash-greet-act .btn.btn-slim.btn-ghost{box-shadow:none}
  .page-actions .btn.btn-slim.btn-ghost:hover:not(:disabled),#vorgangDetailView .btn.btn-slim.btn-ghost:hover:not(:disabled),#modal .btn.btn-slim.btn-ghost:hover:not(:disabled){box-shadow:none}
  /* Zweiteiliger Button (z. B. „Zum Kundenportal | Teilen"): eine Einheit mit senkrechter Trennlinie —
     macht sofort klar, dass sich die zweite Aktion auf die erste bezieht. !important nötig, weil die
     generische Radius-Regel oben (#vorgangDetailView .btn) per ID-Selektor höhere Spezifität hat. */
  .btn-duo{display:inline-flex;align-items:stretch}
  .btn-duo .btn{position:relative}
  .btn-duo .btn:first-child{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-right:none;margin-right:0}
  .btn-duo .btn:last-child{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important;border-left:1.5px solid var(--line)}
  .btn-duo .btn:hover:not(:disabled){z-index:1}   /* Hover-Rahmen/Schatten über den Nachbarn heben */
  .crm-board{display:flex;gap:14px;overflow-x:auto;padding-bottom:12px;align-items:flex-start}
  .crm-col{flex:0 0 270px;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 8px 6px;min-height:120px;transition:background .15s,box-shadow .15s}
  .crm-col.drop{background:color-mix(in srgb,var(--ph) 12%,var(--bg));box-shadow:inset 0 0 0 2px var(--ph)}
  .crm-col-head{display:flex;align-items:center;gap:9px;padding:8px 8px 6px}
  .crm-col-ico{flex:none;width:28px;height:28px;border-radius:4px;display:grid;place-items:center;color:var(--ph);background:var(--surface);border:1px solid var(--line)}
  .crm-col-ico svg{width:15px;height:15px}
  .crm-col-t{font-weight:700;font-size:.92rem;color:var(--ink)}
  .crm-col-n{margin-left:auto;min-width:22px;height:22px;padding:0 7px;border-radius:3px;display:inline-grid;place-items:center;background:var(--surface);border:1px solid var(--line);font-size:.78rem;font-weight:700;color:var(--ink-soft)}
  .crm-col-sum{margin:0 8px 8px;font-size:.74rem;color:var(--green);font-weight:700}
  .crm-col-body{padding:2px 4px 4px;min-height:24px}
  .crm-col-empty{color:var(--ink-soft);opacity:.6;font-size:.8rem;text-align:center;padding:10px 0}
  .crm-card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow-sm);padding:11px 12px;margin-bottom:9px;cursor:pointer;transition:transform .12s,box-shadow .2s}
  /* Keine farbige Kante mehr (28.09.2026): Die Phase zeigt der Spaltenkopf; eine Akzentkante an einer
     runden Karte bog sich sichtbar um die Ecke. */
  .crm-card:hover{box-shadow:var(--shadow);border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}
  .crm-card.dragging{opacity:.45}
  .crm-card .ti{font-weight:700;font-size:.94rem;margin-bottom:2px;line-height:1.25}
  .crm-card .cu{font-size:.82rem;color:var(--ink-soft)}
  .crm-card .ow{font-size:.74rem;color:var(--ink-soft);opacity:.9;margin-top:1px}
  .crm-card .ob{font-size:.76rem;color:var(--ink-soft);opacity:.85;margin-top:1px}
  .crm-card .mt{display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin-top:9px;font-size:.76rem;color:var(--ink-soft)}
  .crm-card .val{font-family:var(--font-head);font-weight:700;color:var(--accent-dark)}
  .crm-card .chip{background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:.05em .5em}
  .crm-card .chip.warn{background:#fbe7d8;border-color:#f0d3b0;color:var(--accent-dark)}
.crm-empty{color:var(--ink-soft);padding:30px 0;text-align:center}
  /* ============================================================
     VORGANGS-VOLLSEITE (crm-drawer.js → #vorgangDetailView)
     ============================================================ */
  /* Board/Toolbar ausblenden, sobald die Vollseite offen ist (alle direkten Kinder außer der Detailview). */
  #viewCrm.vg-open > *:not(#vorgangDetailView){display:none!important}
  /* Die Navigation klappt NICHT automatisch ein. Es gab dafür einmal einen Fokus-Modus; seine
     Auslöse-Funktion war nie verdrahtet, der Kommentar hier beschrieb also jahrelang etwas, das
     es nicht gab. Eingeklappt wird ausschließlich über den Button (.ib-collapsed, partner.js). */
  .vg-page{position:relative}
  /* Steht die Aufgabenleiste darüber, darf sich der Vorgangs-Kopf nicht mehr hochziehen. Sein
     negativer oberer Rand ist dafür da, den Innenabstand von .p-wrap zu schlucken und den Kopf
     randlos zu machen — über der Leiste fräst er sich in deren Abstand und beide kleben aneinander.
     Die Seiten bleiben negativ (randlos), oben kommt der Abstand der Leiste zur Geltung. */
  #ibTodo:not(.hidden) ~ #viewCrm .vg-head{margin-top:0}
  /* Sticky Kopf (weiß, volle Breite; bleedet über die p-wrap-Gutter) */
  .vg-head{position:sticky;top:0;z-index:30;background:var(--surface);margin:-26px -34px 0;padding:10px 34px 9px;display:flex;flex-direction:column;gap:8px;border-bottom:1px solid var(--line);box-shadow:0 4px 14px rgba(40,50,45,.05)}
  /* Drei Zeilen mit je einer Aufgabe: „wer und was" · „was kann ich tun" · „wo steht es".
     Vorher lag alles in EINER Flex-Zeile und brach je nach Fensterbreite anders um — mal die
     Knöpfe, mal der Kundenchip, mal beides. Jetzt hat jede Zeile ihren festen Platz, und die
     Aktionen zwingen weder Titel noch Kundennamen ins Kürzen. */
  .vg-head-line{display:flex;align-items:center;gap:10px;min-width:0}
  /* Nur so breit wie nötig: der Titel darf schrumpfen, aber nicht den Kundenchip wegdrücken.
     Die Überschrift der Empfängersicht ist ein Blockelement — ohne fit-content nähme sie
     die ganze freie Breite und schöbe den Kundenchip wieder ans Ende. */
  .vg-title,.vg-title-ro{flex:0 1 auto;min-width:120px;width:auto;max-width:none;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vg-head-row1{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
  .vg-title{max-width:640px;font-family:var(--font-head);font-size:1.28rem;font-weight:700;color:var(--ink);background:transparent;border:1.5px solid transparent;border-radius:4px;padding:.2em .4em;margin:0 -.4em}
  .vg-title:hover{border-color:var(--line)}
  .vg-title:focus{outline:none;border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px var(--om-accent-glow)}
  /* Kundenchip: Name führt in die Kundenakte, Stift öffnet die Stammdaten. Beides sind Knöpfe im
     Pill — kein unterstrichener Textlink, der aussieht wie Fließtext. */
  /* margin-right:auto: der Kunde steht links in der Aktionszeile, die Knöpfe bleiben rechts. */
  .vg-cust-chip{display:inline-flex;align-items:center;gap:6px;flex:0 1 auto;min-width:0;max-width:340px;margin-right:auto;background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:3px 6px 3px 4px}
  .vg-cust-main{display:inline-flex;align-items:center;gap:8px;min-width:0;font:inherit;color:inherit;background:none;border:0;padding:2px 6px 2px 2px;border-radius:3px}
  .vg-cust-chip.is-link .vg-cust-main{cursor:pointer}
  .vg-cust-chip.is-link .vg-cust-main:hover .vg-cust-name{color:var(--accent-dark)}
  .vg-cust-main:focus-visible{outline:2px solid var(--accent-dark);outline-offset:1px}
  .vg-cust-edit{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex:none;
    background:none;border:0;border-radius:3px;color:var(--ink-soft);cursor:pointer}
  .vg-cust-edit:hover{background:var(--surface-2);color:var(--accent-dark)}
  .vg-cust-edit:focus-visible{outline:2px solid var(--accent-dark);outline-offset:1px}
  .vg-cust-name{font-weight:600;color:var(--ink);font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  /* „Kunde vermittelt durch [Vertriebspartner]" – dezenter Gold-Chip im Vorgang-Kopf (B5) */
  .vg-cust-ref{font-size:.78rem;color:var(--accent-dark);background:rgba(214,158,46,.14);padding:.14em .66em;border-radius:3px;white-space:nowrap}/* Vermittlung durch einen Kooperationspartner (echter Mandant) statt Vertriebspartner-Liste: grün
     statt bronze — die beiden Wege sollen auf einen Blick unterscheidbar sein. */
  .vg-cust-ref.is-koop,.ov-referrer.is-koop{color:var(--accent);background:var(--accent-soft)}
  /* Aktionen in eigener Zeile, rechtsbündig: alle sichtbar, ohne dass Titel oder Kundenname
     kürzen müssen. Kein ⋮-Menü — was man tun kann, steht da. */
  .vg-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;position:relative}
  /* Die Knöpfe behalten ihre Breite. Wird der Platz knapp, bricht die Zeile um, statt den
     Kundennamen links zusammenzuquetschen — ein Name auf „DL" ist wertlos. */
  .vg-head-actions>.btn,.vg-head-actions>.btn-duo{flex:none;white-space:nowrap}
  /* Kurzform schon am schmalen Desktop: mit „Kundenportal · Teilen · Abschließen" bleibt alles
     samt Kundenname in einer Zeile; ausgeschrieben passte es erst ab ~1300 px. */
  @media(max-width:1300px){
    .vg-head-actions .lbl-long{display:none}
    .vg-head-actions .lbl-short{display:inline}
  }
  .vg-head-actions .vg-finish{margin-left:2px}
  /* Kurzform von Button-Beschriftungen: auf dem Handy zählt jede Zeile im Kopf, dort greift
     .lbl-short („Abschließen"), am Desktop die ausgeschriebene .lbl-long („Vorgang abschließen"). */
  .lbl-short{display:none}
  .vg-status-badge{font-size:.72rem;font-weight:700;padding:.4em .8em;border-radius:3px;border:1px solid var(--line);color:var(--ink-soft);background:var(--bg)}
  .vg-status-badge[data-kind="won"]{color:var(--green);background:var(--green-soft);border-color:var(--green)}
  .vg-status-badge[data-kind="lost"]{color:var(--red);background:var(--red-soft,rgba(194,72,58,.12));border-color:var(--red)}
  /* Kopfzeile 2: Stepper links, Eckdaten rechts */
  .vg-head-row2{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
  .vg-head-row2 .vg-eckdaten{margin-left:auto}
  .vg-stepper{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
  .vg-step{display:inline-flex;align-items:center;gap:7px;background:none;border:none;font:inherit;padding:5px 8px;border-radius:4px;color:var(--ink-soft);position:relative}
  button.vg-step{cursor:pointer}
  button.vg-step:hover{background:var(--bg);color:var(--ink)}
  button.vg-step:focus-visible{outline:2px solid var(--accent-dark);outline-offset:1px}
  .vg-step + .vg-step::before{content:"";position:absolute;left:-8px;width:8px;height:2px;background:var(--line);border-radius:2px}
  .vg-step-circle{flex:none;width:24px;height:24px;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:700;border:1.5px solid var(--line);background:var(--surface);color:var(--ink-soft)}
  .vg-step-lbl{font-size:.86rem;font-weight:600;white-space:nowrap}
  .vg-step.done .vg-step-circle{background:var(--green);border-color:var(--green);color:#fff}
  .vg-step.done .vg-step-lbl{color:var(--ink)}
  .vg-step.active .vg-step-circle{background:var(--accent);border-color:var(--accent);color:#fff}
  .vg-step.active .vg-step-lbl{color:var(--ink);font-weight:700}
  /* Eckdaten-Karte (3 Zellen) */
  .vg-eckdaten{display:flex;flex:none;align-items:center;gap:18px;background:none;border:0;border-radius:0}
  .vg-eckdaten .vg-eck{display:flex;align-items:baseline;gap:7px;padding:0;border:0;background:none}
  .vg-eckdaten .vg-eck-l{font-size:.7rem;}
  .vg-eckdaten .vg-eck-v{font-size:.88rem}
  .vg-eck{padding:8px 16px;min-width:110px;border-left:1px solid var(--line)}
  .vg-eck:first-child{border-left:none}
  .vg-eck-l{font-size:.62rem;font-weight:700;color:var(--ink-soft)}
  .vg-eck-v{font-size:1.05rem;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;margin-top:2px}
  .vg-eck-v.vg-eck-sm{font-size:.86rem;font-weight:600}
  .vg-eck-sub{font-size:.72rem;color:var(--ink-soft);margin-top:1px}
  .vg-eck-link{font-size:.74rem;margin-top:2px;display:inline-block}
  .vg-eck-comm{display:flex;align-items:center;gap:4px}
  .vg-eck-comm input{width:80px;font:inherit;font-size:1.02rem;font-weight:700;font-variant-numeric:tabular-nums;border:1.5px solid var(--line);border-radius:4px;background:var(--surface);padding:.1em .35em;color:var(--ink)}
  .vg-eck-comm input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--om-accent-glow)}
  .vg-eck-comm input.invalid{border-color:var(--red)}
  .vg-eck-cur{color:var(--ink-soft);font-weight:600}
  /* Body: EINE Spalte mit Reitern (Objekte · Notizen · Aufgaben · Protokoll) — dieselbe Gliederung
     wie die Objektseite. Vorher standen Haupt- und Randspalte nebeneinander; die halbe Seite
     scrollte nur mit, und was in der Randspalte lag, wurde übersehen. */
  .vg-body{display:flex;flex-direction:column;gap:0;padding:18px 0 40px;min-width:0}
  .vg-tabs{margin:0 0 16px}
  .vg-tabbody{display:flex;flex-direction:column;gap:16px;min-width:0}
  .vg-card{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:16px 18px;box-shadow:var(--shadow-sm)}
  .vg-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
  .vg-card-head h3{margin:0;padding:0;border:none;font-size:1rem;display:flex;align-items:center;gap:8px}
  /* Finanzkarte */
  .vg-fin-acts{display:flex;align-items:center;gap:14px}
  .vg-fin-summary{display:flex;flex-wrap:wrap;gap:8px}
  .vg-fin-chip{font-size:.82rem;font-weight:600;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:.32em .7em;font-variant-numeric:tabular-nums}
  .vg-fin-groups{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
  .vg-fin-group{min-width:0}
  .vg-fin-gtitle{font-size:.7rem;font-weight:700;color:var(--bronze-ink);margin-bottom:8px;padding-bottom:5px;border-bottom:1px solid var(--line)}
  .vg-kv{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:3px 0;font-size:.82rem}
  .vg-kv span{color:var(--ink-soft)}
  .vg-kv b{color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
  .vg-fin-foot{margin-top:12px}
  /* Objektzeilen */
  .vg-objs{display:flex;flex-direction:column;gap:12px}
  .vg-obj-row{position:relative;display:flex;gap:14px;align-items:flex-start;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:13px 14px}
  .vg-obj-thumb{flex:none;width:64px;height:64px;border-radius:6px;overflow:hidden;background:var(--surface);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--ink-soft)}
  .vg-obj-thumb img{width:100%;height:100%;object-fit:cover;display:block}
  .vg-obj-main{flex:1 1 auto;min-width:0}
  .vg-obj-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
  .vg-obj-title{font-weight:700;color:var(--ink);font-size:.98rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .vg-obj-meta{color:var(--ink-soft);font-size:.8rem;margin-top:2px}
  .vg-obj-facts{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px}
  .vg-fact{font-size:.8rem;color:var(--ink-soft)}
  .vg-fact b{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}
  .vg-fact.miss b{color:var(--bronze-ink)}
  /* Box hört beim Text auf, statt sich über die volle Zeilenbreite zu ziehen */
  .vg-obj-warn{margin-top:8px;font-size:.78rem;color:var(--bronze-ink);background:var(--bronze-100);border-radius:4px;padding:.4em .6em;display:inline-block;width:fit-content;max-width:100%}
  /* Abschluss-Dialog (ein Schritt, 12.07.): Kaufauswahl + Provision je Objekt + Summenzeile */
  .vg-fin-rows{display:flex;flex-direction:column;gap:8px;margin:2px 0 12px}
  .vg-fin-row{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:6px;padding:9px 12px;cursor:pointer;opacity:.72;transition:opacity .12s,border-color .12s}
  .vg-fin-row.on{opacity:1;border-color:var(--accent)}
  .vg-fin-row input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px;flex:none}
  .vg-fin-obj{flex:1;min-width:0}
  .vg-fin-obj b{display:block;font-size:.9rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .vg-fin-obj .sub{display:block;font-size:.76rem;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .vg-fin-val{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink);white-space:nowrap}
  .vg-fin-provwrap{flex:none}
  .vg-fin-prov{width:120px;font:inherit;font-size:.88rem;padding:.45em .6em;border:1.5px solid var(--line);border-radius:4px;background:var(--bg);color:var(--ink);text-align:right}
  .vg-fin-prov:disabled{opacity:.45}
  .vg-fin-prov:focus{outline:none;border-color:var(--accent)}
  .vg-fin-provbt{display:inline-block;max-width:190px;font-size:.8rem;color:var(--ink-soft);text-align:right;line-height:1.35}
  .vg-fin-sum{font-size:.88rem;color:var(--ink-soft);border-top:1px solid var(--line);padding-top:10px}
  .vg-fin-sum b{color:var(--ink);font-variant-numeric:tabular-nums}
  /* Verkaufsweg im Abschluss (25.07.): direkt oder über einen Kooperationspartner. Sitzt als angesetzte
     Leiste unter der Objektzeile, damit Zeile + Verkaufsweg als EINE Karte gelesen werden. */
  .vg-fin-item{display:flex;flex-direction:column;min-width:0}
  .vg-fin-item.has-via>.vg-fin-row{border-bottom-left-radius:0;border-bottom-right-radius:0}
  .vg-fin-via{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 12px 10px;border:1px solid var(--line);border-top:none;border-radius:0 0 6px 6px;background:var(--bg);opacity:.72;transition:opacity .12s,border-color .12s}
  .vg-fin-item.on>.vg-fin-via{opacity:1;border-color:var(--accent)}
  .vg-fin-vialbl{font-size:.78rem;font-weight:600;color:var(--ink-soft);flex:none}
  .vg-fin-via select{font:inherit;font-size:.85rem;padding:.4em .5em;border:1.5px solid var(--line);border-radius:4px;background:var(--surface);color:var(--ink);max-width:100%}
  .vg-fin-via select:focus{outline:none;border-color:var(--accent)}
  .vg-fin-via select:disabled,.vg-fin-pct input:disabled{opacity:.45}
  .vg-fin-pct{display:none;align-items:center;gap:6px}
  .vg-fin-pct.on{display:flex}
  .vg-fin-pct input{width:80px;font:inherit;font-size:.85rem;padding:.4em .5em;border:1.5px solid var(--line);border-radius:4px;background:var(--surface);color:var(--ink);text-align:right;font-variant-numeric:tabular-nums}
  .vg-fin-pct input:focus{outline:none;border-color:var(--accent)}
  .vg-fin-pct input.invalid{border-color:var(--red)}
  .vg-fin-pct>span{font-size:.78rem;color:var(--ink-soft)}
  .vg-fin-pct>b{font-size:.78rem;color:var(--ink);font-variant-numeric:tabular-nums}
  .vg-fin-hint{flex-basis:100%;font-size:.76rem;color:var(--bronze-ink);background:var(--bronze-100);border-radius:3px;padding:.35em .6em;width:fit-content;max-width:100%}
  .vg-fin-foot2{margin:10px 0 0;font-size:.82rem;color:var(--accent);font-weight:600}
  .vg-fin-foot2:empty{display:none}
  .vg-obj-kpi{flex:none;display:flex;align-items:flex-start}
  .vg-obj-side{flex:none;display:flex;align-items:flex-start;gap:2px}
  /* KPI-Kacheln + Bronze-CTA */
  .vg-kpis{display:flex;gap:8px;background:none;border:none;padding:0;cursor:pointer;font:inherit}
  .vg-kpi{display:flex;flex-direction:column;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:7px 11px;min-width:82px;text-align:left}
  .vg-kpi .l{font-size:.6rem;font-weight:700;color:var(--ink-soft)}
  .vg-kpi b{font-size:.95rem;color:var(--ink);font-variant-numeric:tabular-nums}
  .vg-kpi b.pos{color:var(--green)}
  .vg-kpi b.neg{color:var(--red)}
  .vg-kpis:hover .vg-kpi{border-color:var(--accent)}
  .vg-kpis:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px;border-radius:6px}
  .vg-kpis-plain{color:var(--green);font-weight:700;font-size:.84rem;background:var(--green-soft);border:1px solid var(--green);border-radius:6px;padding:8px 12px;align-self:flex-start;cursor:pointer;font-family:inherit}
  .vg-cta{display:flex;flex-direction:column;gap:1px;cursor:pointer;font:inherit;text-align:left;background:var(--bronze-100);border:1px solid var(--gold);border-radius:6px;padding:8px 13px;min-width:150px}
  .vg-cta b{color:var(--bronze-ink);font-size:.86rem}
  .vg-cta span{color:var(--bronze-ink);opacity:.85;font-size:.72rem}
  .vg-cta:hover{box-shadow:0 3px 10px rgba(154,107,0,.2)}
  .vg-cta:focus-visible{outline:2px solid var(--accent-dark);outline-offset:1px}
  .vg-objs-tools{display:flex;align-items:center;gap:8px}
  .btn.btn-sm{padding:.42em .85em!important;font-size:.86rem!important}
  .vg-allcalc{color:var(--green);font-size:.84rem;font-weight:700}
  .vg-obj-empty{color:var(--ink-soft);text-align:center;padding:26px;border:1px dashed var(--line);border-radius:6px;background:var(--bg)}
  /* ---- Objekt-Matching: „Passende Objekte" (Konzept 26.07.2026) ----------------------------
     Bewusst optisch von den verknüpften Objekten abgesetzt (heller Grund, gestrichelte Kante):
     ein Vorschlag ist kein Bestandteil des Vorgangs, solange ihn niemand angeklickt hat. */
  .vg-match{border-style:dashed}
  .mt-sub{margin:-6px 0 12px;font-size:.8rem;color:var(--ink-soft)}
  .mt-list{display:flex;flex-direction:column;gap:10px}
  .mt-row{display:flex;align-items:center;gap:13px;padding:11px 13px;background:var(--bg);
          border:1px solid var(--line);border-radius:6px}
  .mt-thumb{width:46px;height:44px;border-radius:4px;overflow:hidden;flex:none;background:var(--surface);
            border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--accent-dark)}
  .mt-thumb img{width:100%;height:100%;object-fit:cover}
  .mt-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1 1 auto}
  .mt-title{font-weight:650;font-size:.93rem;line-height:1.25;color:var(--ink);
            overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mt-shared{margin-left:7px;font-size:.66rem;font-weight:700;
             color:var(--accent-dark);background:var(--accent-soft);border-radius:3px;padding:.16em .6em;white-space:nowrap}
  .mt-facts{font-size:.82rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}
  .mt-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px}
  .mt-chip{font-size:.72rem;font-weight:600;border-radius:3px;padding:.16em .6em;white-space:nowrap;
           background:var(--bg);border:1px solid var(--line);color:var(--ink-soft)}
  .mt-chip.ok{background:var(--green-soft);border-color:transparent;color:var(--green)}
  .mt-chip.mid{background:rgba(214,158,46,.14);border-color:transparent;color:var(--accent-dark)}
  .mt-chip.no{background:var(--red-soft,rgba(194,72,58,.12));border-color:transparent;color:var(--red)}
  .mt-chip.info{background:var(--surface);border-color:var(--line);color:var(--ink-soft)}
  .mt-act{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex:none}
  /* ID mitführen: #vorgangDetailView .btn (weiter oben) schlägt sonst .btn-slim */
  #vorgangDetailView .mt-act .btn{padding:.42em .9em;font-size:.85rem}
  .mt-label{font-size:.76rem;font-weight:700;color:var(--accent-dark)}
  .mt-label.top{color:var(--green)}
  .mt-hide{font-size:.76rem;color:var(--ink-faint)}
  /* Zu dünnes Suchprofil: ehrlicher Hinweis statt schwacher Treffer */
  .mt-gap{display:flex;gap:11px;align-items:flex-start;font-size:.88rem;line-height:1.5}
  .mt-gap-ico{flex:none;color:var(--gold);font-weight:700;font-size:1.05rem;line-height:1.35}
.vg-add-row .btn{flex:none}
.vg-tl{display:flex;flex-direction:column}
  .vg-tl-row{display:flex;gap:11px;padding:0 0 12px;position:relative}
  .vg-tl-row::before{content:"";position:absolute;left:4.5px;top:12px;bottom:-2px;width:1.5px;background:var(--line)}
  .vg-tl-row:last-child{padding-bottom:0}
  .vg-tl-row:last-child::before{display:none}
  .vg-tl-dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--accent);border:2px solid var(--surface);box-shadow:0 0 0 1.5px var(--line);margin-top:3px;z-index:1}
  .vg-tl-main{min-width:0}
  .vg-tl-txt{font-size:.84rem;color:var(--ink);line-height:1.4}
  .vg-tl-meta{font-size:.72rem;color:var(--ink-soft);margin-top:1px}
  .vg-tl-more{margin-top:4px}
  /* Teilen-Dialog: Link-Kopierzeile */
  .vg-copy-row{display:flex;gap:8px;margin-bottom:4px}
  .vg-copy-row input{flex:1;min-width:0;font:inherit;padding:.55em .65em;border:1.5px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink)}
  /* Feste Angabe im Dialog (Empfänger aus der Kundenakte): sieht aus wie das Link-Feld, nicht wie eine Eingabe (21.10.2026). */
  .vg-fest{padding:.55em .65em;border:1.5px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink);overflow-wrap:anywhere;cursor:default}
  .vg-fest.is-leer{color:var(--ink-soft)}
  .vg-fest-hint{display:block;margin-top:4px;font-size:.78rem;color:var(--ink-soft)}
  .vg-copy-row .btn{flex:none}
  /* Vorgangswechsel: Panel klebt an der linken Kante, der Griff sitzt an dessen rechter Kante und
     wandert beim Öffnen mit nach rechts (kein schwebender Fixed-Button mehr, der mit der Sidebar
     um die Klickfläche streitet). z-index über Sidebar/Inhalt, aber unter Modal/Drawer (.modal z:200). */
  .vg-switch{position:fixed;left:248px;top:0;bottom:0;z-index:180;display:flex;align-items:stretch;pointer-events:none;transition:left var(--dur-base) var(--ease-out)}
  /* Griff folgt der Sidebar-Breite (eingeklappt = 66px), gleiten per Transition mit ihr mit */
  .ib-shell.ib-collapsed .vg-switch{left:66px}
  /* Unter 901px ist die Sidebar eine Topbar (kein linker Kollaps) → Panel an den linken Rand. */
  @media(max-width:900px){.vg-switch,.ib-shell.ib-collapsed .vg-switch{left:0}}
  /* visibility:hidden hält den eingeklappten Inhalt (Suche/Liste) aus Tab-Reihenfolge & Hit-Test;
     0s-Delay = beim Schließen erst nach der Breiten-Animation ausblenden, beim Öffnen sofort zeigen. */
  .vg-switch-body{align-self:stretch;width:0;overflow:hidden;visibility:hidden;background:var(--surface);border-right:1px solid var(--line);box-shadow:8px 0 32px rgba(40,50,45,.16);transition:width .2s var(--ease-out),visibility 0s .2s;pointer-events:auto}
  .vg-switch.open .vg-switch-body{width:min(300px,84vw);visibility:visible;transition:width .2s var(--ease-out),visibility 0s 0s}
  .vg-switch-inner{width:min(300px,84vw);height:100%;display:flex;flex-direction:column}
  /* Griff: sitzt rechts am Body, morpht per Rotation von » (öffnen) zu « (schließen) */
  .vg-switch-handle{flex:0 0 auto;align-self:center;width:30px;height:64px;padding:0;border:1px solid var(--line);border-left:none;border-radius:0 6px 6px 0;background:var(--surface);color:var(--ink-soft);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:3px 0 12px rgba(40,50,45,.14);pointer-events:auto}
  .vg-switch-handle:hover{color:var(--accent-dark);background:var(--bg)}
  .vg-switch-handle:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}
  .vg-switch-ic{transition:transform .2s var(--ease-out)}
  .vg-switch.open .vg-switch-ic{transform:rotate(180deg)}
  .vg-switch-head{padding:16px 16px 10px;border-bottom:1px solid var(--line)}
  .vg-switch-head input{width:100%;font:inherit;padding:.6em .75em;border:1.5px solid var(--line);border-radius:6px;background:var(--bg)}
  .vg-switch-head input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--om-accent-glow)}
  .vg-switch-list{flex:1 1 auto;overflow-y:auto;padding:8px}
  .vg-switch-row{display:flex;flex-direction:column;gap:1px;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:6px;padding:9px 11px;cursor:pointer;font:inherit;margin-bottom:2px}
  .vg-switch-row:hover{background:var(--bg)}
  .vg-switch-row.cur{background:var(--accent-soft);border-color:var(--accent)}
  .vg-switch-row b{color:var(--ink);font-size:.9rem}
  .vg-switch-row span{color:var(--ink-soft);font-size:.8rem}
  .vg-switch-row .sub{font-size:.74rem}
  .vg-switch-row:focus-visible{outline:2px solid var(--accent-dark);outline-offset:1px}
  /* Status-Pill im Wechsel-Panel: Kind-Farben wie am Board (open grün-soft, won bronze, lost rot-soft) */
  .vg-switch-pill{font-size:.6rem;font-weight:800;border-radius:3px;padding:.18em .6em;vertical-align:2px;margin-left:6px}
  .vg-switch-pill.k-open{background:var(--accent-soft);color:var(--accent-dark)}
  .vg-switch-pill.k-won{background:var(--bronze-100);color:var(--bronze-ink)}
  .vg-switch-pill.k-lost{background:rgba(194,72,58,.12);color:var(--red)}
  .vg-switch-pill.k-archived{background:var(--surface-2);color:var(--ink-soft)}
  /* Responsive: unter ~1000px Finanzgruppen + Eckdaten umbrechen (der Rumpf ist ohnehin einspaltig) */
  @media(max-width:1000px){
    .vg-fin-groups{grid-template-columns:1fr}
    .vg-head-row2{flex-direction:column;align-items:stretch}
    .vg-eckdaten{align-self:flex-start}
  }
  @media(max-width:900px){
    .vg-head{top:var(--ib-topbar-h,58px)}
    .vg-obj-row{flex-wrap:wrap}
    .vg-obj-kpi,.vg-obj-side{margin-top:6px}
  }
  @media(max-width:600px){
    .vg-head{margin:-18px -14px 0;padding:14px 14px 12px}
    .vg-card-head{flex-wrap:wrap}
    .vg-objs-tools{flex-wrap:wrap}
  }
  @media(max-width:520px){
    .vg-eckdaten{flex-wrap:wrap}
    .vg-eck{border-left:none;border-top:1px solid var(--line)}
    .vg-eck:first-child{border-top:none}
  }
  .calc-proj-head{background:var(--accent-soft);border:1px solid var(--line);border-radius:var(--radius);padding:12px 18px;margin-bottom:14px;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
  .calc-proj-head .cph-l{font-size:.7rem;font-weight:700;color:var(--accent-dark)}
  .calc-proj-head b{font-family:var(--font-head);font-size:1.05rem}
  .calc-proj-head .cph-sub{color:var(--ink-soft);font-size:.88rem;width:100%}
  .modal-close{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.crm-sec{margin-top:22px}
  .crm-sec h3{font-size:1rem;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.crm-grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  @media(max-width:520px){.crm-grid2{grid-template-columns:1fr}}/* Kunden-Filter-Panel */
  .kunden-filter{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px 20px;margin-top:14px}
  .kunden-filter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
  .kunden-filter .field span{font-size:.82rem;font-weight:600;color:var(--ink)}
  .kunden-filter input,.kunden-filter select{font:inherit;padding:.5em .65em;border:1.5px solid var(--line);border-radius:4px;background:var(--bg);width:100%}
  .kunden-filter input:focus-visible,.kunden-filter select:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
  .kunden-filter-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}
.pin-btn.on{color:var(--accent);opacity:1}
.lead-table tr.pinned td{background:var(--accent-soft)}
  /* position:fixed (statt absolute) + Koordinaten per JS (positionTaSuggest in crm-core.js): so entkommt die
     Vorschlagsliste dem overflow:auto kleiner Modals/Drawer, statt darin abgeschnitten/versteckt zu werden. */
  .ta-suggest{position:fixed;z-index:250;background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);max-height:260px;overflow:auto}
  .ta-item{padding:9px 12px;cursor:pointer;display:flex;flex-direction:column;gap:1px;border-bottom:1px solid var(--line)}
  .ta-item:last-child{border-bottom:none}
  .ta-item .ta-meta{font-size:.78rem;color:var(--ink-soft)}
  .ta-item.ta-active,.ta-item:hover{background:var(--bg)}
  .ta-item.ta-new{color:var(--accent-dark);font-weight:600}
  /* Gruppen-Überschrift und Leermeldung im Kombifeld (Vorschläge ohne Tippen, Suche ab 2 Zeichen) */
  .ta-group{padding:7px 12px 5px;font-size:.68rem;font-weight:700;color:var(--ink-faint);background:var(--bg);border-bottom:1px solid var(--line)}
  .ta-empty{padding:11px 12px;font-size:.85rem;color:var(--ink-soft)}/* Zugeordnete Vorgänge in der Objektansicht */
  .obj-ov-projects{margin-top:16px}
  .obj-ov-projects .obj-pp-item{width:100%}
  /* Dialog: kompakte, zentrierte Karte mit fixiertem Kopf/Fuß + scrollbarem Inhalt (statt Vollhöhen-Fläche) */
  .modal-card{display:flex;flex-direction:column;max-width:560px;max-height:85vh;padding:0;overflow:hidden}
  .modal-card.ov-wide{max-width:920px}   /* breitere Kunden-Übersicht: mehr Infos auf einen Blick */
  @media(max-width:960px){.modal-card.ov-wide{max-width:100%}}   /* Tablet: kein horizontaler Überlauf der breiten Übersicht */
  .modal-card h3{margin:0;padding:22px 56px 16px 26px;border-bottom:1px solid var(--line);flex:0 0 auto}
  .modal-card #modalBody,.modal-card #confirmBody{padding:20px 26px;overflow:auto;flex:1 1 auto}
  .modal-card .modal-buttons{margin:0;padding:14px 26px;border-top:1px solid var(--line);flex:0 0 auto}
  .modal-card .modal-buttons:empty{display:none}
  .modal-close{top:15px;right:14px}
  @media(max-width:560px){.modal-card{max-height:92vh}}
  /* ---- Dialog-Design im „Neue E-Mail"-Stil (Flavio 22.07.): dunkelgrüne Kopfleiste,
         Space-Grotesk-Titel, bronze Primär-Button. Gilt für alle nicht-vollflächigen
         Dialoge (#modal-Formulare: Objekt/Kunde/Lead/… + Bestätigungsdialog). ---- */
  .modal-card>h3,#confirmTitle{
    background:var(--ink);color:#fff;
    font-family:'Space Grotesk',system-ui,sans-serif;font-weight:600;font-size:1.06rem;letter-spacing:-.01em;
    padding:15px 58px 15px 24px;border-bottom:none;
  }
  /* × kompakt + hell — nur bei grüner Leiste (Formular-Dialoge + Bestätigung); reiche
     Detail-Header (.ov-head, ohne direktes h3) behalten den dunklen × auf hellem Grund. */
  .modal-card:has(>h3) .modal-close,#confirmDialog .modal-close{
    width:30px;height:30px;min-width:0;min-height:0;top:13px;right:16px;
    font-size:1.15rem;border-radius:4px;color:rgba(255,255,255,.85);background:rgba(255,255,255,.10);
  }
  .modal-card:has(>h3) .modal-close:hover,#confirmDialog .modal-close:hover{color:#fff;background:rgba(255,255,255,.22)}
  /* Primär-Button = bronze wie „Senden" (Danger bleibt rot, Ghost unverändert) */
  #modal .modal-buttons .btn-primary,#confirmButtons .btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:none}
  #modal .modal-buttons .btn-primary:hover,#confirmButtons .btn-primary:hover{background:var(--accent-dark);border-color:var(--accent-dark)}
  /* Schritt-Indikator (Anlage-Wizard) sitzt IN der grünen Leiste → für dunklen Grund umfärben */
  .modal-card>h3 .anl-steps{margin-top:0;vertical-align:middle}
  .modal-card>h3 .anl-step{color:rgba(255,255,255,.6)}
  .modal-card>h3 .anl-step.on{color:#fff}
  .modal-card>h3 .anl-step .n{background:rgba(255,255,255,.16);color:rgba(255,255,255,.85)}
  .modal-card>h3 .anl-step.on .n{background:var(--gold);color:var(--ink)}
  .modal-card>h3 .anl-step.done .n{background:rgba(255,255,255,.30);color:#fff}
  .modal-card>h3 .anl-step-line{background:rgba(255,255,255,.28)}
  /* Formular-Abschnitte (Kunden-Maske) als feine „Eyebrow" mit Haarlinie */
  #modalBody .cf-sec{font-weight:700;color:var(--gold);font-size:.78rem;margin:20px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
  #modalBody .cf-sec:first-of-type{margin-top:8px}
  /* Dasselbe Formular als Vorgabe in Einstellungen › Kalkulation › Finanzierungsannahmen */
  .acc-fv .crm-grid2{align-items:end}
  .acc-fv .cf-sec{font-weight:700;color:var(--gold);font-size:.78rem;margin:22px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
  #modalBody textarea{font:inherit;width:100%;border:1.5px solid var(--line);border-radius:6px;background:var(--bg);padding:.55em .7em;resize:vertical}
  #modalBody .cf-range .cf-range-row{display:flex;align-items:center;gap:8px;margin-top:5px}
  #modalBody .cf-range .cf-range-row input{flex:1 1 0;min-width:0}
  #modalBody .cf-range .cf-range-dash{flex:0 0 auto;color:var(--ink-soft)}
  /* Notizen im Kommentar-/Chat-Stil (Vorlage): Avatar + Name + Zeit + Papierkorb in der Kopfzeile,
     der Text darunter in einer abgesetzten hellen Bubble, eingerückt unter den Namen. */
  .crm-note{margin-bottom:14px;font-size:.9rem;position:relative}
  .crm-note:last-child{margin-bottom:2px}
  .crm-note .note-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;padding-right:24px}
  .crm-note .note-who{font-weight:700;color:var(--ink)}
  .crm-note .note-dt{color:var(--ink-soft);font-size:.76rem}
  .crm-note .note-x{position:absolute;top:-2px;right:0;background:none;border:none;color:var(--ink-soft);cursor:pointer;padding:4px;border-radius:3px;display:inline-flex;line-height:0}
  .crm-note .note-x:hover{color:var(--red);background:rgba(194,72,58,.1)}
  .crm-note .note-body{margin-left:34px;background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:9px 12px;line-height:1.5;white-space:pre-wrap;word-break:break-word;color:var(--ink)}
  /* ---- Zusammenarbeit im geteilten Vorgang (Kontrakt: docs/konzept-vorgang-teilen.md) ----
     Kopfband, Notiz-Bereich in der Hauptspalte, Freigabe-Karte, Teilen-Dialog, Empfängerliste.
     Grundton ist die Kooperations-Farbe (Akzent), NIE eine farbige Kante an runden Karten. */
  .share-band{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:color-mix(in srgb,var(--accent) 9%,var(--surface));
    border:1px solid color-mix(in srgb,var(--accent) 28%,var(--line));border-radius:6px;padding:9px 14px;font-size:.88rem;color:var(--ink)}
  .share-band-tag{flex:0 0 auto;background:var(--accent);color:#fff;font-size:.7rem;font-weight:700;
    border-radius:3px;padding:3px 9px}
  .share-band-txt{flex:1 1 240px;min-width:0}
  .share-band-msg{flex:1 1 100%;color:var(--ink-soft);font-style:italic}
  /* Der Live-Punkt: pulsiert, weil gerade wirklich jemand mitliest. Ohne Bewegungswunsch still. */
  .live-dot{width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 0 0 rgba(255,255,255,.7);animation:live-pulse 2s infinite;flex:0 0 auto}
  @keyframes live-pulse{
    0%{box-shadow:0 0 0 0 rgba(255,255,255,.65)}
    70%{box-shadow:0 0 0 7px rgba(255,255,255,0)}
    100%{box-shadow:0 0 0 0 rgba(255,255,255,0)}
  }
  @media (prefers-reduced-motion: reduce){ .live-dot{animation:none} }
  .vg-share-band{margin-bottom:12px}
  #calcShareBand{margin:0 0 14px}
  .vg-share-phase{display:flex;align-items:center;gap:10px;font-size:.85rem}

  /* Notizen: eigener Bereich in der Hauptspalte statt Randnotiz — hier reden beide Seiten. */
  .vg-notes .nt-scope{font-size:.8rem;color:var(--ink-soft)}
  .nt-composer{display:flex;gap:10px;align-items:flex-start;margin:4px 0 16px}
  .nt-field{flex:1 1 auto;min-width:0;border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}
  .nt-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}
  .nt-field textarea{width:100%;border:0;background:none;resize:none;padding:10px 12px;font:inherit;color:var(--ink);min-height:52px;outline:none}
  .nt-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:6px 10px 8px;border-top:1px solid var(--line)}
  .nt-tip{font-size:.75rem;color:var(--ink-soft)}
  .nt-list{max-height:none}
  .nt-empty{color:var(--ink-soft);font-size:.88rem;padding:10px 0 2px}
  .nt-day{display:flex;align-items:center;gap:10px;margin:14px 0 10px;color:var(--ink-soft);font-size:.75rem;}
  .nt-day::after{content:"";flex:1 1 auto;height:1px;background:var(--line)}
  .crm-note .note-co{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-dark);
    border-radius:3px;padding:1px 8px;font-size:.72rem;font-weight:700}
  .crm-note.is-partner .note-body{background:color-mix(in srgb,var(--accent) 7%,var(--surface));border-color:color-mix(in srgb,var(--accent) 24%,var(--line))}
  [data-theme="dark"] .crm-note .note-co{background:color-mix(in srgb,var(--accent) 26%,transparent);color:var(--accent-ink,#cfe6da)}

  /* „Live geteilt" als CHIP im Vorgangskopf — dort steht auch der Kunde, der Kopf klebt beim
     Scrollen, und ein Chip braucht keine ganze Seitenbreite für einen Satz. Einzelheiten und
     Aktionen liegen im Aufklapper darunter. */
  .vg-share-chip-wrap{position:relative;flex:none;min-width:0}
  .vg-share-chip{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:.82rem;font-weight:700;
    color:#fff;background:var(--accent);border:1px solid transparent;border-radius:3px;padding:6px 13px;cursor:pointer;white-space:nowrap}
  .vg-share-chip{max-width:100%}
  .vg-share-chip-lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
  /* Zahnrad im Chip: macht sichtbar, dass hier nicht nur ein Zustand steht, sondern er
     auch geändert werden kann. Etwas zurückgenommen, damit „Live geteilt" führt. */
  .vg-share-chip-ic{flex:none;opacity:.8}
  .vg-share-chip:hover .vg-share-chip-ic{opacity:1}
  /* In der Aktionszeile sitzt der Chip rechts — der Aufklapper muss dort nach innen öffnen. */
  .vg-head-actions .vg-share-pop{left:auto;right:0}
  .vg-share-chip:hover{background:var(--accent-dark)}
  .vg-share-chip:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}
  .vg-share-pop{position:absolute;top:calc(100% + 8px);left:0;z-index:60;width:340px;max-width:min(340px,88vw);
    background:var(--surface);border:1px solid color-mix(in srgb,var(--accent) 34%,var(--line));border-radius:6px;
    box-shadow:var(--shadow);padding:14px 16px}
  .vsp-head{display:flex;align-items:center;gap:8px;font-size:.76rem;font-weight:800;
    color:var(--accent-dark)}
  .vsp-head .live-dot{background:var(--accent);box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 60%,transparent);animation:live-pulse-acc 2s infinite}
  @keyframes live-pulse-acc{
    0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 55%,transparent)}
    70%{box-shadow:0 0 0 7px transparent}
    100%{box-shadow:0 0 0 0 transparent}
  }
  .vsp-lead{margin:8px 0 12px;font-size:.83rem;color:var(--ink-soft);line-height:1.5}
  .vsp-row{padding-top:12px;border-top:1px solid var(--line)}
  .vsp-row:first-of-type{border-top:0;padding-top:0}
  .vsp-foot{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
  .vsp-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
  .vsp-co{font-weight:700;font-size:.95rem}
  .psh-mode{background:var(--surface-2);border:1px solid var(--line);border-radius:3px;padding:1px 9px;font-size:.72rem;font-weight:700}
  .psh-mode.is-edit{background:color-mix(in srgb,var(--accent) 16%,transparent);border-color:color-mix(in srgb,var(--accent) 34%,var(--line));color:var(--accent-dark)}
  .psh-facts{margin:0 0 12px;display:flex;flex-direction:column;gap:5px}
  .psh-facts>div{display:flex;justify-content:space-between;gap:12px;font-size:.83rem}
  .psh-facts dt{color:var(--ink-soft)}
  .psh-facts dd{margin:0;font-weight:600;text-align:right}
  .psh-acts{display:flex;gap:8px;flex-wrap:wrap}
  .psh-acts .btn{flex:1 1 auto}
  .psh-acts .btn.psh-stop{color:var(--red);border-color:color-mix(in srgb,var(--red) 32%,var(--line))}
  .psh-acts .btn.psh-stop:hover:not(:disabled){background:rgba(194,72,58,.08);border-color:var(--red)}

  /* ---- Reiter-Inhalte auf voller Breite ----------------------------------------------------
     Aufgaben: Anlegen als eigene Zeile, Liste mit klaren Spalten. Notizen und Protokoll bekommen
     ein LESEMASS — Fließtext über 1400 px ist auf einem Breitbild unlesbar. */
  .tk-new{display:grid;grid-template-columns:minmax(0,1fr) 170px auto auto;gap:10px;align-items:center}
  .tk-new input{font:inherit;width:100%;min-width:0;padding:.6em .7em;border:1.5px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink)}
  .tk-new input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--om-accent-glow)}
  .tk-new .tk-remind input{width:auto;padding:0;border:0;background:none;box-shadow:none}
  .tk-remind{display:inline-flex;align-items:center;gap:7px;font-size:.84rem;color:var(--ink-soft);white-space:nowrap}
  .tk-foot{margin:0;font-size:.82rem}
  @media(max-width:760px){ .tk-new{grid-template-columns:1fr} }
  .vg-tabbody .crm-task{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
  .vg-tabbody #vgTasks .crm-task:first-child{border-top:0}
  .vg-tabbody .crm-task .tt{flex:1 1 auto;min-width:0}
  .vg-tabbody .crm-task .due{margin-left:auto}
  .vg-notes .nt-composer,.vg-notes .nt-list{max-width:900px}
  .vg-tabbody .vg-tl{max-width:900px}

  /* Ungelesene Partnernotiz: Punkt am Reiter, Markierung an der Zeile. */
  .ak-tab.has-neu{position:relative}
  .tab-neu{width:7px;height:7px;border-radius:3px;background:var(--accent);display:inline-block;margin-left:7px;vertical-align:middle}
  .crm-note .note-neu{background:var(--accent);color:#fff;border-radius:3px;padding:1px 8px;font-size:.68rem;font-weight:800;}
  .crm-note.is-neu .note-body{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}

  /* Chip an der Objektzeile: „geteilt · Firma" */
  .vg-obj-sharechips{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
  .vg-sharechip{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;font-weight:700;color:#fff;
    background:var(--accent);border-radius:3px;padding:3px 10px}
  .vg-sharechip .live-dot{width:6px;height:6px;box-shadow:0 0 0 0 rgba(255,255,255,.6)}
  [data-theme="dark"] .vg-sharechip{background:color-mix(in srgb,var(--accent) 62%,#000);color:#fff}

  /* Teilen-Dialog */
  .psd{display:flex;flex-direction:column;gap:16px}
  .psd-sec-h{font-size:.76rem;color:var(--ink-soft);margin-bottom:8px;display:flex;gap:8px;align-items:baseline}
  .psd-objs{display:flex;flex-direction:column;gap:6px;max-height:240px;overflow:auto}
  .psd-obj{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:6px;padding:8px 10px;cursor:pointer}
  .psd-obj:hover{background:var(--surface-2)}
  .psd-obj-thumb{width:34px;height:34px;border-radius:4px;overflow:hidden;background:var(--surface-2);display:flex;align-items:center;justify-content:center;flex:0 0 auto;color:var(--ink-soft)}
  .psd-obj-thumb img{width:100%;height:100%;object-fit:cover;display:block}
  .psd-obj-main{display:flex;flex-direction:column;min-width:0}
  .psd-obj-meta{font-size:.78rem;color:var(--ink-soft)}
  .psd-radio{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:6px;padding:10px 12px;cursor:pointer;margin-bottom:6px}
  .psd-radio:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}
  .psd-radio input{margin-top:3px;flex:0 0 auto}
  .psd-radio span{display:flex;flex-direction:column;gap:2px}
  .psd-radio i{font-style:normal;font-size:.82rem;color:var(--ink-soft);line-height:1.45}
  .psd-check{display:flex;gap:9px;align-items:flex-start;font-size:.85rem;color:var(--ink);margin-top:8px;line-height:1.45}
  .psd-consent{margin-top:8px}

  /* Reservieren-Dialog: eine Zeile je Objekt mit Haekchen, Art und Hinweisen — man sieht vor der
     Entscheidung, was passiert (reservieren, anfragen, ausgelassen). */
  .rsv-lead{margin:0 0 12px;line-height:1.5}
  .rsv-list{display:flex;flex-direction:column;gap:6px;max-height:min(46vh,340px);overflow:auto;margin-bottom:14px}
  .rsv-row{display:flex;align-items:flex-start;gap:10px;padding:9px 11px;border:1px solid var(--line);
    border-radius:6px;background:var(--surface);cursor:pointer}
  .rsv-row:hover{border-color:color-mix(in srgb,var(--accent) 38%,var(--line))}
  .rsv-row.is-off{opacity:.62;cursor:default;background:var(--bg)}
  .rsv-row input.rsv-cb{margin-top:3px;flex:none}
  .rsv-row span.rsv-cb{width:15px;flex:none}
  .rsv-main{display:flex;flex-direction:column;gap:2px;min-width:0}
  .rsv-sub{font-size:.8rem;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .rsv-note{font-size:.8rem;color:var(--ink-soft);display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:2px}
  .rsv-tag{font-size:.68rem;font-weight:700;
    background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:.14em .55em;color:var(--ink-soft)}
  .rsv-tag.is-ask{color:var(--accent-dark);border-color:color-mix(in srgb,var(--accent) 34%,var(--line));background:var(--accent-soft)}
  .rsv-tag.is-live{color:#7E6127;border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:color-mix(in srgb,var(--accent) 14%,transparent)}
  .rsv-opts{display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--line);padding-top:13px}
  .rsv-opt{display:flex;flex-direction:column;gap:5px;font-size:.9rem}
  .rsv-opt>span:first-child{font-weight:600}
  .rsv-opt input[type=date]{font:inherit;padding:.5em .7em;border:1.5px solid var(--line);border-radius:6px;
    background:var(--bg);color:var(--ink);max-width:220px}
  .rsv-opt input[type=search],.rsv-opt select,.rsv-opt textarea{font:inherit;width:100%;padding:.55em .8em;
    border:1.5px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink)}
  .rsv-opt textarea{resize:vertical;min-height:60px}
  .rsv-opt input:focus,.rsv-opt select:focus,.rsv-opt textarea:focus{outline:none;border-color:var(--accent)}
  .rsv-opt .rsv-treffer{margin-top:6px}
  .rsv-opt.rsv-check{flex-direction:row;align-items:flex-start;gap:9px;background:var(--bg);
    border:1px solid var(--line);border-radius:6px;padding:11px 13px;cursor:pointer}
  .rsv-opt.rsv-check input{margin-top:3px;flex:none}
  .rsv-scope .seg{align-self:flex-start}
  .rsv-suche{margin:-6px 0 14px}
  .rsv-suche.hidden{display:none}
  .rsv-suche input[type=search]{width:100%;font:inherit;padding:.55em .8em;border:1.5px solid var(--line);
    border-radius:6px;background:var(--bg);color:var(--ink)}
  .rsv-treffer{display:flex;flex-direction:column;gap:3px;margin-top:6px;max-height:180px;overflow:auto}
  .rsv-treffer-item{text-align:left;font:inherit;color:var(--ink);background:var(--surface);
    border:1px solid var(--line);border-radius:4px;padding:7px 10px;cursor:pointer}
  .rsv-treffer-item:hover{border-color:color-mix(in srgb,var(--accent) 38%,var(--line))}
  .rsv-treffer-item.on{border-color:var(--accent);background:var(--accent-soft)}
  .rsv-gewaehlt{margin:6px 0 0;font-size:.85rem;line-height:1.45;color:var(--ink)}
  /* Spielraum-Hinweis im Reservieren-Dialog: Information, keine Sperre. */
  .rsv-cap{margin:-6px 0 12px;padding:9px 12px;border-radius:6px;font-size:.85rem;line-height:1.5;
    background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line))}

  /* ---- Steuerlicher Spielraum: Rückwärtsrechnung über der Objektliste ----
     Ein Balken sagt in einer Sekunde, was drei Zahlen erst nach dem Lesen sagen: wie viel vom
     tragbaren Volumen schon weg ist. Farbe steckt im Punkt und im Balken, nicht in der Kartenkante. */
  .vg-kap{display:flex;flex-direction:column;gap:10px}
  .kap-head{display:flex;align-items:center;gap:9px}
  .kap-title{font-weight:650;font-size:.95rem;color:var(--ink)}
  .kap-dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--ok, #3E7D5A)}
  .kap-dot.flach{background:var(--accent)}
  .kap-dot.aus{background:var(--ink-soft)}
  .kap-dot.idle{background:var(--line)}
  .kap-fold{margin-left:auto;font:inherit;font-size:.82rem;color:var(--accent-dark);background:none;
    border:0;padding:2px 0;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
  .kap-figure{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
  .kap-rest{font-size:1.7rem;font-weight:700;letter-spacing:-.01em;line-height:1.1;font-variant-numeric:tabular-nums}
  .kap-rest.is-out{color:var(--ink-soft)}
  .kap-of{font-size:.84rem;color:var(--ink-soft)}
  .kap-bar{display:flex;height:9px;border-radius:3px;overflow:hidden;background:color-mix(in srgb,var(--accent) 22%,transparent)}
  /* Ist der Spielraum aufgebraucht, trägt der Rest-Anteil keine Hoffnungsfarbe mehr. */
  .kap-bar.is-flach{background:color-mix(in srgb,var(--accent) 26%,transparent)}
  .kap-bar.is-aus{background:color-mix(in srgb,var(--ink-soft) 22%,transparent)}
  .kap-bar.is-aus .kap-seg.geb{background:var(--ink-soft)}
  .kap-bar.is-aus .kap-seg.gepl{background:color-mix(in srgb,var(--ink-soft) 60%,transparent)}
.kap-leg.over{color:#7E6127}
  .kap-leg.over::before{background:var(--accent)}
  .kap-seg{display:block;height:100%}
  .kap-seg.geb{background:var(--accent-dark)}
  .kap-seg.gepl{background:var(--accent)}
  .kap-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.79rem;color:var(--ink-soft)}
  .kap-leg{display:inline-flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}
  .kap-leg::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--accent-dark)}
  .kap-leg.gepl::before{background:var(--accent)}
  .kap-leg.frei::before{background:color-mix(in srgb,var(--accent) 30%,transparent)}
  .vg-kap.is-aus .kap-leg.frei::before,
  .vg-kap.is-aus .kap-leg.geb::before{background:var(--ink-soft)}
  .kap-lead{margin:0;font-size:.86rem;line-height:1.5;color:var(--ink-soft)}
  .kap-lead b{color:var(--ink)}
  .kap-meta{display:flex;gap:22px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:9px}
  .kap-meta-i{display:flex;flex-direction:column;gap:1px;font-size:.86rem}
  .kap-meta-i .l{font-size:.7rem;font-weight:700;color:var(--ink-soft)}
  .kap-meta-i b{font-variant-numeric:tabular-nums}
  /* Fehlt etwas, fragt der Banner es gleich ab — statt in die Kundenakte zu schicken. */
  .kap-ask{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
  .kap-ask-lbl{flex-basis:100%;font-size:.7rem;font-weight:700;color:var(--ink-soft)}
  .kap-ask-in{max-width:200px}
  .kap-ask-in input{font:inherit;padding:.5em .7em;border:1.5px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink);width:100%}
  /* Aufgeklappter Rechenweg */
  .kap-detail{display:flex;flex-direction:column;gap:14px;border-top:1px solid var(--line);padding-top:13px}
  .kap-block-h{font-size:.7rem;font-weight:700;color:var(--ink-soft);margin-bottom:7px}
  .kap-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:5px 0;
    border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent);font-size:.87rem}
  .kap-row:last-child{border-bottom:0}
  .kap-row-l{display:flex;flex-direction:column;gap:2px;min-width:0}
  .kap-row-h{font-size:.76rem;color:var(--ink-soft);line-height:1.4;max-width:52ch}
  .kap-row b{font-variant-numeric:tabular-nums;white-space:nowrap}
  .kap-row .neg{color:var(--neg, #A2483F)}
  .kap-note{margin:6px 0 0;font-size:.78rem;color:var(--ink-soft);line-height:1.45}
  .kap-bound{display:flex;flex-direction:column;gap:5px}
  .kap-bound-i{display:flex;align-items:center;gap:10px;width:100%;text-align:left;font:inherit;color:var(--ink);
    background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 11px;cursor:pointer;font-size:.85rem}
  .kap-bound-i:hover{border-color:color-mix(in srgb,var(--accent) 38%,var(--line))}
  .kap-bound-t{font-weight:600}
  .kap-bound-m{color:var(--ink-soft);font-size:.8rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .kap-bound-s{margin-left:auto;flex:none;font-size:.68rem;font-weight:700;
    border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));color:#7E6127;border-radius:3px;padding:.14em .55em}
  .kap-bound-s.is-sold{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));color:var(--accent-dark)}
  /* Zeitachse: zehn Balken, der Wert steht im Titel — hier zählt der Verlauf, nicht die Ablesbarkeit je Jahr. */
  .kap-spark{display:flex;align-items:flex-end;gap:4px;height:64px}
  .kap-spark-b{flex:1;background:color-mix(in srgb,var(--accent) 30%,transparent);border-radius:3px 3px 0 0;
    position:relative;min-height:6px}
  .kap-spark-b i{position:absolute;left:0;right:0;bottom:-15px;text-align:center;font-style:normal;
    font-size:.62rem;color:var(--ink-soft)}
  .kap-spark{margin-bottom:16px}
  .kap-disclaim{margin:0;font-size:.76rem;line-height:1.5;color:var(--ink-soft)}
  /* Vorschläge über dem Spielraum: sichtbar, aber leiser — sie sind nicht falsch, nur teurer als
     der Steuerhebel trägt. */
  .mt-cap{margin:-2px 0 10px;font-size:.82rem;color:var(--ink-soft)}

  /* Gleich hohe Knöpfe in einer Reihe: Der schlanke Geist-Knopf trägt einen 1-px-Rahmen
     (styles.css: .btn.btn-slim.btn-ghost), der Primär-Knopf keinen — nebeneinander standen sie
     deshalb 2 px auseinander. Ein durchsichtiger Rahmen derselben Stärke gleicht das aus, ohne an
     der Farbe zu drehen. */
  .acc-actions .btn.btn-primary,.rl-actions .btn.btn-primary{border:1px solid transparent}

  /* ---- Rechtliches: die Hinweise unter jeder Auswertung ---- */
  .rl-vars{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 14px}
  .rl-vars-t{font-size:.82rem;color:var(--ink-soft)}
  .rl-var{display:inline-flex;align-items:baseline;gap:7px;font:inherit;font-size:.8rem;
    font-family:ui-monospace,Menlo,monospace;padding:.32em .6em;border-radius:4px;cursor:pointer;
    background:var(--surface-2);border:1px solid var(--line);color:var(--ink)}
  .rl-var:hover{border-color:var(--accent);color:var(--accent-dark)}
  .rl-var span{font-family:inherit;font-size:.74rem;color:var(--ink-soft);max-width:16ch;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .rl-field{display:block;margin-bottom:16px}
  .rl-area{width:100%;font:inherit;font-size:.88rem;line-height:1.6;border:1.5px solid var(--line);
    border-radius:6px;background:var(--bg);padding:.7em .8em;resize:vertical}
  .rl-area:focus{outline:none;border-color:var(--accent)}
  .rl-area-lang{font-family:ui-monospace,Menlo,monospace;font-size:.8rem;line-height:1.65}
  .rl-actions{display:flex;gap:9px;flex-wrap:wrap;align-items:center}
  .rl-prev{margin-top:18px}
  .rl-prev[hidden]{display:none}
  .rl-prev-h{font-size:.74rem;font-weight:700;
    color:var(--ink-soft);margin-bottom:8px}
  .rl-note{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
  /* Der fest angehängte Teil: sichtbar anders als die Felder darüber — er gehört nicht dem
     Mandanten, also sieht er auch nicht aus wie sein Text. */
  .rl-fest{margin:6px 0 22px;padding:15px 17px;border:1px solid var(--line);border-radius:6px;
    background:var(--surface-2)}
  .rl-fest-t{font-size:.72rem;font-weight:700;
    color:var(--ink-faint);margin-bottom:9px}
  .rl-fest .liab-lang{margin:0;font-size:.86rem;color:var(--ink-soft)}
  .rl-fest .liab-lang h4{font-size:.9rem;color:var(--ink);margin:0 0 5px}
  .rl-h2{margin-top:26px;padding-top:22px;border-top:1px solid var(--line)}
  /* Der Schalter steht über dem Textfeld: erst die Frage „überhaupt?", dann „mit welchem Wortlaut". */
  .rl-schalter{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:2px 0 16px;padding:13px 0}

  /* Nachweis in der Kundenakte: ein ruhiger Beleg neben dem Namen, kein Alarm. */
  .ak-consent{font:inherit;font-size:.74rem;font-weight:650;padding:.24em .6em;border-radius:3px;
    border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);cursor:pointer}
  .ak-consent:hover{border-color:var(--accent);color:var(--accent-dark)}
  .ak-consent-meta{margin:0 0 8px;font-size:.88rem}
  .ak-consent-meta.muted{color:var(--ink-soft);margin-bottom:14px}
  .mt-cap b{color:var(--ink)}
  .mt-row.is-overcap{opacity:.78}
  .mt-chip.cap{background:color-mix(in srgb,var(--accent) 14%,transparent);border-color:color-mix(in srgb,var(--accent) 40%,var(--line));color:#7E6127}

  /* Objektseite: für wen das Objekt festgehalten wird — direkt unter dem Statusschalter. */
  .obj-rsv-für{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:10px;
    background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:9px 12px}
  .obj-rsv-lbl{font-size:.7rem;font-weight:700;color:var(--ink-soft)}
  .obj-rsv-link{font:inherit;color:var(--ink);background:none;border:0;padding:0;cursor:pointer;text-align:left}
  .obj-rsv-link:hover b{text-decoration:underline}
  .obj-rsv-edit{margin-left:auto}
  .obj-rsv-fehlt{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;
    background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));
    border-radius:6px;padding:10px 12px;font-size:.9rem;line-height:1.45}
  .obj-rsv-fehlt .btn{margin-left:auto;flex:none}

  /* Geteilte Vorgänge im Board und in der Liste (seit 28.09.2026): Aufbau wie die eigene Karte,
     der Partner in einer ruhigen Fußzeile (Logo · Firma · Recht bzw. Neues). Keine Drag-Griffe. */
  /* Bronze = geteilt: eigene Farbwelt (Zweitakzent), damit man fremde Vorgänge in der Spalte sofort
     erkennt — Aufbau bleibt der eigener Karten. */
  /* Geteilt = eigene, aber neutrale Fläche (Gestaltung „Frisch“): Grau statt Bronze/Creme. */
  :root{--pv-rand:#D0D5DD;--pv-flaeche:#F2F4F7;--pv-karte:#FFFFFF;--pv-ink:#475467}
  [data-theme="dark"]{--pv-rand:#3B404B;--pv-flaeche:#1F242F;--pv-karte:var(--surface);--pv-ink:#CECFD2}
  .crm-card.is-fremd{padding-bottom:0;overflow:hidden;background:var(--pv-karte);border-color:var(--pv-rand)}
  .crm-card.is-fremd:hover{border-color:var(--ink-faint)}
  .crm-card.is-fremd .ti{padding-right:26px}
  .crm-card.is-fremd .mt{margin-bottom:10px}
  .pv-ico{position:absolute;top:9px;right:9px;width:22px;height:22px;border-radius:3px;display:grid;place-items:center;background:var(--pv-flaeche);color:var(--pv-ink)}
  .pv-meta{color:var(--ink-soft)}
  .pv-fuss{display:flex;align-items:center;gap:8px;margin:0 -12px;padding:7px 12px 8px;background:var(--pv-flaeche);border-top:1px solid var(--pv-rand);min-width:0}
  .pv-logo{flex:none;width:24px;height:24px;border-radius:3px;background:var(--surface);border:1px solid var(--pv-rand);display:grid;place-items:center;overflow:hidden}
  .pv-logo img{width:100%;height:100%;object-fit:contain;padding:1px}
  .pv-logo.is-init{font-size:.58rem;font-weight:800;color:var(--pv-ink)}
  .pv-firma{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;font-size:.76rem;font-weight:700;color:var(--ink);line-height:1.2}
  .pv-firma small{font-size:.62rem;font-weight:700;color:var(--pv-ink)}
  .pv-firma,.pv-firma small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .pv-recht{flex:none;font-size:.7rem;font-weight:600;color:var(--ink-soft)}
  .pv-neu{flex:none;display:inline-flex;align-items:center;gap:5px;font-size:.7rem;font-weight:700;color:var(--accent-dark)}
  .pv-neu i{width:7px;height:7px;border-radius:3px;background:var(--accent)}
  .pv-zeile{display:flex;align-items:center;gap:7px;margin-top:4px;font-size:.78rem;color:var(--ink-soft)}
  .pv-zeile .pv-logo{width:18px;height:18px;border-radius:3px}
  .pv-zeile .pv-neu{margin-left:4px}
  .pv-tag{display:inline-flex;align-items:center;gap:4px;font-size:.66rem;font-weight:700;color:var(--pv-ink);background:var(--pv-flaeche);border-radius:3px;padding:2px 8px 2px 6px}
  .lead-table tr.is-fremd td{background:color-mix(in srgb,var(--pv-flaeche) 55%,transparent)}
  .lead-table tr.is-fremd td:first-child{box-shadow:inset 3px 0 0 var(--pv-rand)}
  .qbar-trenn{width:1px;align-self:stretch;background:var(--line);margin:4px 2px}
  .qpill-geteilt .seg-dot{margin-left:0}
  [data-theme="dark"] .pv-neu{color:#7CC4A0}
  [data-theme="dark"] .pv-neu i{background:#7CC4A0}

  /* „Geteilt"-Marke in Board-Karte und Tabellenzeile: gleiche Sprache wie der Chip im
     Vorgangskopf (Punkt = läuft gerade), nur klein und ohne Aktion. */
  .proj-shared{display:inline-flex;align-items:center;gap:5px;margin-top:3px;font-size:.7rem;font-weight:700;
    color:#fff;background:var(--accent);border-radius:3px;padding:.16em .6em;
    max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .proj-shared .live-dot{width:6px;height:6px;box-shadow:0 0 0 0 rgba(255,255,255,.6)}
  td[data-label="Vorgang"] .proj-shared{margin:3px 0 0}

  /* Freigabe-Band über der Vorgangsansicht: die einzige Stelle, an der ein fremder Vorgang
     ungefragt auftaucht — deshalb kräftig, aber ohne Dauerpräsenz (verschwindet nach dem Öffnen). */
  .share-banner{display:flex;align-items:center;gap:12px;margin:0 0 16px;padding:13px 16px;border-radius:6px;
    background:var(--forest-900,var(--ink));color:#fff}
  .sbn-dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--bronze-500,var(--gold));
    box-shadow:none;animation:sbn-pulse 2.4s var(--ease-inout,ease-in-out) infinite}
  @keyframes sbn-pulse{0%{box-shadow:none;}70%{box-shadow:none;}100%{box-shadow:none;}}
  @media (prefers-reduced-motion:reduce){.sbn-dot{animation:none}}
  .sbn-tx{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1 1 auto}
  .sbn-tx > b{font-size:.95rem}
  .sbn-sub{font-size:.82rem;color:rgba(255,255,255,.78);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #sbnGo{flex:none}
  /* Punkt am Reiter „Mit mir geteilt", solange etwas offen ist. */
  .seg-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--bronze-500,var(--gold));margin-left:6px;vertical-align:middle}

  /* Protokoll: Firmen-Chip + Filter */
  .vg-tl-co{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-dark);border-radius:3px;padding:1px 7px;font-size:.72rem;font-weight:700}
.vg-proto-filter{background:none;border:1px solid var(--line);border-radius:3px;padding:2px 9px;font-size:.72rem;color:var(--ink-soft);cursor:pointer}
  .vg-proto-filter.on{background:color-mix(in srgb,var(--accent) 14%,transparent);border-color:color-mix(in srgb,var(--accent) 32%,var(--line));color:var(--accent-dark);font-weight:700}
  /* Titel im geteilten Vorgang: reine Überschrift, kein Eingabefeld — er gehört dem Eigentümer. */
  .vg-title-ro{width:fit-content;max-width:640px;font-family:var(--font-head);font-size:1.28rem;font-weight:700;color:var(--ink);margin:0}
  /* Automatischer Bauträger-Hinweis (kind=system_share): hervorgehoben; warn = rote Variante (z. B. anderweitig verkauft) */
  .crm-note.note-sys .note-sys-ico{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:3px;background:var(--bronze-100);color:var(--bronze-ink);flex:0 0 auto}
  .crm-note.note-sys .note-who{color:var(--bronze-ink)}
  .crm-note.note-sys .note-body{background:var(--bronze-100);border-color:var(--gold);border-left:3px solid var(--gold)}
  .crm-note.note-sys.warn .note-sys-ico{background:rgba(194,72,58,.12);color:var(--red)}
  .crm-note.note-sys.warn .note-who{color:var(--red)}
  .crm-note.note-sys.warn .note-body{background:rgba(194,72,58,.07);border-color:rgba(194,72,58,.35);border-left:3px solid var(--red)}
  /* Notiz aus einer Lead-Zustellung (kind=system_lead): kein Verfasser, kein Avatar. Bewusst
     ruhiger als der Bauträger-Hinweis — sie meldet nichts, sie IST die Anfrage. Ohne farbige
     Kante an der Karte. */
  .crm-note.note-lead .note-sys-ico{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:3px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-soft);flex:0 0 auto}
  .crm-note.note-lead .note-who{color:var(--ink-soft);font-weight:600}
  /* Dark: Bronze-Flächen abdunkeln (transparentes Gold statt heller Fläche), Label in Gold */
  [data-theme="dark"] .crm-note.note-sys .note-sys-ico{background:rgba(203,167,106,.16);color:var(--gold)}
  [data-theme="dark"] .crm-note.note-sys .note-who{color:var(--gold)}
  [data-theme="dark"] .crm-note.note-sys .note-body{background:rgba(203,167,106,.12);border-color:rgba(203,167,106,.42);border-left:3px solid var(--gold)}
  [data-theme="dark"] .crm-note.note-sys.warn .note-sys-ico{background:rgba(226,145,111,.16);color:#E2916F}
  [data-theme="dark"] .crm-note.note-sys.warn .note-who{color:#E2916F}
  [data-theme="dark"] .crm-note.note-sys.warn .note-body{background:rgba(226,145,111,.1);border-color:rgba(226,145,111,.4);border-left:3px solid #E2916F}
  .crm-task{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px dotted var(--line);font-size:.9rem}
  /* Kalkulations-Karten mit Auswahl-Punkt (Quelle des Abschlusswerts) */
  .crm-calc{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:6px;background:var(--surface);margin-bottom:10px;font-size:.9rem}
  .crm-calc.sel{background:var(--accent-soft);border-color:var(--accent)}
.calc-radio .dot{display:block;width:16px;height:16px;border-radius:50%;border:2px solid var(--line);background:transparent;transition:.14s}
  .calc-radio:hover .dot{border-color:var(--accent-dark)}
  .calc-radio.on .dot{border-color:var(--accent);box-shadow:inset 0 0 0 3.5px var(--accent)}
.crm-calc .ci-main{flex:1 1 auto;min-width:0}
  .crm-calc .ci-t{font-weight:700;color:var(--ink)}
  .crm-calc .ci-m{color:var(--ink-soft);font-size:.84rem;margin-top:1px}
  .crm-calc .ci-acts{display:flex;gap:14px;flex-wrap:wrap;flex:0 0 auto}
  /* Zähl-Pille (Abschnittsköpfe, u. a. vg-Karten) */
  .sec-count{flex:0 0 auto;font-size:.74rem;font-weight:600;color:var(--ink-soft);background:var(--bg);border:1px solid var(--line);border-radius:3px;padding:.25em .7em}
  /* ---- Multi-Objekt-Drawer: Finanzierungsannahmen (kompakte Wertezeile) ---- */
  .dr-fin{display:flex;flex-wrap:wrap;gap:8px 20px;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:11px 14px}
  .dr-fin-item{display:flex;flex-direction:column;gap:1px;font-size:.74rem;color:var(--ink-soft)}
  .dr-fin-item b{font-size:.92rem;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
  /* E: Standard-Hinweiszeile unter den Finanzwerten (dezent) + Bauzeit-Warnung */
  .dr-fin-note{margin:8px 0 0;font-size:.76rem;color:var(--ink-soft);line-height:1.4}
  /* Warnzeile mit Bronze-Füllung: --bronze-ink ist ein FIXER Dunkelton (nicht dark-mode-invertiert) und
     braucht die helle Bronze-Fläche als Untergrund – wie .vg-cta und .vg-obj-warn. */
  .dr-fin-note.warn{color:var(--bronze-ink);font-weight:600;background:var(--bronze-100);border-radius:4px;padding:.45em .7em;display:inline-block}
  /* B: Hinweiszeile unter Formularfeldern (Puffer u. a.) */
  #modalBody .cf-hint{margin:6px 0 4px;font-size:.76rem;color:var(--ink-soft);line-height:1.45}
  .acc-fv .cf-hint{margin:6px 0 4px;font-size:.8rem;color:var(--ink-soft);line-height:1.45}
  /* Eigenkapital: Betrag des Kunden oder Deckung der Kaufnebenkosten (30.10.2026) */
  #modalBody .cf-ekmodus,.acc-fv .cf-ekmodus{display:flex;flex-wrap:wrap;gap:8px 22px;margin:2px 0 8px}
  #modalBody .cf-ekmodus label,.acc-fv .cf-ekmodus label{display:inline-flex;align-items:center;gap:8px;font-size:.88rem;font-weight:600;color:var(--ink);cursor:pointer}
  #modalBody .cf-ekmodus input,.acc-fv .cf-ekmodus input{width:auto;height:auto;margin:0;accent-color:var(--accent)}
  /* Einheit-/Kauf-Badges (weiter genutzt in den vg-Objektzeilen) */
  .dr-unit-lbl{flex:0 0 auto;font-size:.66rem;font-weight:700;color:var(--bronze-ink);background:var(--bronze-100);border:1px solid var(--gold);border-radius:3px;padding:.16em .5em}
  .dr-bought{flex:0 0 auto;font-size:.62rem;font-weight:700;color:var(--green);background:var(--green-soft);border:1px solid var(--green);border-radius:3px;padding:.2em .6em}
  /* Reserviert: dieselbe Form wie „Gekauft", andere Farbe — beides sind Zustände der Zuordnung,
     nur einer davon ist endgültig. Abgelaufene Frist bleibt sichtbar, sie muss verlängert werden. */
  .dr-reserved{flex:0 0 auto;font-size:.62rem;font-weight:700;
    color:var(--bronze-ink,#7A5514);background:var(--bronze-100,#F6EEDD);border:1px solid var(--bronze-500,#C8A45C);
    border-radius:3px;padding:.2em .6em;white-space:nowrap}
  .dr-reserved.is-over{color:var(--neg,#C0392B);background:color-mix(in srgb,var(--neg,#C0392B) 10%,transparent);border-color:color-mix(in srgb,var(--neg,#C0392B) 45%,var(--line))}
  /* Zustands-Gruppen der Objektliste: gleiche Form wie „Aktuell nicht vermittelbar" — der Blick
     kennt das Muster in dieser Liste schon. */
  .vg-grp-head{display:flex;align-items:center;gap:8px;margin:18px 0 10px}
  .vg-grp-head:first-child{margin-top:4px}
  .vg-grp-t{font-size:.68rem;font-weight:700;color:var(--ink-soft);white-space:nowrap}
  .vg-grp-head.is-bought .vg-grp-t{color:var(--green)}
  .vg-grp-head.is-res .vg-grp-t{color:var(--bronze-ink,#7A5514)}
  .vg-grp-n{flex:0 0 auto;min-width:20px;text-align:center;font-size:.7rem;font-weight:700;color:var(--ink-soft);
    background:var(--surface-2);border:1px solid var(--line);border-radius:3px;padding:1px 6px}
  .vg-grp-rule{flex:1 1 auto;border-top:1px dashed var(--line)}
  .dr-portal-wrap{display:flex;flex-direction:column;align-items:center;gap:3px}
  .dr-portal-lbl{font-size:.6rem;font-weight:700;color:var(--ink-soft)}
  .dr-portal-switch{position:relative;width:37px;height:22px;border-radius:3px;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;padding:0;transition:background .15s,border-color .15s}
  .dr-portal-switch .knob{position:absolute;top:2px;left:2.5px;width:15px;height:15px;border-radius:3px;background:var(--ink-soft);transition:transform .15s,background .15s}
  .dr-portal-switch[aria-checked="true"]{background:var(--accent);border-color:var(--accent)}
  .dr-portal-switch[aria-checked="true"] .knob{transform:translateX(14px);background:#fff}
  .dr-portal-switch:focus-visible{outline:2px solid var(--accent-dark);outline-offset:2px}
  .dr-obj-menu{flex:0 0 auto;width:32px;height:32px;border:none;border-radius:4px;background:transparent;color:var(--ink-soft);font-size:1.25rem;line-height:1;cursor:pointer}
  .dr-obj-menu:hover{background:var(--surface);color:var(--ink)}
  .dr-obj-menu:focus-visible{outline:2px solid var(--accent-dark);outline-offset:1px}
  /* ⋮-Popover (Objektzeile): schließt bei Escape/Outside-Click (crm-drawer.js) */
  .dr-menu-pop{position:absolute;top:44px;right:10px;z-index:20;min-width:214px;background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);padding:6px}
  .dr-menu-pop.ist-oben{top:auto;bottom:calc(100% - 8px)}
  .dr-menu-pop button{display:block;width:100%;text-align:left;background:none;border:none;font:inherit;font-size:.88rem;color:var(--ink);padding:.55em .7em;border-radius:4px;cursor:pointer}
  .dr-menu-pop button:hover,.dr-menu-pop button:focus-visible{background:var(--bg);outline:none}
  .dr-menu-pop button.danger{color:var(--red)}
  /* Trenner im Mehr-Menü: setzt die folgenreichen Schritte (Archivieren, Löschen) von der
     Einrichtung darüber ab. Bewusst eine Linie und kein Abstand — nur Abstand liest sich
     wie Zufall, die Linie sagt „ab hier wird es ernst". */
  .dr-menu-sep{height:1px;background:var(--line);margin:5px 6px}
  /* ---- Lese-Archiv (ältere Kalkulationen): Zeilen in der vg-Rail (read-only) ---- */
  .dr-arch-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px dashed var(--line);border-radius:6px;background:var(--bg);margin-bottom:8px;font-size:.88rem}
  .dr-arch-row .ci-main{flex:1 1 auto;min-width:0}
  .dr-arch-row .ci-t{font-weight:700;color:var(--ink)}
  .dr-arch-row .ci-m{color:var(--ink-soft);font-size:.82rem;margin-top:1px}
  .dr-arch-row .ci-acts{display:flex;gap:12px;flex-wrap:wrap;flex:0 0 auto}
.blk-obj{border:1px solid var(--line);border-radius:6px;background:var(--bg);padding:12px 14px;margin-bottom:10px}
/* KfW-Kreditsumme je Einheit (Sammel-Kalkulation): eine Zeile je Einheit, Betrag rechtsbündig. */
.blk-kfw{border:1px solid var(--line);border-radius:6px;background:var(--bg);padding:2px 14px}
  .blk-kfw-row{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:12px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
  .blk-kfw-row:first-child{border-top:0}
  .blk-kfw-t{font-weight:600;min-width:0;overflow-wrap:anywhere}
  .blk-kfw-s{display:block;margin-top:2px;font-size:.76rem;font-weight:400;color:var(--ink-soft)}
  .blk-kfw-f{margin:0}
  .blk-kfw-f input{text-align:right;font-variant-numeric:tabular-nums;background:var(--surface);border:1.5px solid var(--field-line)}
  .blk-kfw-f input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--om-accent-glow)}
  .blk-kfw-none{text-align:right;color:var(--ink-soft);padding-right:12px}
  @media (max-width:560px){.blk-kfw-row{grid-template-columns:minmax(0,1fr) 120px}}
  .blk-obj-h{font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .blk-note{font-size:.78rem;color:var(--ink-soft);margin-top:5px;font-variant-numeric:tabular-nums;min-height:1em}
  /* Feld-Kontrast: Nachtrag-Inputs (Bulk-Blöcke .blk-obj + Mini-Dialog .dr-missdlg) liegen auf grauer Fläche
     (var(--bg)) → weiße Feldfläche + Rahmen wie im Bestand-Formular; Fokus mit Accent + Accent-Ring. */
  .blk-obj input,.dr-missdlg input{background:var(--surface);border:1.5px solid var(--field-line)}
  .blk-obj input:focus,.dr-missdlg input:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px var(--om-accent-glow)}
  /* ---- Kauf-Auswahl beim Abschluss (Checkbox-Zeilen + Live-Summe im Forest-Stil) ---- */
  .pd-row{display:flex;gap:11px;align-items:center;padding:11px 12px;border:1.5px solid var(--line);border-radius:6px;background:var(--surface);cursor:pointer;margin-bottom:8px;transition:border-color .13s,background .13s}
  .pd-row:hover{border-color:var(--accent)}
  .pd-row:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
  .pd-row input{flex:none;width:18px;height:18px;accent-color:var(--accent);cursor:pointer}
  .pd-row .pd-t{flex:1 1 auto;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pd-row .pd-v{flex:0 0 auto;font-variant-numeric:tabular-nums;color:var(--ink-soft);font-weight:600}
  .pd-sum{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding:11px 14px;border-radius:6px;background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent-dark);font-weight:700}
  .pd-sum b{font-size:1.08rem;font-variant-numeric:tabular-nums}
  /* ---- Objekt-Browser: Mehrfachauswahl (Checkbox-Optik, „im Vorgang"-Badge) ---- */
  .opick-check{flex:0 0 auto;width:20px;height:20px;border-radius:3px;border:1.5px solid var(--line);background:var(--surface);display:flex;align-items:center;justify-content:center;color:transparent;transition:background .13s,border-color .13s,color .13s}
  .opick-card.sel{border-color:var(--accent);background:var(--accent-soft)}
  .opick-card.sel .opick-check{background:var(--accent);border-color:var(--accent);color:#fff}
  .opick-card.is-disabled{opacity:.55;cursor:default}
  .opick-card.is-disabled:hover{transform:none;box-shadow:none;border-color:var(--line)}
  .opick-cur.opick-inproj{background:var(--bg);color:var(--ink-soft);border:1px solid var(--line)}
  /* ---- Bauzeitplan: Monatsfelder + Ableitungszeile (Objektformular/Anlage-Wizard) ---- */
  .bauzeit-note{font-size:.8rem;margin-top:6px;min-height:1em}
  #modalBody input[type="month"]{font:inherit;min-height:2.9em;background:var(--bg)}
  /* ---- Vorgangs-Formular: Objekt-Chips (n Objekte je Vorgang) ---- */
  .pf-obj-chips{display:flex;flex-direction:column;gap:8px}
  .pf-obj-chip{display:flex;align-items:center;gap:10px;padding:.55em .8em;border:1.5px solid var(--accent);border-radius:6px;background:var(--accent-soft)}
  .pf-obj-choose-more{width:auto;align-self:flex-start;padding:.5em .9em;font-size:.88rem}/* Support-Zugriff (Admin-Impersonation): bewusst NICHT über Theme-Tokens, damit das Banner auch in
     einem weißgelabelten Instanz-Theme unübersehbar bleibt. Höhe wird per JS in --imp-h gemessen, damit
     die Sidebar (sticky/100vh) exakt darunter beginnt statt teilweise verdeckt zu werden. */
  :root{--imp-h:0px}
  .imp-banner{display:none;align-items:center;gap:10px;padding:9px 16px;min-height:40px;position:sticky;top:0;z-index:60;
    background:repeating-linear-gradient(135deg,#3A2E14,#3A2E14 12px,#2A2210 12px,#2A2210 24px);
    color:#FCEFD1;font:600 .85rem/1.35 var(--font-body,system-ui,sans-serif);border-bottom:1px solid #1E1808}
  .imp-banner:not(.hidden){display:flex}
  /* Demo-Modus teilt sich das Band mit dem Support-Zugriff, sagt aber etwas anderes: kein Alarm,
     sondern ein Zustand. Ebenfalls feste Farben — in einem weißgelabelten Theme muss der Hinweis
     genauso stehen wie überall sonst. */
  .imp-banner.is-demo{background:#1E3A2C;color:#DCEFE3;border-bottom-color:#16281F}
  .imp-banner.is-demo .imp-banner-ico{color:#7FC9A0}
  .imp-banner.is-demo .imp-banner-text b{color:#fff}
  .imp-banner.is-demo .imp-banner-btn{background:#7FC9A0;color:#14261D}
  .imp-banner-ico{flex:none;display:flex;color:#F0B23A}
  .imp-banner-text{flex:1 1 auto;min-width:0}
  .imp-banner-text b{color:#fff}
  .imp-banner-btn{flex:none;background:#F0B23A;color:#2A2210;border:none;padding:7px 14px;border-radius:4px;font-weight:700;font-size:.82rem;cursor:pointer;transition:filter .15s}
  .imp-banner-btn:hover{filter:brightness(1.08)}
  .imp-banner-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}
  @media(max-width:680px){.imp-banner{font-size:.78rem;padding:8px 10px}
.imp-banner-text{white-space:normal}}
  /* Nur Desktop (>900px): dort ist die Sidebar 100vh hoch, muss also um die Banner-Höhe gekürzt werden.
     Auf Mobil (≤900px, siehe Media-Query oben) wird NUR top verschoben, height bleibt auto. */
  @media(min-width:901px){ body.imp-active .ib-sidebar{top:var(--imp-h)!important;height:calc(100vh - var(--imp-h))!important} }

  /* ===== Welle 3: Geteilte Wohnanlagen – Shell-UI ===== */
  /* Anfragen-Inbox (crm-shares.js, Bauträger) */
  .inbox-sec{margin-bottom:26px}
  .inbox-sec-title{font-size:.74rem;font-weight:700;color:var(--ink-soft);margin:0 0 12px;display:flex;align-items:center;gap:8px}
  .inbox-sec-title .n{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:3px;background:var(--accent-soft);color:var(--accent-dark);font-size:.72rem;letter-spacing:0}
  .inbox-list{display:flex;flex-direction:column;gap:12px}
  .inbox-card{display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px 18px}
  /* Verkaufsbeleg-Zeile (§12): reine Doku, kompakter als Aktions-Karten */
  .inbox-card.inbox-sale{padding:11px 18px;box-shadow:none}
  .inbox-card.inbox-sale .inbox-meta b{color:var(--ink)}
  .inbox-card-main{flex:1 1 320px;min-width:0}
  .inbox-firma-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
  .inbox-firma{font-family:var(--font-head);font-weight:700;font-size:1.02rem;color:var(--ink)}
  .inbox-price{margin-left:auto;font-weight:700;color:var(--accent-dark);white-space:nowrap}
  .inbox-meta{color:var(--ink-soft);font-size:.88rem;margin-top:3px}
  .inbox-hint{margin:-4px 0 10px;font-size:.84rem;color:var(--ink-soft)}
  .inbox-wait{font-size:.8rem;font-weight:600;color:var(--ink-soft);white-space:nowrap;align-self:center}
  .inbox-msg{margin-top:10px;font-style:italic;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 11px;font-size:.9rem;line-height:1.45}
  .inbox-fin{margin-top:8px;display:inline-flex;align-items:center;gap:6px;color:var(--green);font-size:.84rem;font-weight:600}
  /* Mitgeschickter Kunde an einer Anfrage: klickbar in die Kundenakte (25.07.) */
  .inbox-cust{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:.34em .7em;border:1px solid transparent;border-radius:3px;background:var(--accent-soft);color:var(--accent);font:inherit;font-size:.82rem;font-weight:600;cursor:pointer}
  .inbox-cust:hover{border-color:var(--accent)}
  .inbox-note{margin-top:8px;color:var(--ink-soft);font-size:.88rem}
  .inbox-actions{display:flex;gap:8px;flex:none;flex-wrap:wrap}
  .inbox-empty{color:var(--ink-soft);font-size:.92rem;padding:22px;text-align:center;border:1.5px dashed var(--line);border-radius:var(--radius);background:var(--surface)}
  @media(max-width:640px){.inbox-price{margin-left:0}
.inbox-actions{width:100%}
.inbox-actions .btn{flex:1}}

  /* Einstellungen → Kooperationen (account.js) */
  .koop-wrap{display:flex;flex-direction:column;gap:16px}
  .koop-card{padding:20px 22px}
  .koop-card-t{font-family:var(--font-head);font-size:1.05rem;font-weight:700;color:var(--ink);margin:0 0 4px}
  .koop-card-sub{margin:0 0 14px;font-size:.9rem}
  .koop-invite-row{max-width:420px}
  .koop-join-row{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch}
  /* Der Knopf gehört zum Eingabefeld: Als schlanker Knopf ist er niedriger als das Feld und
     schwömme sonst daneben. Schlank bleibt er trotzdem — gestreckt wird die Fläche, nicht die
     Schrift. */
  .koop-join-row .btn{align-self:stretch}
  .koop-join-row input{flex:1 1 220px;min-width:0;font:inherit;font-size:1rem;padding:.6em .8em;border:1.5px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink)}
  .koop-code-box{margin-top:14px;border:1px solid var(--accent-soft);background:var(--accent-soft);border-radius:6px;padding:14px 16px}
  .koop-code-label{font-size:.72rem;font-weight:700;color:var(--accent-dark)}
  .koop-code-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:6px 0 8px}
  .koop-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.15rem;font-weight:700;color:var(--ink)}
  .koop-code.sm{font-size:.95rem}
  .koop-code-hint{margin:0;font-size:.82rem}
  .koop-pending{margin-top:14px}
  .koop-pend-title{font-size:.72rem;font-weight:700;color:var(--ink-soft);margin:0 0 8px}
  .koop-row{display:flex;align-items:center;gap:14px;padding:11px 14px;border:1px solid var(--line);border-radius:6px;background:var(--bg);margin-bottom:8px}
  .koop-row-main{min-width:0;flex:1}
  .koop-row-name{font-weight:600;color:var(--ink)}
  .koop-row-sub{font-size:.82rem;color:var(--ink-soft);margin-top:2px}
  .koop-role{display:inline-flex;align-items:center;font-size:.72rem;font-weight:700;padding:.14em .6em;border-radius:3px}
  .koop-role.is-peer{background:rgba(44,122,85,.14);color:var(--green)}
  .koop-role.is-owner{background:rgba(203,167,106,.22);color:var(--bronze-600)}
  /* Finanzierung ist keine dritte Spielart von Vertrieb, sondern etwas anderes — deshalb eine
     eigene Farbe und nicht dieselbe in blasser. */
  .koop-role.is-fin{background:color-mix(in srgb,var(--info) 16%,transparent);color:var(--info)}

  /* Zwei Flächen statt eines Auswahlmenüs — für den Zweck der Einladung wie für die Rolle bei
     Finanzierungen. Beide Möglichkeiten stehen ohne Klick lesbar nebeneinander: Die Wahl ist eine
     Entscheidung, keine zugeklappte Liste, in der man raten muss, was hinter dem anderen Eintrag
     steckt. Eine Optik für beide Stellen, damit das Muster wiedererkennbar bleibt. */
  .wahl{display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:10px;margin:0 0 12px}
  .wahl-opt{display:block;text-align:left;font:inherit;cursor:pointer;background:var(--surface);
    border:1.5px solid var(--line);border-radius:6px;padding:12px 14px;
    transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}
  .wahl-opt:hover:not(:disabled){border-color:var(--accent)}
  .wahl-opt:disabled{cursor:default;opacity:.65}
  .wahl-opt b{display:block;font-size:.92rem;font-weight:700;color:var(--ink);margin-bottom:3px}
  .wahl-opt span{display:block;font-size:.82rem;line-height:1.5;color:var(--ink-soft)}
  .wahl-opt.is-on{border-color:var(--accent);background:var(--accent-soft)}
  .wahl-opt.is-on b{color:var(--accent-dark)}
  .koop-zw-note{margin:0 0 16px;padding:11px 14px;border-radius:6px;background:var(--hint-bg);
    color:var(--ink-soft);font-size:.85rem;line-height:1.55}
  .koop-zw-note:empty{display:none}
  /* Ein Wort im Fließtext, das führt — kein Knopf, der wie ein zweiter Aufruf zur Tat aussieht. */
  .koop-link{font:inherit;font-size:inherit;color:var(--accent-dark);background:none;border:0;
    padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}

  /* Ergänzte Vorlage: Der Kasten erscheint nur für Mandanten mit eigenem Wortlaut — für alle
     anderen wäre er eine Warnung vor einem Problem, das sie nicht haben. */
  .rl-erg{margin:0 0 18px;padding:13px 16px;border-radius:6px;background:var(--hint-bg);
    color:var(--ink-soft);font-size:.87rem;line-height:1.6}
  .rl-erg b{color:var(--ink)}
  .rl-erg-d{margin-top:9px}
  .rl-erg-d summary{cursor:pointer;font-weight:600;color:var(--accent-dark)}
  .rl-erg-t{white-space:pre-wrap;font-family:ui-monospace,Menlo,monospace;font-size:.78rem;
    line-height:1.6;color:var(--ink);background:var(--surface);border:1px solid var(--line);
    border-radius:6px;padding:12px 14px;margin:10px 0;max-height:280px;overflow:auto}

  /* ---------- Finanzierung: der gemeinsame Fall ----------
     Eine Optik für beide Seiten, in einer festen Reihenfolge: Erst der Stand (wo stehen wir, was
     kommt als Nächstes), dann die Termine, dann Verlauf oder Unterlagen. Wer die Seite öffnet,
     soll die Antwort oben finden und erst danach lesen müssen. */
  .fin-fall{display:flex;flex-direction:column;gap:16px}
  .fin-kopf{display:flex;align-items:center;justify-content:space-between;gap:18px}
  .fin-kopf-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
  .fin-kopf-name{margin:0;font-family:var(--font-head);font-size:1.3rem;font-weight:700;color:var(--ink)}
  .fin-kopf-sub{font-size:.86rem;color:var(--ink-soft)}
  /* Das Logo des Hauses, das angefragt hat. Auf heller Fläche, auch im Dunkelmodus — Firmenlogos
     sind für Weiß gemacht, und ein dunkles Logo auf dunklem Grund verschwände. */
  .fin-kopf-logo{flex:none;box-sizing:border-box;display:block;height:48px;padding:6px 12px;
    border-radius:6px;background:#fff;border:1px solid var(--line)}
  /* Feste Höhe, Breite aus dem Seitenverhältnis: Ein SVG ohne width/height fiele in einem
     schrumpfenden Kasten sonst auf null zusammen (Prozent von „so breit wie der Inhalt"). */
  .fin-kopf-logo img{display:block;height:100%;width:auto;max-width:160px;object-fit:contain}
  @media (max-width:520px){ .fin-kopf-logo{height:38px;padding:4px 8px} .fin-kopf-logo img{max-width:104px} }

  /* Die Stand-Karte: Kopfzeile auf getönter Fläche, darunter der nächste Schritt, darunter die
     Zeitleiste. Der Ausgang färbt die FLÄCHE, nicht eine Kante — eine farbige Kante an einer
     abgerundeten Karte sieht immer nach Fehler aus. */
  .fin-stand{border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}
  .fin-stand-kopf{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;
    padding:16px 20px;background:var(--surface-2)}
  .fin-stand.is-bestaetigt .fin-stand-kopf{background:var(--green-soft)}
  .fin-stand.is-abgelehnt .fin-stand-kopf{background:color-mix(in srgb,var(--red) 11%,transparent)}
  .fin-stand-txt{min-width:0}
  .fin-stand-auge{display:block;font-size:.66rem;font-weight:800;
    color:var(--ink-faint)}
  .fin-stand-h{margin:3px 0 0;font-family:var(--font-head);font-size:1.32rem;font-weight:700;
    line-height:1.2;color:var(--ink);text-wrap:balance}
  .fin-stand.is-bestaetigt .fin-stand-h{color:var(--green)}
  .fin-stand.is-abgelehnt .fin-stand-h{color:var(--red)}
  .fin-stand-sub{margin:5px 0 0;font-size:.84rem;line-height:1.5;color:var(--ink-soft)}
  .fin-nach{flex:none;white-space:nowrap}
  .fin-next{margin:0;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
    padding:12px 20px;font-size:.9rem;line-height:1.5;color:var(--ink);border-bottom:1px solid var(--line)}
  .fin-next span{flex:none;font-size:.64rem;font-weight:800;
    color:var(--accent-dark);background:var(--accent-soft);border-radius:var(--r-pill);padding:.3em .75em}

  /* Zeitleiste: fünf Schritte auf einer durchlaufenden Schiene. Die Linie zwischen zwei Punkten
     ist voll, sobald der nächste erreicht ist. Farbe trägt nur, was etwas bedeutet. Für den
     Finanzierer sind die Punkte Knöpfe — die Zeitleiste IST seine Bedienung. */
  .fin-rail{list-style:none;margin:0;padding:22px 16px 18px;display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));background:var(--surface)}
  .fin-rail-s{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;
    gap:7px;min-width:0;padding:0 6px}
  .fin-rail-s:not(:last-child)::after{content:"";position:absolute;top:10px;left:calc(50% + 16px);
    right:calc(-50% + 16px);height:2px;border-radius:1px;background:var(--line)}
  .fin-rail-s.linie-voll::after{background:var(--accent)}
  .fin-rail-p{position:relative;z-index:1;flex:none;box-sizing:border-box;width:22px;height:22px;
    border-radius:3px;border:2px solid var(--line);background:var(--surface);color:#fff;
    display:flex;align-items:center;justify-content:center;
    transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}
  .fin-rail-s.is-erreicht .fin-rail-p{background:var(--accent);border-color:var(--accent)}
  .fin-rail-s.is-aktuell .fin-rail-p{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 5px var(--accent-soft)}
  .fin-rail-s.is-bestaetigt .fin-rail-p{background:var(--green);border-color:var(--green);box-shadow:0 0 0 5px var(--green-soft)}
  .fin-rail-s.is-abgelehnt .fin-rail-p{background:var(--red);border-color:var(--red);
    box-shadow:0 0 0 5px color-mix(in srgb,var(--red) 16%,transparent)}
  /* Zwei Zeilen Platz für jede Beschriftung: Dann liegen die Daten darunter auf einer Linie, auch
     wenn „Kundendaten vollständig" umbricht — sonst tanzt in der Reihe jede Spalte für sich. */
  .fin-rail-l{font-size:.8rem;line-height:1.35;font-weight:500;color:var(--ink-faint);
    overflow-wrap:anywhere;min-height:2.7em}
  .fin-rail-s.is-erreicht .fin-rail-l{color:var(--ink-soft)}
  .fin-rail-s.is-aktuell .fin-rail-l{color:var(--ink);font-weight:700}
  .fin-rail-s.is-bestaetigt .fin-rail-l{color:var(--green);font-weight:700}
  .fin-rail-s.is-abgelehnt .fin-rail-l{color:var(--red);font-weight:700}
  .fin-rail-d{min-height:1.05em;font-size:.72rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}
  .fin-rail-b{display:flex;flex-direction:column;align-items:center;gap:7px;width:100%;font:inherit;
    color:inherit;background:none;border:0;padding:0;cursor:pointer}
  .fin-rail-b:hover .fin-rail-p{border-color:var(--accent)}
  .fin-rail-b:hover .fin-rail-l{color:var(--accent-dark)}
  .fin-rail-b:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:6px}
  .fin-rail-aus{display:flex;gap:5px;flex-wrap:wrap;justify-content:center}
  .fin-rail-a{font:inherit;font-size:.72rem;font-weight:600;padding:.22em .68em;border-radius:var(--r-pill);
    border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);cursor:pointer}
  .fin-rail-a.is-ja:hover,.fin-rail-a.is-ja.is-on{border-color:var(--green);color:var(--green)}
  .fin-rail-a.is-ja.is-on{background:var(--green-soft)}
  .fin-rail-a.is-nein:hover,.fin-rail-a.is-nein.is-on{border-color:var(--red);color:var(--red)}
  .fin-rail-a.is-nein.is-on{background:color-mix(in srgb,var(--red) 14%,transparent)}
  .fin-rail-a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  @media (max-width:760px){
    /* Schmal kippt die Schiene: Punkte untereinander, Beschriftung rechts daneben. */
    .fin-rail{grid-template-columns:1fr;padding:16px 18px}
    .fin-rail-s{display:grid;grid-template-columns:22px minmax(0,1fr) auto;column-gap:12px;row-gap:7px;
      align-items:start;text-align:left;padding:0 0 16px}
    .fin-rail-s:last-child{padding-bottom:0}
    .fin-rail-s:not(:last-child)::after{top:24px;bottom:2px;left:10px;right:auto;width:2px;height:auto}
    .fin-rail-p{grid-column:1;grid-row:1}
    .fin-rail-l{grid-column:2;grid-row:1}
    .fin-rail-d{grid-column:3;grid-row:1}
    .fin-rail-aus{grid-column:2 / 4;grid-row:2;justify-content:flex-start}
    .fin-rail-b{grid-column:1 / 4;grid-row:1;display:grid;grid-template-columns:22px minmax(0,1fr) auto;
      column-gap:12px;align-items:start;text-align:left}
    .fin-rail-l{min-height:0}
  }

  /* Termine: vier Daten nebeneinander, in der Reihenfolge, in der sie aufeinanderfolgen sollten. */
  .fin-fristen{display:flex;flex-direction:column;gap:8px}
  .fin-t-reihe{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
  .fin-t{display:flex;flex-direction:column;gap:3px;min-width:0;padding:10px 12px;border-radius:6px;background:var(--surface-2)}
  .fin-t-l{font-size:.68rem;font-weight:800;color:var(--ink-faint)}
  .fin-t-v{font-size:.95rem;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
  .fin-t-s{font-size:.76rem;color:var(--ink-faint)}
  .fin-t.is-bald .fin-t-s{color:var(--bronze-600);font-weight:600}
  .fin-t.is-vorbei .fin-t-s{color:var(--red);font-weight:600}
  .fin-t-in{font:inherit;font-size:.92rem;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;
    border:1px solid transparent;border-radius:4px;background:none;padding:1px 4px;margin:-1px -4px;width:100%}
  .fin-t-in:hover{border-color:var(--line);background:var(--surface)}
  .fin-t-in:focus{outline:none;border-color:var(--accent);background:var(--surface)}
  .fin-t-in:disabled{opacity:.55}
  .fin-t-verl{align-self:flex-start;margin-top:4px;font:inherit;font-size:.76rem;font-weight:600;color:var(--accent-dark);
    background:none;border:0;padding:0;cursor:pointer;text-align:left}
  .fin-t-verl:hover{text-decoration:underline}
  .fin-hinw{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
  .fin-hinw li{position:relative;padding:7px 12px 7px 28px;border-radius:6px;font-size:.84rem;line-height:1.45;
    background:var(--hint-bg);color:var(--ink-soft)}
  .fin-hinw li::before{content:"";position:absolute;left:12px;top:.95em;width:7px;height:7px;border-radius:3px;background:var(--gold)}

  /* Vorschlag im Reservierungsdialog: eine Zeile unter dem Datum, die sagt, warum dieses Datum. */
  .rsv-fin{display:block;margin-top:4px;font-size:.8rem;line-height:1.45;color:var(--ink-soft)}
  .rsv-fin.is-warn{color:var(--red);font-weight:600}

  /* ---------- Bankmappe ----------
     Derselbe Kasten am Objekt und im Vorgang. Aufklappbar: Eine vollständige Liste muss niemand
     lesen, eine unvollständige schon — deshalb steht sie offen, solange etwas fehlt. */
  .od-bm{margin:0 0 14px}
  .od-bm.hidden{display:none}
  .bm-panel{border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}
  .bm-panel>summary{list-style:none;cursor:pointer;display:grid;
    grid-template-columns:auto minmax(48px,1fr) auto 10px;align-items:center;gap:14px;padding:13px 16px}
  .bm-panel>summary::-webkit-details-marker{display:none}
  .bm-panel>summary:hover{background:var(--surface-2)}
  .bm-panel>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
  .bm-panel>summary::after{content:"";justify-self:end;width:7px;height:7px;
    border-right:2px solid var(--ink-faint);border-bottom:2px solid var(--ink-faint);
    transform:translateY(-2px) rotate(45deg);transition:transform var(--dur-fast) var(--ease-out)}
  .bm-panel[open]>summary::after{transform:translateY(2px) rotate(225deg)}
  .bm-kopf b{font-family:var(--font-head);font-size:1rem;color:var(--ink)}
  .bm-zahl{font-size:.78rem;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums;white-space:nowrap}
  .bm-bar{height:4px;border-radius:2px;background:var(--line);overflow:hidden}
  .bm-bar i{display:block;height:100%;background:var(--accent);border-radius:2px;transition:width var(--dur-base) var(--ease-out)}
  .bm-lead{margin:0 16px 12px;font-size:.82rem;color:var(--ink-soft);line-height:1.5;max-width:74ch}
  .bm-liste{list-style:none;margin:0;padding:0 16px 14px;display:flex;flex-direction:column}
  .bm-p{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:12px;
    padding:8px 0;border-top:1px solid var(--line);font-size:.86rem}
  .bm-p:first-child{border-top:0}
  .bm-p-z{box-sizing:border-box;width:19px;height:19px;border-radius:3px;display:inline-flex;
    align-items:center;justify-content:center;border:1.5px solid var(--line);color:#fff}
  .bm-p.is-da .bm-p-z{background:var(--green);border-color:var(--green)}
  .bm-p.is-weg .bm-p-z{background:var(--ink-faint);border-color:var(--ink-faint)}
  .bm-p-l{min-width:0;color:var(--ink)}
  .bm-p.is-weg .bm-p-l{color:var(--ink-faint);text-decoration:line-through}
  .bm-p-r{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0;flex-wrap:wrap}
  .bm-p-d{font-size:.78rem;color:var(--ink-faint);max-width:30ch;overflow:hidden;text-overflow:ellipsis;
    white-space:nowrap;text-decoration:none}
  a.bm-p-d{color:var(--green);font-weight:600}
  a.bm-p-d:hover{text-decoration:underline}
  .bm-p-d.is-fehlt{color:var(--bronze-600);font-weight:600}
  .bm-p-v{font:inherit;font-size:.76rem;font-weight:600;color:var(--accent-dark);background:var(--accent-soft);
    border:0;border-radius:var(--r-pill);padding:.26em .75em;cursor:pointer;max-width:32ch;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .bm-p-v:hover{background:color-mix(in srgb,var(--accent) 22%,transparent)}
  .bm-p-b{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:.75rem;color:var(--ink-faint);
    background:none;border:0;padding:0;cursor:pointer;white-space:nowrap}
  .bm-p-b:hover{color:var(--accent-dark);text-decoration:underline}
  .bm-p-b.is-up{color:var(--accent-dark);font-weight:600}
  .bm-p-b svg{flex:none}
  /* Hochladen und Zuordnen als Symbol — der Text stünde in jeder Zeile doppelt. */
  .bm-p-i{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:28px;height:28px;padding:0 6px;
    font:inherit;font-size:.72rem;font-weight:600;color:var(--accent-dark);background:none;border:0;border-radius:var(--r-sm);cursor:pointer}
  .bm-p-i:hover,.bm-p-i[aria-expanded="true"]{background:var(--accent-soft)}
  .bm-p-i:disabled{cursor:default;opacity:.8}
  .bm-p-i svg{flex:none}
  /* „zwingend": die eine Anforderung, die eine Übergabe aufhält. Rot erst, solange sie fehlt. */
  .bm-stufe{display:inline-block;margin-left:8px;padding:.08em .55em;border-radius:var(--r-pill);
    font-style:normal;font-size:.66rem;font-weight:700;
    vertical-align:.12em;color:var(--ink-soft);background:var(--surface-2);border:1px solid var(--line)}
  .bm-p.is-zwingend.is-offen .bm-stufe{color:var(--red);background:color-mix(in srgb,var(--red) 9%,transparent);
    border-color:color-mix(in srgb,var(--red) 30%,transparent)}
  .bm-p.is-zwingend.is-offen .bm-p-z{border-color:var(--red)}
  .bm-p.is-zwingend.is-offen .bm-p-d.is-fehlt{color:var(--red)}
  .bm-panel.is-zwingend .bm-zahl{color:var(--red)}
  /* Einheitenübersicht: Bemusterung bestätigt — erst dann, eine angefangene Auswahl zählt nicht. */
  .u-bem{display:inline-flex;align-items:center;gap:4px;margin-left:9px;padding:.14em .6em .14em .5em;
    border-radius:var(--r-pill);font-family:var(--font-body);font-size:.68rem;font-weight:700;
    color:var(--green);background:color-mix(in srgb,var(--green) 12%,transparent);vertical-align:.1em;white-space:nowrap}
  .u-bem svg{flex:none}
  /* Unter der Bezeichnung: der Hinweis zur Unterlage — oder, in Bronze, dass sie zu alt ist. */
  .bm-p-h{display:block;margin-top:2px;font-size:.74rem;line-height:1.4;color:var(--ink-faint)}
  .bm-p-h.is-alt{color:var(--bronze-600);font-weight:600}
  .bm-p.is-alt .bm-p-z{background:var(--bronze-500);border-color:var(--bronze-500)}
  /* Auswahl „aus Dokumenten wählen": klappt unter der Zeile auf, eingerückt unter die Bezeichnung. */
  .bm-wahl{margin:0 0 8px 32px;padding:10px 12px;border-radius:var(--r-md);background:var(--surface-2);
    display:flex;flex-direction:column;gap:6px;font-size:.82rem}
  .bm-wahl-k{font-weight:600;color:var(--ink-soft);font-size:.78rem}
  .bm-wahl-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:260px;overflow-y:auto}
  .bm-wahl-f{display:flex;align-items:baseline;justify-content:space-between;gap:12px;width:100%;text-align:left;
    font:inherit;color:var(--ink);background:none;border:0;border-radius:3px;padding:6px 8px;cursor:pointer}
  .bm-wahl-f:hover,.bm-wahl-f:focus-visible{background:var(--accent-soft);color:var(--accent-dark)}
  .bm-wahl-f:disabled{opacity:.55;cursor:default}
  .bm-wahl-n{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
  .bm-wahl-s{flex:none;font-size:.72rem;color:var(--ink-faint)}
  .bm-wahl>.bm-p-b{align-self:flex-start}
  .bm-sonder{margin:0 16px 14px}
  .bm-sonder summary{cursor:pointer;font-size:.8rem;color:var(--ink-soft)}
  .bm-sonder .bm-liste{padding:0}
  .bm-alle{margin:0 16px 14px}
  .dok-frei.is-bank{color:var(--bronze-600)}
  @media (max-width:620px){
    .bm-panel>summary{grid-template-columns:auto 1fr 10px;row-gap:8px}
    .bm-bar{grid-column:1 / 4;grid-row:2}
    .bm-p{grid-template-columns:20px minmax(0,1fr);row-gap:6px}
    .bm-p-r{grid-column:2;justify-content:flex-start}
    .bm-wahl{margin-left:0}
    .bm-wahl-f{flex-direction:column;gap:1px}
  }

  /* ---------- Unterlagen im Fall ---------- */
  /* Sicht des Finanzierers: Liste links, Vorschau rechts — dieselbe Mechanik wie im Objekt. */
  .fin-dok-hint{margin:0;padding:10px 12px;border-top:1px solid var(--line);
    font-size:.76rem;line-height:1.45;color:var(--ink-faint)}
  /* Sicht des Bauträgers: erst was drüben liegt, dann was fehlt. */
  .fin-unterbau{display:flex;flex-direction:column;gap:14px}
  .fin-geteilt{padding:13px 16px;border-radius:6px;background:var(--accent-soft)}
  .fin-geteilt-k{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
  .fin-geteilt-k b{font-size:.92rem;color:var(--accent-dark)}
  .fin-geteilt-k a{font-size:.8rem;font-weight:600;color:var(--accent-dark);text-decoration:none}
  .fin-geteilt-k a:hover{text-decoration:underline}
  .fin-geteilt-p{margin:8px 0 0;font-size:.82rem;color:var(--ink-soft)}
  .fin-geteilt-l{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
  .fin-geteilt-d{display:inline-flex;align-items:center;gap:7px;max-width:100%;font-size:.8rem;
    color:var(--ink);text-decoration:none;background:var(--surface);border:1px solid var(--line);
    border-radius:var(--r-pill);padding:.32em .85em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .fin-geteilt-d:hover{border-color:var(--accent);color:var(--accent-dark)}
  .fin-geteilt-d svg{flex:none;opacity:.55}


  /* ---------- Kalkulation im Fall (Finanzierer) ----------
     Die Rechnung des Bauträgers als Lesefassung: oben die vier Zahlen, darunter woraus sich die
     Kosten zusammensetzen, was die Wohnung im Monat trägt und mit welchen Annahmen gerechnet ist. */
  .kt{background:var(--surface);border:1px solid var(--line);border-radius:6px;overflow:hidden}
  .kt-kopf{display:flex;align-items:flex-start;justify-content:space-between;gap:14px 18px;flex-wrap:wrap;
    padding:18px 22px;border-bottom:1px solid var(--line)}
  .kt-titel{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
  .kt-titel h3{margin:0;font-family:var(--font-head);font-size:1.2rem;font-weight:700;color:var(--ink)}
  .kt-chip{font-size:.62rem;font-weight:800;color:var(--bronze-600);
    background:color-mix(in srgb,var(--gold) 20%,var(--surface));border-radius:var(--r-pill);padding:.32em .8em}
  .kt-sub{margin:4px 0 0;font-size:.86rem;color:var(--ink-soft)}
  .kt-knoepfe{display:flex;gap:8px;flex-wrap:wrap}
  .kt-knoepfe .btn{text-decoration:none}
  .kt-alt{margin:0;padding:10px 22px;font-size:.84rem;color:var(--ink-soft);background:var(--hint-bg);border-bottom:1px solid var(--line)}
  .kt-leer{margin:0;padding:18px 22px;font-size:.9rem;color:var(--ink-soft)}

  .kt-kzs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--line)}
  .kt-kz{display:flex;flex-direction:column;gap:7px;min-width:0;padding:16px 20px}
  .kt-kz + .kt-kz{border-left:1px solid var(--line)}
  .kt-kz-t{font-size:.64rem;font-weight:800;color:var(--ink-soft)}
  .kt-kz-w{display:flex;align-items:baseline;gap:5px}
  .kt-kz-w b{font-family:var(--font-head);font-size:1.55rem;font-weight:700;line-height:1.05;color:var(--ink);font-variant-numeric:tabular-nums}
  .kt-kz-w i{font-style:normal;font-size:.95rem;color:var(--ink-soft)}
  .kt-kz.is-rate .kt-kz-w b{color:var(--bronze-600)}
  .kt-kz-s{font-size:.8rem;line-height:1.4;color:var(--ink-soft)}

  .kt-teil{padding:18px 22px 8px;border-bottom:1px solid var(--line)}
  .kt-teil-k{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}
  .kt-teil-k span{font-size:.68rem;font-weight:800;color:var(--ink-soft)}
  .kt-teil-k b{font-family:var(--font-head);font-size:1.1rem;color:var(--ink);font-variant-numeric:tabular-nums}
  .kt-teil-k em{font-style:normal;font-size:.84rem;color:var(--ink-soft)}
  .kt-balken{display:flex;gap:3px;height:12px}
  .kt-balken.is-dick{height:16px}
  .kt-balken i{display:block;min-width:3px;border-radius:3px}
  .kt-s-kp{background:var(--accent-dark)}
  .kt-s-grest{background:var(--accent)}
  .kt-s-notar{background:var(--gold)}
  .kt-s-makler{background:var(--bronze-600)}
  .kt-s-extra{background:color-mix(in srgb,var(--gold) 42%,var(--surface))}
  .kt-s-eigen{background:color-mix(in srgb,var(--gold) 70%,var(--surface))}
  .kt-legende{display:flex;flex-wrap:wrap;gap:6px 18px;margin:10px 0 2px;font-size:.84rem;color:var(--ink-soft)}
  .kt-legende span{display:inline-flex;align-items:center;gap:7px}
  .kt-legende i{display:inline-block;width:10px;height:10px;border-radius:2px}
  .kt-legende b{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
  .kt-legende em{font-style:normal;font-size:.78rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}
  .kt-zeilen{display:flex;flex-direction:column;margin-top:10px}
  .kt-z{display:grid;grid-template-columns:minmax(0,1fr) 72px 120px;gap:12px;align-items:baseline;padding:10px 0;
    border-top:1px solid var(--line);font-size:.9rem}
  .kt-z span{color:var(--ink)}
  .kt-z em{font-style:normal;text-align:right;font-size:.82rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}
  .kt-z b{text-align:right;white-space:nowrap;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
  .kt-z.is-summe span{font-weight:700}
  .kt-z.is-summe.is-eigen b{color:var(--bronze-600)}
  .kt-z.is-summe.is-plus b{color:var(--accent-dark)}
  .kt-trag{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:22px;align-items:center}
  .kt-trag-r{display:flex;flex-direction:column;align-items:flex-end;text-align:right}
  .kt-trag-r b{font-family:var(--font-head);font-size:1.75rem;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
  .kt-trag-r b.is-eigen{color:var(--bronze-600)}
  .kt-trag-r b.is-plus{color:var(--accent-dark)}
  .kt-trag-r span{font-size:.8rem;color:var(--ink-soft)}
  /* Annahmen: Zellen zeichnen ihre Linie rechts und unten selbst, der Kasten schneidet die äußeren ab —
     so bleibt das Raster sauber, egal wie viele Zellen es gibt. */
  .kt-fuss{display:flex;flex-wrap:wrap;overflow:hidden;background:var(--surface-2);border-bottom:1px solid var(--line)}
  .kt-fuss>div{flex:1 1 170px;display:flex;flex-direction:column;gap:5px;min-width:0;padding:14px 20px;
    box-shadow:1px 0 0 var(--line),0 1px 0 var(--line)}
  .kt-fuss span{font-size:.8rem;color:var(--ink-soft)}
  .kt-fuss b{font-family:var(--font-head);font-size:1.04rem;color:var(--ink);font-variant-numeric:tabular-nums}
  .kt-hinweis{display:flex;align-items:baseline;gap:10px;margin:0;padding:12px 22px;font-size:.82rem;color:var(--ink-soft)}
  .kt-hinweis i{font-style:normal;font-weight:800;color:var(--bronze-600)}
  @media (max-width:820px){
    .kt-kzs{grid-template-columns:repeat(2,minmax(0,1fr))}
    .kt-kz:nth-child(3){border-left:0}
    .kt-kz:nth-child(n+3){border-top:1px solid var(--line)}
    .kt-trag{grid-template-columns:1fr}
    .kt-trag-r{align-items:flex-start;text-align:left}
    .kt-z{grid-template-columns:minmax(0,1fr) auto auto}
  }

  /* Die beiden Reiter des Falls tragen mehr als anderswo: Sie sind die einzige Gliederung der
     Akte, also dürfen sie auch aussehen wie eine. Zeichen davor, etwas mehr Luft, der offene
     Reiter in der Hausfarbe. */
  .fin-tabs{gap:2px;margin-top:2px}
  .fin-tabs .ak-tab{padding:11px 20px;font-size:.9rem}
  .fin-tabs .ak-tab-ico{display:inline-flex;opacity:.55;transition:opacity var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
  .fin-tabs .ak-tab:hover .ak-tab-ico{opacity:.85}
  .fin-tabs .ak-tab.on .ak-tab-ico{opacity:1;color:var(--accent-dark)}
  .fin-tabs .ak-tab.on{font-weight:700}

  /* ---------- Verlauf ----------
     Ein Faden statt einer Tabelle. Das Schreibfeld steht oben, weil der Verlauf absteigend
     sortiert ist: Was man gerade schreibt, erscheint direkt darunter. Die Farbe des Zeichens
     folgt der Rolle — bronze der Bauträger, grün der Finanzierer. */
  .fin-chat{display:flex;flex-direction:column;gap:14px}
  .fin-av{flex:none;width:32px;height:32px;border-radius:3px;display:inline-flex;align-items:center;
    justify-content:center;font-size:.8rem;font-weight:800;color:#fff;background:var(--ink-faint)}
  .fin-av.is-bautraeger{background:var(--bronze-600)}
  .fin-av.is-finanzierer{background:var(--accent)}
  .fin-schreib{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:start}
  .fin-schreib-box{border:1.5px solid var(--line);border-radius:6px;padding:11px 13px;background:var(--surface);
    display:flex;flex-direction:column;gap:10px;transition:border-color var(--dur-fast) var(--ease-out)}
  .fin-schreib-box:focus-within{border-color:var(--accent)}
  /* Intern sieht anders aus, nicht nur anders beschriftet — wer schreibt, soll es sehen, ohne zu lesen. */
  .fin-schreib.is-intern .fin-schreib-box{border-color:color-mix(in srgb,var(--gold) 55%,var(--line));
    background:color-mix(in srgb,var(--gold) 7%,transparent)}
  .fin-text{width:100%;font:inherit;font-size:.92rem;line-height:1.55;border:0;background:none;
    color:var(--ink);resize:vertical;min-height:2.6em}
  .fin-text:focus{outline:none}
  .fin-schreib-fuss{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
  .fin-schreib-fuss .btn{margin-left:auto}
  .fin-schreib-hint{font-size:.76rem;color:var(--ink-faint)}
  .fin-seg{display:inline-flex;padding:2px;border-radius:var(--r-pill);background:var(--surface-2);
    border:1px solid var(--line)}
  .fin-seg button{font:inherit;font-size:.76rem;font-weight:600;color:var(--ink-soft);background:none;
    border:0;border-radius:var(--r-pill);padding:.34em .9em;cursor:pointer;white-space:nowrap}
  .fin-seg button:hover{color:var(--ink)}
  .fin-seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.09)}
  /* Fälle: Umschalter Offen | Geschlossen über der Liste */
  .fl-ansicht{margin:0 0 16px}
  .fl-ansicht button{padding:6px 14px}
  .fl-ansicht i{font-style:normal;font-weight:500;color:var(--ink-faint);margin-left:4px}
  .fl-zeile.is-zu .fl-name,.fl-zeile.is-zu .fl-l2{color:var(--ink-soft)}
  .fin-schreib.is-intern .fin-seg button.on{color:var(--bronze-600)}
  .fin-zu{padding:11px 14px;border-radius:6px;background:var(--surface-2);color:var(--ink-soft);font-size:.86rem}

  .fin-filter{display:flex;gap:6px;flex-wrap:wrap}
  .fin-filter button{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:.78rem;
    font-weight:600;color:var(--ink-soft);background:var(--surface-2);border:1px solid transparent;
    border-radius:var(--r-pill);padding:.34em .9em;cursor:pointer}
  .fin-filter button:hover{color:var(--ink)}
  .fin-filter button.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-dark)}
  .fin-filter button i{font-style:normal;font-size:.7rem;font-weight:700;color:var(--ink-faint);
    font-variant-numeric:tabular-nums}
  .fin-filter button.on i{color:var(--accent-dark);opacity:.75}

  .fin-verlauf{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
  .fin-e{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:start;
    padding:10px 12px;border-radius:6px}
  .fin-e:hover{background:var(--surface-2)}
  .fin-e.is-nurintern{background:color-mix(in srgb,var(--gold) 8%,transparent)}
  .fin-e-b{min-width:0}
  .fin-e-kopf{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:3px}
  .fin-e-kopf b{font-size:.84rem;font-weight:700;color:var(--ink)}
  .fin-e.is-eigen .fin-e-kopf b{color:var(--accent-dark)}
  .fin-e-t{margin-left:auto;font-size:.74rem;color:var(--ink-faint);white-space:nowrap}
  .fin-e-b p{margin:0;font-size:.92rem;line-height:1.55;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
  /* Systemzeilen sind Protokoll, kein Gespräch: kein Zeichen, kleiner, leiser. */
  .fin-e.is-system{grid-template-columns:minmax(0,1fr) auto;align-items:baseline;padding:7px 12px}
  .fin-e.is-system p{margin:0;font-size:.82rem;line-height:1.5;color:var(--ink-soft)}
  .fin-e.is-system .fin-e-t{margin-left:0}
  .fin-verlauf-leer{margin:12px 2px;font-size:.88rem;color:var(--ink-faint)}
  .fin-tag{font-size:.68rem;font-weight:700;padding:.16em .62em;border-radius:var(--r-pill);
    background:var(--surface-2);color:var(--ink-soft)}
  .fin-tag.is-status{background:var(--accent-soft);color:var(--accent-dark)}
  .fin-tag.is-status.is-bestaetigt{background:var(--green-soft);color:var(--green)}
  .fin-tag.is-status.is-abgelehnt{background:color-mix(in srgb,var(--red) 14%,transparent);color:var(--red)}
  .fin-tag.is-intern{background:color-mix(in srgb,var(--gold) 22%,transparent);color:var(--bronze-600)}

  /* ---------- Arbeitsliste des Finanzierers ----------
     Oben vier Zahlen, darunter die Fälle in drei Gruppen. Die Gruppe färbt nur, was etwas sagt:
     die Kopfzeile der Gruppe, das Zeichen des Kunden, die Wartezeit — nicht die ganze Zeile. */
  .fl-kzs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0 0 18px;background:var(--surface);
    border:1px solid var(--line);border-radius:6px;overflow:hidden;box-shadow:var(--shadow-sm)}
  .fl-kz{display:flex;flex-direction:column;gap:9px;min-width:0;padding:18px 22px}
  .fl-kz:nth-child(odd){border-right:1px solid var(--line)}
  .fl-kz:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .fl-kz-t{display:flex;align-items:center;gap:9px;font-size:.68rem;font-weight:800;
    color:var(--ink-soft)}
  .fl-kz-t i{flex:none;box-sizing:border-box;width:15px;height:9px;border-radius:2px;background:var(--line)}
  .fl-kz.is-offen .fl-kz-t i{background:var(--accent)}
  .fl-kz.is-stockt .fl-kz-t i{background:var(--red)}
  .fl-kz.is-warte .fl-kz-t i{background:var(--gold)}
  .fl-kz.is-notar .fl-kz-t i{background:none;border:1.5px solid var(--ink-faint)}
  .fl-kz-w{display:flex;align-items:baseline;gap:9px;min-width:0}
  .fl-kz-w b{font-family:var(--font-head);font-size:1.9rem;font-weight:700;line-height:1;color:var(--ink);
    font-variant-numeric:tabular-nums}
  .fl-kz.is-stockt:not(.is-null) .fl-kz-w b{color:var(--red)}
  .fl-kz-w span{font-size:.9rem;color:var(--ink-soft)}

  .fl-werkzeug{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;flex-wrap:wrap;margin:0 0 14px}
  .fl-chips{display:flex;gap:8px;flex-wrap:wrap}
  .fl-chips button{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:.86rem;font-weight:600;
    color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-pill);
    padding:.48em 1.05em;cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out)}
  .fl-chips button:hover{border-color:var(--accent)}
  .fl-chips button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .fl-chips button i{font-style:normal;font-size:.78rem;font-weight:700;color:var(--ink-faint);font-variant-numeric:tabular-nums}
  /* Die Wahl ist dunkel auf hell — im Dunkelmodus kehrt sich das über dieselben Token um. */
  .fl-chips button.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
  .fl-chips button.on i{color:var(--gold)}
  .fl-sort{display:flex;align-items:center;gap:10px;font-size:.86rem;color:var(--ink-soft)}

  .fl-tab{background:var(--surface);border:1px solid var(--line);border-radius:6px;overflow:hidden;box-shadow:var(--shadow-sm)}
  .fl-kopf,.fl-zeile{display:grid;grid-template-columns:44px minmax(0,1.5fr) minmax(0,1.05fr) minmax(0,1fr) minmax(0,.9fr) 140px;
    column-gap:16px;align-items:center;padding-left:22px;padding-right:22px}
  .fl-kopf{padding-top:12px;padding-bottom:12px;background:var(--surface-2);border-bottom:1px solid var(--line);
    font-size:.66rem;font-weight:800;color:var(--ink-soft)}
  .fl-kopf>span:first-child{grid-column:1 / 3}
  .fl-gruppe-t{display:flex;align-items:center;gap:10px;padding:10px 22px;font-size:.7rem;font-weight:800;
    }
  .fl-gruppe-t i{font-style:normal;font-variant-numeric:tabular-nums;opacity:.85}
  .fl-gruppe-t::after{content:"";flex:1;height:1px;background:currentColor;opacity:.22}
  .fl-gruppe + .fl-gruppe .fl-gruppe-t{border-top:1px solid var(--line)}
  .fl-gruppe.is-stockt .fl-gruppe-t{color:var(--red);background:color-mix(in srgb,var(--red) 8%,var(--surface))}
  .fl-gruppe.is-laeuft .fl-gruppe-t{color:var(--accent-dark);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}
  .fl-gruppe.is-abschluss .fl-gruppe-t{color:var(--bronze-600);background:color-mix(in srgb,var(--gold) 12%,var(--surface))}

  .fl-zeile{padding-top:16px;padding-bottom:16px;border-top:1px solid var(--line);cursor:pointer;
    transition:background-color var(--dur-fast) var(--ease-out)}
  .fl-gruppe-t + .fl-zeile{border-top:0}
  .fl-zeile:hover{background:var(--surface-2)}
  .fl-zeile:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
  .fl-av{width:44px;height:44px;border-radius:3px;display:flex;align-items:center;justify-content:center;
    font-size:.92rem;font-weight:700;color:#fff;background:var(--bronze-600)}
  .fl-zeile.is-stockt .fl-av{background:var(--red)}
  .fl-wer{display:flex;flex-direction:column;gap:2px;min-width:0}
  .fl-name{display:inline-flex;align-items:center;gap:8px;min-width:0;font-family:var(--font-head);font-size:1.02rem;
    font-weight:600;color:var(--ink)}
  .fl-neu{flex:none;width:8px;height:8px;border-radius:3px;background:var(--red)}
  /* Partner: Logo oder Kürzel und Name — die Herkunft des Falls auf einen Blick. */
  .fl-partner{min-width:0}
  .fl-pm{display:inline-flex;align-items:center;gap:10px;min-width:0;max-width:100%}
  .fl-pm-logo,.fl-pm-kz{flex:none;width:34px;height:34px;border-radius:4px;display:grid;place-items:center;overflow:hidden}
  .fl-pm-logo{background:#fff;border:1px solid var(--line)}
  .fl-pm-logo img{max-width:28px;max-height:28px;object-fit:contain}
  .fl-pm-kz{background:var(--surface-2);border:1px solid var(--line);font-size:.72rem;font-weight:700;color:var(--ink-soft)}
  .fl-pm-t{display:flex;flex-direction:column;min-width:0}
  .fl-pm-t b{font-size:.88rem;font-weight:600;color:var(--ink);line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .fl-pm-t small{font-size:.74rem;color:var(--ink-faint)}
  .fl-pm.is-klein{gap:7px}
  .fl-pm.is-klein .fl-pm-logo,.fl-pm.is-klein .fl-pm-kz{width:22px;height:22px;border-radius:3px;font-size:.6rem}
  .fl-pm.is-klein .fl-pm-logo img{max-width:18px;max-height:18px}
  .fl-pm.is-klein .fl-pm-t b{font-size:.8rem}
  .fl-links{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap}
  .fl-pwahl{display:inline-flex;align-items:center;gap:8px;font-size:.86rem;color:var(--ink-soft)}
  .fl-pwahl select{font:inherit;font-size:.86rem;font-weight:600;color:var(--ink);background:var(--surface);border:1px solid var(--line);
    border-radius:var(--r-pill);padding:.45em 2em .45em 1em;max-width:260px;cursor:pointer}
  .fl-pwahl select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .fl-l2,.fl-l3{font-size:.84rem;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .fl-l2 b,.fl-l3 b{margin-right:7px;font-weight:600;color:var(--ink)}
  .fl-stand{display:flex;flex-direction:column;gap:7px;min-width:0}
  .fl-striche{display:inline-flex;gap:4px}
  .fl-striche i{box-sizing:border-box;width:22px;height:8px;border-radius:2px;border:1.5px solid var(--line)}
  .fl-striche i.voll{background:var(--accent);border-color:var(--accent)}
  .fl-striche i.jetzt{background:var(--gold);border-color:var(--gold)}
  .fl-striche i.stockt,.fl-striche i.nein{background:var(--red);border-color:var(--red)}
  .fl-stand-l{font-size:.9rem;font-weight:600;color:var(--ink)}
  .fl-warte{display:flex;flex-direction:column;gap:3px;min-width:0}
  .fl-still{font-size:.9rem;color:var(--ink-soft)}
  .fl-still b{font-family:var(--font-head);font-size:1.06rem;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
  .fl-zeile.is-stockt .fl-still,.fl-zeile.is-stockt .fl-still b{color:var(--red)}
  .fl-zeile.is-laeuft .fl-still,.fl-zeile.is-laeuft .fl-still b{color:var(--bronze-600)}
  .fl-termin{font-size:.82rem;color:var(--ink-soft)}
  .fl-akt{display:flex;justify-content:flex-end}
  .fl-akt .btn{width:100%;justify-content:center;text-decoration:none}
  @media (max-width:820px){
    /* Schmal wird aus der Tabelle ein Stapel: Zeichen links, alles andere untereinander daneben. */
    .fl-kopf{display:none}
    .fl-zeile{grid-template-columns:44px minmax(0,1fr);row-gap:10px;align-items:start}
    .fl-partner,.fl-stand,.fl-warte,.fl-akt{grid-column:2}
    .fl-akt{justify-content:flex-start}
    .fl-akt .btn{width:auto;min-width:130px}
  }
  @media (max-width:520px){
    .fl-kzs{grid-template-columns:1fr}
    .fl-kz:nth-child(odd){border-right:0}
    .fl-kz:not(:last-child){border-bottom:1px solid var(--line)}
  }

  /* ---------- Fallakte des Finanzierers: wer und was ----------
     Zwei Hälften in einem Kasten, so dicht wie lesbar: Werte im Raster nebeneinander, die
     Beschriftung klein darüber — statt einer vollen Zeile je Angabe. */
  /* Jede Hälfte trägt ihre eigene Fläche: der Mensch in leichtem Hausgrün, die Wohnung in leichtem
     Orange aus dem Bronze-Ton. So hebt sich die Akte von den grauen Terminkacheln, den Hinweisen und
     der weißen Karte ab — und man sieht ohne Lesen, welche Hälfte wovon handelt. Über color-mix aus
     den Token, deshalb hell wie dunkel stimmig; die Linien innen tragen den Ton ihrer Hälfte. */
  .fa{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));background:var(--surface);
    border:1px solid var(--line);border-radius:6px;overflow:hidden}
  .fa-seite{display:flex;flex-direction:column;gap:10px;min-width:0;padding:14px 18px;background:var(--fa-flaeche)}
  .fa-seite.is-kunde{--fa-flaeche:color-mix(in srgb,var(--accent) 7%,var(--surface));
    --fa-linie:color-mix(in srgb,var(--accent) 22%,var(--line))}
  .fa-seite.is-objekt{--fa-flaeche:color-mix(in srgb,var(--bronze-600) 12%,var(--surface));
    --fa-linie:color-mix(in srgb,var(--bronze-600) 32%,var(--line))}
  .fa-seite + .fa-seite{border-left:1px solid var(--fa-linie)}
  .fa-kopf{display:flex;align-items:flex-start;gap:12px;min-width:0}
  .fa-av{flex:none;width:40px;height:40px;border-radius:3px;display:flex;align-items:center;justify-content:center;
    font-size:.9rem;font-weight:700;color:#fff;background:var(--accent)}
  .fa-haus{flex:none;width:40px;height:40px;border-radius:6px;display:flex;align-items:center;justify-content:center;
    color:var(--bronze-600);background:color-mix(in srgb,var(--bronze-600) 22%,var(--surface))}
  .fa-kt{display:flex;flex-direction:column;gap:1px;min-width:0}
  .fa-name{font-family:var(--font-head);font-size:1.06rem;font-weight:700;line-height:1.25;color:var(--ink)}
  .fa-label{margin-right:7px}
  .fa-sub{font-size:.82rem;line-height:1.4;color:var(--ink-soft)}
  /* Telefon und E-Mail als eine Zeile Links unter dem Namen — antippen ruft an bzw. schreibt. */
  .fa-kontakt{display:flex;flex-wrap:wrap;gap:3px 16px;margin-top:4px;min-width:0}
  .fa-kontakt a{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:100%;font-size:.84rem;font-weight:600;
    color:var(--accent-dark);text-decoration:none}
  .fa-kontakt a:hover span{text-decoration:underline}
  .fa-kontakt a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
  .fa-kontakt a span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .fa-kontakt svg{flex:none;width:14px;height:14px}
  /* Exposé und Grundriss als Textlinks in der Fußzeile — ein Knopf im Kopf drängte den Titel in zwei Zeilen. */
  .fa-dok{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:.8rem;font-weight:600;color:var(--accent-dark);
    background:none;border:0;padding:0;cursor:pointer}
  .fa-dok svg{flex:none;width:13px;height:13px}
  .fa-dok:hover{text-decoration:underline}
  .fa-dok:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}
  .fa-werte{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px 18px;margin:0;
    padding-top:10px;border-top:1px solid var(--fa-linie)}
  .fa-werte + .fa-werte{padding-top:0;border-top:0}
  .fa-werte>div{min-width:0}
  .fa-werte dt{margin-bottom:2px;font-size:.62rem;font-weight:800;color:var(--ink-faint)}
  .fa-werte dd{margin:0;font-size:.88rem;font-weight:600;line-height:1.35;color:var(--ink);overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
  .fa-werte.is-kunde{grid-template-columns:minmax(0,1.6fr) repeat(2,minmax(0,1fr))}
  .fa-werte.is-gross{grid-template-columns:repeat(auto-fit,minmax(88px,1fr))}
  .fa-werte.is-gross dd{font-family:var(--font-head);font-size:1.06rem;font-weight:700}
  .fa-leer{margin:0;padding-top:10px;border-top:1px solid var(--fa-linie);font-size:.84rem;color:var(--ink-soft)}
  .fa-fuss{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 16px;margin:auto 0 0;padding-top:10px;border-top:1px solid var(--fa-linie);
    font-size:.78rem;line-height:1.45;color:var(--ink-soft)}
  .fa-fuss>.fa-punkt{margin-right:-8px}
  .fa-fuss>span{flex:1 1 0;min-width:0}
  .fa-punkt{flex:none;display:inline-block;width:8px;height:8px;border-radius:2px;background:var(--gold)}
  .fa-frei{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:.8rem;color:var(--accent-dark);
    background:none;border:0;padding:0;cursor:pointer}
  .fa-frei .fa-punkt{background:var(--accent)}
  .fa-frei:hover{text-decoration:underline}
  .fa-frei:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}
  .fa-frei.is-leer{color:var(--ink-faint)}
  .fa-frei.is-leer .fa-punkt{background:var(--fa-linie)}
  /* Mehrere Einheiten in der Akte: Kopf mit Summe, darunter je Einheit eine Zeile — Kürzel, was sie
     ist, Kaufpreis, und zwei Wege (Unterlagen mit Stand, Kalkulation). Tabellarische Ziffern, damit
     die Preise untereinanderstehen. */
  .fa-summe{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;flex:none}
  .fa-summe span{font-size:.62rem;font-weight:800;color:var(--ink-faint)}
  .fa-summe b{font-family:var(--font-head);font-size:1.06rem;color:var(--ink);font-variant-numeric:tabular-nums}
  .fa-einheiten{list-style:none;margin:0;padding:0;border-top:1px solid var(--fa-linie)}
  .fa-ein{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"l t p" ". a a";
    align-items:baseline;gap:2px 12px;padding:8px 0;border-bottom:1px solid var(--fa-linie)}
  .fa-ein .fa-label{grid-area:l;margin:0;font-family:var(--font-head);font-size:.95rem;color:var(--ink);min-width:3ch}
  .fa-ein-t{grid-area:t;min-width:0;font-size:.82rem;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .fa-ein-p{grid-area:p;font-size:.9rem;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
  .fa-ein-a{grid-area:a;display:flex;flex-wrap:wrap;gap:4px 14px}
  .fa-ein-b{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:.78rem;font-weight:600;color:var(--accent-dark);
    background:none;border:0;padding:0;cursor:pointer;font-variant-numeric:tabular-nums}
  .fa-ein-b:hover{text-decoration:underline}
  .fa-ein-b:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}
  .fa-ein-o{font-size:.78rem;color:var(--ink-faint)}
  @media (max-width:820px){
    .fa{grid-template-columns:1fr}
    .fa-seite + .fa-seite{border-left:0;border-top:1px solid var(--fa-linie)}
  }
  @media (max-width:520px){
    /* Am Telefon bekommt die Anschrift eine eigene Zeile, Einkommen und Eigenkapital stehen darunter. */
    .fa-werte.is-kunde{grid-template-columns:repeat(2,minmax(0,1fr))}
    .fa-werte.is-kunde>div:first-child{grid-column:1 / -1}
  }

  /* Schließen ist selten und endgültig — deshalb leise, am Ende, und nie neben „Eintragen". */
  .fin-fuss{display:flex;justify-content:flex-end;padding-top:6px}
  .fin-schliessen{font:inherit;font-size:.8rem;color:var(--ink-faint);background:none;border:0;padding:4px 0;cursor:pointer}
  .fin-schliessen:hover{color:var(--red);text-decoration:underline}
  .fin-leer{padding:22px 0;max-width:62ch}
  .fin-leer p{margin:0 0 6px}
  /* Reiter „Für den Kunden": was der Finanzierer ins Kundenportal legt (23.09.2026). */
  .fin-kd-lead{margin:2px 0 12px;max-width:74ch;color:var(--ink-soft);font-size:.88rem;line-height:1.55}
  .fin-kd-hinweis{margin:0 0 14px;padding:10px 12px;max-width:74ch;border-radius:6px;
    background:var(--surface-2);color:var(--ink-soft);font-size:.84rem;line-height:1.5}
  .fin-kd-dok{height:min(64vh,640px)}
  .fin-kd-nix{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;height:100%;
    padding:24px;border:1px dashed var(--line);border-radius:6px;text-align:center;color:var(--ink-faint);font-size:.86rem}
  .fin-kd-nix p{margin:0;max-width:40ch;line-height:1.5}
  @media (max-width:820px){ .fin-kd-dok{height:auto} }
  .fin-seite{display:flex;flex-direction:column;gap:14px}
  .fin-alt-kopf{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
  .fin-alt-kopf span{font-size:.82rem;color:var(--ink-soft)}

  /* Übergabe: eine Auswahl, zwei Felder, ein Knopf. */
  .fin-ueb{display:flex;flex-direction:column;gap:12px;max-width:640px}
  .fin-ueb-t{font-family:var(--font-head);font-size:1.05rem;font-weight:700;color:var(--ink);margin:0}
  .fin-ueb>.muted{margin:-6px 0 0;font-size:.88rem}
  /* Geteilter Vorgang eines Finanzierers: nur der Stand seines Falls (die Akte führt er). */
  .fin-geteilt{display:flex;flex-direction:column;gap:4px;max-width:640px}
  .fin-geteilt-auge{font-size:.74rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}
  .fin-geteilt-stand{font-family:var(--font-head);font-size:1.15rem;color:var(--ink)}
  .fin-geteilt-sub{font-size:.85rem;color:var(--ink-soft)}
  .fin-geteilt .muted{margin:8px 0 0;font-size:.88rem}
  .fin-gz{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
  .fin-gz-s{display:flex;flex-direction:column;gap:3px;padding:10px 10px 8px;background:var(--surface);border:1px solid var(--line);min-width:0}
  .fin-gz-s i{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line);color:#fff}
  .fin-gz-s i svg{width:12px;height:12px}
  .fin-gz-s b{font-size:.8rem;font-weight:600;color:var(--ink);line-height:1.25}
  .fin-gz-s span{font-size:.74rem;color:var(--ink-soft)}
  .fin-gz-s.is-da i{background:var(--accent);border-color:var(--accent)}
  .fin-gz-s.is-jetzt i{background:var(--accent);border-color:var(--accent)}
  .fin-gz-s.is-jetzt{border-color:var(--accent)}
  .fin-gz-s.is-nein i{background:var(--red,#B23A2A);border-color:var(--red,#B23A2A)}
  .fin-gz-s.is-offen b{color:var(--ink-soft)}
  .fin-gz-termine{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
  .fin-gz-t{display:flex;flex-direction:column;gap:2px;padding:8px 12px;background:var(--surface);border:1px solid var(--line);min-width:150px}
  .fin-gz-t em{font-style:normal;font-size:.74rem;color:var(--ink-soft)}
  .fin-gz-t b{font-size:.88rem;color:var(--ink)}
  @media (max-width:700px){.fin-gz{grid-template-columns:1fr 1fr}}
  .fin-feld{display:flex;flex-direction:column;gap:5px;font-size:.82rem;color:var(--ink-soft)}
  .fin-feld select,.fin-feld textarea{width:100%;font:inherit;font-size:.9rem;padding:.55em .7em;
    border:1.5px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink)}
  .fin-feld select:focus,.fin-feld textarea:focus{outline:none;border-color:var(--accent)}
  .fin-vb{margin:0;font-size:.84rem;line-height:1.5;padding:10px 13px;border-radius:6px}
  .fin-vb.is-ok{background:var(--green-soft);color:var(--green)}
  .fin-vb.is-offen{background:var(--hint-bg);color:var(--ink-soft)}
  .fin-ueb .btn{align-self:flex-start}
  /* Abgleich mit dem Finanzierer: ein Satz auf getönter Fläche, darunter dieselbe Mappe wie im Fall.
     Gesperrt heißt: rot getönt und der Grund steht neben dem Knopf — nie nur ein grauer Knopf. */
  .fin-ueb{max-width:720px}
  .fin-abgleich{display:flex;flex-direction:column;gap:10px}
  .fin-abgleich:empty{display:none}
  .fin-abgl{font-size:.84rem;line-height:1.5;padding:10px 13px;border-radius:6px;color:var(--ink-soft)}
  .fin-abgl b{color:var(--ink)}
  .fin-abgl.is-ok{background:var(--green-soft)}
  .fin-abgl.is-ok b{color:var(--green)}
  .fin-abgl.is-hinweis{background:color-mix(in srgb,var(--gold) 16%,transparent)}
  .fin-abgl.is-stop{background:color-mix(in srgb,var(--red) 9%,transparent)}
  .fin-abgl.is-stop b{color:var(--red)}
  .fin-ueb-los{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
  .fin-ueb-los .btn:disabled{opacity:.45;cursor:not-allowed}
  .fin-ueb-grund{font-size:.8rem;font-weight:600;color:var(--red)}
  .fin-ueb-grund:empty{display:none}

  /* Im Fall, für den Bauträger: was dem Finanzierer noch fehlt — eine Zeile mit dem Weg dorthin. */
  .fin-mhw{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:6px;
    background:color-mix(in srgb,var(--gold) 14%,transparent);font-size:.85rem;line-height:1.45;color:var(--ink)}
  .fin-mhw.is-zwingend{background:color-mix(in srgb,var(--red) 9%,transparent)}
  .fin-mhw-i{flex:none;display:inline-flex;color:var(--bronze-600)}
  .fin-mhw.is-zwingend .fin-mhw-i{color:var(--red)}
  .fin-mhw-t{flex:1;min-width:0}
  .fin-mhw .btn{flex:none}
  @media (max-width:620px){ .fin-mhw{flex-wrap:wrap} .fin-mhw .btn{margin-left:auto} }

  /* ---------- Finanzierung ohne Partner: was hier möglich wäre ----------
     Links der Nutzen und der eine Knopf, rechts als Bild die Stand-Karte, die man danach bekommt —
     leicht gedreht auf einer getönten Fläche, damit sie als Vorschau und nicht als Bedienung wirkt. */
  .fw{position:relative;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:28px;align-items:center;
    padding:30px 32px;border:1px solid var(--line);border-radius:6px;overflow:hidden;
    background:radial-gradient(120% 90% at 100% 0%,color-mix(in srgb,var(--accent) 14%,transparent),transparent 60%),
               radial-gradient(80% 70% at 0% 100%,color-mix(in srgb,var(--gold) 12%,transparent),transparent 55%),var(--surface)}
  .fw-auge{display:inline-block;margin-bottom:8px;font-size:.66rem;font-weight:800;color:var(--accent-dark)}
  .fw-t{margin:0 0 10px;font-family:var(--font-head);font-size:1.45rem;line-height:1.2;color:var(--ink);text-wrap:balance}
  .fw-lead{margin:0 0 16px;font-size:.92rem;line-height:1.55;color:var(--ink-soft);max-width:52ch}
  .fw-liste{list-style:none;margin:0 0 20px;padding:0;display:flex;flex-direction:column;gap:11px}
  .fw-liste li{display:flex;align-items:flex-start;gap:12px;font-size:.86rem;line-height:1.45;color:var(--ink-soft)}
  .fw-liste li b{display:block;color:var(--ink);font-size:.9rem}
  .fw-i{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:6px;
    background:var(--surface);border:1px solid var(--line);color:var(--accent-dark);box-shadow:0 1px 2px rgba(20,38,31,.06)}
  .fw-los{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap}
  .fw-los>span{font-size:.8rem;color:var(--ink-soft)}
  .fw-sub{font-size:.84rem;color:var(--ink-soft);max-width:48ch}
  .fw-bild{display:flex;justify-content:center;padding:6px 4px}
  .fw-karte{width:100%;max-width:380px;border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden;
    box-shadow:0 18px 40px -18px rgba(20,38,31,.35),0 2px 6px rgba(20,38,31,.06);transform:rotate(1.5deg)}
  .fw-k-kopf{display:flex;flex-direction:column;gap:2px;padding:14px 16px;background:var(--surface-2)}
  .fw-k-auge{font-size:.58rem;font-weight:800;color:var(--ink-faint)}
  .fw-k-h{font-family:var(--font-head);font-size:1.02rem;color:var(--ink)}
  .fw-k-sub{font-size:.74rem;color:var(--ink-soft)}
  .fw-rail{position:relative;display:grid;grid-template-columns:repeat(5,1fr);padding:14px 8px 10px}
  .fw-rail::before{content:"";position:absolute;left:10%;right:10%;top:23px;height:2px;background:var(--line)}
  .fw-rail::after{content:"";position:absolute;left:10%;width:60%;top:23px;height:2px;background:var(--green)}
  .fw-s{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:5px}
  .fw-s i{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:3px;
    background:var(--surface);border:2px solid var(--line);color:#fff}
  .fw-s.is-da i{background:var(--green);border-color:var(--green)}
  .fw-s.is-jetzt i{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent)}
  .fw-s em{font-style:normal;font-size:.62rem;color:var(--ink-soft);text-align:center}
  .fw-s.is-jetzt em{color:var(--ink);font-weight:700}
  .fw-k-termine{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px 12px 12px}
  .fw-k-termine span{display:flex;flex-direction:column;gap:1px;padding:7px 9px;border-radius:4px;background:var(--surface-2)}
  .fw-k-termine em{font-style:normal;font-size:.56rem;font-weight:800;color:var(--ink-faint)}
  .fw-k-termine b{font-size:.8rem;color:var(--ink);font-variant-numeric:tabular-nums}
  .fw-k-eintrag{display:flex;align-items:flex-start;gap:9px;padding:11px 14px 14px;border-top:1px solid var(--line);font-size:.74rem;line-height:1.4;color:var(--ink-soft)}
  .fw-k-eintrag b{display:block;font-size:.74rem;color:var(--accent-dark)}
  .fw-av{flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:3px;
    background:var(--accent);color:#fff;font-size:.66rem;font-weight:800}
  @media (max-width:860px){
    .fw{grid-template-columns:1fr;padding:24px 20px}
    .fw-karte{transform:none}
  }

  /* Fälle ohne Fall (Finanzierer): wie ein Fall entsteht, und der Knopf dorthin. */
  .fl-leer{display:flex;align-items:flex-start;gap:16px}
  .fl-leer-i{flex:none;display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:6px;
    background:var(--accent-soft);color:var(--accent-dark)}
  .fl-leer-t{max-width:62ch}
  .fl-leer-t p{margin:0 0 8px}
  .fl-leer-t .btn{margin-top:6px}

  /* Hinweis „Noch kein Vertriebspartner" im Vorgang. */
  .kp-lead{margin:0 0 16px;font-size:.92rem;line-height:1.55;color:var(--ink-soft)}
  .kp-lead b{color:var(--ink)}
  .kp-liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
  .kp-p{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:6px;background:var(--surface-2)}
  .kp-p>span:last-child{display:flex;flex-direction:column;gap:2px;font-size:.84rem;line-height:1.45;color:var(--ink-soft)}
  .kp-p b{color:var(--ink);font-size:.9rem}
  .kp-i{flex:none;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:3px;
    background:var(--accent-soft);color:var(--accent-dark)}

  /* ---------- Einheiten ----------
     Ein Muster für alle Stellen: der Punkt (rot = Zwingendes fehlt, gelb = nur Gewünschtes, grün =
     vollständig), das Kürzel der Einheit, darunter ihr Stand. */
  .fe-punkt{display:inline-block;flex:none;width:8px;height:8px;border-radius:3px;background:var(--line)}
  .fe-punkt.is-rot{background:var(--red)}
  .fe-punkt.is-gelb{background:var(--gold)}
  .fe-punkt.is-gruen{background:var(--green)}

  /* Die Leiste über Unterlagen und Kalkulation: eine Karte je Einheit, die gewählte hervorgehoben. */
  .fe-leiste{display:flex;gap:8px;margin:0 0 14px;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}
  .fe-chip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;flex:none;min-width:118px;
    font:inherit;text-align:left;cursor:pointer;padding:9px 13px;border-radius:6px;
    background:var(--surface);border:1.5px solid var(--line);color:var(--ink);
    transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}
  .fe-chip:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
  .fe-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .fe-chip.on{border-color:var(--accent);background:var(--accent-soft)}
  .fe-chip-k{display:flex;align-items:center;gap:7px;font-family:var(--font-head);font-size:.94rem;font-weight:700}
  .fe-chip-u{font-size:.74rem;color:var(--ink-soft);white-space:nowrap;font-variant-numeric:tabular-nums}
  .fe-chip.on .fe-chip-u{color:var(--accent-dark)}
  .fe-alle{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;
    margin:0 0 12px;font-size:.82rem;color:var(--ink-soft)}

  /* Einheiten im Fall (Bauträger): eine Zeile je Einheit — wer, Mappe, herausnehmen. */
  .fe-karte{border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}
  .fe-kopf{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;
    padding:12px 18px;background:var(--surface-2)}
  .fe-kopf-t{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
  .fe-kopf-t b{font-family:var(--font-head);font-size:.98rem;color:var(--ink)}
  .fe-kopf-t span{font-size:.82rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}
  .fe-liste{list-style:none;margin:0;padding:0 18px}
  .fe-z{display:grid;grid-template-columns:minmax(0,1fr) auto 30px;align-items:center;
    gap:8px 16px;padding:10px 0;border-top:1px solid var(--line)}
  .fe-z:first-child{border-top:0}
  .fe-z-wer{display:flex;flex-direction:column;min-width:0}
  .fe-z-wer b{font-family:var(--font-head);font-size:.96rem;color:var(--ink)}
  .fe-z-wer span{font-size:.78rem;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .fe-z-mappe{display:inline-grid;grid-template-columns:auto auto;align-items:center;column-gap:7px;justify-self:end;
    font:inherit;text-align:left;cursor:pointer;padding:6px 11px;border-radius:6px;border:1px solid var(--line);
    background:var(--surface);color:var(--ink)}
  .fe-z-mappe span{font-size:.82rem;font-weight:600;font-variant-numeric:tabular-nums}
  .fe-z-mappe em{grid-column:2;font-style:normal;font-size:.72rem;color:var(--ink-soft)}
  .fe-z-mappe.is-rot{border-color:color-mix(in srgb,var(--red) 35%,var(--line));background:color-mix(in srgb,var(--red) 6%,var(--surface))}
  .fe-z-mappe.is-rot em{color:var(--red);font-weight:600}
  .fe-z-mappe:hover{border-color:var(--accent)}
  .fe-z-mappe:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .fe-z-weg{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:3px;
    border:0;background:none;color:var(--ink-faint);cursor:pointer}
  .fe-z-weg:hover{background:color-mix(in srgb,var(--red) 10%,transparent);color:var(--red)}
  .fe-z-weg:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
  .fe-neu{display:flex;flex-direction:column;gap:12px;padding:14px 18px 16px;border-top:1px solid var(--line);
    background:color-mix(in srgb,var(--accent) 4%,var(--surface))}
  .fe-neu-wahl{max-width:520px}
  .fe-neu-abbr{font:inherit;font-size:.82rem;color:var(--ink-faint);background:none;border:0;padding:0;cursor:pointer;margin-left:auto}
  .fe-neu-abbr:hover{color:var(--ink);text-decoration:underline}
  @media (max-width:560px){
    .fe-z{grid-template-columns:minmax(0,1fr) 30px;grid-template-areas:"w x" "m m"}
    .fe-z-wer{grid-area:w} .fe-z-weg,.fe-z-weg-platz{grid-area:x} .fe-z-mappe{grid-area:m;justify-self:start}
  }

  /* Übersicht über mehrere Kalkulationen: eine Zeile je Einheit, darunter die Summe des Haushalts. */
  .kt-tab-w{overflow-x:auto;padding:4px 22px 6px}
  .kt-tab{width:100%;border-collapse:collapse;font-size:.84rem;font-variant-numeric:tabular-nums}
  .kt-tab th,.kt-tab td{padding:9px 7px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line)}
  .kt-tab thead th{font-size:.6rem;font-weight:800;color:var(--ink-faint);
    padding-top:4px;white-space:normal;vertical-align:bottom;line-height:1.3}
  .kt-tab th[scope="row"],.kt-tab thead th:first-child{text-align:left}
  .kt-tab tbody th b{display:block;font-family:var(--font-head);font-size:.94rem;color:var(--ink)}
  .kt-tab tbody th span{font-size:.74rem;font-weight:500;color:var(--ink-soft)}
  .kt-tab tbody tr{cursor:pointer}
  .kt-tab tbody tr:hover{background:var(--surface-2)}
  .kt-tab tbody tr:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
  .kt-tab td.is-leer{color:var(--ink-faint)}
  .kt-tab .is-eigen{color:var(--red)}
  .kt-tab .is-plus{color:var(--green)}
  .kt-tab tfoot th,.kt-tab tfoot td{font-weight:800;color:var(--ink);border-bottom:0;border-top:2px solid var(--ink-faint)}
  .kt-tab tfoot th{text-align:left}
  .kt-fussnote{margin:0;padding:4px 22px 0;font-size:.78rem;color:var(--ink-soft)}
  .kt-warn{display:flex;align-items:baseline;gap:10px;margin:10px 22px 0;padding:10px 13px;border-radius:6px;
    font-size:.84rem;line-height:1.5;color:var(--ink);background:color-mix(in srgb,var(--gold) 16%,transparent)}
  .kt-warn i{font-style:normal;font-weight:800;color:var(--bronze-600)}

  /* Übergabe: Einheiten zum Anhaken, je mit dem Stand ihrer Mappe — aufklappbar zum Hochladen. */
  .fue{margin:0;padding:0;border:0;min-width:0;display:flex;flex-direction:column;gap:10px}
  .fue-t{padding:0;margin:0 0 2px;font-size:.82rem;color:var(--ink-soft)}
  .fue-liste{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--surface)}
  .fue-e{border-top:1px solid var(--line)}
  .fue-e:first-child{border-top:0}
  .fue-e.is-an{background:color-mix(in srgb,var(--accent) 4%,var(--surface))}
  .fue-e-kopf{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:11px 14px;cursor:pointer}
  .fue-e-kopf input{width:17px;height:17px;margin:0;accent-color:var(--accent)}
  .fue-e-name{display:flex;flex-direction:column;min-width:0}
  .fue-e-name b{font-family:var(--font-head);font-size:.96rem;color:var(--ink)}
  .fue-e-name span{font-size:.78rem;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .fue-e-preis{font-size:.88rem;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
  .fue-e-stand{display:inline-grid;grid-template-columns:auto auto;justify-content:start;column-gap:6px;align-items:center;min-width:120px;
    font-variant-numeric:tabular-nums}
  .fue-e-stand span{font-size:.82rem;font-weight:600;color:var(--ink)}
  .fue-e-stand em{grid-column:2;font-style:normal;font-size:.72rem;color:var(--ink-soft)}
  .fue-e-stand.is-rot em{color:var(--red);font-weight:600}
  .fue-e-stand.is-leer em{grid-column:1 / -1}
  .fue-e-body{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;padding:0 14px 10px 43px;margin-top:-4px}
  .fue-mappe-b{font:inherit;font-size:.82rem;font-weight:600;color:var(--accent-dark);background:none;border:0;padding:4px 0;cursor:pointer}
  .fue-mappe-b:hover{text-decoration:underline}
  .fue-mappe{padding:0 14px 14px 43px}
  .fue-summe{margin:0;font-size:.84rem;color:var(--ink-soft)}
  .fue-summe b{color:var(--ink);font-variant-numeric:tabular-nums}
  .fue-hinweis{margin:0;font-size:.82rem;color:var(--ink-soft)}
  .fin-t-e{font-weight:800;color:var(--ink-soft);}
  @media (max-width:560px){
    .fue-e-kopf{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"c n p" ". s s"}
    .fue-e-kopf input{grid-area:c} .fue-e-name{grid-area:n} .fue-e-preis{grid-area:p} .fue-e-stand{grid-area:s}
    .fue-e-body,.fue-mappe{padding-left:14px}
  }

  /* Für den Finanzierer: was nach seinen Anforderungen noch fehlt. Namen statt Dateien. */
  .fin-offen{margin:0 0 14px;padding:13px 16px;border-radius:6px;border:1px solid var(--line);background:var(--surface)}
  .fin-offen-k{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
  .fin-offen-k b{font-family:var(--font-head);font-size:.98rem;color:var(--ink)}
  .fin-offen-k span{font-size:.78rem;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums}
  .fin-offen-l{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
  .fin-offen-l li{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;padding:.3em .75em;
    border-radius:var(--r-pill);background:var(--surface-2);color:var(--ink)}
  .fin-offen-l li.is-zwingend{background:color-mix(in srgb,var(--red) 9%,transparent)}
  .fin-offen-l li.is-alt{background:color-mix(in srgb,var(--bronze-500) 14%,transparent)}
  .fin-offen-l li.is-alt em{color:var(--bronze-600);text-transform:none;letter-spacing:0;font-size:.72rem;font-weight:700}
  .fin-offen-l em{font-style:normal;font-size:.64rem;font-weight:800;color:var(--red)}
  .fin-offen-f{display:flex;align-items:center;justify-content:space-between;gap:10px 18px;flex-wrap:wrap;margin-top:12px}
  .fin-offen-b{font:inherit;font-size:.82rem;font-weight:700;color:var(--accent-dark);background:none;border:0;padding:0;cursor:pointer}
  .fin-offen-e{font:inherit;font-size:.76rem;color:var(--ink-faint);background:none;border:0;padding:0;cursor:pointer;text-align:left}
  .fin-offen-b:hover,.fin-offen-e:hover{text-decoration:underline;color:var(--accent-dark)}
  /* Nachforderungen im Kasten „Noch offen" (27.09.2026): je Unterlage eine Zeile mit Aktion. */
  .fin-offen.is-ok{background:color-mix(in srgb,var(--green) 6%,var(--surface))}
  /* Aktiv: Hier muss der Finanzierer etwas tun. Bronze-Fläche, Zeichen, Knöpfe mit Rahmen. */
  .fin-offen.is-aktiv{background:color-mix(in srgb,var(--gold) 11%,var(--surface));border-color:color-mix(in srgb,var(--gold) 55%,var(--line));
    box-shadow:0 1px 0 color-mix(in srgb,var(--gold) 25%,transparent),0 6px 18px -12px color-mix(in srgb,var(--bronze-600) 60%,transparent);padding:16px 18px}
  .fin-offen.is-aktiv .fin-offen-k{align-items:center;justify-content:flex-start;flex-wrap:nowrap;gap:12px}
  /* Verlauf: Unterlagen-Ereignisse als Nachweis hervorgehoben. */
  .fin-e.is-unterlage{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border-radius:6px;
    background:color-mix(in srgb,var(--green) 6%,var(--surface));border:1px solid color-mix(in srgb,var(--green) 22%,var(--line))}
  .fin-e.is-unterlage.is-nf{background:color-mix(in srgb,var(--gold) 10%,var(--surface));border-color:color-mix(in srgb,var(--gold) 45%,var(--line))}
  .fin-e.is-unterlage.is-zu{background:var(--surface-2);border-color:var(--line)}
  .fin-e-ui{flex:none;width:32px;height:32px;border-radius:3px;display:grid;place-items:center;color:var(--green);
    background:color-mix(in srgb,var(--green) 14%,var(--surface))}
  .fin-e.is-unterlage.is-nf .fin-e-ui{color:var(--bronze-600);background:color-mix(in srgb,var(--gold) 22%,var(--surface))}
  .fin-e.is-unterlage.is-zu .fin-e-ui{color:var(--ink-faint);background:var(--surface)}
  .fin-e.is-unterlage .fin-e-b{flex:1;min-width:0}
  .fin-e.is-unterlage p{margin:4px 0 0;font-size:.86rem;color:var(--ink);overflow-wrap:anywhere}
  .fin-e-ul{margin:5px 0 0;padding-left:18px;font-size:.86rem;color:var(--ink)}
  .fin-e-ul li{margin:1px 0;overflow-wrap:anywhere}
  .fin-e.is-unterlage p.fin-e-anm{margin-top:4px;font-size:.82rem;color:var(--ink-soft);font-style:italic}
  .fin-tag.is-unterlage{color:var(--green);background:color-mix(in srgb,var(--green) 13%,transparent)}
  .fin-tag.is-unterlage.is-nf{color:var(--bronze-600);background:color-mix(in srgb,var(--gold) 20%,transparent)}
  .fin-tag.is-unterlage.is-zu{color:var(--ink-soft);background:var(--surface-2)}
  .fin-offen-i{flex:none;width:38px;height:38px;border-radius:6px;display:grid;place-items:center;
    background:color-mix(in srgb,var(--gold) 28%,var(--surface));color:var(--bronze-600)}
  .fin-offen-kt{display:flex;flex-direction:column;gap:2px;min-width:0}
  .fin-offen.is-aktiv .fin-offen-kt b{font-size:1.02rem}
  .fin-offen.is-aktiv .fin-offen-kt span{font-weight:500}
  .fin-offen.is-aktiv .fin-nf-z,.fin-offen.is-aktiv .fin-nf-mehr{border-color:color-mix(in srgb,var(--gold) 30%,var(--line))}
  .fin-offen.is-aktiv .fin-nf-b{border-color:color-mix(in srgb,var(--accent) 35%,var(--line));background:var(--surface)}
  .fin-offen.is-aktiv .fin-nf-b:hover{border-color:var(--accent);background:var(--surface)}
  /* Breit genug: zwei Spalten, die Zeilen laufen zeilenweise. */
  @media (min-width:1100px){
    .fin-nf-l-liste{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px}
    .fin-nf-l-liste>.fin-nf-z:nth-child(2){border-top:0}
  }
  .fin-nf-l-liste{list-style:none;margin:8px 0 0;padding:0}
  .fin-nf-z{display:flex;align-items:center;justify-content:space-between;gap:8px 14px;padding:9px 0;border-top:1px solid var(--line);flex-wrap:wrap}
  .fin-nf-z:first-child{border-top:0}
  .fin-nf-l{display:flex;flex-direction:column;min-width:0;font-size:.88rem;font-weight:600;color:var(--ink)}
  .fin-nf-l em{display:inline-block;margin-left:8px;font-style:normal;font-size:.62rem;font-weight:800;color:var(--red)}
  .fin-nf-l small{font-size:.76rem;font-weight:500;color:var(--ink-soft);margin-top:2px}
  .fin-nf-r{display:flex;align-items:center;gap:6px;flex:none}
  .fin-nf-stand{font-size:.78rem;font-weight:700;color:var(--bronze-600);background:color-mix(in srgb,var(--gold) 16%,transparent);
    border-radius:var(--r-pill);padding:.3em .8em;white-space:nowrap}
  .fin-nf-stand.is-lang{color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent)}
  .fin-nf-z{padding:7px 0;flex-wrap:nowrap}
  .fin-nf-l{flex:1 1 auto}
  @media (max-width:620px){ .fin-nf-z{flex-wrap:wrap} }
  .fin-nf-b{font:inherit;font-size:.8rem;font-weight:700;color:var(--accent-dark);background:none;border:1px solid transparent;
    border-radius:var(--r-pill);padding:.25em .8em;cursor:pointer}
  .fin-nf-b:hover{border-color:var(--line);background:var(--surface-2)}
  .fin-nf-b:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
  .fin-nf-mehr{margin-top:2px;border-top:1px solid var(--line)}
  .fin-nf-mehr summary{cursor:pointer;padding:9px 0 3px;font-size:.8rem;font-weight:700;color:var(--ink-soft)}
  .fin-nf-mehr summary:hover{color:var(--accent-dark)}
  .fin-nf-fl{display:inline-flex;align-items:center;gap:8px 16px;flex-wrap:wrap}
  .fin-nf-x{width:26px;height:26px;border-radius:3px;border:1px solid var(--line);background:var(--surface);color:var(--ink-faint);
    font-size:1rem;line-height:1;cursor:pointer}
  .fin-nf-x:hover{color:var(--red);border-color:var(--red)}
  .fin-nf-spur{list-style:none;margin:8px 0 0;padding:8px 0 0;border-top:1px dashed var(--line);font-size:.78rem;color:var(--ink-soft)}
  .fin-nf-spur li{padding:2px 0}
  .fin-nf-spur i{font-style:normal;color:var(--green);font-weight:800;margin-right:6px}
  .fin-nf-spur span{color:var(--ink-faint)}
  .fin-nf-dlg-l{margin:0 0 12px;padding-left:20px;font-size:.9rem;color:var(--ink)}
  .fin-nf-dlg-h{margin:10px 0 0;font-size:.8rem;line-height:1.5;color:var(--ink-soft)}
  .fl-nf{font-size:.76rem;font-weight:700;color:var(--bronze-600)}
  .fin-mhw.is-nf{background:color-mix(in srgb,var(--gold) 14%,transparent)}
  .fin-mhw-s{font-size:.8rem;color:var(--ink-soft)}
  /* In der Bankmappe des Bauträgers: was der Finanzierer nachfordert. */
  .bm-p.is-nf{background:color-mix(in srgb,var(--gold) 10%,transparent);border-radius:6px;padding-left:8px;padding-right:8px}
  .bm-p.is-nf .bm-stufe.is-nf{color:var(--bronze-600);background:color-mix(in srgb,var(--gold) 18%,transparent);border-color:transparent}
  .bm-p.is-nf .bm-p-z{border-color:var(--bronze-600)}
  .bm-p.is-nf .bm-p-d.is-fehlt{color:var(--bronze-600)}
  .bm-p-h.is-nf{color:var(--bronze-600);font-weight:600}
  .bm-p-h.is-ok{color:var(--green)}
  .bm-p-d.is-alt{text-decoration:line-through;opacity:.7}
  .bm-p-nf{display:inline-flex;align-items:center;gap:6px}
  .bm-zahl-nf{color:var(--bronze-600);font-weight:700}
  /* Dateiliste im Fall: die Art vorn, der Dateiname klein darunter. */
  .dok-sub.dok-datei{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dok-head-n{font-weight:400;font-size:.8rem;color:var(--ink-faint);margin-left:6px}
  .fin-alt{margin-top:20px;padding-top:14px;border-top:1px solid var(--line)}
  .fin-alt:first-child{margin-top:0;padding-top:0;border-top:0}
  .fin-alt-t{font-size:.68rem;font-weight:800;color:var(--ink-faint);margin-bottom:8px}
  .fin-alt-z{display:flex;align-items:baseline;gap:10px;width:100%;text-align:left;font:inherit;font-size:.86rem;
    cursor:pointer;background:none;border:0;padding:7px 0;color:var(--ink)}
  .fin-alt-z span{color:var(--ink-faint);font-size:.8rem}
  .fin-alt-z:hover{color:var(--accent-dark)}
  .fin-alt-z.is-offen{font-weight:600}
  @media (max-width:620px){
    .fin-stand-kopf{flex-direction:column;align-items:stretch}
    .fin-nach{align-self:flex-start}
    .fin-e-t{margin-left:0;flex-basis:100%}
  }

  /* Glocke / Benachrichtigungen (§4.8) */
  .ib-bell{position:relative}
  .bell-dot{position:absolute;top:5px;right:6px;width:8px;height:8px;border-radius:50%;background:#e0632f;box-shadow:0 0 0 2px rgba(0,0,0,.28)}
  .bell-pop{position:fixed;z-index:1200;width:360px;max-width:calc(100vw - 20px);background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}
  .bell-head{padding:13px 16px;font-family:var(--font-head);font-weight:700;font-size:.98rem;color:var(--ink);border-bottom:1px solid var(--line);flex:none}
  .bell-list{overflow-y:auto;min-height:60px}
  .bell-empty{color:var(--ink-soft);font-size:.9rem;text-align:center;padding:26px 16px;margin:0}
  .bell-item{display:flex;gap:11px;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--line);padding:12px 15px;cursor:pointer;font:inherit;align-items:flex-start;transition:background .12s}
  .bell-item:hover,.bell-item:focus-visible{background:var(--bg);outline:none}
  /* Nur Zeilen MIT Ziel verhalten sich wie ein Link — der Rest ist eine Meldung, kein Knopf. */
  .bell-item:not(.is-link){cursor:default}
  .bell-item.is-link .bell-go{margin-left:auto;align-self:center;color:var(--ink-faint);font-size:1.15rem;line-height:1;flex:none;transition:transform .12s,color .12s}
  .bell-item.is-link:hover .bell-go{color:var(--accent);transform:translateX(2px)}
  /* Wiederholungen zum selben Ziel: eine Zeile, ein Zähler (statt gestapelter Duplikate). */
  .bell-count{margin-left:6px;font-size:.72rem;font-weight:700;color:var(--ink-faint);
    background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-pill);padding:.05em .45em;
    vertical-align:middle;font-variant-numeric:tabular-nums}
  /* Hinter dieser Meldung steht noch etwas Offenes — dieselbe Sache steht in der Aufgabenleiste. */
  .bell-todo{margin-left:7px;font-size:.66rem;font-weight:800;
    color:var(--todo-ink);background:color-mix(in srgb,var(--gold) 22%,transparent);
    border:1px solid color-mix(in srgb,var(--gold) 42%,var(--line));border-radius:var(--r-pill);
    padding:.14em .55em;vertical-align:middle;white-space:nowrap}
  .bell-item.is-todo{background:color-mix(in srgb,var(--gold) 9%,transparent)}
  .bell-item.is-todo:hover{background:color-mix(in srgb,var(--gold) 15%,transparent)}
  .bell-item.unseen{background:rgba(28,90,64,.06)}
  .bell-item.unseen:hover{background:rgba(28,90,64,.1)}
  .bell-ico{flex:none;width:30px;height:30px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;background:var(--bg)}
  .bell-ico svg{width:17px;height:17px}
  .bell-ico.t-accent{color:var(--accent-dark);background:var(--accent-soft)}
  .bell-ico.t-green{color:var(--green);background:rgba(44,122,85,.13)}
  .bell-ico.t-red{color:var(--red);background:rgba(194,72,58,.13)}
  .bell-ico.t-bronze{color:var(--bronze-600);background:rgba(203,167,106,.18)}
  .bell-ico.t-muted{color:var(--ink-soft);background:var(--bg)}
  .bell-item-text{min-width:0;display:flex;flex-direction:column;gap:2px}
  .bell-item-title{font-weight:600;font-size:.9rem;color:var(--ink);line-height:1.3}
  .bell-item-body{font-size:.83rem;color:var(--ink-soft);line-height:1.4}
  .bell-item-time{font-size:.76rem;color:var(--ink-soft);opacity:.85;margin-top:1px}
  .bell-foot{display:block;width:100%;text-align:center;background:none;border:none;border-top:1px solid var(--line);padding:11px;font:inherit;font-size:.86rem;font-weight:600;color:var(--accent-dark);cursor:pointer;flex:none}
  .bell-foot:hover,.bell-foot:focus-visible{background:var(--bg);outline:none}

  /* ====================== Handy-Ansicht (Vorgänge & Kunden) ======================
     Stand am Original-Gerät geprüft: Die Seite war 631 px breit bei 375 px Schirm, ließ
     sich also seitlich wegschieben. Ursache war NICHT das Kanban-Board (das scrollt
     korrekt in sich), sondern die Aktionsleiste: .page-actions hat zwar flex-wrap,
     aber mit flex:0 0 auto schrumpft sie nie unter ihre Inhaltsbreite — dadurch bricht
     sie nie um und drückt die ganze Seite auf 618 px auf.
     Dieser Block steht bewusst am ENDE des Stylesheets: die Grundregeln stehen weiter
     oben in derselben Datei, spätere Regeln gleicher Spezifität gewinnen. */
  @media (max-width:640px){
    /* 1) Kein seitliches Wegschieben der Seite mehr */
    .page-actions{flex:1 1 100%;min-width:0;width:100%}
    .page-actions .btn{flex:1 1 auto;justify-content:center}
    .page-head{flex-wrap:wrap;gap:12px}

    /* 2) Kennzahlen (.pk-* in Vorgängen/Leads, .dash-kpi* im Dashboard):
          Die Beschriftung war auf „VORGÄNGE …" und „ABSCHLUSS-…" gekürzt (white-space:nowrap
          + ellipsis) und Beträge wie „1.233.890 €" brachen mit dem € allein in Zeile zwei um.
          Jetzt fest zwei Kacheln je Reihe (auto-fit kippte je nach Gerätebreite mal auf eine,
          mal auf zwei), Beschriftung darf umbrechen, Zahl etwas kleiner. Ungerade Anzahl →
          letzte Kachel über die volle Breite statt halber Lücke. */
    .pk-grid,.lead-kpis .pk-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
    .pk-card{padding:13px 13px 12px}
    .pk-card:last-child:nth-child(odd){grid-column:1 / -1}
    .pk-top{gap:9px;margin-bottom:9px}
    .pk-ic{width:28px;height:28px;border-radius:4px}
    .pk-ic svg{width:15px;height:15px}
    .pk-label{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.25;
              overflow-wrap:anywhere;hyphens:auto}
    .pk-val{font-size:1.25rem}
    .pk-sub{font-size:.76rem;margin-top:7px}
    /* Dashboard nutzt dieselbe Kachel-Idee unter anderen Klassennamen */
    .dash-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:20px}
    .dash-kpi{padding:13px 13px 12px}
    .dash-kpi:last-child:nth-child(odd){grid-column:1 / -1}
    .dash-kpi-top{gap:9px;margin-bottom:9px}
    .dash-kpi-ic{width:28px;height:28px;border-radius:4px}
    .dash-kpi-ic svg{width:15px;height:15px}
    .dash-kpi-lbl{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.25;
                  overflow-wrap:anywhere;hyphens:auto}
    .dash-kpi-val{font-size:1.25rem;flex-wrap:wrap;gap:5px}

    /* 3) Aufgabenzeilen: Titel, Datum, Badge und Button standen in EINER Zeile und
          liefen ineinander. Jetzt Titel oben, Zusatzangaben darunter. */
    .task-row{flex-wrap:wrap;align-items:flex-start;row-gap:8px;padding:13px 0}
    /* Kästchen + Titel teilen sich Zeile 1 (100% minus Kästchen und Abstand), Datum, Badge
       und Button rutschen gemeinsam in Zeile 2 — vorher stand das Kästchen allein darüber. */
    .task-row .tmain{flex:1 1 calc(100% - 31px);min-width:0;order:1}
    .task-row .ttitle{line-height:1.35}
    .task-check{order:0;margin-top:2px}
    .task-row .tdate,.task-row .tbadge-slot{order:2}
    .task-goto{order:3;margin-left:auto}
    .task-panel{padding:15px 15px 13px}

    /* 4) Kunden: Zeile bleibt lesbar, lange Namen/Adressen brechen statt zu quetschen */
    .cust-cell{gap:10px}
    .cust-meta{overflow-wrap:anywhere}

    /* 5) Vorgangs-Detailkopf: nahm mit 383 px fast den ganzen ersten Bildschirm ein, bevor
          überhaupt Inhalt kam (Zurück + Titel, Kundenchip, zwei Buttons, Abschluss-Button,
          Stufenbalken, „Letzte Aktivität"). Kompakter gesetzt und der Stufenbalken scrollt
          seitlich in sich, statt auf zwei Zeilen umzubrechen. */
    /* NICHT klebend auf dem Handy: als sticky blieb der 337 px hohe Kopf beim Scrollen
       dauerhaft stehen und nahm ein Drittel des Schirms weg. Am Desktop bleibt er klebend. */
    .vg-head{position:static;padding:10px 14px 8px;margin:-18px -14px 0}
    .vg-title,.vg-title-ro{font-size:1.08rem;padding:0;margin:0;max-width:none;
              overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .vg-cust-chip{max-width:100%;min-width:0;flex-wrap:wrap;row-gap:3px;border-radius:6px}
    /* Der Kundenname hat Vorrang: „vermittelt durch …" rutscht auf eine eigene Zeile,
       statt den Namen auf „Ma…" zusammenzuquetschen. */
    .vg-cust-main{flex:1 1 auto;min-width:0}
    .vg-cust-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .vg-cust-ref{order:3;flex:1 1 100%}
    /* Aktionen in EINE Zeile: „Kundenportal | Teilen" und „Abschließen" nebeneinander –
       zwei Button-Zeilen kosteten 47 px. Möglich durch die Kurzlabels (.lbl-short). */
    .lbl-long{display:none}
    .lbl-short{display:inline}
    /* Umbruch bleibt erlaubt (abgeschlossene Vorgänge zeigen zusätzlich ein Status-Abzeichen),
       durch die Kurzlabels passt der Normalfall aber in eine Zeile. */
    /* Schmal darf umbrochen werden: die Knöpfe teilen sich die Breite. */
    .vg-head-actions{width:100%;gap:6px;align-items:stretch;flex-wrap:wrap}
    #vorgangDetailView .vg-head-actions>.btn{flex:1 1 auto}
    .vg-head-actions .btn-duo{flex:1 1 auto;min-width:0}
    /* ID mitführen: #vorgangDetailView .btn (weiter oben) schlägt sonst diese Regel */
    #vorgangDetailView .vg-head-actions .btn{flex:1 1 auto;min-width:0;justify-content:center;
                          padding:.46em .55em;font-size:.82rem;white-space:nowrap}
    .vg-head-row2{margin-top:9px;gap:9px;flex-wrap:nowrap;align-items:center}
    /* Eckdaten als schlichte Zeilen (Label + Wert nebeneinander) statt als Kästchen mit
       Rahmen und Innenabstand – spart weitere ~37 px. */
    .vg-eckdaten{width:100%;background:none;border:none;border-radius:0;overflow:visible;
                 flex-wrap:wrap;gap:2px 16px}
    .vg-eck{display:flex;align-items:baseline;flex-wrap:wrap;gap:3px 7px;
            padding:0;min-width:0;border:none}
    .vg-eck-l{font-size:.64rem}
    .vg-eck-v{font-size:.88rem;margin-top:0}
    .vg-eck-v.vg-eck-sm{font-size:.82rem}
    .vg-eck-sub,.vg-eck-link{margin-top:0}
    /* Stufen: eine Zeile, seitlich scrollbar — Umbruch kostete 40 px und zerriss die Kette */
    .vg-stepper{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:6px;
                padding-bottom:2px;-webkit-overflow-scrolling:touch}
    .vg-stepper::-webkit-scrollbar{display:none}
    .vg-step{flex:none;padding:4px 6px;font-size:.88rem}
    .vg-step-circle{width:21px;height:21px;font-size:.72rem}

    /* 6) Vorschlagszeilen: Aktionen unter den Inhalt, Knopf über die volle Breite —
          rechts daneben blieben auf dem Handy nur ~90 px übrig. */
    .mt-row{flex-wrap:wrap;gap:10px}
    .mt-body{flex:1 1 60%}
    .mt-act{flex:1 1 100%;flex-direction:row;align-items:center;justify-content:space-between;gap:8px}
    .mt-act .btn{order:2;flex:1 1 auto;justify-content:center}
    .mt-label{order:1;flex:none}
    .mt-hide{order:3;flex:none}
  }

/* Sales-Cockpit Etappe 2: Reservierungsfristen (Einstellungen) */
.acc-fr{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.acc-fr-feld{display:flex;flex-direction:column;gap:5px;background:var(--surface-2);border-radius:6px;padding:12px 14px}
.acc-fr-feld>span:first-child{font-size:.82rem;font-weight:700;color:var(--ink)}
.acc-fr-in{display:inline-flex;align-items:center;gap:8px}
.acc-fr-in input{width:84px;font:inherit;font-size:1rem;font-weight:600;color:var(--ink);background:var(--surface);border:1px solid var(--field-line,var(--line));border-radius:4px;padding:6px 10px;font-variant-numeric:tabular-nums}
.acc-fr-in i{font-style:normal;font-size:.84rem;color:var(--ink-soft)}
.acc-fr-feld small{font-size:.76rem;color:var(--ink-soft);line-height:1.4}
.acc-fr-k{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.acc-fr-k [hidden]{display:none}

/* Sales-Cockpit: offene Status-Anfrage des Bauträgers an einer Einheit im Vorgang */
.vg-stand{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:space-between;margin:8px 0 2px;padding:9px 12px;border-radius:6px;background:var(--pv-flaeche,#F7F0E1);font-size:.84rem;color:var(--ink)}
.vg-stand-t{min-width:0}
.fue-fremd{margin:0;font-size:.82rem;color:var(--ink-soft);line-height:1.45}
.fue-fremd b{color:var(--ink)}
.fin-fremdmappe{background:var(--surface-2);border-radius:6px;padding:12px 14px;font-size:.86rem}
.fin-fremdmappe p{margin:0 0 8px;color:var(--ink-soft)}
.fin-fremdmappe p b{color:var(--ink)}
.fin-fremdmappe ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 16px}
.fin-fremdmappe li{color:var(--ink)}
.fin-fremdmappe li.is-fehlt{color:var(--ink-soft)}
.fin-fremdmappe li em{font-style:normal;font-size:.72rem;font-weight:700;color:var(--red);margin-left:4px}

/* Kaufstrecke an der Einheit im Vorgang (eigene wie geteilte) */
/* Als Leiste oben an die Objektkarte geheftet: gleiche Kante, weiße Fläche, Karte darunter ohne obere Rundung. */
.vg-obj-heft{display:flex;flex-direction:column}
.vg-ks{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:10px 14px;border:1px solid var(--line);border-bottom:0;border-radius:6px 6px 0 0;background:var(--surface);font-size:.82rem}
.vg-ks-z{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.vg-ks>.btn{flex:none}
.vg-obj-row.is-geheftet{border-top-left-radius:0;border-top-right-radius:0}
/* Farbe nach Dringlichkeit — Fläche und Kante, keine Akzentkante */
.vg-ks.is-gruen{background:color-mix(in srgb,var(--green) 8%,var(--surface));border-color:color-mix(in srgb,var(--green) 30%,var(--line))}
.vg-ks.is-fest{background:color-mix(in srgb,var(--green) 14%,var(--surface));border-color:color-mix(in srgb,var(--green) 45%,var(--line))}
.vg-ks.is-gelb{background:color-mix(in srgb,var(--gold) 16%,var(--surface));border-color:color-mix(in srgb,var(--gold) 55%,var(--line))}
.vg-ks.is-rot{background:color-mix(in srgb,var(--red) 9%,var(--surface));border-color:color-mix(in srgb,var(--red) 45%,var(--line))}
.vg-ks-grund{font-style:normal;font-weight:700;font-size:.76rem;padding:2px 8px;border-radius:3px;white-space:nowrap}
.vg-ks.is-gelb .vg-ks-grund{background:color-mix(in srgb,var(--gold) 30%,var(--surface));color:#7A5514}
.vg-ks.is-rot .vg-ks-grund{background:color-mix(in srgb,var(--red) 16%,var(--surface));color:var(--red)}
.vg-ks.is-gruen .vg-ks-grund{display:none}
[data-theme="dark"] .vg-ks.is-gelb .vg-ks-grund{color:#D9BC86}
[data-theme="dark"] .vg-ks.is-rot .vg-ks-grund{color:#EFA08C}
.vg-ks-t{display:inline-flex;align-items:center;gap:8px;color:var(--ink-soft);flex-wrap:wrap}
.vg-ks-t b{color:var(--ink)}
.vg-ks-t>span:last-child{color:var(--ink);font-weight:600}
.vg-ks-sub{color:var(--ink-soft);min-width:0}
.vg-ks-sub b{color:var(--ink)}
.vg-ks .btn.btn-ghost{background:var(--surface);border:1px solid var(--line)}   /* nie grau auf grau */

  /* Etikett „Wohnanlage“ auf Bild und im Kopf: neutral statt Bronze (styles.css setzt es mit !important) */
  .obj-badge-anlage{background:var(--surface)!important;color:var(--ink)!important;border:1px solid var(--line)}

/* Zeichen für jede Funktion, bei der KI mitarbeitet: zwei Sterne, in der Farbe des Textes daneben.
   Einsatz überall gleich: <i class="ki-stern" aria-hidden="true"></i> vor der Beschriftung. */
.ki-stern{display:inline-block;flex:none;width:1.3em;height:1.3em;margin-right:.35em;vertical-align:-.28em;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 2c.7 5.2 2.3 6.8 7.5 7.5-5.2.7-6.8 2.3-7.5 7.5C8.800 11.800 7.200 10.200 2 9.500 7.200 8.800 8.800 7.200 9.500 2z'/%3E%3Cpath d='M18.5 13.500c.4 2.800 1.200 3.600 4 4-2.800.4-3.600 1.200-4 4-.4-2.800-1.200-3.600-4-4 2.800-.4 3.600-1.200 4-4z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 2c.7 5.2 2.3 6.8 7.5 7.5-5.2.7-6.8 2.3-7.5 7.5C8.800 11.800 7.200 10.200 2 9.500 7.200 8.800 8.800 7.200 9.500 2z'/%3E%3Cpath d='M18.5 13.500c.4 2.800 1.200 3.600 4 4-2.800.4-3.600 1.200-4 4-.4-2.800-1.200-3.600-4-4 2.800-.4 3.600-1.200 4-4z'/%3E%3C/svg%3E") center/contain no-repeat}
