/* ═══════════════════════════════════════════════════════════════════════
   robopult — Design System v1 (rebranded from basestar.io)
   KI-gestütztes Telefon-Management für moderne SaaS-Unternehmen
   ═══════════════════════════════════════════════════════════════════════

   Struktur:
   1. Reset + Root-Tokens (Light-Theme)
   2. Dark-Theme Overrides
   3. Legacy-Aliase (rueckwaerts-kompatibel, bleibt bis Phase-J)
   4. Typography / Base-Elements
   5. Base-Komponenten (bs-*)
   6. Legacy-Layouts (Login, Sidebar, Tabs, Dialoge …)
   7. Utilities
   8. Responsive

   Alle neuen Features IMMER mit bs-* Tokens/Klassen bauen.
   Alte Klassen bleiben fuer bestehenden Code funktionsfaehig.
   ═══════════════════════════════════════════════════════════════════════ */

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

[hidden] { display: none !important; }

/* ═══════════════════════════════════════════════════════════════════════
   ROBOPULT DESIGN-SYSTEM „Digitale Manufaktur" V1.0
   Brand-Anchor: Industrial Navy + Precision Emerald
   90 % Neutrals (Slate), 10 % Akzent (Emerald), Navy für Brand-Moments
   Single-Source: --rp-* Tokens. Bestehende --bs-* sind kompatible Aliases.
   ═══════════════════════════════════════════════════════════════════════ */
:root {
  /* === Core Brand: Industrial Navy (Logo, Header, Autorität) === */
  --rp-navy:         #1A2B3C;   /* Industrial Navy — Primärfarbe für Brand-Moments */
  --rp-navy-strong:  #0F1B2A;   /* Hover/Active */
  --rp-navy-soft:    #E2E8F0;   /* Soft-BG-Companion (gleicher Slate-Stack) */

  /* === Foundation: Slate-Stack (90 % der UI) === */
  --rp-slate-50:  #F8FAFC;
  --rp-slate-100: #F1F5F9;
  --rp-slate-200: #E2E8F0;
  --rp-slate-300: #CBD5E1;
  --rp-slate-400: #94A3B8;
  --rp-slate-500: #64748B;
  --rp-slate-600: #475569;
  --rp-slate-700: #334155;
  --rp-slate-800: #1E293B;
  --rp-slate-900: #0F172A;

  /* === Brand-Akzent: Precision Emerald (Action-Buttons, "System Aktiv") === */
  --rp-emerald-50:  #ECFDF5;
  --rp-emerald-100: #D1FAE5;
  --rp-emerald-300: #6EE7B7;
  --rp-emerald-400: #34D399;
  --rp-emerald-500: #10B981;   /* Precision Emerald — Brand-Akzent */
  --rp-emerald-600: #059669;
  --rp-emerald-700: #047857;

  /* === Module-Akzente (kategorial — pro Modul ein Ton) === */
  --rp-mod-attendant:          var(--rp-emerald-500);
  --rp-mod-attendant-soft:     var(--rp-emerald-100);
  --rp-mod-voicemail:          #0891B2;   /* cyan-600 — Stream/Tech */
  --rp-mod-voicemail-soft:     #CFFAFE;
  --rp-mod-announcements:      #D97706;   /* amber-600 — Audio/Warmth */
  --rp-mod-announcements-soft: #FEF3C7;
  --rp-mod-team:               #7C3AED;   /* violet-600 — Friendly People */
  --rp-mod-team-soft:          #EDE9FE;
  --rp-mod-platform:           var(--rp-slate-600);
  --rp-mod-platform-soft:      var(--rp-slate-200);

  /* === Status (semantisch, sparsam) === */
  --rp-success:      var(--rp-emerald-500);
  --rp-success-soft: var(--rp-emerald-100);
  --rp-warning:      #D97706;
  --rp-warning-soft: #FEF3C7;
  --rp-danger:       #EF4444;
  --rp-danger-soft:  #FEE2E2;
  --rp-info:         var(--rp-slate-600);
  --rp-info-soft:    var(--rp-slate-200);

  /* === Ticket-Status-Palette (R10 — distinkte Farbe pro Workflow-State) ===
     Jeder Status bekommt eine eigene visuelle Identität. Workflow-Logik:
     open      = Frisch rein, Aufmerksamkeit nötig    → Blue-600 (Info-Klassiker)
     in_progress = Aktiv bearbeitet (Mensch dran)     → Violet-600 (Team-Akzent)
     snoozed   = Wartet auf Termin / Wiedervorlage    → Amber-600 (Pause-Signal)
     done      = Erledigt / fertig                    → Emerald-600 (Erfolg)
     dropped   = Verworfen / abgehakt (kein Fehler!)  → Slate-500 (neutral) */
  --rp-status-open:         #2563EB;   /* blue-600 */
  --rp-status-open-soft:    #DBEAFE;   /* blue-100 */
  --rp-status-progress:     #7C3AED;   /* violet-600 */
  --rp-status-progress-soft:#EDE9FE;   /* violet-100 */
  --rp-status-snoozed:      #D97706;   /* amber-600 */
  --rp-status-snoozed-soft: #FEF3C7;   /* amber-100 */
  --rp-status-done:         #059669;   /* emerald-600 */
  --rp-status-done-soft:    #D1FAE5;   /* emerald-100 */
  --rp-status-dropped:      var(--rp-slate-500);
  --rp-status-dropped-soft: var(--rp-slate-200);

  /* === Shadows (modern, soft, layered — kein hartes Black) === */
  --rp-shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.04);
  --rp-shadow-sm: 0 2px 4px rgba(15, 23, 42, 0.04), 0 1px 2px rgba(15, 23, 42, 0.04);
  --rp-shadow-md: 0 4px 12px -4px rgba(15, 23, 42, 0.08), 0 2px 4px rgba(15, 23, 42, 0.04);
  --rp-shadow-lg: 0 12px 24px -8px rgba(15, 23, 42, 0.12), 0 4px 8px rgba(15, 23, 42, 0.06);
  --rp-shadow-xl: 0 24px 48px -12px rgba(15, 23, 42, 0.18), 0 8px 16px rgba(15, 23, 42, 0.08);

  /* ─── Brand-Anchor: Navy für Sidebar-Logo, Wordmark, Header-Decoration ── */
  --bs-brand-navy:       var(--rp-navy);
  --bs-brand-navy-hover: var(--rp-navy-strong);

  /* ─── Backward-Compat: --bs-* aliasen auf RP-Tokens ───────────────── */
  --bs-primary:          var(--rp-slate-700);   /* Buttons + Body-CTA (nicht zu dunkel) */
  --bs-primary-hover:    var(--rp-slate-800);
  --bs-primary-strong:   var(--rp-slate-900);
  --bs-primary-soft:     var(--rp-slate-100);
  --bs-primary-fg:       #ffffff;
  --bs-accent:           var(--rp-emerald-500); /* Brand-Akzent: System Aktiv, CTA */
  --bs-accent-soft:      var(--rp-emerald-100);
  --bs-accent-cyan:      var(--rp-emerald-400);
  --bs-accent-sky:       var(--rp-slate-600);

  --bs-mod-attendant:        var(--rp-mod-attendant);
  --bs-mod-attendant-soft:   var(--rp-mod-attendant-soft);
  --bs-mod-voicemail:        var(--bs-mod-voicemail);
  --bs-mod-voicemail-soft:   var(--bs-mod-voicemail-soft);
  --bs-mod-announcements:    var(--bs-mod-announcements);
  --bs-mod-announcements-soft:var(--bs-mod-announcements-soft);
  --bs-mod-team:             var(--bs-mod-team);
  --bs-mod-team-soft:        var(--bs-mod-team-soft);
  --bs-mod-platform:         var(--rp-mod-platform);
  --bs-mod-platform-soft:    var(--rp-mod-platform-soft);

  --bs-gradient-brand:   linear-gradient(135deg, var(--rp-slate-800) 0%, var(--rp-emerald-500) 100%);
  --bs-gradient-hero:    linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
  --bs-gradient-text:    linear-gradient(135deg, #ffffff 30%, #34d399 70%, #10b981 100%);
  --bs-glow-indigo:      radial-gradient(circle at 30% 30%, rgba(30,41,59,0.14), transparent 60%);
  --bs-glow-purple:      radial-gradient(circle at 70% 70%, rgba(16,185,129,0.14), transparent 60%);

  /* --- Flaechen --- */
  --bs-bg:               #f8fafc;
  --bs-bg-elevated:      #ffffff;
  --bs-bg-subtle:        #f1f5f9;
  --bs-bg-inset:         #f8fafc;
  /* --bs-input-bg: Background fuer Form-Controls (Inputs, Textareas, Selects).
     Light: weiss (gleich wie elevated). Dark: slate-900 (hebt sich gegen slate-800-Card ab). */
  --bs-input-bg:         #ffffff;

  /* --- Auth-Hero (Login-Page Stage links) — eigene Token-Skala, weil das Hero
       eigene Slate-Werte hat (Pearl-100 / Slate-800) statt page-bg / elevated. --- */
  --bs-hero-bg:                    #F1F5F9;   /* slate-100 — light pearl */
  --bs-hero-fg:                    #0F172A;   /* slate-900 — Brand-Navy-Anchor */
  --bs-hero-border:                #E2E8F0;
  --bs-hero-headline:              var(--rp-navy);
  --bs-hero-accent:                #10B981;   /* emerald-500 */
  --bs-hero-subtitle:              #475569;   /* slate-600 */
  --bs-hero-feature:               var(--rp-navy);
  --bs-hero-feature-icon-bg:       #FFFFFF;
  --bs-hero-feature-icon-color:    #10B981;
  --bs-hero-feature-icon-border:   rgba(16, 185, 129, 0.35);
  --bs-hero-footer:                #64748B;
  --bs-hero-status-bg:             rgba(15, 23, 42, 0.05);
  --bs-hero-status-border:         rgba(15, 23, 42, 0.14);
  --bs-hero-status-fg:             #475569;
  --bs-hero-trust-shadow:          rgba(15, 23, 42, 0.10);
  --bs-hero-mark-shadow:           rgba(15, 23, 42, 0.18);
  --bs-hero-grid-line:             rgba(15, 23, 42, 0.05);

  /* --- Brand-Mark Fills (Login-Card, Sidebar, Hero — alle nutzen dieselbe Skala) --- */
  --bs-mark-bg:                    var(--rp-navy);
  --bs-mark-fg:                    #ffffff;
  --bs-mark-shadow:                rgba(26, 43, 60, 0.30);

  /* --- Dash-Hero Glow (Light: dezent, Dark: kraeftiger) --- */
  --bs-dash-hero-glow-navy:        rgba(30, 41, 59, 0.16);
  --bs-dash-hero-glow-emerald:     rgba(16, 185, 129, 0.13);

  /* --- Sidebar-Logo Stroke (in Dark heller damit Logo lesbar bleibt) --- */
  --bs-sidebar-logo-fg:            var(--bs-brand-navy);

  /* --- Att-Bar-Fill (Stat-Bar-Charts im Attendant-Dashboard) --- */
  --bs-att-bar-fill-gradient:           linear-gradient(180deg, #475569, #1A2B3C);
  --bs-att-bar-fill-emerald-gradient:   linear-gradient(180deg, #34D399, #10B981);

  /* --- Att-Session Outcomes ("Anrufer aufgelegt" / "Sonstige") ---
       In Light: Navy + Pink-600. In Dark: Slate-300 + Pink-300 (Lesbarkeit). */
  --bs-att-sess-hangup-bg:              rgba(26, 43, 60, 0.10);
  --bs-att-sess-hangup-fg:              var(--rp-navy);
  --bs-att-sess-hangup-bar:             var(--rp-navy);
  --bs-att-sess-default-bg:             rgba(219, 39, 119, 0.10);
  --bs-att-sess-default-fg:             #DB2777;
  --bs-att-sess-default-bar:            #DB2777;

  /* --- Att-KPI-Month-Icon (Monats-KPI-Card-Icon, Navy in Light, Slate-300 in Dark) --- */
  --bs-att-kpi-month-bg:                var(--bs-primary-soft);
  --bs-att-kpi-month-fg:                var(--bs-primary);

  /* --- Ti-Icon-Backgrounds (Tenant-Integrationen Tab Icons, Domain-coded) --- */
  --bs-ti-icon-teal-bg:                 rgba(13, 148, 136, 0.10);
  --bs-ti-icon-teal-fg:                 #0d9488;
  --bs-ti-icon-teal-border:             rgba(13, 148, 136, 0.22);
  --bs-ti-icon-emerald-bg:              rgba(16, 185, 129, 0.12);
  --bs-ti-icon-emerald-fg:              var(--rp-emerald-500);
  --bs-ti-icon-emerald-border:          rgba(16, 185, 129, 0.24);
  --bs-ti-icon-danger-bg:               rgba(239, 68, 68, 0.10);
  --bs-ti-icon-danger-fg:               #b91c1c;
  --bs-ti-icon-danger-border:           rgba(239, 68, 68, 0.24);

  /* --- Ti-Section-Icon-VM (Voicemail-Section-Icon-Color im Tab-Header) --- */
  --bs-ti-section-icon-vm:              #0d9488;

  /* --- Ti-Key-Status (API-Key-Status-Pille im Tenant-Integrationen Tab) --- */
  --bs-ti-key-status-ok-bg:             rgba(16,185,129,0.12);
  --bs-ti-key-status-ok-fg:             #047857;
  --bs-ti-key-status-fallback-bg:       rgba(245,158,11,0.12);
  --bs-ti-key-status-fallback-fg:       #b45309;
  --bs-ti-key-status-missing-bg:        rgba(239,68,68,0.10);
  --bs-ti-key-status-missing-fg:        #b91c1c;

  /* --- Bundle-Unlock-Chip (in einer aktiven Bundle-Card; weisses Overlay in Light, Slate-Alpha in Dark) --- */
  --bs-bundle-unlock-active-bg:         rgba(255, 255, 255, 0.4);

  /* --- Tu-Feat-Row Hover (Tenant-User Per-Feature-Permission-Row) --- */
  --bs-tu-feat-row-hover-bg:            var(--bs-bg-subtle);

  /* --- Ann-Card-Assigned-Banner is-live (Live-Slot-Anzeige) --- */
  --bs-ann-banner-live-bg:              rgba(16, 185, 129, 0.06);
  --bs-ann-banner-live-border:          rgba(16, 185, 129, 0.32);

  /* --- Modsec-Att-Card (Module-Section Attendant-Card im Platform-Admin) --- */
  --bs-modsec-att-card-bg:              var(--bs-bg-subtle);
  --bs-modsec-att-card-border:          var(--bs-border);

  /* --- Att-Test-Pending/Error Pills (Test-Anruf Status-Banner) --- */
  --bs-att-test-pending-bg:             var(--bs-warning-soft);
  --bs-att-test-pending-fg:             #92400e;
  --bs-att-test-error-bg:               var(--bs-danger-soft);
  --bs-att-test-error-fg:               #991b1b;

  /* --- Att-Ext-Presets-Section (Erweiterte Preset-Liste fuer Attendant) --- */
  --bs-att-ext-presets-bg:              var(--bs-bg-subtle);

  /* --- Dae-Preset-Banner (DepartmentExplorer Preset-Banner) --- */
  --bs-dae-preset-banner-bg:            rgba(16, 185, 129, 0.08);
  --bs-dae-preset-banner-border:        rgba(16, 185, 129, 0.28);

  /* --- Dash2-KPI Hover (Tenant-Dashboard KPI-Card-Hover) --- */
  --bs-dash2-kpi-hover-shadow:          0 6px 16px rgba(15, 23, 42, 0.08);

  /* --- Dash2-Icon-{vm,att,ann} (Module-Icon-Backgrounds im Tenant-Dashboard) --- */
  --bs-dash2-icon-bg:                   var(--bs-bg-subtle);

  /* --- Dash-Att-Header (Attendant-Header im Tenant-Dashboard) --- */
  --bs-dash-att-header-bg:              var(--bs-bg-subtle);
  --bs-dash-att-header-border:          var(--bs-border);

  /* --- Dae-Explainer (Wizard-Erlaeuterungs-Block) --- */
  --bs-dae-explainer-bg:                var(--bs-bg-subtle);

  /* --- Dad-Output-Row Active (Department-Editor Output-Konfig aktiv) --- */
  --bs-dad-output-active-bg:            rgba(16, 185, 129, 0.08);
  --bs-dad-output-active-border:        rgba(16, 185, 129, 0.30);

  /* --- Dad-Crm-Section / Att-Dep-Crm-Line / Att-Msg-Crm-Badge --- */
  --bs-dad-crm-section-bg:              var(--bs-bg-subtle);
  --bs-att-dep-crm-line-color:          var(--bs-fg-muted);
  --bs-att-msg-crm-badge-bg:            rgba(16, 185, 129, 0.10);
  --bs-att-msg-crm-badge-fg:            #047857;
  --bs-dam-sync-block-bg:               var(--bs-bg-subtle);

  /* --- Dad-Mode-Card Active (Mode-Picker aktiv) --- */
  --bs-dad-mode-active-bg:              var(--bs-primary-soft);
  --bs-dad-mode-active-icon-bg:         var(--bs-bg-elevated);
  --bs-dad-mode-active-icon-fg:         var(--bs-primary);

  /* --- Att-Dep-Mode-Transfer/Ticket (Mode-Pills im Department) --- */
  --bs-att-dep-mode-transfer-bg:        rgba(30, 41, 59, 0.06);
  --bs-att-dep-mode-transfer-fg:        var(--bs-primary);
  --bs-att-dep-mode-ticket-bg:          rgba(217, 119, 6, 0.08);
  --bs-att-dep-mode-ticket-fg:          #B45309;

  /* --- Att-Dep-Action-Transfer (Action-Linie fuer Transfer-Mode) --- */
  --bs-att-dep-action-transfer-color:   var(--bs-primary);

  /* --- Dae-Discover-Bar / Dae-Analyze-Ok (DepartmentExplorer Discover-Wizard) --- */
  --bs-dae-discover-bar-bg:             var(--bs-bg-subtle);
  --bs-dae-analyze-ok-bg:               rgba(16, 185, 129, 0.10);
  --bs-dae-analyze-ok-fg:               #047857;

  /* --- Tnt-Btn text-color on Accent (warning/success/accent Buttons im Tenant-Modal) ---
       Light: Navy fuer Kontrast auf Amber/Emerald. Dark: slate-900 (etwas dunkler). */
  --bs-tnt-btn-color-on-accent:         #1A2B3C;

  /* --- Text --- */
  --bs-fg:               #0f172a;
  --bs-fg-muted:         #475569;
  --bs-fg-subtle:        #64748b;

  /* --- Rahmen --- */
  --bs-border:           #e2e8f0;
  --bs-border-hover:     #cbd5e1;
  --bs-border-strong:    #94a3b8;

  /* --- Status --- */
  --bs-success:          #10b981;
  --bs-success-soft:     #d1fae5;
  --bs-warning:          #f59e0b;
  --bs-warning-soft:     #fef3c7;
  --bs-danger:           #ef4444;
  --bs-danger-soft:      #fee2e2;
  --bs-info:             #475569;   /* slate-600 — neutral info statt Sky-Blau */
  --bs-info-soft:        #f1f5f9;   /* slate-100 */

  /* --- Typography (Robopult: Outfit für Display + UI, JetBrains Mono für Code) --- */
  --bs-font-sans: 'Outfit', 'Inter', -apple-system, BlinkMacSystemFont, system-ui, 'Segoe UI', sans-serif;
  --bs-font-display: 'Outfit', 'Space Grotesk', 'Inter', -apple-system, system-ui, sans-serif;
  --bs-font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  --bs-text-xs:    11px;
  --bs-text-sm:    12px;
  --bs-text-base:  14px;
  --bs-text-md:    16px;
  --bs-text-lg:    20px;
  --bs-text-xl:    24px;
  --bs-text-2xl:   32px;

  --bs-weight-normal: 400;
  --bs-weight-medium: 500;
  --bs-weight-semibold: 600;
  --bs-weight-bold: 700;

  /* --- Spacing (4px grid) --- */
  --bs-1: 4px;  --bs-2: 8px;  --bs-3: 12px; --bs-4: 16px;
  --bs-5: 20px; --bs-6: 24px; --bs-8: 32px; --bs-10: 40px;
  --bs-12: 48px; --bs-16: 64px;

  /* --- Radii (Robopult Pillow-Scale, matched zur „Digitale Manufaktur"-Vorlage) --- */
  --bs-r-sm:  8px;     /* small chips, mono-tags */
  --bs-r:    12px;     /* default cards, inputs, buttons (rounded-xl) */
  --bs-r-lg: 16px;     /* prominent cards (rounded-2xl) */
  --bs-r-xl: 24px;     /* hero cards, panels (rounded-3xl) */
  --bs-r-2xl: 32px;    /* mega-panels */
  --bs-r-3xl: 48px;    /* hero-section / decorative wrappers (rounded-[3rem]) */
  --bs-r-full: 999px;

  /* --- Shadows --- */
  --bs-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04), 0 1px 3px rgba(15, 23, 42, 0.06);
  --bs-shadow:    0 2px 4px rgba(15, 23, 42, 0.04), 0 4px 16px rgba(15, 23, 42, 0.08);
  --bs-shadow-lg: 0 8px 24px rgba(15, 23, 42, 0.12);
  --bs-shadow-glow: 0 0 0 3px rgba(30,41,59, 0.22);

  /* --- Motion --- */
  --bs-transition:      150ms cubic-bezier(0.4, 0, 0.2, 1);
  --bs-transition-slow: 250ms cubic-bezier(0.16, 1, 0.3, 1);

  /* --- Z-Index --- */
  --bs-z-sidebar: 30;
  --bs-z-banner:  40;
  --bs-z-topbar:  50;
  --bs-z-dialog:  100;
  --bs-z-toast:   200;
}

/* ────── 2. Dark-Theme Overrides (Robopult Atmospheric Slate) ──────────────── */
[data-theme="dark"] {
  --bs-primary:        #cbd5e1;   /* slate-300 — heller Stem für Dark */
  --bs-primary-hover:  #e2e8f0;   /* slate-200 */
  --bs-primary-strong: #f1f5f9;   /* slate-100 */
  --bs-primary-soft:   rgba(203, 213, 225, 0.16);    /* +60% Alpha → tab-btn.active sichtbar */
  --bs-primary-fg:     #0f172a;
  --bs-accent:         #34d399;   /* emerald-400 — heller Akzent für Dark */
  --bs-accent-soft:    rgba(52, 211, 153, 0.16);
  --bs-accent-cyan:    #6ee7b7;   /* emerald-300 */
  --bs-accent-sky:     #94a3b8;   /* slate-400 */

  /* Module-Palette Dark — heller-saturierter, soft mit Alpha statt Pastell */
  --bs-mod-attendant:        #34d399;
  --bs-mod-attendant-soft:   rgba(52, 211, 153, 0.16);
  --bs-mod-voicemail:        #22d3ee;   /* cyan-400 */
  --bs-mod-voicemail-soft:   rgba(34, 211, 238, 0.14);
  --bs-mod-announcements:    #fbbf24;   /* amber-400 */
  --bs-mod-announcements-soft:rgba(251, 191, 36, 0.14);
  --bs-mod-team:             #a78bfa;   /* violet-400 */
  --bs-mod-team-soft:        rgba(167, 139, 250, 0.14);
  --bs-mod-platform:         #94a3b8;   /* slate-400 */
  --bs-mod-platform-soft:    rgba(148, 163, 184, 0.14);

  /* Ticket-Status-Palette Dark — heller-saturierter, Soft mit Alpha statt Pastell */
  --rp-status-open:          #60A5FA;   /* blue-400 */
  --rp-status-open-soft:     rgba(96, 165, 250, 0.16);
  --rp-status-progress:      #A78BFA;   /* violet-400 */
  --rp-status-progress-soft: rgba(167, 139, 250, 0.16);
  --rp-status-snoozed:       #FBBF24;   /* amber-400 */
  --rp-status-snoozed-soft:  rgba(251, 191, 36, 0.16);
  --rp-status-done:          #34D399;   /* emerald-400 */
  --rp-status-done-soft:     rgba(52, 211, 153, 0.16);
  --rp-status-dropped:       #94A3B8;   /* slate-400 */
  --rp-status-dropped-soft:  rgba(148, 163, 184, 0.16);

  --bs-gradient-hero:  radial-gradient(at 30% 20%, rgba(30,41,59,0.4), transparent 50%),
                       radial-gradient(at 70% 80%, rgba(16,185,129,0.10), transparent 50%),
                       linear-gradient(180deg, #0F172A 0%, #1E293B 100%);

  /* Mai 26 V3 — Dark-Mode auf saubere Tailwind-Slate-Werte gehoben.
     Vorher: pitch-dark #060a13 (zu düster, schluckte Icons + soft-Banner).
     Jetzt: slate-900/800/700 — lesbar, Hairline-Borders weiterhin sichtbar. */
  --bs-bg:             #0F172A;   /* slate-900 — Page-BG, deepest */
  --bs-bg-elevated:    #1E293B;   /* slate-800 — Cards, Modals, Topbar, Sidebar */
  --bs-bg-subtle:      #273349;   /* between slate-800/700 — Hover-Surface, sichtbarer Lift */
  --bs-bg-inset:       #0F172A;   /* slate-900 — Inputs/Wells, „eingedrückt" */
  --bs-input-bg:       #0F172A;   /* slate-900 — Inputs setzen sich von slate-800-Cards ab */

  /* --- Auth-Hero (Dark) — slate-800 als Pearl-Dark, Brand-White als Fg --- */
  --bs-hero-bg:                    #1E293B;   /* slate-800 — deutlich heller als Page-BG */
  --bs-hero-fg:                    #F8FAFC;
  --bs-hero-border:                #334155;
  --bs-hero-headline:              #F8FAFC;
  --bs-hero-accent:                #34D399;   /* emerald-400 */
  --bs-hero-subtitle:              #CBD5E1;   /* slate-300 */
  --bs-hero-feature:               #E2E8F0;
  --bs-hero-feature-icon-bg:       rgba(16, 185, 129, 0.12);
  --bs-hero-feature-icon-color:    #34D399;
  --bs-hero-feature-icon-border:   rgba(16, 185, 129, 0.35);
  --bs-hero-footer:                #94A3B8;
  --bs-hero-status-bg:             rgba(248, 250, 252, 0.06);
  --bs-hero-status-border:         rgba(248, 250, 252, 0.14);
  --bs-hero-status-fg:             #CBD5E1;
  --bs-hero-trust-shadow:          rgba(248, 250, 252, 0.18);
  --bs-hero-mark-shadow:           rgba(248, 250, 252, 0.10);
  --bs-hero-grid-line:             rgba(248, 250, 252, 0.06);

  /* Brand-Mark in Dark: invertiert (heller Container, navy Stems) */
  --bs-mark-bg:                    #F1F5F9;
  --bs-mark-fg:                    var(--rp-navy);
  --bs-mark-shadow:                rgba(241, 245, 249, 0.20);

  /* Dash-Hero Glow Dark: staerker */
  --bs-dash-hero-glow-navy:        rgba(30, 41, 59, 0.28);
  --bs-dash-hero-glow-emerald:     rgba(16, 185, 129, 0.22);

  /* Sidebar-Logo Dark: slate-300 fuer Kontrast auf slate-800 */
  --bs-sidebar-logo-fg:            var(--rp-slate-300);

  /* Bento-Card Glass-Morph: nur in Dark sinnvoll (auf hellem BG zu durchscheinend) */
  --bs-bento-bg-overlay:           rgba(255, 255, 255, 0.015);
  --bs-bento-filter:               blur(20px);

  /* Team-Card Hover (Dark: weisses Overlay statt elevated) */
  --bs-team-card-hover-bg:         rgba(255, 255, 255, 0.03);
  --bs-team-card-hover-shadow:     0 8px 24px rgba(0, 0, 0, 0.4);

  /* Att-Bar-Fill Dark: heller Slate-Blue + heller Emerald */
  --bs-att-bar-fill-gradient:           linear-gradient(180deg, #94A3B8, #64748B);
  --bs-att-bar-fill-emerald-gradient:   linear-gradient(180deg, #6EE7B7, #34D399);

  /* Att-Session Outcomes Dark */
  --bs-att-sess-hangup-bg:              rgba(148, 163, 184, 0.16);
  --bs-att-sess-hangup-fg:              #cbd5e1;
  --bs-att-sess-hangup-bar:             #94a3b8;
  --bs-att-sess-default-bg:             rgba(244, 114, 182, 0.16);
  --bs-att-sess-default-fg:             #f9a8d4;
  --bs-att-sess-default-bar:            #f472b6;

  /* Att-KPI-Month-Icon Dark: Slate-300 statt Navy */
  --bs-att-kpi-month-bg:                rgba(148, 163, 184, 0.16);
  --bs-att-kpi-month-fg:                #cbd5e1;

  /* Ti-Icon-Backgrounds Dark: heller-saturierte Variants */
  --bs-ti-icon-teal-bg:                 rgba(45, 212, 191, 0.14);
  --bs-ti-icon-teal-fg:                 #2dd4bf;
  --bs-ti-icon-teal-border:             rgba(13, 148, 136, 0.22);
  --bs-ti-icon-emerald-bg:              rgba(16, 185, 129, 0.18);
  --bs-ti-icon-emerald-fg:              #34d399;
  --bs-ti-icon-emerald-border:          rgba(16, 185, 129, 0.24);
  --bs-ti-icon-danger-bg:               rgba(239, 68, 68, 0.16);
  --bs-ti-icon-danger-fg:               #fca5a5;
  --bs-ti-icon-danger-border:           rgba(239, 68, 68, 0.24);

  /* Ti-Section-Icon-VM Dark: Teal-400 */
  --bs-ti-section-icon-vm:              #2dd4bf;

  /* Ti-Key-Status Dark: heller-saturiert */
  --bs-ti-key-status-ok-bg:             rgba(16,185,129,0.18);
  --bs-ti-key-status-ok-fg:             #6ee7b7;
  --bs-ti-key-status-fallback-bg:       rgba(245,158,11,0.18);
  --bs-ti-key-status-fallback-fg:       #fcd34d;
  --bs-ti-key-status-missing-bg:        rgba(239,68,68,0.16);
  --bs-ti-key-status-missing-fg:        #fca5a5;

  /* Bundle-Unlock-Chip Dark: Slate-Alpha statt White-Alpha */
  --bs-bundle-unlock-active-bg:         rgba(30,41,59, 0.18);

  /* Tu-Feat-Row Hover Dark */
  --bs-tu-feat-row-hover-bg:            rgba(255, 255, 255, 0.025);

  /* Ann-Banner Live Dark */
  --bs-ann-banner-live-bg:              rgba(16, 185, 129, 0.12);
  --bs-ann-banner-live-border:          rgba(16, 185, 129, 0.35);

  /* Modsec-Att-Card Dark */
  --bs-modsec-att-card-bg:              rgba(255, 255, 255, 0.02);
  --bs-modsec-att-card-border:          rgba(255, 255, 255, 0.08);
  --bs-modsec-att-card-gradient:        linear-gradient(135deg, rgba(30,41,59,0.12), rgba(16,185,129,0.10));
  --bs-modsec-att-card-border-color:    rgba(30,41,59, 0.3);

  /* Att-Test-Pending/Error Dark */
  --bs-att-test-pending-bg:             rgba(245,158,11,0.10);
  --bs-att-test-pending-fg:             #fcd34d;
  --bs-att-test-error-bg:               rgba(239,68,68,0.10);
  --bs-att-test-error-fg:               #fca5a5;

  /* Att-Ext-Presets-Section Dark */
  --bs-att-ext-presets-bg:              rgba(255, 255, 255, 0.02);
  --bs-att-ext-presets-gradient:        linear-gradient(135deg, rgba(30,41,59,0.10), rgba(16,185,129,0.06));

  /* Dae-Preset-Banner Dark */
  --bs-dae-preset-banner-bg:            rgba(16, 185, 129, 0.12);
  --bs-dae-preset-banner-border:        rgba(16, 185, 129, 0.32);
  --bs-dae-preset-banner-gradient:      linear-gradient(135deg, rgba(30,41,59,0.12), rgba(16,185,129,0.08));

  /* Dash2-KPI Hover Dark */
  --bs-dash2-kpi-hover-shadow:          0 8px 24px rgba(0, 0, 0, 0.4);
  --bs-dash2-kpi-hover-box-shadow:      0 12px 32px -16px rgba(0,0,0,0.4);

  /* Dash2-Icon-{vm,att,ann} Dark */
  --bs-dash2-icon-bg:                   rgba(255, 255, 255, 0.04);
  --bs-dash2-icon-shadow:               0 4px 14px -4px rgba(16, 185, 129, 0.40);

  /* Dash-Att-Header Dark */
  --bs-dash-att-header-bg:              rgba(255, 255, 255, 0.02);
  --bs-dash-att-header-border:          rgba(255, 255, 255, 0.08);
  --bs-dash-att-header-gradient:        linear-gradient(90deg, rgba(30,41,59,0.1), rgba(16,185,129,0.06));

  /* Dae-Explainer Dark */
  --bs-dae-explainer-bg:                rgba(255, 255, 255, 0.02);
  --bs-dae-explainer-gradient:          linear-gradient(135deg, rgba(30,41,59,0.1), rgba(16,185,129,0.06));
  --bs-dae-explainer-border:            rgba(30,41,59,0.2);

  /* Dad-Output-Row Active Dark */
  --bs-dad-output-active-bg:            rgba(16, 185, 129, 0.12);
  --bs-dad-output-active-border:        rgba(16, 185, 129, 0.32);
  --bs-dad-output-row-active-bg:        rgba(30,41,59,0.08);

  /* Dad-Crm-Section / Att-Dep-Crm-Line / Att-Msg-Crm-Badge Dark */
  --bs-dad-crm-section-bg:              rgba(255, 255, 255, 0.02);
  --bs-dad-crm-section-active-bg:       rgba(30,41,59,0.08);
  --bs-dad-crm-section-active-border:   rgba(30,41,59,0.18);
  --bs-att-dep-crm-line-color:          #CBD5E1;
  --bs-att-dep-crm-line-bg:             rgba(30,41,59,0.08);
  --bs-att-msg-crm-badge-bg:            rgba(16,185,129,0.12);
  --bs-att-msg-crm-badge-fg:            #6ee7b7;
  --bs-dam-sync-block-bg:               rgba(255, 255, 255, 0.02);
  --bs-dam-sync-block-gradient:         linear-gradient(135deg, rgba(16,185,129,0.08), var(--bs-bg-subtle));
  --bs-dam-sync-block-border:           rgba(16,185,129,0.4);

  /* Dad-Mode-Card Active Dark */
  --bs-dad-mode-active-bg:              var(--bs-primary-soft);
  --bs-dad-mode-active-icon-bg:         rgba(255, 255, 255, 0.06);
  --bs-dad-mode-active-icon-fg:         #CBD5E1;
  --bs-dad-mode-card-active-bg:         rgba(30,41,59,0.12);
  --bs-dad-mode-card-active-icon-bg:    var(--bs-bg-elevated);

  /* Att-Dep-Mode-Transfer/Ticket Dark */
  --bs-att-dep-mode-transfer-bg:        rgba(255,255,255,0.06);
  --bs-att-dep-mode-transfer-fg:        var(--bs-fg);
  --bs-att-dep-mode-ticket-bg:          rgba(245,158,11,0.15);
  --bs-att-dep-mode-ticket-fg:          #fcd34d;

  /* Att-Dep-Action-Transfer Dark */
  --bs-att-dep-action-transfer-color:   #93C5FD;
  --bs-att-dep-action-transfer-bg:      rgba(255,255,255,0.04);

  /* Dae-Discover-Bar / Dae-Analyze-Ok Dark */
  --bs-dae-discover-bar-bg:             rgba(255, 255, 255, 0.04);
  --bs-dae-analyze-ok-bg:               rgba(16, 185, 129, 0.16);
  --bs-dae-analyze-ok-fg:               #6EE7B7;
  --bs-dae-discover-bar-gradient:       linear-gradient(135deg, rgba(30,41,59,0.1), rgba(16,185,129,0.06));
  --bs-dae-discover-bar-border:         rgba(30,41,59,0.2);
  --bs-dae-analyze-ok-bg-soft:          rgba(16,185,129,0.08);
  --bs-dae-analyze-fail-bg-soft:        rgba(239,68,68,0.08);

  /* Tnt-Btn text-color on Accent Dark */
  --bs-tnt-btn-color-on-accent:         var(--rp-slate-900);

  --bs-fg:             #F1F5F9;   /* slate-100 — hoher Kontrast */
  --bs-fg-muted:       #CBD5E1;   /* slate-300 — sekundäre Texte, Icon-Default */
  --bs-fg-subtle:      #94A3B8;   /* slate-400 — Caption, Meta */

  --bs-border:         #334155;   /* slate-700 — deutliche Hairline */
  --bs-border-hover:   #475569;   /* slate-600 */
  --bs-border-strong:  #64748B;   /* slate-500 */

  /* Status-Foregrounds in Dark hochziehen — Light-Werte (z.B. emerald-500 #10b981)
     wirken auf dem dunklen BG zu satt; -400-Varianten lesbarer + freundlicher. */
  --bs-success:        #34D399;   /* emerald-400 */
  --bs-warning:        #FBBF24;   /* amber-400 */
  --bs-danger:         #F87171;   /* red-400 */
  --bs-info:           #94A3B8;   /* slate-400 */

  --bs-success-soft:   rgba(16, 185, 129, 0.18);
  --bs-warning-soft:   rgba(245, 158, 11, 0.18);
  --bs-danger-soft:    rgba(239, 68, 68, 0.18);
  --bs-info-soft:      rgba(148, 163, 184, 0.16);

  --bs-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
  --bs-shadow:    0 4px 12px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
  --bs-shadow-lg: 0 20px 40px -20px rgba(0, 0, 0, 0.6);
  --bs-shadow-glow: 0 0 0 3px rgba(52, 211, 153, 0.28);

  --bs-glow-indigo:    radial-gradient(circle at 30% 30%, rgba(30,41,59,0.32), transparent 60%);
  --bs-glow-purple:    radial-gradient(circle at 70% 70%, rgba(16,185,129,0.18), transparent 60%);
}

/* Wenn Theme auf 'auto' steht (oder nicht gesetzt): prefers-color-scheme.
   WICHTIG: Muss identisch sein zu [data-theme="dark"] oben — sonst sieht der User
   ein anderes Erscheinungsbild zwischen "Theme=Dark" und "Theme=Auto + System=Dark". */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bs-primary:        #cbd5e1;   /* slate-300 — heller Stem für Dark */
    --bs-primary-hover:  #e2e8f0;   /* slate-200 */
    --bs-primary-strong: #f1f5f9;   /* slate-100 */
    --bs-primary-soft:   rgba(203, 213, 225, 0.16);    /* +60% Alpha → tab-btn.active sichtbar */
    --bs-primary-fg:     #0f172a;
    --bs-accent:         #34d399;   /* emerald-400 — heller Akzent für Dark */
    --bs-accent-soft:    rgba(52, 211, 153, 0.16);
    --bs-accent-cyan:    #6ee7b7;   /* emerald-300 */
    --bs-accent-sky:     #94a3b8;   /* slate-400 */

    /* Module-Palette Dark — heller-saturierter, soft mit Alpha statt Pastell */
    --bs-mod-attendant:        #34d399;
    --bs-mod-attendant-soft:   rgba(52, 211, 153, 0.16);
    --bs-mod-voicemail:        #22d3ee;   /* cyan-400 */
    --bs-mod-voicemail-soft:   rgba(34, 211, 238, 0.14);
    --bs-mod-announcements:    #fbbf24;   /* amber-400 */
    --bs-mod-announcements-soft:rgba(251, 191, 36, 0.14);
    --bs-mod-team:             #a78bfa;   /* violet-400 */
    --bs-mod-team-soft:        rgba(167, 139, 250, 0.14);
    --bs-mod-platform:         #94a3b8;   /* slate-400 */
    --bs-mod-platform-soft:    rgba(148, 163, 184, 0.14);

    /* Ticket-Status-Palette Dark — heller-saturierter, Soft mit Alpha statt Pastell */
    --rp-status-open:          #60A5FA;   /* blue-400 */
    --rp-status-open-soft:     rgba(96, 165, 250, 0.16);
    --rp-status-progress:      #A78BFA;   /* violet-400 */
    --rp-status-progress-soft: rgba(167, 139, 250, 0.16);
    --rp-status-snoozed:       #FBBF24;   /* amber-400 */
    --rp-status-snoozed-soft:  rgba(251, 191, 36, 0.16);
    --rp-status-done:          #34D399;   /* emerald-400 */
    --rp-status-done-soft:     rgba(52, 211, 153, 0.16);
    --rp-status-dropped:       #94A3B8;   /* slate-400 */
    --rp-status-dropped-soft:  rgba(148, 163, 184, 0.16);

    --bs-gradient-hero:  radial-gradient(at 30% 20%, rgba(30,41,59,0.4), transparent 50%),
                         radial-gradient(at 70% 80%, rgba(16,185,129,0.10), transparent 50%),
                         linear-gradient(180deg, #0F172A 0%, #1E293B 100%);

    --bs-bg:             #0F172A;   /* slate-900 — Page-BG, deepest */
    --bs-bg-elevated:    #1E293B;   /* slate-800 — Cards, Modals, Topbar, Sidebar */
    --bs-bg-subtle:      #273349;   /* between slate-800/700 — Hover-Surface, sichtbarer Lift */
    --bs-bg-inset:       #0F172A;   /* slate-900 — Inputs/Wells, „eingedrückt" */
    --bs-input-bg:       #0F172A;   /* slate-900 — Inputs setzen sich von slate-800-Cards ab */

    /* --- Auth-Hero (Dark) — slate-800 als Pearl-Dark, Brand-White als Fg --- */
    --bs-hero-bg:                    #1E293B;
    --bs-hero-fg:                    #F8FAFC;
    --bs-hero-border:                #334155;
    --bs-hero-headline:              #F8FAFC;
    --bs-hero-accent:                #34D399;
    --bs-hero-subtitle:              #CBD5E1;
    --bs-hero-feature:               #E2E8F0;
    --bs-hero-feature-icon-bg:       rgba(16, 185, 129, 0.12);
    --bs-hero-feature-icon-color:    #34D399;
    --bs-hero-feature-icon-border:   rgba(16, 185, 129, 0.35);
    --bs-hero-footer:                #94A3B8;
    --bs-hero-status-bg:             rgba(248, 250, 252, 0.06);
    --bs-hero-status-border:         rgba(248, 250, 252, 0.14);
    --bs-hero-status-fg:             #CBD5E1;
    --bs-hero-trust-shadow:          rgba(248, 250, 252, 0.18);
    --bs-hero-mark-shadow:           rgba(248, 250, 252, 0.10);
    --bs-hero-grid-line:             rgba(248, 250, 252, 0.06);

    /* Brand-Mark in Dark: invertiert */
    --bs-mark-bg:                    #F1F5F9;
    --bs-mark-fg:                    var(--rp-navy);
    --bs-mark-shadow:                rgba(241, 245, 249, 0.20);

    /* Dash-Hero Glow Dark: staerker */
    --bs-dash-hero-glow-navy:        rgba(30, 41, 59, 0.28);
    --bs-dash-hero-glow-emerald:     rgba(16, 185, 129, 0.22);

    /* Sidebar-Logo Dark: slate-300 fuer Kontrast auf slate-800 */
    --bs-sidebar-logo-fg:            var(--rp-slate-300);

    /* Bento-Card Glass-Morph: nur in Dark sinnvoll */
    --bs-bento-bg-overlay:           rgba(255, 255, 255, 0.015);
    --bs-bento-filter:               blur(20px);

    /* Team-Card Hover Dark */
    --bs-team-card-hover-bg:         rgba(255, 255, 255, 0.03);
    --bs-team-card-hover-shadow:     0 8px 24px rgba(0, 0, 0, 0.4);

    /* Att-Bar-Fill Dark */
    --bs-att-bar-fill-gradient:           linear-gradient(180deg, #94A3B8, #64748B);
    --bs-att-bar-fill-emerald-gradient:   linear-gradient(180deg, #6EE7B7, #34D399);

    /* Att-Session Outcomes Dark */
    --bs-att-sess-hangup-bg:              rgba(148, 163, 184, 0.16);
    --bs-att-sess-hangup-fg:              #cbd5e1;
    --bs-att-sess-hangup-bar:             #94a3b8;
    --bs-att-sess-default-bg:             rgba(244, 114, 182, 0.16);
    --bs-att-sess-default-fg:             #f9a8d4;
    --bs-att-sess-default-bar:            #f472b6;

    /* Att-KPI-Month-Icon Dark */
    --bs-att-kpi-month-bg:                rgba(148, 163, 184, 0.16);
    --bs-att-kpi-month-fg:                #cbd5e1;

    /* Ti-Icon-Backgrounds Dark */
    --bs-ti-icon-teal-bg:                 rgba(45, 212, 191, 0.14);
    --bs-ti-icon-teal-fg:                 #2dd4bf;
    --bs-ti-icon-teal-border:             rgba(13, 148, 136, 0.22);
    --bs-ti-icon-emerald-bg:              rgba(16, 185, 129, 0.18);
    --bs-ti-icon-emerald-fg:              #34d399;
    --bs-ti-icon-emerald-border:          rgba(16, 185, 129, 0.24);
    --bs-ti-icon-danger-bg:               rgba(239, 68, 68, 0.16);
    --bs-ti-icon-danger-fg:               #fca5a5;
    --bs-ti-icon-danger-border:           rgba(239, 68, 68, 0.24);

    /* Ti-Section-Icon-VM Dark */
    --bs-ti-section-icon-vm:              #2dd4bf;

    /* Ti-Key-Status Dark */
    --bs-ti-key-status-ok-bg:             rgba(16,185,129,0.18);
    --bs-ti-key-status-ok-fg:             #6ee7b7;
    --bs-ti-key-status-fallback-bg:       rgba(245,158,11,0.18);
    --bs-ti-key-status-fallback-fg:       #fcd34d;
    --bs-ti-key-status-missing-bg:        rgba(239,68,68,0.16);
    --bs-ti-key-status-missing-fg:        #fca5a5;

    /* Bundle-Unlock-Chip Dark */
    --bs-bundle-unlock-active-bg:         rgba(30,41,59, 0.18);

    /* Tu-Feat-Row Hover Dark */
    --bs-tu-feat-row-hover-bg:            rgba(255, 255, 255, 0.025);

    /* Ann-Banner Live Dark */
    --bs-ann-banner-live-bg:              rgba(16, 185, 129, 0.12);
    --bs-ann-banner-live-border:          rgba(16, 185, 129, 0.35);

    /* Modsec-Att-Card Dark */
    --bs-modsec-att-card-bg:              rgba(255, 255, 255, 0.02);
    --bs-modsec-att-card-border:          rgba(255, 255, 255, 0.08);
    --bs-modsec-att-card-gradient:        linear-gradient(135deg, rgba(30,41,59,0.12), rgba(16,185,129,0.10));
    --bs-modsec-att-card-border-color:    rgba(30,41,59, 0.3);

    /* Att-Test-Pending/Error Dark */
    --bs-att-test-pending-bg:             rgba(245,158,11,0.10);
    --bs-att-test-pending-fg:             #fcd34d;
    --bs-att-test-error-bg:               rgba(239,68,68,0.10);
    --bs-att-test-error-fg:               #fca5a5;

    /* Att-Ext-Presets-Section Dark */
    --bs-att-ext-presets-bg:              rgba(255, 255, 255, 0.02);
    --bs-att-ext-presets-gradient:        linear-gradient(135deg, rgba(30,41,59,0.10), rgba(16,185,129,0.06));

    /* Dae-Preset-Banner Dark */
    --bs-dae-preset-banner-bg:            rgba(16, 185, 129, 0.12);
    --bs-dae-preset-banner-border:        rgba(16, 185, 129, 0.32);
    --bs-dae-preset-banner-gradient:      linear-gradient(135deg, rgba(30,41,59,0.12), rgba(16,185,129,0.08));

    /* Dash2-KPI Hover Dark */
    --bs-dash2-kpi-hover-shadow:          0 8px 24px rgba(0, 0, 0, 0.4);
    --bs-dash2-kpi-hover-box-shadow:      0 12px 32px -16px rgba(0,0,0,0.4);

    /* Dash2-Icon-{vm,att,ann} Dark */
    --bs-dash2-icon-bg:                   rgba(255, 255, 255, 0.04);
    --bs-dash2-icon-shadow:               0 4px 14px -4px rgba(16, 185, 129, 0.40);

    /* Dash-Att-Header Dark */
    --bs-dash-att-header-bg:              rgba(255, 255, 255, 0.02);
    --bs-dash-att-header-border:          rgba(255, 255, 255, 0.08);
    --bs-dash-att-header-gradient:        linear-gradient(90deg, rgba(30,41,59,0.1), rgba(16,185,129,0.06));

    /* Dae-Explainer Dark */
    --bs-dae-explainer-bg:                rgba(255, 255, 255, 0.02);
    --bs-dae-explainer-gradient:          linear-gradient(135deg, rgba(30,41,59,0.1), rgba(16,185,129,0.06));
    --bs-dae-explainer-border:            rgba(30,41,59,0.2);

    /* Dad-Output-Row Active Dark */
    --bs-dad-output-active-bg:            rgba(16, 185, 129, 0.12);
    --bs-dad-output-active-border:        rgba(16, 185, 129, 0.32);
    --bs-dad-output-row-active-bg:        rgba(30,41,59,0.08);

    /* Dad-Crm-Section / Att-Dep-Crm-Line / Att-Msg-Crm-Badge Dark */
    --bs-dad-crm-section-bg:              rgba(255, 255, 255, 0.02);
    --bs-dad-crm-section-active-bg:       rgba(30,41,59,0.08);
    --bs-dad-crm-section-active-border:   rgba(30,41,59,0.18);
    --bs-att-dep-crm-line-color:          #CBD5E1;
    --bs-att-dep-crm-line-bg:             rgba(30,41,59,0.08);
    --bs-att-msg-crm-badge-bg:            rgba(16,185,129,0.12);
    --bs-att-msg-crm-badge-fg:            #6ee7b7;
    --bs-dam-sync-block-bg:               rgba(255, 255, 255, 0.02);
    --bs-dam-sync-block-gradient:         linear-gradient(135deg, rgba(16,185,129,0.08), var(--bs-bg-subtle));
    --bs-dam-sync-block-border:           rgba(16,185,129,0.4);

    /* Dad-Mode-Card Active Dark */
    --bs-dad-mode-active-bg:              var(--bs-primary-soft);
    --bs-dad-mode-active-icon-bg:         rgba(255, 255, 255, 0.06);
    --bs-dad-mode-active-icon-fg:         #CBD5E1;
    --bs-dad-mode-card-active-bg:         rgba(30,41,59,0.12);
    --bs-dad-mode-card-active-icon-bg:    var(--bs-bg-elevated);

    /* Att-Dep-Mode-Transfer/Ticket Dark */
    --bs-att-dep-mode-transfer-bg:        rgba(255,255,255,0.06);
    --bs-att-dep-mode-transfer-fg:        var(--bs-fg);
    --bs-att-dep-mode-ticket-bg:          rgba(245,158,11,0.15);
    --bs-att-dep-mode-ticket-fg:          #fcd34d;

    /* Att-Dep-Action-Transfer Dark */
    --bs-att-dep-action-transfer-color:   #93C5FD;
    --bs-att-dep-action-transfer-bg:      rgba(255,255,255,0.04);

    /* Dae-Discover-Bar / Dae-Analyze-Ok Dark */
    --bs-dae-discover-bar-bg:             rgba(255, 255, 255, 0.04);
    --bs-dae-analyze-ok-bg:               rgba(16, 185, 129, 0.16);
    --bs-dae-analyze-ok-fg:               #6EE7B7;
    --bs-dae-discover-bar-gradient:       linear-gradient(135deg, rgba(30,41,59,0.1), rgba(16,185,129,0.06));
    --bs-dae-discover-bar-border:         rgba(30,41,59,0.2);
    --bs-dae-analyze-ok-bg-soft:          rgba(16,185,129,0.08);
    --bs-dae-analyze-fail-bg-soft:        rgba(239,68,68,0.08);

    /* Tnt-Btn text-color on Accent Dark */
    --bs-tnt-btn-color-on-accent:         var(--rp-slate-900);

    --bs-fg:             #F1F5F9;   /* slate-100 — hoher Kontrast */
    --bs-fg-muted:       #CBD5E1;   /* slate-300 — sekundäre Texte, Icon-Default */
    --bs-fg-subtle:      #94A3B8;   /* slate-400 — Caption, Meta */

    --bs-border:         #334155;   /* slate-700 — deutliche Hairline */
    --bs-border-hover:   #475569;   /* slate-600 */
    --bs-border-strong:  #64748B;   /* slate-500 */

    /* Status-Foregrounds in Dark hochziehen — Light-Werte (z.B. emerald-500 #10b981)
       wirken auf dem dunklen BG zu satt; -400-Varianten lesbarer + freundlicher. */
    --bs-success:        #34D399;   /* emerald-400 */
    --bs-warning:        #FBBF24;   /* amber-400 */
    --bs-danger:         #F87171;   /* red-400 */
    --bs-info:           #94A3B8;   /* slate-400 */

    --bs-success-soft:   rgba(16, 185, 129, 0.18);
    --bs-warning-soft:   rgba(245, 158, 11, 0.18);
    --bs-danger-soft:    rgba(239, 68, 68, 0.18);
    --bs-info-soft:      rgba(148, 163, 184, 0.16);

    --bs-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
    --bs-shadow:    0 4px 12px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
    --bs-shadow-lg: 0 20px 40px -20px rgba(0, 0, 0, 0.6);
    --bs-shadow-glow: 0 0 0 3px rgba(52, 211, 153, 0.28);

    --bs-glow-indigo:    radial-gradient(circle at 30% 30%, rgba(30,41,59,0.32), transparent 60%);
    --bs-glow-purple:    radial-gradient(circle at 70% 70%, rgba(16,185,129,0.18), transparent 60%);
  }
}

/* ────── 3. Legacy-Aliase (rueckwaerts-kompatibel) ──────────────────── */
:root {
  --primary:         var(--bs-primary);
  --primary-dark:    var(--bs-primary-hover);
  --accent:          var(--bs-accent-sky);
  --success:         var(--bs-success);
  --warning:         var(--bs-warning);
  --danger:          var(--bs-danger);
  /* --gradient/-soft: Legacy-Aliases. War früher Indigo→Purple-Verlauf,
     jetzt fix Emerald für saubere Modul-Avatare/Badges. Soft bleibt Hero-Gradient. */
  --gradient:        var(--rp-emerald-500);
  --gradient-soft:   var(--bs-gradient-hero);
  --text:            var(--bs-fg);
  --text-secondary:  var(--bs-fg-muted);
  --text-muted:      var(--bs-fg-subtle);
  --border:          var(--bs-border);
  --border-hover:    var(--bs-border-hover);
  --bg:              var(--bs-bg);
  --bg-subtle:       var(--bs-bg-subtle);
  --card:            var(--bs-bg-elevated);
  --radius-sm:       var(--bs-r-sm);
  --radius:          var(--bs-r);
  --radius-lg:       var(--bs-r-lg);
  --radius-xl:       var(--bs-r-xl);
  --shadow-sm:       var(--bs-shadow-sm);
  --shadow:          var(--bs-shadow);
  --shadow-lg:       var(--bs-shadow-lg);
  --shadow-glow:     var(--bs-shadow-glow);
  --transition:      var(--bs-transition);
}

/* ────── 4. Typography / Base-Elements ──────────────────────────────── */

html { height: 100%; background: var(--bs-bg); }
body { height: 100%; }

body {
  font-family: var(--bs-font-sans);
  background: var(--bs-bg);
  color: var(--bs-fg);
  font-size: var(--bs-text-base);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background-color var(--bs-transition), color var(--bs-transition);
}

.view { min-height: 100vh; background: var(--bs-bg); color: var(--bs-fg); }

/* Focus-Visible — sichtbar ueberall */
:focus-visible {
  outline: none;
  box-shadow: var(--bs-shadow-glow);
  border-radius: var(--bs-r-sm);
}

/* Selection */
::selection { background: var(--bs-primary-soft); color: var(--bs-fg); }

/* Scrollbars (dezent) */
* { scrollbar-width: thin; scrollbar-color: var(--bs-border-hover) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { background: var(--bs-border-hover); border-radius: 10px; border: 2px solid var(--bs-bg); }
*::-webkit-scrollbar-thumb:hover { background: var(--bs-border-strong); }

/* ────── 5. Base-Komponenten (bs-*) ─────────────────────────────────── */

/* --- Brand Logo (inline usage) --- */
.bs-logo {
  width: 36px; height: 36px;
  display: inline-block;
  vertical-align: middle;
}
.bs-brand {
  display: inline-flex; align-items: center; gap: var(--bs-2);
  font-family: var(--bs-font-sans);
  font-weight: var(--bs-weight-bold);
  font-size: var(--bs-text-lg);
  letter-spacing: -0.01em;
  color: var(--bs-fg);
  text-decoration: none;
}
.bs-brand .bs-brand-accent { color: var(--bs-primary); }

/* --- Button --- */
.bs-btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: var(--bs-2);
  height: 36px;
  padding: 0 var(--bs-4);
  border: 1px solid transparent;
  border-radius: var(--bs-r-sm);
  font-family: inherit;
  font-size: var(--bs-text-base);
  font-weight: var(--bs-weight-medium);
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
  user-select: none;
  transition: all var(--bs-transition);
  text-decoration: none;  /* Phase 19g: a.bs-btn → kein Underline */
}
.bs-btn:hover { text-decoration: none; }
.bs-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.bs-btn svg { flex-shrink: 0; }

.bs-btn-primary {
  background: var(--bs-primary);
  color: var(--bs-primary-fg);
}
.bs-btn-primary:hover:not(:disabled) {
  background: var(--bs-primary-hover);
}

.bs-btn-secondary {
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  border-color: var(--bs-border);
}
.bs-btn-secondary:hover:not(:disabled) {
  background: var(--bs-bg-subtle);
  border-color: var(--bs-border-hover);
}

.bs-btn-ghost {
  background: transparent;
  color: var(--bs-fg-muted);
}
.bs-btn-ghost:hover:not(:disabled) {
  background: var(--bs-bg-subtle);
  color: var(--bs-fg);
}

/* Tenant-User-Trash — ghost-Btn mit Danger-Hover (statt inline color:#dc2626) */
.tenant-user-del { color: var(--bs-fg-muted); }
.tenant-user-del:hover:not(:disabled) {
  background: var(--bs-danger-soft);
  color: var(--bs-danger);
}

.bs-btn-danger {
  background: transparent;
  color: var(--bs-danger);
  border-color: var(--bs-danger-soft);
}
.bs-btn-danger:hover:not(:disabled) {
  background: var(--bs-danger-soft);
  border-color: var(--bs-danger);
}

.bs-btn-sm { height: 28px; padding: 0 var(--bs-3); font-size: var(--bs-text-sm); }
.bs-btn-lg { height: 44px; padding: 0 var(--bs-5); font-size: var(--bs-text-md); }
.bs-btn-block { width: 100%; }
.bs-btn-icon {
  width: 36px; padding: 0;
  border-color: var(--bs-border);
  background: var(--bs-bg-elevated);
  color: var(--bs-fg-muted);
}
.bs-btn-icon:hover:not(:disabled) { background: var(--bs-bg-subtle); color: var(--bs-fg); border-color: var(--bs-border-hover); }
.bs-btn-icon.bs-btn-sm { width: 28px; }

/* --- Card --- */
.bs-card {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  padding: var(--bs-6);
}
.bs-card-interactive {
  cursor: pointer;
  transition: all var(--bs-transition);
}
.bs-card-interactive:hover {
  border-color: var(--bs-border-hover);
  box-shadow: var(--bs-shadow-sm);
  transform: translateY(-1px);
}
.bs-card-compact { padding: var(--bs-4); }

/* --- Stat-Card --- */
.bs-stat-card {
  display: flex; align-items: center; gap: var(--bs-3);
  padding: var(--bs-4) var(--bs-5);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  transition: all var(--bs-transition);
}
.bs-stat-card:hover { border-color: var(--bs-border-hover); }
.bs-stat-card-icon {
  width: 40px; height: 40px;
  border-radius: var(--bs-r-sm);
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.bs-stat-card-value {
  font-size: var(--bs-text-xl);
  font-weight: var(--bs-weight-bold);
  color: var(--bs-fg);
  line-height: 1.1;
}
.bs-stat-card-label {
  font-size: var(--bs-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--bs-fg-muted);
  font-weight: var(--bs-weight-semibold);
  margin-top: 2px;
}

/* --- Form --- */
.bs-field { display: flex; flex-direction: column; gap: var(--bs-2); margin-bottom: var(--bs-4); }
.bs-label {
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg-muted);
}
.bs-input, .bs-textarea, .bs-select {
  width: 100%;
  height: 38px;
  padding: 0 var(--bs-3);
  /* --bs-input-bg: in Light = weiss, in Dark = slate-900 (heller Lift gegen slate-800-Card) */
  background: var(--bs-input-bg);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg);
  font-family: inherit;
  font-size: var(--bs-text-base);
  transition: all var(--bs-transition);
}
.bs-input:hover, .bs-textarea:hover, .bs-select:hover {
  border-color: var(--bs-border-hover);
}
.bs-input:focus, .bs-textarea:focus, .bs-select:focus {
  outline: none;
  border-color: var(--bs-primary);
  box-shadow: var(--bs-shadow-glow);
}

/* ═══════════════════════════════════════════════════════════════════════
   MOBILE — Auto-Zoom auf iOS verhindern
   iOS Safari zoomt beim Fokus in jedes Input < 16px font-size — das fühlt
   sich nicht-app-mäßig an. Drei Schutzschichten:

   1. text-size-adjust verhindert dass iOS automatisch Body-Text vergrößert
   2. font-size 16px auf alle Form-Controls (das Hauptkriterium von Safari)
   3. Inline-style-Override (fängt JS-generierte Inputs mit `style="font-size:..."`)

   Breakpoint: <= 1024px — deckt alle iPhones (Portrait + Landscape) UND
   iPad mini portrait ab. Eine Tablet/Desktop-Optimierung folgt erst > 1024.
   ════════════════════════════════════════════════════════════════════ */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
@media (max-width: 1024px) {
  /* Schicht 2 — alle Form-Controls auf 16px, egal welche Klasse/Type. */
  .bs-input,
  .bs-textarea,
  .bs-select,
  .tnt-input,
  .tnt-textarea,
  .tnt-select,
  input,
  textarea,
  select {
    font-size: 16px !important;
  }
  /* Schicht 3 — Inline-Style-Override mit zusätzlicher Selector-Priorität.
     `[style]`-Attribut-Selector verbessert die Specificity, damit unsere
     Regel auch lokal gesetzte font-size überschreibt. */
  input[style],
  textarea[style],
  select[style],
  input[style*="font-size"],
  textarea[style*="font-size"],
  select[style*="font-size"] {
    font-size: 16px !important;
  }
}
.bs-textarea { height: auto; min-height: 88px; padding: var(--bs-3); resize: vertical; line-height: 1.5; }
.bs-select {
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='1,1 5,5 9,1'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--bs-3) center;
  padding-right: var(--bs-8);
}
.bs-input[disabled], .bs-textarea[disabled], .bs-select[disabled] { opacity: 0.5; cursor: not-allowed; }
.bs-input::placeholder, .bs-textarea::placeholder { color: var(--bs-fg-subtle); }
.bs-help { font-size: var(--bs-text-xs); color: var(--bs-fg-subtle); margin-top: -2px; }
.bs-error-text { font-size: var(--bs-text-sm); color: var(--bs-danger); min-height: 18px; }

/* --- Badge / Pill --- */
.bs-badge {
  display: inline-flex; align-items: center; gap: var(--bs-1);
  padding: 2px var(--bs-2);
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-semibold);
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.bs-badge-primary { background: var(--bs-primary-soft); color: var(--bs-primary); }
.bs-badge-success { background: var(--bs-success-soft); color: var(--bs-success); }
.bs-badge-warning { background: var(--bs-warning-soft); color: var(--bs-warning); }
.bs-badge-danger  { background: var(--bs-danger-soft);  color: var(--bs-danger);  }

.bs-pill {
  display: inline-flex; align-items: center; gap: var(--bs-1);
  padding: var(--bs-1) var(--bs-3);
  border-radius: var(--bs-r-full);
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-medium);
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-muted);
}
.bs-pill-primary { background: var(--bs-primary-soft); color: var(--bs-primary); }
.bs-pill-success { background: var(--bs-success-soft); color: var(--bs-success); }

/* --- Switch --- */
.bs-switch {
  position: relative;
  width: 40px; height: 22px;
  flex-shrink: 0;
  display: inline-block;
}
.bs-switch input { opacity: 0; width: 0; height: 0; position: absolute; }
.bs-switch-slider {
  position: absolute; inset: 0;
  background: var(--bs-border-hover);
  border-radius: var(--bs-r-full);
  cursor: pointer;
  transition: background var(--bs-transition);
}
.bs-switch-slider::before {
  content: "";
  position: absolute;
  left: 3px; top: 3px;
  width: 16px; height: 16px;
  background: white;
  border-radius: 50%;
  box-shadow: var(--bs-shadow-sm);
  transition: transform var(--bs-transition);
}
.bs-switch input:checked + .bs-switch-slider { background: var(--bs-primary); }
.bs-switch input:checked + .bs-switch-slider::before { transform: translateX(18px); }
.bs-switch input:focus-visible + .bs-switch-slider { box-shadow: var(--bs-shadow-glow); }

/* --- Empty / Loading / Error States --- */
.bs-empty-state {
  text-align: center;
  padding: var(--bs-10) var(--bs-5);
  background: var(--bs-bg-elevated);
  border: 1px dashed var(--bs-border);
  border-radius: var(--bs-r-lg);
}
.bs-empty-icon {
  width: 56px; height: 56px;
  margin: 0 auto var(--bs-3);
  display: flex; align-items: center; justify-content: center;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-full);
  color: var(--bs-fg-muted);
}
.bs-empty-title {
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  margin-bottom: var(--bs-1);
}
.bs-empty-text { font-size: var(--bs-text-sm); color: var(--bs-fg-muted); max-width: 340px; margin: 0 auto; }

.bs-loading {
  display: flex; align-items: center; justify-content: center; gap: var(--bs-2);
  padding: var(--bs-10);
  color: var(--bs-fg-muted);
  font-size: var(--bs-text-sm);
}
.bs-spinner {
  width: 18px; height: 18px;
  border: 2px solid var(--bs-border);
  border-top-color: var(--bs-primary);
  border-radius: 50%;
  animation: bs-spin 600ms linear infinite;
}
@keyframes bs-spin { to { transform: rotate(360deg); } }

.bs-error-banner {
  display: flex; align-items: center; gap: var(--bs-3);
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-danger-soft);
  color: var(--bs-danger);
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-sm);
}

/* --- Theme Toggle (Segmented) --- */
.bs-theme-toggle {
  display: inline-flex;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-full);
  padding: 2px;
  gap: 0;
}
.bs-theme-toggle button {
  width: 26px; height: 26px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent;
  border: none;
  border-radius: var(--bs-r-full);
  color: var(--bs-fg-muted);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.bs-theme-toggle button:hover { color: var(--bs-fg); }
.bs-theme-toggle button.active {
  background: var(--bs-bg-elevated);
  color: var(--bs-primary);
  box-shadow: var(--bs-shadow-sm);
}
.bs-theme-toggle button svg { width: 14px; height: 14px; }

/* ═══════ Login (Setup-Hint + Badge — Layout in §10 V4) ═══════════════ */

/* Legacy .view-auth / .login-card / .bg-orbs / .login-title / .login-subtitle
   wurden in V4 (Robopult Split-Screen-Hero) durch §10 ersetzt — siehe ~Z.2467ff.
   Hier bleiben nur die Setup-Hint-Styles, die im Login-Card-Body verwendet werden. */

.setup-hint {
  margin-top: 24px;
  padding: 16px;
  background: rgba(245, 158, 11, 0.08);
  border: 1px solid rgba(245, 158, 11, 0.2);
  border-radius: var(--radius);
  text-align: center;
}

.setup-hint p { color: var(--text-secondary); margin-bottom: 10px; font-size: 13px; }

.badge-new {
  display: inline-block;
  padding: 2px 10px;
  background: var(--gradient);
  color: var(--bs-primary-fg);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.03em;
  margin-bottom: 8px;
}

#setup-box { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--border); }
#setup-box h3 { font-size: 16px; margin-bottom: 16px; }

/* ═══════ Forms ═══════════════════════════════════════════════════════ */

.field { margin-bottom: 16px; }

.field label, label {
  display: block;
  font-size: 13px;
  font-weight: 500;
  color: var(--text-secondary);
  margin-bottom: 6px;
}

input[type="text"], input[type="email"], input[type="password"],
input[type="number"], textarea, select {
  width: 100%;
  padding: 10px 14px;
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  font-size: 14px;
  font-family: inherit;
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  transition: all var(--bs-transition);
}

input:focus, textarea:focus, select:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: var(--shadow-glow);
}

textarea { resize: vertical; min-height: 100px; }

.toggle { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; cursor: pointer; }
.toggle input { width: auto; margin: 0; }
.toggle span { color: var(--text); font-weight: 500; font-size: 14px; }

.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 600px) { .grid-2 { grid-template-columns: 1fr; } }

.form-actions {
  display: flex;
  gap: 8px;
  margin-top: 20px;
  flex-wrap: wrap;
}

.inline-form {
  display: flex;
  gap: 8px;
  padding: 12px;
  background: var(--bg-subtle);
  border-radius: var(--radius);
  margin-top: 10px;
}
.inline-form input, .inline-form select { flex: 1; }

.error {
  color: var(--danger);
  font-size: 13px;
  min-height: 18px;
  margin: 8px 0;
}

/* ═══════ Buttons ═════════════════════════════════════════════════════ */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 16px;
  border: none;
  border-radius: var(--radius-sm);
  font-size: 14px;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  transition: all var(--transition);
  white-space: nowrap;
  user-select: none;
  /* Phase 19g (2026-05-13): Anchor-`.btn`-Elemente (z.B. `<a href="tel:">`)
     erben sonst den Default-Browser-Underline. Buttons sehen unterstrichen
     mit Klick-Optik nicht stimmig aus. */
  text-decoration: none;
}
.btn:hover { text-decoration: none; }

.btn:disabled { opacity: 0.4; cursor: not-allowed; }
.btn svg { flex-shrink: 0; }

.btn-block { width: 100%; }
.btn-sm { padding: 6px 12px; font-size: 13px; }

.btn-primary {
  background: var(--gradient);
  color: var(--bs-primary-fg);
  box-shadow: 0 1px 2px rgba(30,41,59, 0.3);
}
.btn-primary:hover:not(:disabled) {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(30,41,59, 0.4);
}

.btn-secondary {
  background: var(--card);
  color: var(--text);
  border: 1px solid var(--border);
}
.btn-secondary:hover:not(:disabled) {
  border-color: var(--border-hover);
  background: var(--bg-subtle);
}

.btn-ghost {
  background: transparent;
  color: var(--text-secondary);
}
.btn-ghost:hover:not(:disabled) { background: var(--bg-subtle); color: var(--text); }

.btn-danger {
  background: var(--bs-bg-elevated);
  color: var(--bs-danger);
  border: 1px solid var(--bs-danger-soft);
}
.btn-danger:hover:not(:disabled) {
  background: var(--bs-danger-soft);
  border-color: var(--bs-danger);
}

.arrow {
  transition: transform var(--transition);
}
.btn:hover .arrow { transform: translateX(3px); }

/* ═══════ App Layout ══════════════════════════════════════════════════ */

#view-app {
  display: grid;
  grid-template-columns: 260px 1fr;
  min-height: 100vh;
}

.sidebar {
  background: var(--card);
  border-right: 1px solid var(--border);
  padding: 24px 16px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  position: sticky;
  top: 0;
  height: 100vh;
}

.sidebar-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 8px;
  font-weight: 700;
  font-size: 16px;
  letter-spacing: -0.01em;
}

.logo-dot {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: var(--gradient);
  box-shadow: 0 2px 8px rgba(30,41,59, 0.3);
  position: relative;
}
.logo-dot::after {
  content: '';
  position: absolute;
  inset: 6px;
  border-radius: 3px;
  background: white;
  opacity: 0.9;
}

.sidebar-nav { flex: 1; display: flex; flex-direction: column; gap: 2px; }

.tab-btn {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: none;
  background: transparent;
  color: var(--text-secondary);
  font-weight: 500;
  font-size: 14px;
  font-family: inherit;
  cursor: pointer;
  border-radius: var(--radius-sm);
  transition: all var(--transition);
  text-align: left;
}
.tab-btn:hover { background: var(--bg-subtle); color: var(--text); }
.tab-btn.active {
  background: var(--gradient);
  color: var(--bs-primary-fg);
  box-shadow: 0 2px 8px rgba(30,41,59, 0.25);
}

.tab-btn svg { flex-shrink: 0; }

.sidebar-footer {
  border-top: 1px solid var(--border);
  padding-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.user-chip {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px;
}

.avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--gradient);
  color: var(--bs-primary-fg);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: 14px;
  flex-shrink: 0;
}

.user-info { min-width: 0; flex: 1; }
.user-name {
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.user-role {
  font-size: 11px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* ═══════ Content ═════════════════════════════════════════════════════ */

.content {
  padding: 32px;
  max-width: 1400px;
  width: 100%;
}

.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
  gap: 16px;
  flex-wrap: wrap;
}

.page-header h1 {
  font-size: 26px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--text);
}
.page-subtitle {
  color: var(--text-muted);
  font-size: 14px;
  margin-top: 2px;
}

.page-actions { display: flex; gap: 8px; }

/* ═══════ Stats Row ═══════════════════════════════════════════════════ */

.stats-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin-bottom: 24px;
}

.stat-card {
  background: var(--card);
  padding: 16px 20px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: 12px;
  transition: all var(--transition);
}
.stat-card:hover { border-color: var(--border-hover); transform: translateY(-1px); }

/* Phase 19g (2026-05-13): klickbare Stat-Karte — Voicemail-Counter setzen
   Status-Filter beim Klick. Button-Default-Styles reset. */
.stat-card-clickable {
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  width: 100%;
  appearance: none;
}
.stat-card-clickable:hover {
  background: var(--bs-bg-subtle);
}
.stat-card-clickable:focus-visible {
  outline: 2px solid var(--bs-primary);
  outline-offset: 2px;
}
.stat-card-clickable:active {
  transform: translateY(0);
}

.stat-icon {
  width: 40px;
  height: 40px;
  border-radius: var(--radius-sm);
  background: var(--gradient-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}

.stat-value { font-size: 22px; font-weight: 700; color: var(--text); line-height: 1; }
.stat-label { font-size: 12px; color: var(--text-muted); margin-top: 4px; letter-spacing: 0.02em; }

/* ═══════ Empty State ═════════════════════════════════════════════════ */

.empty-state {
  padding: 60px 20px;
  text-align: center;
  background: var(--card);
  border: 1px dashed var(--border);
  border-radius: var(--radius-lg);
}
.empty-state .emoji { font-size: 48px; margin-bottom: 12px; display: block; }
.empty-state h3 { font-size: 16px; margin-bottom: 6px; color: var(--text); }
.empty-state p { color: var(--text-muted); font-size: 13px; }

/* ═══════ Cards ═══════════════════════════════════════════════════════ */

.card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
}

.editor-card { margin-bottom: 24px; box-shadow: var(--shadow-sm); }
.editor-card h3 { margin-bottom: 16px; font-size: 16px; }

/* OpenAI-spezifische TTS-Controls im Ansagen-Editor (Modell + Style + Normalize + Power-User) */
.ann-openai-controls {
  margin-top: 16px;
  padding: 14px 16px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
}
.ann-openai-controls .grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
@media (max-width: 600px) {
  .ann-openai-controls .grid-2 { grid-template-columns: 1fr; }
}
.ann-openai-controls .field { margin-bottom: 12px; }
.ann-openai-controls .field:last-of-type { margin-bottom: 0; }
.ann-openai-controls .bs-toggle-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
}
.ann-openai-controls .bs-toggle-row input[type="checkbox"] {
  margin-top: 3px;
  width: 16px;
  height: 16px;
  accent-color: var(--bs-primary);
  flex-shrink: 0;
}
.ann-power-user > summary {
  list-style: none;
  padding: 6px 0;
}
.ann-power-user > summary::-webkit-details-marker { display: none; }
.ann-power-user[open] > summary { color: var(--bs-fg); }
.ann-power-user textarea {
  font-family: var(--bs-font-mono);
  font-size: 12px;
  line-height: 1.5;
  resize: vertical;
}

/* ═══════ Voicemail List ══════════════════════════════════════════════ */

.voicemail-list { display: flex; flex-direction: column; gap: 8px; }

.voicemail-item {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 18px;
  display: flex;
  align-items: center;
  gap: 14px;
  cursor: pointer;
  transition: all var(--transition);
  position: relative;
}
.voicemail-item:hover {
  border-color: var(--border-hover);
  transform: translateX(2px);
  box-shadow: var(--shadow);
}
.voicemail-item.unread {
  background: linear-gradient(to right, rgba(30,41,59, 0.04), transparent);
  border-left: 3px solid var(--primary);
  padding-left: 15px;
}

.vm-icon-wrap {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--gradient);
  color: var(--bs-primary-fg);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 2px 6px rgba(30,41,59, 0.25);
}

.vm-main { flex: 1; min-width: 0; }
.vm-from { font-weight: 600; font-size: 14px; color: var(--text); }
.vm-preview {
  color: var(--text-secondary);
  font-size: 13px;
  margin-top: 3px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.vm-meta-col {
  text-align: right;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  flex-shrink: 0;
}
.vm-date { font-size: 12px; color: var(--text-muted); }

.vm-status-tag {
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 500;
}
.vm-status-pending { background: rgba(245, 158, 11, 0.1); color: #b45309; }
.vm-status-done { background: rgba(16, 185, 129, 0.1); color: #047857; }
.vm-status-error { background: rgba(239, 68, 68, 0.1); color: #b91c1c; }

/* Voicemail-Toolbar (Select-All + Page-Size) — über der Liste, kompakte Höhe */
.vm-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 6px 12px;
  margin-bottom: 10px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  white-space: nowrap;
  flex-wrap: nowrap;
  overflow-x: auto;
}
.vm-select-all-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  font-weight: 500;
  color: var(--bs-fg);
  white-space: nowrap;
}
.vm-select-all-label input[type="checkbox"] {
  width: 15px;
  height: 15px;
  cursor: pointer;
  accent-color: var(--bs-primary);
  margin: 0;
}
.vm-pagesize-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--bs-text-sm);
  white-space: nowrap;
}
.vm-pagesize-label > span { white-space: nowrap; }
.vm-pagesize-label select {
  padding: 2px 6px;
  font-size: var(--bs-text-sm);
  height: 26px;
  min-width: 56px;
  min-height: 0;
}
/* Voicemail-Pagination (Vor/Zurück) — unter der Liste */
.vm-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 16px 0;
  margin-top: 8px;
  border-top: 1px solid var(--bs-border);
}
.vm-pg-info {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  font-variant-numeric: tabular-nums;
}

/* Quick-Action-Buttons in Voicemail-Card (Hover-State per CSS, kein inline-onmouseover) */
.vm-quick-actions {
  display: flex;
  gap: 4px;
  margin-top: 4px;
}
.vm-quick-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
  border-radius: 6px;
  cursor: pointer;
  color: var(--vm-q-color, var(--bs-fg-muted));
  transition: background var(--transition), color var(--transition), border-color var(--transition);
}
.vm-quick-btn:hover {
  background: var(--vm-q-hover, var(--bs-primary));
  color: var(--bs-primary-fg);
  border-color: var(--vm-q-hover, var(--bs-primary));
}
.vm-quick-btn:focus-visible {
  outline: 2px solid var(--vm-q-hover, var(--bs-primary));
  outline-offset: 2px;
}

.vm-duration-badge {
  padding: 2px 8px;
  background: var(--bg-subtle);
  border-radius: 999px;
  font-size: 11px;
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
}

/* ═══════ Announcements Grid ══════════════════════════════════════════ */

.announcement-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 16px;
}

.announcement-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
  transition: all var(--transition);
}
.announcement-card:hover {
  border-color: var(--border-hover);
  box-shadow: var(--shadow);
}

.announcement-card h4 {
  font-size: 15px;
  font-weight: 600;
  margin-bottom: 8px;
  color: var(--text);
}
.announcement-card .text-snippet {
  color: var(--text-secondary);
  font-size: 13px;
  margin-bottom: 10px;
  line-height: 1.5;
}
.announcement-card .meta-row {
  color: var(--text-muted);
  font-size: 12px;
  margin-bottom: 10px;
}
.announcement-card audio { width: 100%; margin: 10px 0; border-radius: 8px; }
.announcement-card .actions { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; }

/* ═══════ Tenant Grid ═════════════════════════════════════════════════ */

.tenant-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 14px;
}

.tenant-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
  transition: all var(--transition);
}
.tenant-card:hover {
  border-color: var(--primary);
  box-shadow: var(--shadow);
}
.tenant-card h4 {
  font-size: 16px;
  font-weight: 600;
  margin-bottom: 4px;
}
.tenant-card .sub {
  color: var(--text-muted);
  font-size: 13px;
  margin-bottom: 12px;
}
.tenant-card .stats {
  display: flex;
  gap: 12px;
  margin-bottom: 14px;
  font-size: 12px;
  color: var(--text-secondary);
}
.tenant-card .stats span strong { color: var(--text); font-weight: 600; }
.tenant-card .actions { display: flex; gap: 6px; }

/* ═══════ Dialog ══════════════════════════════════════════════════════ */

.dialog {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: fadeIn 150ms ease-out;
}

@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes slideUp {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

.dialog-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.5);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.dialog-inner {
  position: relative;
  background: var(--card);
  border-radius: var(--radius-lg);
  max-width: 520px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: var(--shadow-lg);
  animation: slideUp 200ms cubic-bezier(0.16, 1, 0.3, 1);
}
.dialog-lg { max-width: 680px; }
.dialog-xl { max-width: 960px; }
.dialog-xxl { max-width: min(95vw, 1400px); width: 95vw; }
.dialog-sm { max-width: 440px; }

.dialog-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px;
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  background: var(--card);
  z-index: 2;
}
.dialog-header h3 { font-size: 18px; font-weight: 600; }

.dialog-close {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  border: none;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  font-size: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--transition);
}
.dialog-close:hover { background: var(--bg-subtle); color: var(--text); }

.dialog-inner form, .dialog-inner .section-header,
.dialog-inner .field, .dialog-inner .grid-2,
.dialog-inner .form-actions, .dialog-inner .divider,
.dialog-inner .toggle, .dialog-inner .user-list,
.dialog-inner .inline-form {
  margin-left: 24px;
  margin-right: 24px;
}
.dialog-inner form { margin-bottom: 0; padding-top: 16px; }
.dialog-inner .form-actions { margin-top: 20px; margin-bottom: 24px; }

.section-header {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
  margin: 24px 24px 12px 24px;
  display: flex;
  align-items: center;
  gap: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
}
.section-icon { font-size: 14px; }

.divider {
  height: 1px;
  background: var(--border);
  margin: 24px 0;
}

/* ═══════ Voicemail Dialog ═══════════════════════════════════════════ */

.vm-info-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin: 0 24px 16px 24px;
  padding: 16px;
  background: var(--bg-subtle);
  border-radius: var(--radius);
}
.vm-info-item { display: flex; flex-direction: column; gap: 2px; }
.vm-info-label {
  font-size: 11px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 600;
}

#vm-audio {
  width: calc(100% - 48px);
  margin: 0 24px 16px 24px;
  border-radius: 8px;
}

.transcript-header {
  margin: 0 24px 8px 24px;
}
.transcript-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--primary);
}

.vm-transcript {
  background: var(--gradient-soft);
  border-radius: var(--radius);
  padding: 16px 18px;
  margin: 0 24px 20px 24px;
  line-height: 1.6;
  font-size: 14px;
  white-space: pre-wrap;
  color: var(--text);
  border: 1px solid rgba(30,41,59, 0.15);
}

.vm-transcript:empty::before {
  content: "Noch keine Transkription verfügbar";
  color: var(--text-muted);
  font-style: italic;
}

/* ═══════ Voicemail Dialog (aufgeraeumt) ═══════════════════════════════ */

.vm-dialog { max-width: 640px; }

.vm-dialog .dialog-header {
  gap: 12px;
  padding: 18px 20px;
}

.vm-dialog .dialog-close svg {
  width: 18px; height: 18px;
}

.vm-avatar {
  width: 40px; height: 40px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-weight: 600; font-size: 14px;
  flex-shrink: 0;
}

.vm-body {
  padding: 16px 20px;
  display: flex; flex-direction: column; gap: 16px;
}

.vm-status-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.vm-status-btn {
  padding: 10px 12px;
  border: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
  border-radius: 8px;
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  font-size: 13px; font-weight: 500;
  transition: all 0.15s;
}
.vm-status-btn:hover { border-color: var(--border-hover); background: var(--bg-subtle); }
.vm-status-btn svg { width: 15px; height: 15px; }

.vm-meta-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  padding: 12px 14px;
  background: var(--bg-subtle);
  border-radius: 8px;
}
.vm-meta-cell { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.vm-meta-label {
  font-size: 10px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 600;
}
.vm-meta-cell > span:last-child {
  font-size: 13px;
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.vm-dialog audio {
  width: 100%;
  border-radius: 8px;
}

.vm-block { display: flex; flex-direction: column; gap: 6px; }
.vm-block-header {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
}
.vm-block-icon svg { width: 13px; height: 13px; }

.vm-dialog .vm-transcript {
  margin: 0;
  padding: 14px 16px;
  font-size: 13px;
}

.vm-dialog textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-family: inherit;
  font-size: 13px;
  resize: vertical;
  line-height: 1.5;
}
.vm-dialog textarea:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(30,41,59,0.1);
}

.vm-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.vm-field { display: flex; flex-direction: column; gap: 4px; }
.vm-field label {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 600;
}
.vm-field label svg { width: 12px; height: 12px; }
.vm-field input {
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  font-size: 13px;
  font-family: inherit;
}
.vm-field input[type="text"] { font-family: 'JetBrains Mono', monospace; }
.vm-field input:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(30,41,59,0.1);
}

.vm-footer {
  display: flex;
  gap: 8px;
  padding: 14px 20px;
  border-top: 1px solid var(--border);
  background: var(--bg-subtle);
}
.vm-footer .btn { padding: 8px 14px; }
.vm-call-btn, .vm-icon-btn, .vm-danger-btn {
  display: inline-flex; align-items: center; gap: 6px;
}
.vm-danger-btn { color: #dc2626; }
.vm-danger-btn:hover { background: #fee2e2; }

/* ═══════ User List (im Tenant-Dialog) ═══════════════════════════════ */

.user-list { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }

.user-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  background: var(--bg-subtle);
  border-radius: var(--radius-sm);
}

.user-row-info { display: flex; align-items: center; gap: 10px; }
.user-row .email { font-weight: 500; font-size: 13px; }
.user-row .role-badge {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--card);
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 500;
}
.user-row .role-badge.admin { background: var(--gradient); color: var(--bs-primary-fg); }

/* ═══════ Toast ══════════════════════════════════════════════════════ */

.toast {
  position: fixed;
  bottom: 24px;
  right: 24px;
  padding: 12px 18px;
  background: var(--text);
  color: var(--bs-primary-fg);
  border-radius: var(--radius);
  font-size: 14px;
  font-weight: 500;
  z-index: 1000;
  box-shadow: var(--shadow-lg);
  animation: slideUp 200ms cubic-bezier(0.16, 1, 0.3, 1);
}
.toast.success { background: var(--success); }
.toast.error { background: var(--danger); }
/* Phase 18y/19b Audit-Fix: warn (orange) + info (Brand-Blue) — vorher nicht
   im CSS definiert, JS hat sie aber benutzt → fallback auf var(--text). */
.toast.warn { background: var(--bs-warning, #f59e0b); color: var(--bs-primary-fg); }
.toast.info { background: var(--bs-info, #0ea5e9); color: var(--bs-primary-fg); }

/* ═══════ Loading ═══════════════════════════════════════════════════ */

.loading-dots {
  display: inline-flex;
  gap: 4px;
  align-items: center;
}
.loading-dots span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--primary);
  animation: bounce 1.4s infinite ease-in-out both;
}
.loading-dots span:nth-child(1) { animation-delay: -0.32s; }
.loading-dots span:nth-child(2) { animation-delay: -0.16s; }
@keyframes bounce {
  0%, 80%, 100% { transform: scale(0); }
  40% { transform: scale(1); }
}

/* ═══════ Responsive ═════════════════════════════════════════════════ */

@media (max-width: 900px) {
  #view-app { grid-template-columns: 1fr; }
  .sidebar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    top: auto;
    height: auto;
    padding: 8px;
    flex-direction: row;
    gap: 0;
    border-top: 1px solid var(--border);
    border-right: none;
    z-index: 50;
  }
  .sidebar-logo, .sidebar-footer { display: none; }
  .sidebar-nav {
    flex-direction: row;
    justify-content: space-around;
    width: 100%;
  }
  .tab-btn { flex-direction: column; gap: 2px; font-size: 11px; padding: 8px 6px; }
  .content { padding: 20px 16px 100px 16px; }
  .page-header h1 { font-size: 22px; }
}

/* ═══ ANN-CARD v2 ═════════════════════════════════════════════════════ */

.announcement-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  grid-auto-rows: 1fr;
  gap: 16px;
}

.ann-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: all var(--transition);
  position: relative;
}
.ann-card:hover {
  border-color: var(--border-hover);
  box-shadow: var(--shadow);
  transform: translateY(-1px);
}

.ann-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.ann-card-status {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  flex: 1;
}
.ann-card-status .status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  display: inline-block;
}
.ann-card-status .status-dot.s-ready   { background: var(--success); }
.ann-card-status .status-dot.s-pending { background: var(--warning); animation: pulse-soft 1.5s ease-in-out infinite; }
.ann-card-status .status-dot.s-error   { background: var(--danger); }
@keyframes pulse-soft { 0%,100% { opacity: 1; } 50% { opacity: 0.5; } }

.ann-card h4 {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ann-card-delete {
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid transparent;
  background: transparent;
  color: var(--text-muted);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: all var(--transition);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  opacity: 0.6;
}
.ann-card:hover .ann-card-delete { opacity: 1; }
.ann-card-delete:hover {
  border-color: var(--danger);
  color: var(--danger);
  background: rgba(239,68,68,0.05);
}
.ann-card-delete svg { width: 14px; height: 14px; stroke-width: 2; }

.ann-card-voice {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--text-muted);
  font-size: 12px;
  font-weight: 500;
  padding: 3px 10px;
  background: var(--bg-subtle);
  border-radius: 999px;
  align-self: flex-start;
  max-width: 100%;
}
.ann-card-voice svg { width: 12px; height: 12px; flex-shrink: 0; }
.ann-card-voice span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.ann-card-text {
  margin: 0;
  padding: 10px 12px;
  background: var(--bg-subtle);
  border-radius: var(--radius-sm);
  border-left: 3px solid var(--primary);
  color: var(--text-secondary);
  font-size: 13px;
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  cursor: pointer;
  transition: all var(--transition);
}
.ann-card-text:hover {
  background: rgba(30,41,59,0.05);
  border-left-color: var(--primary-dark);
}

.ann-card-audio { width: 100%; height: 34px; border-radius: var(--radius-sm); }
.ann-card-status-msg {
  padding: 10px 12px;
  background: var(--bg-subtle);
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-size: 12px;
  font-style: italic;
}

.ann-card-divider {
  height: 1px;
  background: var(--border);
  margin: 0 -18px;
}

.ann-card-assign-empty, .ann-card-assign {
  margin-top: auto;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ann-card-assign-hint {
  margin: 0;
  color: var(--text-muted);
  font-size: 12px;
  text-align: center;
  font-style: italic;
}

/* Live-Status Banner */
.ann-card-live-status {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
}
.live-pulse {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.live-pulse.active {
  background: var(--success);
  box-shadow: 0 0 0 0 rgba(16,185,129,0.5);
  animation: live-pulse-anim 2s ease-out infinite;
}
.live-pulse.idle { background: var(--text-muted); opacity: 0.5; }
@keyframes live-pulse-anim {
  0% { box-shadow: 0 0 0 0 rgba(16,185,129,0.5); }
  70% { box-shadow: 0 0 0 7px rgba(16,185,129,0); }
  100% { box-shadow: 0 0 0 0 rgba(16,185,129,0); }
}
.live-text { font-weight: 600; color: var(--text); }
.live-spacer { flex: 1; }
.live-sync-hint {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 500;
}
.live-sync-hint svg { width: 11px; height: 11px; }

/* CTA */
.assign-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 11px 16px;
  border: 0;
  border-radius: var(--radius-sm);
  background: var(--gradient);
  color: var(--bs-primary-fg);
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all var(--transition);
  box-shadow: 0 2px 8px rgba(30,41,59,0.22);
}
.assign-cta:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(30,41,59,0.32);
}
.assign-cta svg { width: 15px; height: 15px; stroke-width: 2.2; }

/* Chips */
.assign-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 5px 5px 10px;
  background: linear-gradient(135deg, rgba(30,41,59,0.08), rgba(16,185,129,0.05));
  border: 1px solid rgba(30,41,59,0.18);
  border-radius: 999px;
  font-size: 12px;
  color: var(--text);
  max-width: 100%;
}
.chip-name {
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 130px;
}
.chip-slotid {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  color: var(--text-muted);
  background: rgba(255,255,255,0.6);
  padding: 1px 6px;
  border-radius: 999px;
}
.chip-status {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: 10px;
  padding: 1px 6px;
  border-radius: 999px;
  font-weight: 500;
}
.chip-status.fresh { background: rgba(16,185,129,0.15); color: #047857; }
.chip-status.stale { background: rgba(245,158,11,0.15); color: #b45309; }
.chip-status.none  { background: rgba(148,163,184,0.15); color: var(--text-muted); }
.chip-x {
  border: 0;
  background: rgba(255,255,255,0.7);
  color: var(--text-muted);
  width: 18px;
  height: 18px;
  border-radius: 50%;
  cursor: pointer;
  font-size: 13px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--transition);
  padding: 0;
}
.chip-x:hover { background: var(--danger); color: var(--bs-primary-fg); }
.chip-x svg { width: 12px; height: 12px; stroke-width: 2.2; }

/* Inline-Lucide-Icon im Chip-Status (statt ⇡ Emoji) */
.chip-status-icon { display: inline-flex; vertical-align: -1px; margin-right: 1px; }
.chip-status-icon svg { width: 10px; height: 10px; stroke-width: 2.2; }

/* Banner-Headline-Icon (statt ✓ Emoji) */
.ann-card-assigned-banner .banner-icon {
  display: inline-flex;
  vertical-align: -2px;
  margin-right: 4px;
}
.ann-card-assigned-banner .banner-icon svg { width: 14px; height: 14px; stroke-width: 2.2; }

/* Detail-Dialog */
.det-voice-row { margin-bottom: 12px; }
.det-text {
  margin: 0 0 16px 0;
  padding: 14px 16px;
  background: var(--bg-subtle);
  border-radius: var(--radius-sm);
  border-left: 3px solid var(--primary);
  color: var(--text);
  font-size: 14px;
  line-height: 1.6;
  max-height: 320px;
  overflow-y: auto;
  white-space: pre-wrap;
  word-break: break-word;
}
.det-audio { width: 100%; height: 38px; margin-bottom: 20px; border-radius: var(--radius-sm); }
.det-section-title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.8px;
  color: var(--text-muted);
  margin-bottom: 10px;
}
.det-chips { display: flex; flex-wrap: wrap; gap: 6px; padding-bottom: 4px; }

/* ═══════ Impersonation-Banner (tenant UI) ═══════════════════════════ */
#impersonation-banner {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 1000;
  background: linear-gradient(90deg, #f59e0b, #dc2626);
  color: var(--bs-primary-fg);
  padding: 8px 16px;
  display: flex; align-items: center; justify-content: center;
  gap: 12px;
  font-size: 13px;
  font-weight: 500;
  box-shadow: 0 2px 8px rgba(0,0,0,0.2);
}
#impersonation-banner button {
  background: var(--bs-bg-elevated);
  color: var(--bs-danger);
  border: none;
  padding: 4px 12px;
  border-radius: 6px;
  font-weight: 600;
  cursor: pointer;
  font-size: 12px;
}
#impersonation-banner button:hover { background: #fef3c7; }

/* ═══════════════════════════════════════════════════════════════════════
   8. Legacy-Token-Konsolidierung (frueher §8 "Dark-Theme Legacy-Overrides")
   Diese Sektion enthielt vor V5 component-spezifische Dark-Toggle-Overrides
   fuer Legacy-Komponenten (.card / .sidebar / .tab-btn / .btn-* / ...). Architektur-Bug:
   sie griffen nur bei manuellem Dark-Toggle, nicht bei prefers-color-scheme dark.
   Loesung: alle Properties in Base-Definitionen via var(--bs-*) migriert, sodass
   sie automatisch dem Theme folgen — egal ob Toggle oder System-Setting.
   Verbleibende Hard-/Element-Selectors stehen unten.
   ═══════════════════════════════════════════════════════════════════════ */

/* Forms — plain <input>/<textarea>/<select> ohne .bs-Klasse muessen ihren BG
   auch im Dark vom Card-BG abheben. Token-Pfad ueber --bs-input-bg. */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="datetime-local"],
textarea,
select {
  background: var(--bs-input-bg);
  border-color: var(--bs-border);
  color: var(--bs-fg);
}
input:focus,
textarea:focus,
select:focus {
  border-color: var(--bs-primary);
}

/* ─── Legacy-Components (Platform-Admin renders these dynamisch) ──────────
   Vorher nur ueber [data-theme="dark"]-Overrides gestylt; jetzt direkt mit
   Tokens definiert, damit Light + Dark + System-Dark gleich aussehen. */
.tenant-row,
.staff-row,
.feature-toggle,
.tenant-avatar-sm,
.audit-table {
  background: var(--bs-bg-elevated);
  border-color: var(--bs-border);
  color: var(--bs-fg);
}
.feature-toggle.enabled { background: var(--bs-primary-soft); }
.audit-row { border-color: var(--bs-border); }
.audit-row.header { background: var(--bs-bg-subtle); color: var(--bs-fg-muted); }
.audit-row .audit-actor-type.platform { background: var(--bs-primary); color: var(--bs-primary-fg); }

.feature-pills .pill { background: var(--bs-bg-subtle); color: var(--bs-fg-muted); }
.feature-pills .pill.active { background: var(--bs-primary-soft); color: var(--bs-primary); }

.tenant-dialog-tabs { border-color: var(--bs-border); }

/* Voicemail-Item + Transcript — Token-Bake-In (frueher dark-only) */
.voicemail-item { background: var(--bs-bg-elevated); }
.voicemail-item .vm-preview { color: var(--bs-fg-muted); }
.vm-transcript { background: var(--bs-bg-subtle); border-color: var(--bs-border); }

/* Audio Player — Native Dark-Mode-Controls per `color-scheme` switch.
   Wert pruefen via media-query damit prefers-color-scheme genauso greift. */
audio { color-scheme: light; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) audio { color-scheme: dark; filter: none; }
}
[data-theme="dark"] audio { color-scheme: dark; filter: none; }

/* ─── Mobile: Tab-Bars + Filter-Rows horizontal scrollbar (ohne Scrollbar) ─── */
@media (max-width: 700px) {
  /* Generischer Helper: alle Tab-Bars die mobile horizontal scrollen sollen */
  .vm-tabs,
  .mailbox-chips,
  .team-subtabs,
  .att-msg-subtabs,
  .att-msg-filters {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;        /* Firefox */
  }
  .vm-tabs::-webkit-scrollbar,
  .mailbox-chips::-webkit-scrollbar,
  .team-subtabs::-webkit-scrollbar,
  .att-msg-subtabs::-webkit-scrollbar,
  .att-msg-filters::-webkit-scrollbar { display: none; }   /* WebKit */

  /* Status-Tabs (Voicemail: Neu / Wiedervorlage / Erledigt / Alle) */
  #voicemail-status-tabs .vm-tab {
    flex-shrink: 0 !important;
    padding: 8px 12px !important;
    font-size: 13px !important;
    white-space: nowrap;
  }
  #voicemail-status-tabs .vm-tab span:nth-of-type(2) {
    padding: 1px 6px !important;
  }

  /* Mailbox-Chips */
  #voicemail-mailbox-filter.mailbox-chips { padding-bottom: 2px; }
  #voicemail-mailbox-filter.mailbox-chips .chip {
    flex-shrink: 0 !important;
    white-space: nowrap;
  }

  /* KI-Attendant Sub-Tabs (Übersicht / Postfach / Anruf-Historie / Konfig / …) */
  .team-subtabs .att-sub-btn {
    flex-shrink: 0 !important;
    white-space: nowrap;
    padding: 8px 12px !important;
    font-size: 13px !important;
  }

  /* Postfach Sub-Tabs (Postfach / An CRM übertragen / Erledigt) */
  .att-msg-subtabs .att-msg-subtab {
    flex-shrink: 0 !important;
    white-space: nowrap;
    padding: 8px 10px !important;
  }
  .att-msg-subtabs .att-msg-subtab-label { font-size: 13px !important; }

  /* Postfach Filter-Row (Status / Priorität / Abteilung / Suche) */
  .att-msg-filters > * {
    flex-shrink: 0 !important;
    min-width: 140px;
  }
  .att-msg-filters input[type="search"] { min-width: 160px; }
}
/* Impersonation Banner stays bright regardless of theme (by design) */

/* ═══════════════════════════════════════════════════════════════════════
   9. New App-Shell (basestar.io v2 layout)
   Ueberschreibt #view-app, .sidebar, .content mit einer TopBar.
   ═══════════════════════════════════════════════════════════════════════ */

/* Shell-Grid: TopBar oben, Sidebar links, Content rechts */
#view-app {
  display: grid;
  grid-template-columns: 260px 1fr;
  grid-template-rows: 64px 1fr;
  grid-template-areas:
    "sidebar topbar"
    "sidebar content";
  min-height: 100vh;
  background: var(--bs-bg);
}

/* --- Sidebar (neu) --- */
.sidebar {
  grid-area: sidebar;
  background: var(--bs-bg-elevated);
  border-right: 1px solid var(--bs-border);
  display: flex;
  flex-direction: column;
  padding: var(--bs-5) var(--bs-3) var(--bs-3);
  gap: var(--bs-4);
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
}

/* Logo-Lockup (kein link-blau, sauber typografisch) */
.sidebar-logo {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: 0 var(--bs-3) var(--bs-2);
  color: var(--bs-fg) !important;
  text-decoration: none !important;
  font-weight: var(--bs-weight-bold);
  font-size: var(--bs-text-md);
  line-height: 1.15;
  letter-spacing: -0.01em;
  border-radius: var(--bs-r);
  transition: background var(--bs-transition);
}
/* Kein Hover-Hintergrund auf dem Logo — User-Wunsch (Phase 18). */
.sidebar-logo:hover { background: transparent; }
.sidebar-logo .logo-dot { display: none; }          /* alter pink-Kreis weg */
.sidebar-logo svg { flex-shrink: 0; }
.sidebar-logo .bs-brand-accent { color: var(--bs-primary); }
/* Sidebar-Mark folgt der globalen .rp-mark-bg/.rp-mark-fg-Regel (Navy-Container,
   weiße Stems) — kein lokaler Override mehr, damit das Logo identisch zur
   Login-Card und zum Hero wirkt. */

/* Section-Divider-Label in Sidebar */
.sidebar-nav {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
  padding: 0;
}

.sidebar-nav .nav-label {
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--bs-fg-subtle);
  padding: var(--bs-4) var(--bs-3) var(--bs-1);
}

/* Tab-Button (Nav-Item) — neu */
.tab-btn {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: var(--bs-2) var(--bs-3);
  border: none;
  background: transparent;
  color: var(--bs-fg-muted);
  border-radius: var(--bs-r-sm);
  font-family: inherit;
  font-size: var(--bs-text-base);
  font-weight: var(--bs-weight-medium);
  cursor: pointer;
  text-align: left;
  width: 100%;
  transition: all var(--bs-transition);
}
.tab-btn:hover { background: var(--bs-bg-subtle); color: var(--bs-fg); }
.tab-btn svg { width: 18px; height: 18px; flex-shrink: 0; opacity: 0.85; }
.tab-btn.active {
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  font-weight: var(--bs-weight-semibold);
}
.tab-btn.active svg { opacity: 1; }

/* Sidebar Footer */
.sidebar-footer {
  border-top: 1px solid var(--bs-border);
  padding-top: var(--bs-3);
  display: flex;
  flex-direction: column;
  gap: var(--bs-2);
}

/* Theme-Toggle in Sidebar */
#theme-toggle-host { display: flex; justify-content: center; padding-bottom: var(--bs-2); }

/* User-Chip (neu) — leichter Lift gegen Sidebar-BG via Token (themed automatisch) */
.user-chip {
  display: flex; align-items: center; gap: var(--bs-2);
  padding: var(--bs-2) var(--bs-2);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
}
.user-chip .avatar {
  width: 32px; height: 32px;
  background: var(--rp-emerald-500);
  color: var(--bs-primary-fg);
  border-radius: var(--bs-r-full);
  display: flex; align-items: center; justify-content: center;
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-bold);
  flex-shrink: 0;
}
.user-chip .user-info { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.user-chip .user-name { font-size: var(--bs-text-sm); font-weight: var(--bs-weight-medium); color: var(--bs-fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.user-chip .user-role { font-size: 10px; color: var(--bs-fg-subtle); text-transform: uppercase; letter-spacing: 0.05em; font-weight: var(--bs-weight-semibold); }

/* --- TopBar --- */
.bs-topbar {
  grid-area: topbar;
  position: sticky;
  top: 0;
  z-index: var(--bs-z-topbar);
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: 0 var(--bs-6);
  background: var(--bs-bg-elevated);
  border-bottom: 1px solid var(--bs-border);
  backdrop-filter: blur(8px);
}
.bs-topbar-left { display: flex; align-items: center; gap: var(--bs-3); flex: 1; min-width: 0; }
.bs-topbar-right { display: flex; align-items: center; gap: var(--bs-2); }

.bs-breadcrumb {
  display: flex; align-items: center; gap: var(--bs-2);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
}
.bs-breadcrumb .bc-sep { color: var(--bs-fg-subtle); opacity: 0.5; }
.bs-breadcrumb .bc-current { color: var(--bs-fg); font-weight: var(--bs-weight-semibold); }

.bs-topbar-search {
  position: relative;
  width: min(480px, 38vw);
}
.bs-topbar-search input {
  width: 100%;
  height: 36px;
  padding: 0 var(--bs-4) 0 var(--bs-10);
  background: var(--bs-bg-inset);          /* tieferes Well → klare Trennung von der Topbar */
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg);
  font-family: inherit;
  font-size: var(--bs-text-sm);
  transition: all var(--bs-transition);
}
.bs-topbar-search input::placeholder { color: var(--bs-fg-subtle); }
.bs-topbar-search input:hover { background: var(--bs-bg-subtle); border-color: var(--bs-border-hover); }
.bs-topbar-search input:focus { outline: none; background: var(--bs-bg-elevated); border-color: var(--bs-primary); box-shadow: var(--bs-shadow-glow); }
.bs-topbar-search .search-icon { position: absolute; left: var(--bs-3); top: 50%; transform: translateY(-50%); color: var(--bs-fg-subtle); pointer-events: none; }
.bs-topbar-search kbd {
  position: absolute; right: var(--bs-2); top: 50%; transform: translateY(-50%);
  font-family: var(--bs-font-mono);
  font-size: 10px;
  padding: 2px 6px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg-subtle);
}

/* TopBar icon-button */
.bs-topbar-icon-btn {
  width: 36px; height: 36px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent;
  border: none;
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg-muted);
  cursor: pointer;
  transition: all var(--bs-transition);
  position: relative;
}
.bs-topbar-icon-btn:hover { background: var(--bs-bg-subtle); color: var(--bs-fg); }
.bs-topbar-icon-btn .dot {
  position: absolute; top: 8px; right: 9px;
  width: 7px; height: 7px;
  background: var(--bs-danger);
  border-radius: 50%;
  border: 2px solid var(--bs-bg-elevated);
}

.bs-topbar-divider {
  width: 1px; height: 24px;
  background: var(--bs-border);
  margin: 0 var(--bs-1);
}

.bs-topbar-user {
  display: flex; align-items: center; gap: var(--bs-2);
  padding: 4px var(--bs-2) 4px 4px;
  border-radius: var(--bs-r-full);
  cursor: pointer;
  transition: background var(--bs-transition);
  border: 1px solid var(--bs-border);
  background: transparent;
}
.bs-topbar-user:hover { background: var(--bs-bg-subtle); }
.bs-topbar-user .avatar {
  width: 28px; height: 28px;
  border-radius: var(--bs-r-full);
  background: var(--rp-emerald-500);
  color: var(--bs-primary-fg);
  display: flex; align-items: center; justify-content: center;
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-bold);
}
.bs-topbar-user .name { font-size: var(--bs-text-sm); font-weight: var(--bs-weight-medium); color: var(--bs-fg); }

/* --- Content-Area (full-width für große Displays) --- */
.content {
  grid-area: content;
  padding: var(--bs-8) var(--bs-10);
  max-width: none;
  width: 100%;
  min-height: 0;
  overflow-x: hidden;
}
@media (min-width: 1600px) {
  .content { padding: var(--bs-10) var(--bs-12); }
}
@media (min-width: 2200px) {
  .content { padding: var(--bs-12) var(--bs-16); }
}

/* Page-Header innerhalb Content */
.page-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--bs-4);
  margin-bottom: var(--bs-6);
  padding-bottom: var(--bs-5);
  border-bottom: 1px solid var(--bs-border);
}
.page-header h1 {
  font-size: var(--bs-text-2xl);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  margin: 0 0 var(--bs-1);
}
.page-header .page-subtitle {
  color: var(--bs-fg-muted);
  font-size: var(--bs-text-base);
}
.page-header .page-actions { display: flex; gap: var(--bs-2); flex-shrink: 0; }

/* Stats-Row: fluid grid, skaliert auf große Displays */
.stats-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--bs-4);
  margin-bottom: var(--bs-8);
}

.stat-card {
  display: flex; align-items: center; gap: var(--bs-3);
  padding: var(--bs-5) var(--bs-6);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  transition: all var(--bs-transition);
  position: relative;
  overflow: hidden;
}
.stat-card::before {
  content: "";
  position: absolute;
  top: 0; right: 0;
  width: 120px; height: 120px;
  background: radial-gradient(circle at 80% 20%, var(--bs-primary-soft) 0%, transparent 60%);
  pointer-events: none;
  opacity: 0.4;
}
.stat-card:hover { border-color: var(--bs-border-hover); transform: translateY(-2px); box-shadow: var(--bs-shadow-sm); }
.stat-card .stat-icon {
  width: 44px; height: 44px;
  border-radius: var(--bs-r);
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.stat-card .stat-value {
  font-size: var(--bs-text-xl);
  font-weight: var(--bs-weight-bold);
  color: var(--bs-fg);
  line-height: 1.1;
  letter-spacing: -0.02em;
}
.stat-card .stat-label {
  font-size: var(--bs-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--bs-fg-muted);
  font-weight: var(--bs-weight-semibold);
  margin-top: 2px;
}

/* ═══════════════════════════════════════════════════════════════════════
   10. Login — Split-Screen Hero (basestar.io v2)
   ═══════════════════════════════════════════════════════════════════════ */

.view-auth {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 100vh;
  background: var(--bs-bg);
  padding: 0;
  position: relative;
  overflow: hidden;
}

/* alte bg-orbs ausblenden, wir haben was besseres */
.view-auth .bg-orbs { display: none; }

/* ═══════════════════════════════════════════════════════════════════════
   Hero-Panel — Robopult „Digitale Manufaktur" V2
   Industrial Navy Brand-Stage mit Emerald-Akzent + subtilen Surface-Layern.
   ═══════════════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════════════════
   Hero — Editorial Light V3 (Mai 26)
   Helles Slate-Pearl statt Industrial-Navy. Kein Grün mehr im Hintergrund —
   nur ruhige Typo + dezenter Print-Grid. Beide Modi spürbar leichter.
   ═══════════════════════════════════════════════════════════════════════ */
.auth-hero {
  position: relative;
  background: var(--bs-hero-bg);
  color: var(--bs-hero-fg);
  padding: var(--bs-8) var(--bs-10);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: var(--bs-8);
  overflow: hidden;
  isolation: isolate;
  border-right: 1px solid var(--bs-hero-border);
}
/* Print-Grid — sehr dezent, lebt nur durch Mask-Fade an einer Stelle */
.auth-hero::after {
  content: "";
  position: absolute; inset: 0;
  background-image:
    linear-gradient(var(--bs-hero-grid-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--bs-hero-grid-line) 1px, transparent 1px);
  background-size: 56px 56px;
  mask-image: radial-gradient(ellipse at 30% 35%, black 0%, transparent 75%);
  z-index: -1;
  pointer-events: none;
}

/* ── Top-Bar: Brand-Logo + Trust-Mini ─────────────────────────── */
.auth-hero-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--bs-4);
  flex-shrink: 0;
}
.auth-hero-brand {
  display: inline-flex;
  align-items: center;
  gap: var(--bs-3);
}
/* Hero-Mark — folgt der globalen .rp-mark-bg/.rp-mark-fg-Regel.
   Hier nur der lokale Drop-Shadow für Präsenz auf dem Slate-Pearl-Hero. */
.rp-mark-inverse {
  flex-shrink: 0;
  filter: drop-shadow(0 4px 12px var(--bs-hero-mark-shadow));
}
.rp-brand-wordmark {
  font-family: var(--bs-font-display, 'Outfit', sans-serif);
  font-weight: 700;
  font-size: 22px;
  letter-spacing: -0.025em;
  color: var(--bs-hero-headline);
}
.rp-brand-wordmark-dot {
  color: #10B981;     /* Precision Emerald als Punkt-Akzent (Brand-DNA) */
  margin-left: 1px;
}

/* Status-Pill (oben rechts im Hero) — neutrales Slate, kein Pulse */
.auth-hero-status {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  background: var(--bs-hero-status-bg);
  border: 1px solid var(--bs-hero-status-border);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--bs-hero-status-fg);
  text-transform: uppercase;
}
.auth-hero-status-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #10B981;          /* Emerald — universelles „aktiv"-Signal */
  box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.18);
  animation: auth-status-pulse 2.4s ease-in-out infinite;
}
@keyframes auth-status-pulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.18); }
  50%      { box-shadow: 0 0 0 5px rgba(16, 185, 129, 0.10); }
}

/* ── Hauptbereich: Headline + Lead + Features ─────────────────── */
.auth-hero-main { max-width: 560px; }
.auth-hero h2 {
  font-family: var(--bs-font-display, 'Outfit', sans-serif);
  font-size: clamp(40px, 4.6vw, 68px);
  font-weight: 700;
  line-height: 1.02;
  letter-spacing: -0.045em;
  margin-bottom: var(--bs-5);
  color: var(--bs-hero-headline);
}
.auth-hero h2 .accent {
  display: block;
  color: var(--bs-hero-accent);
  background: none;
  -webkit-text-fill-color: currentColor;
  font-style: italic;
  font-weight: 400;
}
.auth-hero .auth-subtitle {
  font-size: 16px;
  line-height: 1.6;
  color: var(--bs-hero-subtitle);
  margin-bottom: var(--bs-7);
  max-width: 480px;
}

/* Features-Liste — clean Bullets mit Brand-Akzent */
.auth-features {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
  margin-top: var(--bs-6);
}
.auth-feature {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  color: var(--bs-hero-feature);
  font-size: 14px;
  font-weight: 500;
  line-height: 1.4;
}
/* Feature-Icon: weiß-aufgehellte Box mit Emerald-Check (Brand-Akzent klein dosiert) */
.auth-feature-icon {
  width: 26px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bs-hero-feature-icon-bg);
  color: var(--bs-hero-feature-icon-color);
  border-radius: 8px;
  flex-shrink: 0;
  border: 1px solid var(--bs-hero-feature-icon-border);
}

/* ── Footer: Copyright + Trust-Marker ─────────────────────────── */
.auth-hero-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--bs-4);
  color: var(--bs-hero-footer);
  font-size: 11px;
  letter-spacing: 0.02em;
  flex-shrink: 0;
  flex-wrap: wrap;
}
.auth-hero-copy { font-weight: 500; }
.auth-hero-trust {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 500;
}
.auth-hero-trust-flag {
  display: inline-flex;
  align-items: center;
  width: 14px;
  height: 10px;
  border-radius: 2px;
  overflow: hidden;
  box-shadow: 0 0 0 1px var(--bs-hero-trust-shadow);
}
.auth-hero-trust-flag svg { display: block; }

/* Form-Panel (rechts) */
.auth-form-panel {
  display: flex; align-items: center; justify-content: center;
  padding: var(--bs-10);
  background: var(--bs-bg);
  position: relative;
}
.auth-form-panel .theme-toggle-wrap {
  position: absolute; top: var(--bs-5); right: var(--bs-5);
}

.login-card {
  width: 100%;
  max-width: 420px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-xl);
  padding: var(--bs-10);
  box-shadow: var(--bs-shadow);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  animation: auth-slide-in 400ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes auth-slide-in { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }

.login-logo { display: flex; justify-content: center; margin-bottom: var(--bs-4); }

/* Robopult Brand-Mark — globale Defaults via Token --bs-mark-* (themed automatisch):
   - Light: Bg = Industrial Navy, Fg = Weiß
   - Dark : Bg = Slate-100, Fg = Industrial Navy
   Pult-Strich (Precision Emerald) und Indicator-Punkt (weiß) bleiben in beiden Modi gleich.
   So sieht das Mark im gesamten Portal + Platform-Admin identisch aus. */
.rp-mark-bg { fill: var(--bs-mark-bg) !important; }
.rp-mark-fg { fill: var(--bs-mark-fg) !important; }
.login-logo svg { filter: drop-shadow(0 6px 24px var(--bs-mark-shadow)); }

.login-title {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-xl);
  font-weight: var(--bs-weight-bold);
  text-align: center;
  letter-spacing: -0.04em;
  margin-bottom: var(--bs-1);
  color: var(--bs-fg);
  background: none;
  -webkit-text-fill-color: currentColor;
}
.login-subtitle {
  text-align: center;
  color: var(--bs-fg-muted);
  font-size: var(--bs-text-sm);
  margin-bottom: var(--bs-6);
}

/* Dark-Theme Auth: hier nichts überschreiben — globale Dark-Tokens (slate-900/800/700)
   sind bereits hell genug. Card und Form-Panel ziehen automatisch ihre Werte aus den Tokens. */

/* ═══════════════════════════════════════════════════════════════════════
   11. Responsive — Shell breakpoints
   ═══════════════════════════════════════════════════════════════════════ */

/* < 1024px: Sidebar schmaler */
@media (max-width: 1100px) {
  #view-app { grid-template-columns: 220px 1fr; }
  .content { padding: var(--bs-6) var(--bs-6); }
  .auth-hero { padding: var(--bs-8); }
  .auth-hero h2 { font-size: clamp(32px, 5vw, 48px); }
}

/* Tablet: Hero weg bei Login, Shell bleibt */
@media (max-width: 900px) {
  #view-app {
    grid-template-columns: 1fr;
    grid-template-rows: 64px 1fr 64px;
    grid-template-areas:
      "topbar"
      "content"
      "sidebar";
  }
  .sidebar {
    position: fixed;
    bottom: 0; left: 0; right: 0;
    top: auto;
    height: 64px;
    padding: var(--bs-2);
    flex-direction: row;
    gap: 0;
    border-top: 1px solid var(--bs-border);
    border-right: none;
    z-index: var(--bs-z-sidebar);
    overflow: visible;
  }
  .sidebar-logo, .sidebar-footer, .sidebar-nav .nav-label { display: none !important; }
  .sidebar-nav {
    flex-direction: row;
    justify-content: space-around;
    width: 100%;
    gap: 0;
  }
  .tab-btn { flex-direction: column; gap: 2px; font-size: 10px; padding: var(--bs-1) var(--bs-2); }
  .tab-btn svg { width: 20px; height: 20px; }
  .tab-btn.active { background: transparent; }
  .tab-btn.active svg { color: var(--bs-primary); }
  .content { padding: var(--bs-4) var(--bs-4) calc(64px + var(--bs-4)); }
  .bs-topbar { padding: 0 var(--bs-4); }
  .bs-topbar-search { display: none; }

  .view-auth { grid-template-columns: 1fr; }
  .auth-hero { display: none; }
  .auth-form-panel { padding: var(--bs-5); min-height: 100vh; }
}

/* Mobile: TopBar kompakter */
@media (max-width: 560px) {
  .bs-topbar { gap: var(--bs-2); padding: 0 var(--bs-3); }
  .bs-topbar-user .name { display: none; }
  .bs-breadcrumb .bc-crumb { display: none; }
  .page-header { flex-direction: column; align-items: stretch; }
  .page-header .page-actions { justify-content: stretch; }
  .page-header .page-actions .btn { flex: 1; }
}

/* XL Desktop 32"+: Inhalte großzügiger verteilen */
@media (min-width: 1800px) {
  #view-app { grid-template-columns: 280px 1fr; }
  .stats-row { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
  .stat-card { padding: var(--bs-6) var(--bs-8); }
  .stat-card .stat-value { font-size: 28px; }
}
@media (min-width: 2400px) {
  #view-app { grid-template-columns: 320px 1fr; }
  .content { max-width: 2000px; margin: 0 auto; }
  .bs-topbar { padding: 0 var(--bs-12); }
}


/* ═══════════════════════════════════════════════════════════════════════
   12. Dashboard-Komponenten (shared zwischen Tenant + Platform)
   ═══════════════════════════════════════════════════════════════════════ */

.dash-hero {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--bs-8);
  align-items: center;
  padding: var(--bs-8);
  margin-bottom: var(--bs-6);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-xl);
  position: relative;
  overflow: hidden;
}
.dash-hero::before {
  content: "";
  position: absolute;
  top: -40%; right: -10%;
  width: 60%; height: 180%;
  background:
    radial-gradient(circle at 30% 30%, var(--bs-dash-hero-glow-navy) 0%, transparent 55%),
    radial-gradient(circle at 70% 70%, var(--bs-dash-hero-glow-emerald) 0%, transparent 55%);
  pointer-events: none;
  opacity: 1;
  filter: blur(20px);
}

.dash-hero-left { position: relative; max-width: 720px; }
.dash-hero-chip {
  display: inline-flex; align-items: center; gap: var(--bs-1);
  padding: 4px 10px;
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  border-radius: var(--bs-r-full);
  font-size: 11px;
  font-weight: var(--bs-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: var(--bs-3);
}
.dash-hero-left h1 {
  font-size: clamp(26px, 2.6vw, 36px);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.02em;
  margin-bottom: var(--bs-2);
  color: var(--bs-fg);
  line-height: 1.15;
}
.dash-hero-sub {
  font-size: var(--bs-text-md);
  color: var(--bs-fg-muted);
  line-height: 1.55;
  max-width: 640px;
  margin-bottom: var(--bs-5);
}
.dash-hero-actions { display: flex; gap: var(--bs-2); flex-wrap: wrap; }

.dash-hero-right {
  display: flex; align-items: center; justify-content: center;
  width: 200px; height: 200px;
  flex-shrink: 0;
  position: relative;
}
.dash-decorate { width: 100%; height: 100%; filter: drop-shadow(0 12px 40px rgba(71,85,105, 0.30)); }
.dash-hero-left h1 {
  font-family: var(--bs-font-display);
  letter-spacing: -0.04em;
}
@media (max-width: 900px) { .dash-hero-right { display: none; } }

.dash-split {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: var(--bs-6);
  align-items: start;
  margin-top: var(--bs-2);
}
@media (max-width: 1100px) { .dash-split { grid-template-columns: 1fr; } }

.dash-col { display: flex; flex-direction: column; gap: var(--bs-4); }

.section-card {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  padding: var(--bs-5) var(--bs-6);
}
.section-card-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--bs-3);
  margin-bottom: var(--bs-4);
  padding-bottom: var(--bs-3);
  border-bottom: 1px solid var(--bs-border);
}
.section-card-header h3 {
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  margin: 0;
}

.recent-feed { display: flex; flex-direction: column; gap: var(--bs-1); }
.recent-item {
  display: grid;
  grid-template-columns: 32px 1fr auto;
  gap: var(--bs-3);
  align-items: center;
  padding: var(--bs-3);
  border-radius: var(--bs-r-sm);
  transition: background var(--bs-transition);
}
.recent-item:hover { background: var(--bs-bg-subtle); }
.recent-item + .recent-item { border-top: 1px solid var(--bs-border); }
.recent-icon-wrap {
  width: 32px; height: 32px;
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-subtle);
  display: flex; align-items: center; justify-content: center;
  color: var(--bs-fg-muted);
}
.recent-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.recent-text .action { font-size: var(--bs-text-sm); color: var(--bs-fg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.recent-text .meta { font-size: 11px; color: var(--bs-fg-subtle); font-family: var(--bs-font-mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.recent-time { font-size: var(--bs-text-xs); color: var(--bs-fg-muted); white-space: nowrap; }

.quick-actions { display: flex; flex-direction: column; gap: var(--bs-2); }
.quick-action {
  display: flex; align-items: center; gap: var(--bs-3);
  padding: var(--bs-3);
  background: var(--bs-bg-subtle);
  border: 1px solid transparent;
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: all var(--bs-transition);
  font-family: inherit;
  text-align: left;
  width: 100%;
}
.quick-action:hover {
  background: var(--bs-bg-elevated);
  border-color: var(--bs-border-hover);
  transform: translateX(2px);
}
.quick-action .qa-icon {
  width: 36px; height: 36px;
  border-radius: var(--bs-r-sm);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.quick-action .qa-text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.quick-action .qa-label { font-size: var(--bs-text-sm); font-weight: var(--bs-weight-semibold); color: var(--bs-fg); }
.quick-action .qa-sub { font-size: 11px; color: var(--bs-fg-subtle); }
.quick-action .qa-arrow { color: var(--bs-fg-subtle); flex-shrink: 0; transition: transform var(--bs-transition); }
.quick-action:hover .qa-arrow { color: var(--bs-primary); transform: translateX(2px); }


/* ═══════════════════════════════════════════════════════════════════════
   13. User-Menu Dropdown (TopBar)
   ═══════════════════════════════════════════════════════════════════════ */

.bs-user-menu-wrap { position: relative; }

.bs-user-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 260px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  box-shadow: var(--bs-shadow-lg);
  padding: var(--bs-2);
  z-index: calc(var(--bs-z-topbar) + 10);
  animation: menu-pop 160ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes menu-pop { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }

.bs-user-menu-header {
  display: flex; align-items: center; gap: var(--bs-3);
  padding: var(--bs-3);
  border-bottom: 1px solid var(--bs-border);
  margin-bottom: var(--bs-2);
}
.bs-user-menu-header .avatar {
  width: 40px; height: 40px;
  border-radius: var(--bs-r-full);
  background: var(--rp-emerald-500);
  color: var(--bs-primary-fg);
  display: flex; align-items: center; justify-content: center;
  font-weight: var(--bs-weight-bold);
  flex-shrink: 0;
}
.bs-user-menu-info { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.bs-user-menu-name {
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.bs-user-menu-role {
  font-size: 10px;
  color: var(--bs-fg-subtle);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: var(--bs-weight-semibold);
}

.bs-user-menu-section {
  padding: var(--bs-2) var(--bs-3);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--bs-fg-subtle);
  font-weight: var(--bs-weight-semibold);
}

.bs-user-menu button, .bs-user-menu a {
  display: flex; align-items: center; gap: var(--bs-3);
  width: 100%;
  padding: var(--bs-3);
  border: none;
  background: transparent;
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg);
  font-size: var(--bs-text-sm);
  font-family: inherit;
  text-align: left;
  cursor: pointer;
  text-decoration: none;
  transition: background var(--bs-transition);
}
.bs-user-menu button:hover, .bs-user-menu a:hover { background: var(--bs-bg-subtle); }
.bs-user-menu .danger { color: var(--bs-danger); }
.bs-user-menu .danger:hover { background: var(--bs-danger-soft); }

.bs-user-menu-divider { height: 1px; background: var(--bs-border); margin: var(--bs-2) 0; }

/* Theme-Toggle in Menu */
.bs-user-menu .bs-theme-toggle { width: 100%; justify-content: space-around; }
.bs-user-menu .bs-theme-toggle button { width: auto; height: 30px; flex: 1; padding: 0 6px; border-radius: var(--bs-r-sm); gap: 4px; font-size: 11px; }
.bs-user-menu .bs-theme-toggle button span { display: inline; }
.bs-user-menu .bs-theme-toggle button:hover { background: var(--bs-bg-subtle); }


/* ═══════════════════════════════════════════════════════════════════════
   14. Dialog Sub-Tabs (shared: tdt-btn / pdt-btn / udt-btn)
   ═══════════════════════════════════════════════════════════════════════ */

.tenant-dialog-body { padding: 0 0 var(--bs-5) 0; }
.tenant-dialog-tabs {
  display: flex;
  border-bottom: 1px solid var(--bs-border);
  padding: 0 var(--bs-5);
  overflow-x: auto;
}
.tenant-dialog-tabs::-webkit-scrollbar { height: 0; }
.tdt-btn, .pdt-btn, .udt-btn {
  padding: var(--bs-3) var(--bs-4);
  border: none;
  background: transparent;
  color: var(--bs-fg-muted);
  font-weight: var(--bs-weight-medium);
  font-size: var(--bs-text-sm);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all var(--bs-transition);
  font-family: inherit;
  white-space: nowrap;
}
.tdt-btn:hover, .pdt-btn:hover, .udt-btn:hover { color: var(--bs-fg); }
.tdt-btn.active, .pdt-btn.active, .udt-btn.active {
  color: var(--bs-primary);
  border-bottom-color: var(--bs-primary);
  font-weight: var(--bs-weight-semibold);
}

.tdp { padding: var(--bs-5); }
.tdp .section-header {
  margin: var(--bs-5) 0 var(--bs-3) 0;
  padding-bottom: var(--bs-2);
  border-bottom: 1px solid var(--bs-border);
}
.tdp .section-header:first-child { margin-top: 0; }

/* Tenant-User-Rows + Checklisten */
#tuser-list { display: flex; flex-direction: column; gap: var(--bs-2); }
.tuser-row {
  display: grid;
  grid-template-columns: 44px 1fr auto auto;
  gap: var(--bs-4);
  align-items: center;
  padding: var(--bs-4) var(--bs-5);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.tuser-row:hover { border-color: var(--bs-border-hover); }
.tuser-row .avatar {
  width: 44px; height: 44px;
  border-radius: var(--bs-r);
  background: var(--rp-emerald-500);
  color: var(--bs-primary-fg);
  font-weight: var(--bs-weight-bold);
  display: flex; align-items: center; justify-content: center;
  font-size: var(--bs-text-sm);
  flex-shrink: 0;
}
.tuser-row .main { min-width: 0; }
.tuser-row .email { font-size: var(--bs-text-sm); font-weight: var(--bs-weight-semibold); color: var(--bs-fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tuser-row .meta { font-size: 11px; color: var(--bs-fg-subtle); margin-top: 2px; display: flex; gap: var(--bs-2); align-items: center; flex-wrap: wrap; }

.bs-checklist {
  display: flex; flex-direction: column; gap: var(--bs-1);
  max-height: 320px; overflow-y: auto;
}
.bs-checklist label {
  display: flex; align-items: center; gap: var(--bs-3);
  padding: var(--bs-2) var(--bs-3);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: background var(--bs-transition);
}
.bs-checklist label:hover { background: var(--bs-bg-subtle); }
.bs-checklist label.disabled { opacity: 0.5; cursor: not-allowed; }
.bs-checklist input[type="checkbox"] { width: auto; }
.bs-checklist .item-main { flex: 1; }
.bs-checklist .item-title { font-size: var(--bs-text-sm); font-weight: var(--bs-weight-medium); color: var(--bs-fg); }
.bs-checklist .item-sub { font-size: 11px; color: var(--bs-fg-subtle); }


/* ═══════════════════════════════════════════════════════════════════════
   15. Ansage-Detail-Dialog (Ansagen-Claude Kontext) — Padding-Fix
   ═══════════════════════════════════════════════════════════════════════ */

.dialog-body-std {
  padding: var(--bs-5) var(--bs-6);
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
}
.dialog-body-std .det-voice-row,
.dialog-body-std .det-text,
.dialog-body-std .det-audio,
.dialog-body-std .det-section-title,
.dialog-body-std .det-chips {
  margin: 0;
}
.dialog-footer-std {
  padding: var(--bs-4) var(--bs-6);
  border-top: 1px solid var(--bs-border);
  display: flex;
  gap: var(--bs-2);
  margin-top: 0;
}

.ann-card-voice i,
.ann-card-voice svg { flex-shrink: 0; }

.ann-card-delete {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px;
  border: 1px solid var(--bs-border);
  background: transparent;
  color: var(--bs-danger);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.ann-card-delete:hover { background: var(--bs-danger-soft); border-color: var(--bs-danger); }
.ann-card-delete svg { width: 15px; height: 15px; }

/* Live-sync-hint Icon */
.live-sync-hint svg { width: 11px; height: 11px; vertical-align: middle; }


/* ═══════════════════════════════════════════════════════════════════════
   16. Legacy-Alignment — einheitliche Buttons/Inputs/Fields
   Legacy-Klassen (.btn, .field, bare <input>) werden an bs-* angeglichen
   damit alle Dialoge gleich aussehen.
   ═══════════════════════════════════════════════════════════════════════ */

/* Buttons */
.btn {
  height: 36px;
  padding: 0 var(--bs-4);
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-base);
  font-weight: var(--bs-weight-medium);
  line-height: 1;
  box-sizing: border-box;
  border: 1px solid transparent;
  transition: all var(--bs-transition);
}
.btn:disabled { opacity: 0.5; }

.btn-primary {
  background: var(--bs-primary) !important;
  color: var(--bs-primary-fg) !important;
  box-shadow: none !important;
}
.btn-primary:hover:not(:disabled) {
  background: var(--bs-primary-hover) !important;
  transform: none !important;
}

.btn-secondary {
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  border-color: var(--bs-border);
}
.btn-secondary:hover:not(:disabled) {
  background: var(--bs-bg-subtle);
  border-color: var(--bs-border-hover);
}

.btn-ghost {
  background: transparent;
  color: var(--bs-fg-muted);
}
.btn-ghost:hover:not(:disabled) {
  background: var(--bs-bg-subtle);
  color: var(--bs-fg);
}

.btn-danger {
  background: transparent;
  color: var(--bs-danger);
  border-color: var(--bs-danger-soft);
}
.btn-danger:hover:not(:disabled) {
  background: var(--bs-danger-soft);
  border-color: var(--bs-danger);
}

.btn-sm { height: 28px; padding: 0 var(--bs-3); font-size: var(--bs-text-sm); }
.btn-block { width: 100%; }

/* Form-Fields */
.field {
  display: flex;
  flex-direction: column;
  gap: var(--bs-2);
  margin-bottom: var(--bs-4);
}
.field label {
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg-muted);
  margin: 0;
}
.field p {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  margin: 0;
}

/* Bare Inputs (ohne bs-input Klasse) */
.dialog input[type="text"]:not(.bs-input),
.dialog input[type="email"]:not(.bs-input),
.dialog input[type="password"]:not(.bs-input),
.dialog input[type="number"]:not(.bs-input),
.dialog input[type="datetime-local"]:not(.bs-input),
.dialog input[type="search"]:not(.bs-input),
.dialog textarea:not(.bs-textarea),
.dialog select:not(.bs-select) {
  width: 100%;
  height: 38px;
  padding: 0 var(--bs-3);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg);
  font-family: inherit;
  font-size: var(--bs-text-base);
  transition: all var(--bs-transition);
}
.dialog textarea:not(.bs-textarea) {
  height: auto;
  min-height: 88px;
  padding: var(--bs-3);
  resize: vertical;
  line-height: 1.5;
}
.dialog select:not(.bs-select) {
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='1,1 5,5 9,1'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--bs-3) center;
  padding-right: var(--bs-8);
}
.dialog input:focus, .dialog textarea:focus, .dialog select:focus {
  outline: none;
  border-color: var(--bs-primary);
  box-shadow: var(--bs-shadow-glow);
}

/* Form-Actions Row (Buttons am Boden von Dialogs) — einheitlicher Abstand */
.dialog .form-actions {
  display: flex;
  gap: var(--bs-2);
  align-items: center;
  margin-top: var(--bs-5);
  padding-top: var(--bs-4);
  border-top: 1px solid var(--bs-border);
  flex-wrap: wrap;
}

/* Section-Header in Dialogen */
.dialog .section-header {
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--bs-fg-subtle);
  margin: var(--bs-5) 0 var(--bs-3) 0;
  padding-bottom: var(--bs-2);
  border-bottom: 1px solid var(--bs-border);
  display: flex;
  align-items: center;
  gap: var(--bs-2);
}

/* Focus-Visible — saubere abgerundete Outline, nicht eckige Box */
.tab-btn:focus-visible,
.tdt-btn:focus-visible,
.pdt-btn:focus-visible,
.udt-btn:focus-visible,
.vm-tab:focus-visible,
.dialog-close:focus-visible {
  outline: 2px solid var(--bs-primary);
  outline-offset: 2px;
  border-radius: var(--bs-r-sm);
}
button:focus-visible {
  outline: 2px solid var(--bs-primary);
  outline-offset: 1px;
  border-radius: var(--bs-r-sm);
}

/* ═══════════════════════════════════════════════════════════════════════
   17. V4 Brand — Pure Precision (Neural-Pulse Logo + Atmospheric Vibes)
   ═══════════════════════════════════════════════════════════════════════ */

/* ─── Display-Typography (Hero/Login Headlines) ──────────────────── */
.bs-display {
  font-family: var(--bs-font-display);
  letter-spacing: -0.04em;
  line-height: 0.98;
  font-weight: 700;
}
.bs-display-xxl { font-size: clamp(56px, 8vw, 120px); letter-spacing: -0.06em; }
.bs-display-xl  { font-size: clamp(40px, 5vw, 72px);  letter-spacing: -0.05em; }
.bs-display-lg  { font-size: clamp(28px, 3.5vw, 44px); letter-spacing: -0.04em; }

.bs-gradient-text {
  background: var(--bs-gradient-text, linear-gradient(135deg, var(--bs-fg) 30%, var(--bs-primary) 70%, var(--bs-accent) 100%));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
[data-theme="light"] .bs-gradient-text,
:root:not([data-theme="dark"]) .bs-gradient-text {
  /* In Light-Mode aus dem dunklen #fff-Anfang einen dunklen Anfang machen */
  background: linear-gradient(135deg, #0f172a 30%, var(--bs-primary) 70%, var(--bs-accent) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

/* ─── Wordmark "robopult." — Outfit, Slate-Anthrazit + Emerald-Akzent ──── */
.bs-wordmark {
  font-family: var(--bs-font-display);
  display: inline-flex;
  align-items: baseline;
  gap: 0;
  letter-spacing: -0.025em;
  line-height: 1;
  font-feature-settings: "ss01" on, "ss02" on, "cv01" on;
}
/* Robopult: <span class="bs-wordmark-name">robopult</span><span class="bs-wordmark-dot">.</span> */
.bs-wordmark-name,
.bs-wordmark-base,
.bs-wordmark-star {
  font-weight: 600;
  font-style: normal;
  color: var(--bs-fg);
  background: none;
  -webkit-background-clip: initial;
  background-clip: initial;
  -webkit-text-fill-color: currentColor;
}
.bs-wordmark-name {
  /* etwas tighteres Tracking, Outfit-spezifisch */
  letter-spacing: -0.03em;
}
.bs-wordmark-star {
  letter-spacing: -0.05em;
}
.bs-wordmark-dot {
  color: var(--bs-accent);
  font-weight: 700;
  font-style: normal;
  margin-left: 0.02em;
  letter-spacing: 0;
}

/* ═══════════════════════════════════════════════════════════════════════
   Status-Pill-Pattern (Robopult „Digitale Manufaktur" V1 — clean Pill mit
   bg-50 / text-700 / border-100 + Status-Dot. Inspiration aus Vorlage.
   Verwendung: <span class="rp-pill rp-pill-success">Aktiv</span>
   ═══════════════════════════════════════════════════════════════════════ */
.rp-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  border-radius: var(--bs-r);
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-medium);
  white-space: nowrap;
  border: 1px solid;
}
.rp-pill::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}
/* Status-Pills nutzen --bs-{success|warning|danger|info}-soft (BG, themed)
   und die korrespondierenden Foreground-Token (themed). So sieht das Pill
   in Light + Dark + System-Dark identisch aus, ohne separate Overrides. */
.rp-pill-success {
  background: var(--bs-success-soft);
  color: var(--bs-success);
  border-color: var(--bs-success-soft);
}
.rp-pill-warning {
  background: var(--bs-warning-soft);
  color: var(--bs-warning);
  border-color: var(--bs-warning-soft);
}
.rp-pill-danger {
  background: var(--bs-danger-soft);
  color: var(--bs-danger);
  border-color: var(--bs-danger-soft);
}
.rp-pill-info {
  background: var(--bs-info-soft);
  color: var(--bs-info);
  border-color: var(--bs-info-soft);
}

/* ═══════════════════════════════════════════════════════════════════════
   Brand-Anchor: Industrial Navy für Sidebar-Logo + Wordmark
   Sidebar-Logo nutzt jetzt Navy als Foundation (statt Slate-700)
   ═══════════════════════════════════════════════════════════════════════ */
.sidebar-logo svg {
  color: var(--bs-sidebar-logo-fg);
}
/* Legacy basestar TLD-Klasse — bleibt kompatibel falls noch irgendwo verwendet */
.bs-wordmark-tld {
  font-weight: 500;
  color: var(--bs-primary);
  font-size: 0.42em;
  margin-left: 0.18em;
  margin-bottom: 0.12em;
  letter-spacing: -0.01em;
  font-style: normal;
  font-family: var(--bs-font-mono);
  align-self: flex-end;
  opacity: 0.85;
  text-transform: uppercase;
  font-weight: 600;
}

/* ─── Mono-Tag (GRID_ALIGN: TRUE etc.) ──────────────────────────── */
.bs-mono-tag {
  font-family: var(--bs-font-mono);
  font-size: 9px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--bs-fg-subtle);
  font-weight: 500;
}
.bs-mono-tag-accent { color: var(--bs-primary); }

/* ─── Status-Pill mit Ping-Dot (Intelligence in Motion) ──────────── */
.bs-status-pill {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 5px 14px;
  border-radius: var(--bs-r-full);
  background: var(--bs-primary-soft);
  border: 1px solid var(--bs-primary-soft);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--bs-primary);
  font-family: var(--bs-font-display);
}
.bs-status-pill-dot {
  position: relative;
  display: inline-flex;
  width: 7px;
  height: 7px;
}
.bs-status-pill-dot::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: var(--bs-primary);
  opacity: 0.7;
  animation: bs-ping 2s cubic-bezier(0,0,0.2,1) infinite;
}
.bs-status-pill-dot::after {
  content: "";
  position: absolute;
  inset: 1.5px;
  border-radius: 50%;
  background: var(--bs-primary);
}
@keyframes bs-ping {
  0%   { transform: scale(1);   opacity: 0.6; }
  75%, 100% { transform: scale(2.2); opacity: 0; }
}

/* ─── Atmospheric Background (Login + Dashboard-Hero) ────────────── */
.bs-atmospheric {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.bs-atmospheric::before,
.bs-atmospheric::after {
  content: "";
  position: absolute;
  width: 70vmax;
  height: 70vmax;
  border-radius: 50%;
  filter: blur(120px);
  opacity: 0.5;
  z-index: -1;
  pointer-events: none;
  mix-blend-mode: plus-lighter;
}
.bs-atmospheric::before {
  top: -25%;
  left: -15%;
  background: radial-gradient(circle, rgba(30,41,59,0.45) 0%, transparent 60%);
}
.bs-atmospheric::after {
  bottom: -25%;
  right: -15%;
  background: radial-gradient(circle, rgba(16,185,129,0.40) 0%, transparent 60%);
}
[data-theme="light"] .bs-atmospheric::before,
:root:not([data-theme="dark"]) .bs-atmospheric::before { opacity: 0.18; }
[data-theme="light"] .bs-atmospheric::after,
:root:not([data-theme="dark"]) .bs-atmospheric::after { opacity: 0.16; }

/* ─── Noise Overlay (Tiefe) ───────────────────────────────────────── */
.bs-noise::before {
  content: "";
  position: fixed;
  inset: 0;
  opacity: 0.035;
  z-index: 1;
  pointer-events: none;
  background-image: url("data:image/svg+xml;utf8,<svg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  mix-blend-mode: overlay;
}
[data-theme="light"] .bs-noise::before,
:root:not([data-theme="dark"]) .bs-noise::before { opacity: 0.025; }

/* ─── Logo-Mark Animations ────────────────────────────────────────── */
.bs-logo-pulse-ring {
  animation: bs-logo-orbit 12s linear infinite;
  transform-origin: 50% 50%;
  transform-box: fill-box;
}
@keyframes bs-logo-orbit {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
.bs-logo-core-pulse {
  animation: bs-core-pulse 3.2s ease-in-out infinite;
  transform-origin: 50% 50%;
  transform-box: fill-box;
}
@keyframes bs-core-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.85; transform: scale(0.94); }
}

/* ─── Bento-Card (Atmospheric Variant für Dashboard-Hero/Cards) ──── */
.bs-bento {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-xl);
  padding: var(--bs-6);
  position: relative;
  transition: all var(--bs-transition-slow);
}
.bs-bento:hover {
  border-color: var(--bs-primary-soft);
  box-shadow: 0 20px 40px -20px rgba(30,41,59, 0.25);
}

/* Bento (atmospheric glass-morph in Dark via --bs-bento-bg-overlay-Token) */
.bs-bento {
  background: var(--bs-bento-bg-overlay, var(--bs-bg-elevated));
  backdrop-filter: var(--bs-bento-filter, none);
  -webkit-backdrop-filter: var(--bs-bento-filter, none);
}

/* ═══════════════════════════════════════════════════════════════════════
   18. Team-Tab — Mitarbeiter / Gruppen / FMC (Starface Bridge)
   ═══════════════════════════════════════════════════════════════════════ */

/* Sub-Tabs */
.team-subtabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--bs-border);
  margin-bottom: var(--bs-5);
  flex-wrap: wrap;
}
.tt-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--bs-fg-muted);
  font-family: inherit;
  font-size: var(--bs-text-base);
  font-weight: var(--bs-weight-medium);
  cursor: pointer;
  transition: all var(--bs-transition);
  margin-bottom: -1px;
}
.tt-btn:hover { color: var(--bs-fg); }
.tt-btn.active {
  color: var(--bs-primary);
  border-bottom-color: var(--bs-primary);
  font-weight: var(--bs-weight-semibold);
}
.tt-btn .tt-icon { display: inline-flex; }
.tt-btn .tt-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 18px;
  padding: 0 6px;
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-subtle);
  border-radius: var(--bs-r-full);
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  font-family: var(--bs-font-mono);
}
.tt-btn.active .tt-count {
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
}

/* Toolbar (Search + State) */
.team-toolbar {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  margin-bottom: var(--bs-5);
}
.team-search {
  position: relative;
  flex: 1;
  max-width: 400px;
}
.team-search-icon {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--bs-fg-subtle);
  pointer-events: none;
  display: inline-flex;
}
.team-search input {
  padding-left: 36px;
  height: 38px;
}
.team-state {
  font-family: var(--bs-font-mono);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-subtle);
}

/* Grid */
.team-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: var(--bs-3);
}

/* Card */
.team-card {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  width: 100%;
  transition: all var(--bs-transition);
  color: inherit;
}
.team-card:hover {
  border-color: var(--bs-primary-soft);
  background: var(--bs-team-card-hover-bg, var(--bs-bg-elevated));
  transform: translateY(-1px);
  box-shadow: var(--bs-team-card-hover-shadow, 0 4px 12px rgba(30,41,59, 0.12));
}
.team-card-body {
  flex: 1;
  min-width: 0;
}
.team-card-title {
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-md);
  color: var(--bs-fg);
  margin-bottom: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.team-card-sub {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.team-card-meta {
  flex-shrink: 0;
}

/* Avatar — solide Brand-Farben (kein dark→green-Gradient mehr) */
.team-avatar {
  position: relative;
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #334155;                /* Slate-700 — neutral, dunkel-genug fuer weiss in beiden Themes */
  border-radius: var(--bs-r-full);
  color: var(--bs-primary-fg);
  font-weight: var(--bs-weight-semibold);
  font-size: 13px;
  letter-spacing: 0.02em;
  overflow: hidden;
}
.team-avatar-initials {
  position: relative;
  z-index: 0;
}
.team-avatar-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 1;
}
.team-avatar-group {
  background: #10b981;                /* Brand-Emerald */
}
.team-avatar-fmc {
  background: #b45309;                /* Amber */
}

/* Empty State */
.team-empty {
  grid-column: 1 / -1;
  text-align: center;
  padding: var(--bs-12) var(--bs-6);
}

/* ─── Dialog: Mitarbeiter (dlg-team-user) ──────────────────────────── */

.dialog-tabs {
  display: flex;
  gap: 4px;
  padding: 0 var(--bs-6);
  border-bottom: 1px solid var(--bs-border);
  flex-wrap: wrap;
}
.dtu-tab, .dtg-tab {
  padding: 10px 14px;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--bs-fg-muted);
  font-family: inherit;
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-medium);
  cursor: pointer;
  transition: all var(--bs-transition);
  margin-bottom: -1px;
}
.dtu-tab:hover:not(.disabled), .dtg-tab:hover:not(.disabled) { color: var(--bs-fg); }
.dtu-tab.active, .dtg-tab.active {
  color: var(--bs-primary);
  border-bottom-color: var(--bs-primary);
  font-weight: var(--bs-weight-semibold);
}
.dtu-tab.disabled, .dtg-tab.disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.dtu-pane, .dtg-pane {
  padding: var(--bs-5) var(--bs-6) var(--bs-6);
}

/* Header-Avatar im Dialog */
.dtu-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Avatar-Pane */
.dtu-avatar-preview-wrap {
  display: flex;
  justify-content: center;
  padding: var(--bs-6) 0;
}
.dtu-avatar-preview .team-avatar {
  width: 140px !important;
  height: 140px !important;
  font-size: 48px !important;
  box-shadow: 0 8px 32px rgba(30,41,59, 0.25);
}
.dtu-avatar-actions {
  display: flex;
  gap: var(--bs-2);
  justify-content: center;
  flex-wrap: wrap;
}
.dtu-avatar-actions label {
  cursor: pointer;
}

/* Skills-Pane */
.dtu-skills-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 360px;
  overflow-y: auto;
  padding: var(--bs-2);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
  margin-bottom: var(--bs-4);
}
.dtu-skill-item {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: 8px 10px;
  background: var(--bs-bg-elevated);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: background var(--bs-transition);
}
.dtu-skill-item:hover { background: var(--bs-primary-soft); }
.dtu-skill-name {
  font-size: var(--bs-text-base);
  color: var(--bs-fg);
}

/* Toggle-Row Helper */
.bs-toggle-row {
  display: inline-flex;
  align-items: center;
  gap: var(--bs-2);
  cursor: pointer;
  font-size: var(--bs-text-base);
  color: var(--bs-fg);
}

/* ─── Dialog: Gruppe (dlg-team-group) ──────────────────────────────── */

.dtg-section-title {
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--bs-fg-subtle);
  margin: var(--bs-5) 0 var(--bs-2);
}

.dtg-members-search {
  position: relative;
}
.dtg-add-suggestions {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 10;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  box-shadow: var(--bs-shadow-lg);
  max-height: 280px;
  overflow-y: auto;
  margin-top: 4px;
}
.dtg-add-suggestions:empty { display: none; }
.dtg-suggestion {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: 8px 12px;
  background: transparent;
  border: 0;
  width: 100%;
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  color: inherit;
  transition: background var(--bs-transition);
}
.dtg-suggestion:hover { background: var(--bs-bg-subtle); }
.dtg-suggestion + .dtg-suggestion { border-top: 1px solid var(--bs-border); }
.dtg-sug-name { font-weight: var(--bs-weight-medium); font-size: var(--bs-text-base); color: var(--bs-fg); }
.dtg-sug-sub { font-size: var(--bs-text-xs); color: var(--bs-fg-muted); }
.dtg-sug-add {
  margin-left: auto;
  display: inline-flex;
  width: 24px;
  height: 24px;
  align-items: center;
  justify-content: center;
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  border-radius: var(--bs-r-full);
}
.dtg-suggestion-empty {
  padding: 10px 12px;
  color: var(--bs-fg-subtle);
  font-size: var(--bs-text-sm);
  text-align: center;
}

.dtg-members-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 400px;
  overflow-y: auto;
}
.dtg-member {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: 8px 12px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
}
.dtg-member-body { flex: 1; min-width: 0; }
.dtg-member-name { font-weight: var(--bs-weight-medium); font-size: var(--bs-text-base); color: var(--bs-fg); }
.dtg-member-sub { font-size: var(--bs-text-xs); color: var(--bs-fg-muted); }
.dtg-member-remove {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* ─── Status-Pills (für aktiv/inaktiv Badges) ──────────────────────── */
.bs-pill-success { background: var(--bs-success-soft); color: var(--bs-success); }
.bs-pill-warning { background: var(--bs-warning-soft); color: var(--bs-warning); }

/* ─── Loading + Empty Icon ─────────────────────────────────────────── */
.bs-empty-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  border-radius: var(--bs-r-full);
  margin: 0 auto var(--bs-4);
}

/* Responsive */
@media (max-width: 700px) {
  .team-grid { grid-template-columns: 1fr; }
  .dialog-tabs { padding: 0 var(--bs-3); overflow-x: auto; flex-wrap: nowrap; }
}

/* ═══════════════════════════════════════════════════════════════════════
   19. KI-Attendant Tab
   ═══════════════════════════════════════════════════════════════════════ */

/* Status-Karte oben */
.att-status-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--bs-4);
  padding: var(--bs-5) var(--bs-6);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-xl);
  margin-bottom: var(--bs-5);
  position: relative;
  overflow: hidden;
}
.att-status-card::before {
  content: "";
  position: absolute;
  top: -50%;
  right: -10%;
  width: 50%;
  height: 200%;
  background: radial-gradient(circle, rgba(30,41,59,0.08), transparent 70%);
  pointer-events: none;
}
.att-status-info {
  display: flex;
  align-items: center;
  gap: var(--bs-4);
  position: relative;
}
.att-status-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-muted);
  border-radius: var(--bs-r-lg);
  flex-shrink: 0;
  transition: all var(--bs-transition);
}
.att-status-icon-live {
  background: var(--bs-mod-attendant);
  color: var(--bs-primary-fg);
  box-shadow: 0 6px 20px rgba(16,185,129, 0.30);
}
.att-status-title {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-lg);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  margin-bottom: 2px;
}
.att-status-subtitle {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
}
.att-status-actions {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  position: relative;
}
.att-status-badge {
  font-family: var(--bs-font-mono);
  font-size: 10px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: 0.18em;
  padding: 4px 10px;
  border-radius: var(--bs-r-full);
}
.att-badge-live {
  background: var(--bs-success-soft);
  color: var(--bs-success);
}
.att-badge-off {
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-subtle);
}

/* Sub-Tab Buttons (eigener Selektor — nicht .tt-btn weil eigene Reihe) */
.att-sub-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--bs-fg-muted);
  font-family: inherit;
  font-size: var(--bs-text-base);
  font-weight: var(--bs-weight-medium);
  cursor: pointer;
  transition: all var(--bs-transition);
  margin-bottom: -1px;
}
.att-sub-btn:hover { color: var(--bs-fg); }
.att-sub-btn.active {
  color: var(--bs-primary);
  border-bottom-color: var(--bs-primary);
  font-weight: var(--bs-weight-semibold);
}
.att-sub-btn .tt-icon { display: inline-flex; }

/* Pane */
.att-pane { padding: var(--bs-2) 0; }
.att-pane-intro {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--bs-4);
  margin-bottom: var(--bs-5);
  padding: var(--bs-4) var(--bs-5);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-lg);
}
.att-pane-intro p { color: var(--bs-fg-muted); font-size: var(--bs-text-base); margin: 0; flex: 1; }
.att-pane-intro em { color: var(--bs-primary); font-style: normal; font-weight: var(--bs-weight-medium); }

/* Form */
.att-form { max-width: 880px; }
.att-section-title {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  margin: var(--bs-6) 0 var(--bs-3);
  padding-top: var(--bs-4);
  border-top: 1px solid var(--bs-border);
}
.att-section-title:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.att-saved-state {
  font-size: var(--bs-text-sm);
  color: var(--bs-success);
  font-weight: var(--bs-weight-medium);
  margin-left: var(--bs-3);
}

/* Departments */
.att-dep-list {
  display: flex;
  flex-direction: column;
  gap: var(--bs-2);
}
.att-dep-card {
  display: flex;
  align-items: center;
  gap: var(--bs-4);
  padding: var(--bs-4) var(--bs-5);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  transition: all var(--bs-transition);
}
.att-dep-card:hover { border-color: var(--bs-primary-soft); }
.att-dep-inactive { opacity: 0.55; }
.att-dep-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  border-radius: var(--bs-r);
  flex-shrink: 0;
}
.att-dep-body { flex: 1; min-width: 0; }
.att-dep-head {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.att-dep-name {
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-md);
  color: var(--bs-fg);
}
.att-dep-sub {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  flex-wrap: wrap;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
}
.att-dep-ext {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-family: var(--bs-font-mono);
  color: var(--bs-fg);
}
.att-dep-kw {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
}
.att-kw-chip {
  display: inline-flex;
  padding: 2px 8px;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-full);
  font-size: 11px;
  color: var(--bs-fg-muted);
}
.att-kw-more {
  font-size: 11px;
  color: var(--bs-fg-subtle);
}
.att-dep-desc {
  margin-top: 4px;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-subtle);
  line-height: 1.4;
}
.att-dep-edit {
  flex-shrink: 0;
  gap: 6px;
}

/* Business Hours */
.att-hours-grid {
  display: flex;
  flex-direction: column;
  gap: 4px;
  background: var(--bs-bg-subtle);
  padding: var(--bs-3);
  border-radius: var(--bs-r-lg);
  margin-bottom: var(--bs-5);
}
.att-hour-row {
  display: grid;
  grid-template-columns: 200px 1fr;
  align-items: center;
  gap: var(--bs-4);
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-bg-elevated);
  border-radius: var(--bs-r-sm);
}
.att-hour-toggle {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
}
.att-hour-day {
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg);
}
.att-hour-times {
  display: flex;
  align-items: center;
  gap: var(--bs-2);
}
.att-hour-times[data-disabled="1"] { opacity: 0.45; }
.att-hour-input {
  width: 110px !important;
  height: 34px !important;
  font-family: var(--bs-font-mono) !important;
}
.att-hour-sep {
  color: var(--bs-fg-subtle);
  font-size: var(--bs-text-sm);
}
.att-hour-state {
  margin-left: auto;
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  text-transform: uppercase;
  letter-spacing: 0.12em;
}

/* Sessions */
.att-sessions-list {
  display: flex;
  flex-direction: column;
  gap: var(--bs-2);
}
.att-sess-card {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  width: 100%;
  color: inherit;
  transition: all var(--bs-transition);
}
.att-sess-card:hover {
  border-color: var(--bs-primary-soft);
  background: var(--bs-bg-elevated);
}
.att-sess-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--bs-r);
  flex-shrink: 0;
}
/* R10c — Outcome-Farben über brand-tokens, damit Light + Dark beide gut aussehen.
   Vorher wurden die Light-Pastels (#CFFAFE, #D1FAE5) auch in Dark verwendet → grelle
   Pastell-Boxen gegen slate-800-Cards = zu hoher Kontrast. Jetzt mit --bs-*-soft (rgba). */
.att-sess-transfer       { background: var(--bs-mod-voicemail-soft); color: var(--bs-mod-voicemail); }
.att-sess-message        { background: var(--bs-mod-team-soft);      color: var(--bs-mod-team); }
.att-sess-completed      { background: var(--bs-success-soft);       color: var(--bs-success); }
.att-sess-hangup-caller  { background: var(--bs-bg-subtle);          color: var(--bs-fg-muted); }    /* neutral, statt navy-on-navy */
.att-sess-default        { background: var(--bs-warning-soft);       color: var(--bs-warning); }     /* Sonstige → Amber statt Pink */
.att-sess-body { flex: 1; min-width: 0; }
.att-sess-head {
  display: flex;
  align-items: baseline;
  gap: var(--bs-2);
  margin-bottom: 2px;
}
.att-sess-caller {
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-md);
  color: var(--bs-fg);
  font-family: var(--bs-font-mono);
}
.att-sess-time {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  margin-left: auto;
}
.att-sess-sub {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.att-sess-meta { flex-shrink: 0; }

/* Session Detail-Dialog */
.das-meta-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--bs-3);
  padding: var(--bs-4);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-lg);
}
.das-meta-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.das-meta-full { grid-column: 1 / -1; }
.das-meta-lbl {
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
}
.das-meta-val {
  font-size: var(--bs-text-base);
  color: var(--bs-fg);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.das-messages {
  display: flex;
  flex-direction: column;
  gap: var(--bs-2);
  max-height: 460px;
  overflow-y: auto;
  padding: var(--bs-2);
}
.das-msg {
  padding: var(--bs-3) var(--bs-4);
  border-radius: var(--bs-r);
  border: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
}
.das-msg-head {
  display: flex;
  align-items: center;
  gap: var(--bs-2);
  margin-bottom: 4px;
}
.das-msg-role {
  font-size: 10px;
  font-weight: var(--bs-weight-bold);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
}
.das-msg-time {
  margin-left: auto;
  font-size: 10px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
}
.das-msg-text {
  font-size: var(--bs-text-base);
  color: var(--bs-fg);
  line-height: 1.5;
}
.das-msg-user {
  background: var(--bs-bg-subtle);
  border-color: var(--bs-border);
}
.das-msg-user .das-msg-role { color: var(--bs-fg-muted); }
.das-msg-ai {
  background: var(--bs-primary-soft);
  border-color: rgba(30,41,59, 0.2);
}
.das-msg-ai .das-msg-role { color: var(--bs-primary); }
.das-msg-tool {
  background: rgba(45, 212, 191, 0.10);
  border-color: rgba(45, 212, 191, 0.2);
}
.das-msg-tool .das-msg-role { color: #2dd4bf; }
.das-msg-system {
  background: var(--bs-bg-subtle);
  border-style: dashed;
  font-size: var(--bs-text-sm);
  opacity: 0.85;
}

@media (max-width: 700px) {
  .att-status-card { flex-direction: column; align-items: stretch; }
  .att-status-actions { justify-content: flex-end; }
  .att-hour-row { grid-template-columns: 1fr; gap: var(--bs-2); }
  .att-pane-intro { flex-direction: column; align-items: stretch; }
  .das-meta-grid { grid-template-columns: 1fr; }
}

/* ═══════════════════════════════════════════════════════════════════════
   19b. KI-Attendant Erweiterungen (Stats-Dashboard, Prompt-Pane, Voice-Preview)
   ═══════════════════════════════════════════════════════════════════════ */

/* KPI-Row */
.att-kpi-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: var(--bs-3);
  margin-bottom: var(--bs-5);
}
.att-kpi {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: var(--bs-4) var(--bs-5);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  transition: all var(--bs-transition);
}
.att-kpi:hover { border-color: var(--bs-primary-soft); }
.att-kpi-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--bs-r);
  flex-shrink: 0;
  /* Default-Fallback: Cyan (für kpi-today wenn keine speziellere Klasse greift) */
  background: var(--bs-mod-voicemail-soft);
  color: var(--bs-mod-voicemail);
}
/* R10d — KPI-Karten-Icons jetzt über bs-tokens (Light + Dark adaptiv).
   Vorher: hartcodierte Light-Pastels führten in Dark zu grellen Boxen.
   "Monat" war besonders krass: navy-on-navy = unsichtbar in Dark, krass dunkel in Light. */
.att-kpi.kpi-today .att-kpi-icon { background: var(--bs-mod-voicemail-soft); color: var(--bs-mod-voicemail); }   /* Cyan — frische Aktivität */
.att-kpi.kpi-week  .att-kpi-icon { background: var(--bs-mod-team-soft);      color: var(--bs-mod-team); }        /* Violet — Wochen-Aggregat */
.att-kpi.kpi-month .att-kpi-icon { background: var(--bs-att-kpi-month-bg);   color: var(--bs-att-kpi-month-fg); } /* Slate — Monats-Ansicht; in Dark Slate-300 */
.att-kpi.kpi-total .att-kpi-icon { background: var(--bs-success-soft);       color: var(--bs-success); }         /* Emerald — Lifetime-Total */
.att-kpi.kpi-dur   .att-kpi-icon { background: var(--bs-warning-soft);       color: var(--bs-warning); }         /* Amber — Time-Metric */
.att-kpi-body { min-width: 0; }
.att-kpi-value {
  font-family: var(--bs-font-display);
  font-size: 24px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.04em;
  color: var(--bs-fg);
  line-height: 1;
}
.att-kpi-label {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  margin-top: 4px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-weight: var(--bs-weight-medium);
}

/* Stats-Grid */
.att-stats-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: var(--bs-3);
  margin-bottom: var(--bs-3);
  align-items: start;          /* Cards size to content (kein Weißraum-Streck) */
}
@media (max-width: 900px) { .att-stats-grid { grid-template-columns: 1fr; } }

.att-stats-card {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  padding: var(--bs-5);
  margin-bottom: var(--bs-3);
}
.att-stats-card-head {
  margin-bottom: var(--bs-4);
}
.att-stats-card-head h4 {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  margin-bottom: 2px;
}
.att-stats-card-head p {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin: 0;
}

/* Outcome bars */
.att-outcome-bars {
  display: flex;
  flex-direction: column;
  gap: var(--bs-2);
}
.att-outcome-row {
  display: grid;
  grid-template-columns: 28px 1fr 2fr 40px;
  align-items: center;
  gap: var(--bs-2);
}
.att-outcome-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--bs-r-sm);
}
.att-outcome-label {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.att-outcome-bar-track {
  height: 8px;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-full);
  overflow: hidden;
}
.att-outcome-bar-fill {
  height: 100%;
  background: var(--bs-primary);
  border-radius: var(--bs-r-full);
  transition: width 400ms ease;
}
/* R10c — Outcome-Bars in Stats: 7 distinkte Farben */
.att-outcome-bar-fill.att-sess-transfer       { background: var(--bs-mod-voicemail); }   /* Cyan */
.att-outcome-bar-fill.att-sess-message        { background: var(--bs-mod-team); }        /* Violet */
.att-outcome-bar-fill.att-sess-completed      { background: var(--rp-success); }         /* Emerald */
.att-outcome-bar-fill.att-sess-hangup-caller  { background: var(--rp-navy); }            /* Industrial Navy */
.att-outcome-bar-fill.att-sess-default        { background: #DB2777; }                   /* Pink — Sonstige */
.att-outcome-bar-fill.att-sess-ooh            { background: var(--rp-warning); }         /* Amber */
.att-outcome-bar-fill.att-sess-error          { background: var(--rp-danger); }          /* Rot */
.att-outcome-count {
  font-family: var(--bs-font-mono);
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  text-align: right;
}

/* Top Departments */
.att-top-depts {
  display: flex;
  flex-direction: column;
  gap: var(--bs-2);
}
.att-top-dept {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: 8px 12px;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
}
.att-top-rank {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  border-radius: var(--bs-r-full);
  font-size: 11px;
  font-weight: var(--bs-weight-bold);
  font-family: var(--bs-font-mono);
}
.att-top-body { flex: 1; min-width: 0; }
.att-top-name {
  font-weight: var(--bs-weight-medium);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
}
.att-top-ext {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
}
.att-top-count {
  font-family: var(--bs-font-mono);
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-primary);
}

/* Phase 19g (2026-05-14): Storage-Stats im Tenant-Modal (Integrationen-Tab) */
.ti-storage-stats {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.ti-storage-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding: 6px 0;
  border-bottom: 1px dashed var(--bs-border);
  font-size: 13px;
}
.ti-storage-row:last-child {
  border-bottom: 0;
}
.ti-storage-row.ti-storage-total {
  padding-top: 8px;
  margin-top: 4px;
  border-top: 1px solid var(--bs-border);
  border-bottom: 0;
  font-weight: 600;
}
.ti-storage-label { color: var(--bs-fg-muted); }
.ti-storage-value {
  color: var(--bs-fg);
  font-family: var(--bs-font-mono);
}
.ti-storage-total .ti-storage-value { color: var(--bs-primary); }

/* Ansagen-Toolbar (Phase 19g) — Suche + Filter + Sort ueber der Liste */
.ann-toolbar {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  margin: var(--bs-4) 0;
  flex-wrap: wrap;
}

.ann-toolbar .bs-input-sm {
  padding: 7px 10px;
  font-size: 13px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  color: var(--bs-fg);
  border-radius: var(--bs-r-sm);
  font-family: inherit;
}

.ann-toolbar .bs-input-sm:focus {
  outline: none;
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px var(--bs-primary-soft);
}

/* Range-Picker (Phase 19g) — Tabs Heute / 7 Tage / 30 Tage ueber den Stats */
.att-stats-range {
  display: inline-flex;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  padding: 2px;
  gap: 2px;
  margin-bottom: var(--bs-4);
}

.att-stats-range-btn {
  padding: 6px 14px;
  border: 0;
  background: transparent;
  color: var(--bs-fg-muted);
  font-size: 13px;
  font-family: inherit;
  font-weight: 500;
  border-radius: calc(var(--bs-r-sm) - 2px);
  cursor: pointer;
  transition: background var(--bs-transition), color var(--bs-transition);
}

.att-stats-range-btn:hover:not(.is-active) {
  color: var(--bs-fg);
  background: var(--bs-bg-elevated);
}

.att-stats-range-btn.is-active {
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  font-weight: 600;
  box-shadow: var(--bs-shadow-sm);
}

/* By-Hour + By-Day Bar Chart (Phase 19g: + Y-Axis, Gridlines, Hover, Custom-Tooltip) */
.att-byhour-chart, .att-byday-chart { padding: var(--bs-2) 0; }

.att-chart-wrap {
  display: flex;
  gap: var(--bs-3);
  align-items: stretch;
  height: 160px;
}

.att-chart-yaxis {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding-bottom: 18px;  /* gleicht .att-bar-label-height aus damit Ticks zur Bar-Top passen */
  width: 28px;
  flex-shrink: 0;
}

.att-chart-ytick {
  font-size: 10px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  font-weight: var(--bs-weight-medium);
  text-align: right;
  line-height: 1;
}

.att-chart-area {
  position: relative;
  flex: 1;
  min-width: 0;
}

.att-chart-gridlines {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 18px;  /* gleicht .att-bar-label aus */
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  pointer-events: none;
}

.att-chart-gridline {
  border-top: 1px dashed var(--bs-border);
  height: 0;
  opacity: 0.5;
}

.att-bars {
  position: relative;  /* damit gridlines unter den bars liegen */
  display: flex;
  align-items: flex-end;
  gap: 4px;
  height: 100%;
  padding: 0 4px;
  z-index: 1;
}

.att-bar-col {
  flex: 1;
  min-width: 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  height: 100%;
  cursor: pointer;
  position: relative;
}

.att-bar-fill {
  width: 100%;
  /* Token --bs-att-bar-fill-gradient: in Light Industrial-Navy, in Dark Slate-Blue. */
  background: var(--bs-att-bar-fill-gradient);
  border-radius: var(--bs-r-sm) var(--bs-r-sm) 0 0;
  min-height: 2px;
  transition: height 400ms ease, filter 150ms ease, box-shadow 150ms ease;
  margin-top: auto;
}

/* Hover: leichte Aufhellung + Outline-Glow in Theme-Akzent-Farbe */
.att-bar-col:hover .att-bar-fill {
  filter: brightness(1.18);
  box-shadow: 0 0 0 2px var(--bs-bg-elevated), 0 0 0 3px var(--bs-primary-soft);
}

/* Emerald-Variante — Brand-Akzent für die By-Hour-Chart („Anrufe heute") */
.att-bar-fill-emerald {
  background: var(--bs-att-bar-fill-emerald-gradient);
}
.att-bar-col:hover .att-bar-fill-emerald {
  box-shadow: 0 0 0 2px var(--bs-bg-elevated), 0 0 0 3px var(--bs-accent-soft);
}

/* Legacy-Alias — falls irgendwo noch verwendet, gleiches Aussehen wie -emerald */
.att-bar-fill-purple {
  background: var(--bs-att-bar-fill-emerald-gradient);
}

.att-bar-label {
  font-size: 9px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  font-weight: var(--bs-weight-medium);
  flex-shrink: 0;
  height: 12px;  /* fester Slot damit gridlines bei justify-content:space-between aligned bleiben */
}

/* Custom-Tooltip: floated relativ zur Maus, token-themed */
.att-chart-tooltip {
  background: var(--bs-fg);
  color: var(--bs-bg);
  padding: 6px 10px;
  border-radius: var(--bs-r-sm);
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
  z-index: var(--bs-z-toast);
  box-shadow: var(--bs-shadow);
  transition: opacity 120ms ease;
}

/* Phase 19g: globaler Custom-Tooltip fuer [data-tooltip]-Elemente.
   Singleton am body, follow Maus + Tastatur-Fokus, kein Browser-Default. */
.bs-tooltip {
  position: absolute;
  pointer-events: none;
  background: var(--bs-fg);
  color: var(--bs-bg);
  padding: 6px 10px;
  border-radius: var(--bs-r-sm);
  font-size: 12px;
  font-weight: 500;
  font-family: inherit;
  max-width: 280px;
  line-height: 1.4;
  z-index: var(--bs-z-toast);
  box-shadow: var(--bs-shadow);
  transition: opacity 120ms ease;
  white-space: normal;
  word-wrap: break-word;
}
@media (prefers-reduced-motion: reduce) {
  .bs-tooltip { transition: none; }
}

/* Voice-Preview Row */
.att-voice-row {
  display: flex;
  gap: var(--bs-2);
  align-items: stretch;
}
.att-voice-row select { flex: 1; }
.att-voice-row button {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}
.att-voice-preview-icon { display: inline-flex; }

/* Prompt-Preset-Bar */
.att-preset-bar {
  display: flex;
  align-items: center;
  gap: var(--bs-2);
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-lg);
  margin-bottom: var(--bs-4);
  flex-wrap: wrap;
}
.att-preset-bar .att-preset-select {
  flex: 1;
  min-width: 200px;
  height: 36px !important;
}
.att-preset-info {
  flex-basis: 100%;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin-top: 4px;
  font-style: italic;
}

.att-prompt-textarea {
  font-family: var(--bs-font-mono) !important;
  font-size: 13px !important;
  line-height: 1.55 !important;
  resize: vertical;
}

/* Test-Card */
.att-test-card {
  padding: var(--bs-5);
  background: var(--bs-bg-subtle);
  border: 1px dashed var(--bs-border);
  border-radius: var(--bs-r-lg);
}
.att-test-result {
  margin-top: var(--bs-3);
  padding: var(--bs-4);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
}
.att-test-head {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  margin-bottom: var(--bs-3);
}
.att-test-outcome {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: var(--bs-r-full);
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-semibold);
}
/* R10c — Test-Anruf-Result-Pill: 7 distinkte Farben (Token-themed) */
.att-test-outcome.att-sess-transfer      { background: var(--bs-mod-voicemail-soft); color: var(--bs-mod-voicemail); }
.att-test-outcome.att-sess-message       { background: var(--bs-mod-team-soft);      color: var(--bs-mod-team); }
.att-test-outcome.att-sess-completed     { background: var(--rp-success-soft);       color: var(--rp-success); }
.att-test-outcome.att-sess-hangup-caller { background: var(--bs-att-sess-hangup-bg); color: var(--bs-att-sess-hangup-fg); }
.att-test-outcome.att-sess-default       { background: var(--bs-att-sess-default-bg); color: var(--bs-att-sess-default-fg); }
.att-test-outcome.att-sess-error         { background: var(--rp-danger-soft);        color: var(--rp-danger); }
.att-test-msgs { display: flex; flex-direction: column; gap: var(--bs-2); }

/* Sessions Filters */
.att-sess-filters {
  display: flex;
  gap: var(--bs-2);
  margin-top: var(--bs-2);
  flex-wrap: wrap;
}
.att-sess-filter {
  height: 32px !important;
  font-size: var(--bs-text-sm) !important;
  max-width: 220px;
}

/* R10 — Sessions: zusätzliche Outcome-Klassen (auf rp-Tokens migriert) */
.att-sess-ooh   { background: var(--rp-warning-soft); color: var(--rp-warning); }   /* Amber — Außerhalb der Geschäftszeiten */
.att-sess-error { background: var(--rp-danger-soft);  color: var(--rp-danger); }    /* Rot — Fehler/Config-Missing */

/* Base-Tokens: alle Status-Outcome-Bar-Fills + KPI-Icon-BG nutzen jetzt tokens —
   in Dark werden die Tokens automatisch heller (Slate-300/Pink-300) damit Navy
   und Pink-600 nicht im dunklen BG verschwinden. */
.att-sess-hangup-caller,
.att-test-outcome.att-sess-hangup-caller {
  background: var(--bs-att-sess-hangup-bg);
  color: var(--bs-att-sess-hangup-fg);
}
.att-outcome-bar-fill.att-sess-hangup-caller {
  background: var(--bs-att-sess-hangup-bar);
}
.att-sess-default,
.att-test-outcome.att-sess-default {
  background: var(--bs-att-sess-default-bg);
  color: var(--bs-att-sess-default-fg);
}
.att-outcome-bar-fill.att-sess-default {
  background: var(--bs-att-sess-default-bar);
}

.att-sess-called {
  font-size: 11px;
  font-family: var(--bs-font-mono);
  color: var(--bs-fg-subtle);
}

/* Hours-Toggle bei disabled */
.att-hour-times[data-disabled="0"] { opacity: 1; }

/* ═══════════════════════════════════════════════════════════════════════
   20. Tenant-Integrationen Tab (API-Schlüssel-Verwaltung)
   ═══════════════════════════════════════════════════════════════════════ */

.ti-intro {
  padding: var(--bs-4) var(--bs-5);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-lg);
  margin-bottom: var(--bs-5);
}
.ti-intro h4 {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  margin-bottom: 6px;
}
.ti-intro p {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.55;
  margin: 0;
}
.ti-legend {
  display: flex;
  gap: var(--bs-5);
  list-style: none;
  margin-top: var(--bs-3);
  padding: 0;
  flex-wrap: wrap;
}
.ti-legend li {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
}
.ti-legend strong { color: var(--bs-fg); font-weight: var(--bs-weight-medium); }
.ti-legend-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--bs-primary);
}
.ti-legend-clear { background: var(--bs-warning); }

.ti-form {
  display: flex;
  flex-direction: column;
  gap: var(--bs-4);
}

/* ─── Card ──────────────────────────────────────────────────────────── */

.ti-card {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  overflow: hidden;
  transition: border-color var(--bs-transition);
}
.ti-card:hover { border-color: var(--bs-border-hover); }
.ti-card-head {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: var(--bs-4) var(--bs-5);
  border-bottom: 1px solid var(--bs-border);
  background: var(--bs-bg-subtle);
}
/* Card-Icon — einheitliches 38×38 Quadrat, Color-Code nach Domäne (KI / VM / Ansagen / DSGVO) */
.ti-card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: var(--bs-r-sm);
  flex-shrink: 0;
  border: 1px solid transparent;
}
.ti-card-icon svg { width: 18px; height: 18px; stroke-width: 2; }

/* Domäne 1: KI-Attendant / OpenAI-Foundation — Slate-Primary */
.ti-icon-openai,
.ti-icon-model {
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  border-color: rgba(30, 41, 59, 0.18);
}

/* Domäne 2: Voicemail-Operations — Teal/Cyan (Brand-Akzent für VM, Token-themed) */
.ti-icon-trans,
.ti-icon-poll,
.ti-icon-email {
  background: var(--bs-ti-icon-teal-bg);
  color: var(--bs-ti-icon-teal-fg);
  border-color: var(--bs-ti-icon-teal-border);
}

/* Domäne 3: Ansagen-Engine — Precision Emerald (Token-themed) */
.ti-icon-eleven,
.ti-icon-tts,
.ti-icon-quota {
  background: var(--bs-ti-icon-emerald-bg);
  color: var(--bs-ti-icon-emerald-fg);
  border-color: var(--bs-ti-icon-emerald-border);
}

/* Domäne 4: DSGVO / Danger — Red-Warning (Token-themed) */
.ti-icon-retention {
  background: var(--bs-ti-icon-danger-bg);
  color: var(--bs-ti-icon-danger-fg);
  border-color: var(--bs-ti-icon-danger-border);
}

/* TTS-Banner im Tenant-Ansagen-Tab (Read-Only, Phase 13b) */
.ann-tts-banner {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 14px;
  align-items: center;
  padding: 12px 18px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  margin-bottom: var(--bs-4);
}
.ann-tts-banner[data-provider="openai"] {
  background: var(--bs-primary-soft);
  border-color: var(--bs-border);
}
.ann-tts-banner[data-provider="elevenlabs"] {
  background: var(--bs-mod-announcements-soft);
  border-color: var(--bs-mod-announcements);
}
.ann-tts-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--bs-bg-elevated);
  border-radius: var(--bs-r-sm);
  color: var(--bs-mod-announcements);
  flex-shrink: 0;
}
.ann-tts-banner[data-provider="openai"] .ann-tts-icon { color: var(--bs-primary); }
.ann-tts-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.ann-tts-text strong {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  letter-spacing: -0.015em;
}
.ann-tts-text span {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.4;
}
.ann-tts-hint {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  white-space: nowrap;
  flex-shrink: 0;
}
@media (max-width: 700px) {
  .ann-tts-banner { grid-template-columns: auto 1fr; }
  .ann-tts-hint { grid-column: 1 / -1; text-align: right; }
}

/* ─── Kontingent-Banner im Tenant-Ansagen-Tab (Aufgabe 2b) ─── */
.ann-quota-banner {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 18px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  margin-bottom: var(--bs-4);
  transition: border-color var(--bs-transition), background var(--bs-transition);
}
.ann-quota-banner[data-state="low"] {
  border-color: rgba(245,158,11,0.40);
  background: rgba(245,158,11,0.06);
}
.ann-quota-banner[data-state="depleted"] {
  border-color: rgba(239,68,68,0.40);
  background: rgba(239,68,68,0.06);
}
.ann-quota-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.ann-quota-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
}
.ann-quota-label strong { font-weight: var(--bs-weight-semibold); }
.ann-quota-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px; height: 26px;
  background: var(--bs-bg-elevated);
  border-radius: var(--bs-r-sm);
  border: 1px solid var(--bs-border);
  color: var(--rp-emerald-500, #10B981);
}
.ann-quota-counter {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
}
.ann-quota-dots { display: inline-flex; gap: 4px; }
.ann-quota-dot {
  width: 9px; height: 9px;
  border-radius: 50%;
  flex-shrink: 0;
  transition: background var(--bs-transition);
}
.ann-quota-dot-used { background: var(--rp-emerald-500, #10B981); }
.ann-quota-dot-free { background: var(--bs-border-strong); opacity: 0.5; }
.ann-quota-dot-unlimited {
  width: auto; height: auto;
  border-radius: 0;
  font-size: 18px;
  font-weight: 700;
  color: var(--rp-emerald-500, #10B981);
  line-height: 1;
}
.ann-quota-banner[data-state="depleted"] .ann-quota-dot-used { background: #b91c1c; }
.ann-quota-banner[data-state="low"] .ann-quota-dot-used { background: #b45309; }
.ann-quota-text { font-weight: 600; color: var(--bs-fg); }
.ann-quota-reset { color: var(--bs-fg-subtle); font-size: var(--bs-text-xs); }
.ann-quota-rev {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  white-space: nowrap;
}
.ann-quota-rev:empty { display: none; }
.ann-quota-rev::before { content: '·'; margin-right: 4px; opacity: 0.6; }
.ann-quota-rev svg { width: 11px; height: 11px; }

/* "Neue Ansage"-Button im depleted-Zustand */
.ann-btn-locked {
  cursor: not-allowed;
  opacity: 0.6;
  position: relative;
}

/* ─── Revision-Indikator auf Ansage-Card (Aufgabe 3) ─── */
.ann-card-actions {
  display: flex;
  gap: 6px;
  align-items: center;
}
.ann-card-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  color: var(--bs-fg-muted);
  transition: all var(--bs-transition);
}
.ann-card-action:hover {
  border-color: var(--rp-emerald-500, #10B981);
  color: var(--rp-emerald-500, #10B981);
  background: rgba(16,185,129,0.08);
}
.ann-card-action svg { width: 14px; height: 14px; stroke-width: 2; }
.ann-card-revise:hover {
  border-color: var(--rp-emerald-500, #10B981);
  color: var(--rp-emerald-500, #10B981);
}
.ann-card-rev-badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  margin-left: 8px;
  padding: 2px 7px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  background: rgba(16,185,129,0.10);
  color: var(--rp-emerald-500, #10B981);
  border: 1px solid rgba(16,185,129,0.28);
  border-radius: 999px;
  vertical-align: middle;
}
.ann-card-rev-badge svg { width: 11px; height: 11px; stroke-width: 2.4; }

.ann-card-revision {
  border-left: 3px solid var(--rp-emerald-500, #10B981);
}

/* Editor-Hint bei Revision-Mode */
.ann-revision-hint {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 14px;
  margin-bottom: 14px;
  background: rgba(16,185,129,0.08);
  border: 1px solid rgba(16,185,129,0.25);
  border-left: 3px solid var(--rp-emerald-500, #10B981);
  border-radius: var(--bs-r-sm);
  font-size: 13px;
  color: var(--bs-fg);
  line-height: 1.5;
}
.ann-revision-hint-icon {
  display: inline-flex;
  align-items: center;
  color: var(--rp-emerald-500, #10B981);
  flex-shrink: 0;
  margin-top: 1px;
}
.ann-revision-hint strong { color: var(--bs-fg); }

/* TTS-Provider-Radio-Group (Platform-Admin Tenant-Edit Integrationen) */
.ti-tts-options {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 4px;
}
@media (max-width: 700px) {
  .ti-tts-options { grid-template-columns: 1fr; }
}
.ti-tts-opt {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  background: var(--bs-bg-subtle);
  border: 1.5px solid var(--bs-border);
  border-radius: var(--bs-r);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.ti-tts-opt:hover { border-color: var(--bs-primary-soft); }
/* mod-announcements-soft ist themed (amber-100 in Light, amber-rgba in Dark),
   deshalb keine separate Dark-Override noetig. */
.ti-tts-opt:has(input:checked) {
  border-color: var(--bs-mod-announcements);
  background: var(--bs-mod-announcements-soft);
}
.ti-tts-opt input[type="radio"] {
  margin-top: 3px;
  accent-color: var(--bs-mod-announcements);
  flex-shrink: 0;
}
.ti-tts-title {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
}
.ti-tts-sub {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  margin-top: 2px;
}
.ti-card-title-wrap { flex: 1; min-width: 0; }
.ti-card-title-wrap h5 {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  margin-bottom: 2px;
}
.ti-card-title-wrap p {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin: 0;
  line-height: 1.4;
}

.ti-key-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  background: var(--bs-success-soft);
  color: var(--bs-success);
  font-size: 11px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.04em;
  border-radius: var(--bs-r-full);
  flex-shrink: 0;
  white-space: nowrap;
}

.ti-card-body {
  padding: var(--bs-5);
  display: flex;
  flex-direction: column;
  gap: var(--bs-5);
}
.ti-card-body .bs-field { margin-bottom: 0; }
.ti-card-body .grid-2 { gap: var(--bs-4); }
.ti-card-body .grid-2 .bs-field { margin-bottom: 0; }

/* Phase 19f: grid-2 in Integrationen-Karten — Felder oben aligned damit
   unterschiedlich lange Labels nicht zu visueller "Mitte-haengt"-Optik fuehren */
.ti-grid-2-fields {
  align-items: start;
}

/* Phase 19f: kompakter Hint neben dem Label (z.B. "optional Override")
   ohne den Label-Block zu sprengen — wraps unter das Label statt inline */
.bs-label-hint {
  display: inline-block;
  margin-left: var(--bs-2);
  font-weight: 400;
  font-size: 11px;
  color: var(--bs-fg-muted);
  letter-spacing: 0;
  text-transform: none;
}

.ti-actions {
  margin-top: var(--bs-4);
  padding-top: var(--bs-4);
  border-top: 1px solid var(--bs-border);
}

/* ═════════════════════════════════════════════════════════════════════
   Tenant-Edit-Modal — Akkordeon-Sektionen
   3 Top-Level Gruppen (KI / Ansagen / Voicemail), aufklappbar via <details>
   ═════════════════════════════════════════════════════════════════════ */
.ti-section {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  overflow: hidden;
  margin-bottom: var(--bs-3);
  transition: border-color var(--bs-transition), box-shadow var(--bs-transition);
}
.ti-section:hover { border-color: var(--bs-border-hover); }
.ti-section[open] {
  border-color: var(--bs-border-hover);
  box-shadow: var(--bs-shadow-sm);
}

.ti-section-summary {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  cursor: pointer;
  list-style: none;
  user-select: none;
  background: var(--bs-bg-elevated);
  transition: background var(--bs-transition);
}
.ti-section-summary::-webkit-details-marker { display: none; }
.ti-section-summary::marker { content: ''; }
.ti-section-summary:hover { background: var(--bs-bg-subtle); }
.ti-section[open] .ti-section-summary {
  border-bottom: 1px solid var(--bs-border);
}

.ti-section-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: var(--bs-r-sm);
  flex-shrink: 0;
  color: var(--bs-fg);
}
.ti-section-icon-general { background: var(--bs-bg-subtle); color: var(--bs-fg); }
.ti-section-icon-ai  { background: var(--bs-primary-soft); color: var(--bs-primary); }
.ti-section-icon-ann { background: var(--bs-accent-soft);  color: var(--bs-accent); }
.ti-section-icon-vm  { background: rgba(45,212,191,0.15);  color: var(--bs-ti-section-icon-vm); }

.ti-section-meta {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ti-section-title {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  line-height: 1.2;
}
.ti-section-sub {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  line-height: 1.4;
}

.ti-section-chevron {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg-subtle);
  transition: transform 0.2s ease, color var(--bs-transition), background var(--bs-transition);
  flex-shrink: 0;
}
.ti-section[open] .ti-section-chevron {
  transform: rotate(180deg);
  color: var(--bs-primary);
}
.ti-section-summary:hover .ti-section-chevron {
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
}

.ti-section-body {
  padding: var(--bs-4);
  background: var(--bs-bg-subtle);
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
}
/* Cards INNERHALB einer Sektion: kein doppelter Außen-Border + flacheres Look */
.ti-section-body > .ti-card {
  margin-bottom: 0;
  background: var(--bs-bg-elevated);
  border-color: var(--bs-border);
}
.ti-section-body > .ti-card:hover { border-color: var(--bs-border-hover); }

/* Vereinheitlichte Info-Banner (ersetzt diverse inline-style Help-Boxen) */
.ti-info-banner {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-top: 12px;
  padding: 10px 12px;
  background: var(--bs-bg-subtle);
  border-left: 3px solid var(--bs-primary-soft);
  border-radius: var(--bs-r-sm);
  font-size: 12px;
  color: var(--bs-fg-muted);
  line-height: 1.5;
}
.ti-info-banner svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  margin-top: 2px;
  color: var(--bs-primary);
}
.ti-info-banner strong { color: var(--bs-fg); font-weight: 600; }
.ti-info-banner:empty { display: none; }
/* Phase 19g (2026-05-14): Warn-Variante (vorher inline #fef3c7 + #f59e0b
   hardcoded → im Dark-Mode unleserlich). Token-themed. */
.ti-info-banner-warn {
  background: var(--bs-warning-soft);
  border-left-color: var(--bs-warning);
  color: var(--bs-fg);
}
.ti-info-banner-warn svg { color: var(--bs-warning); }

/* ─── API-Key-Slots in OpenAI-Card (Realtime / TTS / Generic Fallback) ─── */
.ti-key-slot {
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  padding: var(--bs-3) var(--bs-4);
  margin-bottom: var(--bs-3);
}
.ti-key-slot:last-child { margin-bottom: 0; }
.ti-key-slot.ti-key-slot-fallback {
  background: var(--bs-bg-subtle);
  border-style: dashed;
  opacity: 0.96;
}
.ti-key-slot-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.ti-key-slot-icon {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg-muted);
  flex-shrink: 0;
}
.ti-key-slot-icon svg { width: 16px; height: 16px; stroke-width: 2; }
/* Forced-Centered-Wrapper für alle replaced Lucide-Icons */
.ti-key-slot-icon > span,
.ti-card-icon > span,
.ti-section-icon > span,
.ti-section-chevron > span {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  line-height: 0;
}
.ti-key-slot-meta { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ti-key-slot-title {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
}
.ti-key-slot-sub {
  font-size: 11px;
  color: var(--bs-fg-muted);
  line-height: 1.4;
}

/* 3-State Status-Badge (ok / fallback / missing) */
.ti-key-status {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 9px;
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border-radius: 999px;
  flex-shrink: 0;
  white-space: nowrap;
}
.ti-key-status svg { width: 11px; height: 11px; stroke-width: 2.4; }
/* Token-themed (heller-saturierte Variant in Dark) */
.ti-key-status-ok       { background: var(--bs-ti-key-status-ok-bg);       color: var(--bs-ti-key-status-ok-fg);       border: 1px solid rgba(16,185,129,0.32); }
.ti-key-status-fallback { background: var(--bs-ti-key-status-fallback-bg); color: var(--bs-ti-key-status-fallback-fg); border: 1px solid rgba(245,158,11,0.32); }
.ti-key-status-missing  { background: var(--bs-ti-key-status-missing-bg);  color: var(--bs-ti-key-status-missing-fg);  border: 1px solid rgba(239,68,68,0.28); }

/* ─── Kontingent-Card (Platform-Admin) ─── */
.ti-quota-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--bs-4); }
@media (max-width: 600px) { .ti-quota-grid { grid-template-columns: 1fr; } }
.ti-quota-help {
  margin-top: var(--bs-3);
  padding: 10px 12px;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
  border-left: 3px solid var(--bs-primary-soft);
  font-size: 12px;
  color: var(--bs-fg-muted);
  line-height: 1.5;
}
.ti-quota-help strong { color: var(--bs-fg); }

/* Sub-tab body — wenn das integrations-Pane aktiv ist */
#tdp-integrations { padding: var(--bs-5) var(--bs-6) var(--bs-6); }

@media (max-width: 700px) {
  .ti-card-head { flex-wrap: wrap; }
  .ti-key-badge { order: 99; flex-basis: 100%; justify-content: flex-start; margin-top: 4px; }
  .ti-card-body .grid-2 { grid-template-columns: 1fr; }
}

/* ═══════════════════════════════════════════════════════════════════════
   21. Sidebar-Groups + Hamburger + Mobile-Drawer + Compact Stats
   ═══════════════════════════════════════════════════════════════════════ */

/* --- Sidebar Groups (Features oben / System unten) -------------------- */
.sidebar-section {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.sidebar-section-features {
  /* Features füllen den oberen Bereich */
  flex: 1 1 auto;
}
.sidebar-section-system {
  /* System sitzt am unteren Rand der nav, klar abgegrenzt */
  flex: 0 0 auto;
}
.sidebar-section-divider {
  height: 1px;
  background: var(--bs-border);
  margin: var(--bs-3) var(--bs-3);
  flex-shrink: 0;
}
.sidebar-section-label {
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--bs-fg-subtle);
  padding: var(--bs-1) var(--bs-3) var(--bs-2);
  font-family: var(--bs-font-mono);
}
/* Sidebar-nav muss als Flex-Spalte über volle Höhe gehen, damit Features oben + System unten funktioniert */
.sidebar-nav {
  display: flex !important;
  flex-direction: column !important;
  flex: 1;
  min-height: 0;
}

/* --- Hamburger Button (Desktop + Mobile) ------------------------------ */
/* Desktop: toggelt Sidebar zwischen 260px und 64px (Icon-Only-Mode)
   Mobile (≤900px): öffnet Slide-in-Drawer */
.bs-hamburger {
  display: inline-flex;       /* Desktop: immer sichtbar (Phase 18: Sidebar-Collapse) */
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: transparent;
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg-muted);
  cursor: pointer;
  transition: all var(--bs-transition);
  margin-right: var(--bs-2);
  flex-shrink: 0;
}
.bs-hamburger:hover { background: var(--bs-bg-subtle); color: var(--bs-fg); }
.bs-hamburger:active { transform: scale(0.95); }

/* --- Desktop Sidebar-Collapsed-Mode (Phase 18) ------------------------ */
@media (min-width: 901px) {
  body.sidebar-collapsed #view-app {
    grid-template-columns: 64px 1fr;
  }
  body.sidebar-collapsed .sidebar {
    padding: var(--bs-3) var(--bs-1);
    gap: var(--bs-2);
    overflow-x: hidden;
  }
  /* Logo: nur SVG-Mark sichtbar, Wordmark + Tenant-Label aus.
     !important nötig weil das innere div einen Inline-style="display:flex" hat. */
  body.sidebar-collapsed .sidebar-logo {
    padding: 0;
    justify-content: center;
  }
  body.sidebar-collapsed .sidebar-logo > div,
  body.sidebar-collapsed .sidebar-logo .bs-wordmark,
  body.sidebar-collapsed .sidebar-logo #tenant-name-label { display: none !important; }
  body.sidebar-collapsed .sidebar-logo svg { width: 30px; height: 30px; }

  /* Sektion-Labels (USER / SYSTEM) ausblenden */
  body.sidebar-collapsed .sidebar-section-label,
  body.sidebar-collapsed .sidebar-nav .nav-label,
  body.sidebar-collapsed .nav-section-label { display: none !important; }

  /* Tab-Btns: nur Icon zentriert, Title als Tooltip */
  body.sidebar-collapsed .tab-btn {
    justify-content: center;
    padding: 10px 6px;
    gap: 0;
    min-width: 0;
  }
  body.sidebar-collapsed .tab-btn > span,
  body.sidebar-collapsed .tab-btn > span:not(.tt-icon) { display: none; }
  body.sidebar-collapsed .tab-btn svg { width: 20px; height: 20px; opacity: 0.95; }

  /* Footer: User-Chip nur Avatar, Logout-Btn auf Icon */
  body.sidebar-collapsed .user-chip {
    justify-content: center;
    padding: var(--bs-2) 0;
  }
  body.sidebar-collapsed .user-chip .user-info { display: none; }
  body.sidebar-collapsed .user-chip .avatar { width: 36px; height: 36px; }

  body.sidebar-collapsed #btn-logout {
    font-size: 0;
    padding: 8px 0;
    height: 34px;
    overflow: hidden;
    position: relative;
  }
  body.sidebar-collapsed #btn-logout::before {
    content: '';
    width: 18px;
    height: 18px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/><polyline points='16 17 21 12 16 7'/><line x1='21' x2='9' y1='12' y2='12'/></svg>") center/contain no-repeat;
    mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/><polyline points='16 17 21 12 16 7'/><line x1='21' x2='9' y1='12' y2='12'/></svg>") center/contain no-repeat;
    font-size: 0;
  }

  /* Theme-Toggle-Host kompakter */
  body.sidebar-collapsed #theme-toggle-host { padding-bottom: 0; }
}

/* --- Sidebar-Schließen-Button (nur Mobile sichtbar) ------------------- */
.bs-sidebar-close {
  display: none;        /* Default: aus, nur Mobile aktiv */
  align-items: center;
  justify-content: center;
  position: absolute;
  top: 12px;
  right: 12px;
  width: 32px;
  height: 32px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg-muted);
  cursor: pointer;
  transition: all var(--bs-transition);
  z-index: 2;
}
.bs-sidebar-close:hover {
  background: var(--bs-danger-soft, #fee2e2);
  color: var(--bs-danger, #b91c1c);
  border-color: var(--bs-danger-soft, #fecaca);
}
.bs-sidebar-close:active { transform: scale(0.94); }

/* --- Sidebar-Backdrop ------------------------------------------------- */
.bs-sidebar-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: calc(var(--bs-z-sidebar) + 1);
  opacity: 0;
  pointer-events: none;
  transition: opacity 220ms ease;
  -webkit-backdrop-filter: blur(2px);
  backdrop-filter: blur(2px);
}

/* --- Mobile (≤900px): Sidebar als Slide-in Drawer ─────────────────── */
@media (max-width: 900px) {
  /* Hamburger sichtbar (auf Desktop ist er auch sichtbar, hier nur Sicherheit) */
  .bs-hamburger { display: inline-flex; }
  /* Sidebar-Close-Button (X oben rechts im Drawer) */
  .bs-sidebar-close { display: inline-flex; }

  /* Topbar enger packen — auf Mobile nur Hamburger + Breadcrumb + Avatar */
  .bs-topbar { padding: 0 var(--bs-3); gap: var(--bs-2); }
  .bs-topbar-icon-btn { display: none; }            /* Hilfe + Notif raus */
  .bs-topbar-divider { display: none; }
  .bs-topbar-user .name { display: none; }          /* Nur Avatar bleibt */
  .bs-topbar-user { padding: 4px 6px; gap: 4px; }
  .bs-breadcrumb { font-size: var(--bs-text-xs); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .bs-breadcrumb .bc-tenant, .bs-breadcrumb #bc-tenant,
  .bs-breadcrumb .bc-sep:first-of-type { display: none; }   /* Tenant-Crumb weg, nur aktuelle Seite */

  /* Page-Header / Page-Actions wrap-bar */
  .page-header {
    flex-direction: column;
    align-items: stretch;
    gap: var(--bs-2);
  }
  .page-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    width: 100%;
  }
  .page-actions .btn,
  .page-actions .bs-btn {
    flex: 1 1 auto;
    min-width: 0;
    font-size: var(--bs-text-sm);
    padding: 6px 10px;
  }

  /* Layout: TopBar oben + Content darunter (KEIN Bottom-Nav mehr) */
  #view-app {
    grid-template-columns: 1fr !important;
    grid-template-rows: 64px 1fr !important;
    grid-template-areas:
      "topbar"
      "content" !important;
  }

  /* Sidebar als Drawer: links, full-height, hidden by default.
     z-index muss ÜBER Topbar (50) sein damit das Logo nicht hinter der Topbar liegt
     wenn der Drawer offen ist. */
  .sidebar {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: auto !important;
    bottom: auto !important;
    width: 280px !important;
    max-width: 85vw !important;
    height: 100vh !important;
    padding: var(--bs-4) !important;
    flex-direction: column !important;
    gap: var(--bs-2) !important;
    background: var(--bs-bg-elevated) !important;
    border-right: 1px solid var(--bs-border) !important;
    border-top: 0 !important;
    box-shadow: 8px 0 32px rgba(0, 0, 0, 0.18);
    transform: translateX(-100%);
    transition: transform 280ms cubic-bezier(0.4, 0, 0.2, 1);
    z-index: calc(var(--bs-z-topbar) + 10) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }
  /* Backdrop ebenso über Topbar damit der Tap-to-close überall funktioniert */
  .bs-sidebar-backdrop { z-index: calc(var(--bs-z-topbar) + 5) !important; }
  /* Sidebar-Inhalte wieder sichtbar machen (Override des old bottom-nav-CSS) */
  .sidebar-logo { display: flex !important; padding: 0 var(--bs-2) var(--bs-3) !important; }
  .sidebar-footer { display: block !important; }
  .sidebar-section-label { display: block !important; }
  .sidebar-nav { flex-direction: column !important; gap: 2px !important; width: auto !important; padding-bottom: var(--bs-3) !important; }
  .tab-btn { flex-direction: row !important; gap: var(--bs-3) !important; font-size: var(--bs-text-base) !important; padding: 10px 12px !important; justify-content: flex-start !important; }
  .tab-btn svg { width: 18px !important; height: 18px !important; }

  /* Geöffnet via body-Klasse */
  body.sidebar-open .sidebar { transform: translateX(0); }
  body.sidebar-open .bs-sidebar-backdrop {
    display: block;
    opacity: 1;
    pointer-events: auto;
  }

  /* Content-Padding ohne bottom-nav-Buffer */
  .content { padding: var(--bs-4) !important; }
}

/* --- Compact Stat-Cards auf Mobile ------------------------------------ */
@media (max-width: 700px) {
  .stats-row {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: var(--bs-2) !important;
    margin-bottom: var(--bs-4) !important;
  }
  .stat-card {
    flex-direction: row !important;
    align-items: center !important;
    gap: var(--bs-2) !important;
    padding: var(--bs-3) !important;
    border-radius: var(--bs-r) !important;
  }
  .stat-card::before { display: none; }
  .stat-card .stat-icon {
    width: 32px !important;
    height: 32px !important;
    flex-shrink: 0;
  }
  .stat-card .stat-icon svg { width: 16px !important; height: 16px !important; }
  .stat-card .stat-value {
    font-size: 18px !important;
    line-height: 1 !important;
  }
  .stat-card .stat-label {
    font-size: 9px !important;
    letter-spacing: 0.04em !important;
    margin-top: 2px !important;
  }
  /* KI-Attendant KPI-Cards */
  .att-kpi-row {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: var(--bs-2) !important;
  }
  .att-kpi {
    padding: var(--bs-3) !important;
    gap: var(--bs-2) !important;
  }
  .att-kpi-icon {
    width: 32px !important;
    height: 32px !important;
  }
  .att-kpi-icon svg { width: 14px !important; height: 14px !important; }
  .att-kpi-value { font-size: 18px !important; }
  .att-kpi-label { font-size: 9px !important; letter-spacing: 0.04em !important; }
}

/* --- Mobile XS (≤460px): nur 1 Spalte für Stats falls zu eng ---------- */
@media (max-width: 460px) {
  .stats-row { grid-template-columns: 1fr !important; }
  /* KI-Attendant trotzdem 2 Spalten — KPIs sind kompakter */
  .att-kpi-row { grid-template-columns: repeat(2, 1fr) !important; }
}

/* ═══════════════════════════════════════════════════════════════════════
   22. Tenant-Portal: Compliance-Settings ausblenden
   Voicemail-Retention wird ausschließlich im Platform-Admin verwaltet,
   damit Kunden nicht selbst an DSGVO-Aufbewahrungsfristen rumspielen können.
   Voicemail-Claude besitzt diese DOM-Knoten weiterhin — wir verstecken sie
   nur visuell (kein JS-Touch, kein Domain-Eingriff).
   ═══════════════════════════════════════════════════════════════════════ */

#btn-vm-retention,
#dialog-retention {
  display: none !important;
}

/* ─── Retention-Card im Platform-Admin Integrationen-Tab ──────────────── */
.ti-card-danger {
  border-color: var(--bs-warning-soft);
}
.ti-card-danger .ti-card-head {
  background: rgba(245, 158, 11, 0.08);
}
.ti-icon-retention {
  background: var(--bs-warning-soft);
}
.ti-key-badge-warn {
  background: var(--bs-warning-soft);
  color: var(--bs-warning);
}
.ti-retention-options {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ti-retention-opt {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 14px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.ti-retention-opt:hover {
  border-color: var(--bs-primary-soft);
}
.ti-retention-opt input[type="radio"] {
  margin: 4px 0 0;
  flex-shrink: 0;
  accent-color: var(--bs-primary);
}
.ti-retention-opt input[type="radio"]:checked ~ div .ti-ret-title {
  color: var(--bs-primary);
  font-weight: var(--bs-weight-semibold);
}
.ti-retention-opt:has(input:checked) {
  border-color: var(--bs-primary);
  background: var(--bs-primary-soft);
}
.ti-ret-title {
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg);
  font-size: var(--bs-text-base);
}
.ti-ret-sub {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin-top: 2px;
  line-height: 1.4;
}
.ti-ret-sub code {
  font-family: var(--bs-font-mono);
  font-size: 0.92em;
  background: var(--bs-bg-subtle);
  padding: 1px 6px;
  border-radius: 4px;
  color: var(--bs-fg);
}
.ti-ret-custom {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
}
.ti-ret-unit {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
}

/* ─── Bundle-Toggle-Cards (Phase 16, im Tenant-Edit-Dialog Sub-Tab "Pakete") ─── */
.bundle-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: var(--bs-3);
}
.bundle-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
  padding: var(--bs-5);
  background: var(--bs-bg-elevated);
  border: 1.5px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.bundle-card:hover { border-color: var(--bs-primary-soft); }
.bundle-card.bundle-active {
  border-color: var(--bs-primary);
  background: var(--bs-primary-soft);
}
.bundle-card-head {
  display: flex;
  align-items: flex-start;
  gap: var(--bs-3);
}
.bundle-card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: var(--bs-r);
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-muted);
  font-size: 18px;
  flex-shrink: 0;
}
.bundle-card.bundle-active .bundle-card-icon {
  background: var(--rp-emerald-500);     /* Solid Emerald — kein dark→green-Verlauf */
  color: var(--bs-primary-fg);
}
.bundle-card-title-wrap { flex: 1; min-width: 0; }
.bundle-card-title {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  line-height: 1.2;
}
.bundle-card.bundle-active .bundle-card-title { color: var(--bs-primary); }
.bundle-card-key {
  font-size: 10px;
  font-family: var(--bs-font-mono);
  color: var(--bs-fg-subtle);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-top: 2px;
}
.bundle-card-toggle {
  flex-shrink: 0;
  margin-top: 2px;
}
.bundle-card-desc {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.5;
}
.bundle-card-unlocks {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding-top: var(--bs-2);
  border-top: 1px solid var(--bs-border);
}
.bundle-card.bundle-active .bundle-card-unlocks {
  border-top-color: rgba(30,41,59, 0.2);
}
.bundle-unlock-chip {
  display: inline-flex;
  align-items: center;
  padding: 3px 8px;
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-muted);
  font-size: 10px;
  border-radius: var(--bs-r-full);
  font-family: var(--bs-font-mono);
  letter-spacing: 0.04em;
}
.bundle-card.bundle-active .bundle-unlock-chip {
  background: var(--bs-bundle-unlock-active-bg);
  color: var(--bs-primary);
}

/* ─── Per-User-Section-Access (Phase 17 — vereinfachte 6-Toggle-UI) ─── */
.tu-section-list {
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
}
.tu-section-card {
  display: flex;
  align-items: center;
  gap: var(--bs-4);
  padding: var(--bs-4) var(--bs-5);
  background: var(--bs-bg-elevated);
  border: 1.5px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.tu-section-card:hover:not(.tu-section-locked):not(.tu-section-disabled) {
  border-color: var(--bs-border-hover);
}
.tu-section-card.tu-section-active {
  border-color: var(--bs-primary);
  background: var(--bs-primary-soft);
}
.tu-section-card.tu-section-locked {
  opacity: 0.55;
  cursor: not-allowed;
  background: var(--bs-bg-subtle);
}
.tu-section-card.tu-section-disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.tu-section-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--bs-r);
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-muted);
  flex-shrink: 0;
}
.tu-section-card.tu-section-active .tu-section-icon {
  background: var(--rp-emerald-500);     /* Solid Emerald — kein dark→green-Verlauf */
  color: var(--bs-primary-fg);
}
.tu-section-body { flex: 1; min-width: 0; }
.tu-section-title {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
}
.tu-section-card.tu-section-active .tu-section-title { color: var(--bs-primary); }
.tu-section-desc {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin-top: 2px;
  line-height: 1.4;
}
.tu-section-lock {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 6px;
  font-size: var(--bs-text-xs);
  color: var(--bs-warning);
  background: var(--bs-warning-soft);
  padding: 2px 8px;
  border-radius: 999px;
}
.tu-section-lock svg { width: 12px; height: 12px; }
.tu-section-toggle { flex-shrink: 0; }

/* ─── LEGACY: Per-User-Feature-Access (vor Phase 17 — bleibt für Übergang) ─── */
.tu-bundle-list {
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
}
.tu-bundle-card {
  background: var(--bs-bg-elevated);
  border: 1.5px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  overflow: hidden;
  transition: all var(--bs-transition);
}
.tu-bundle-card.tu-bundle-active {
  border-color: var(--bs-primary);
  background: var(--bs-primary-soft);
}
.tu-bundle-card.tu-bundle-disabled {
  opacity: 0.5;
  pointer-events: none;
}
.tu-bundle-head {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: var(--bs-4) var(--bs-5);
  border-bottom: 1px solid var(--bs-border);
}
.tu-bundle-card.tu-bundle-active .tu-bundle-head {
  border-bottom-color: rgba(30,41,59, 0.2);
}
.tu-bundle-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--bs-r);
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-muted);
  flex-shrink: 0;
}
.tu-bundle-card.tu-bundle-active .tu-bundle-icon {
  background: var(--rp-emerald-500);     /* Solid Emerald — kein dark→green-Verlauf */
  color: var(--bs-primary-fg);
}
.tu-bundle-title-wrap { flex: 1; min-width: 0; }
.tu-bundle-title {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
}
.tu-bundle-card.tu-bundle-active .tu-bundle-title { color: var(--bs-primary); }
.tu-bundle-desc {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin-top: 2px;
  line-height: 1.4;
}
.tu-bundle-toggle { flex-shrink: 0; }
.tu-bundle-features {
  display: flex;
  flex-direction: column;
  padding: 4px var(--bs-3);
}
.tu-feat-row {
  display: flex;
  align-items: flex-start;
  gap: var(--bs-3);
  padding: 10px 12px;
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: background var(--bs-transition);
}
.tu-feat-row:hover {
  background: var(--bs-tu-feat-row-hover-bg);
}
.tu-feat-row input[type="checkbox"] {
  margin: 2px 0 0;
  flex-shrink: 0;
  accent-color: var(--bs-primary);
}
.tu-feat-row.disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.tu-feat-text { flex: 1; min-width: 0; }
.tu-feat-title {
  font-size: var(--bs-text-base);
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg);
  line-height: 1.3;
}
.tu-feat-key {
  font-size: 11px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  margin-top: 2px;
  letter-spacing: 0.02em;
}
.tu-bundle-orphan {
  border-color: var(--bs-warning-soft);
}
.tu-bundle-orphan .tu-bundle-head {
  background: rgba(245, 158, 11, 0.06);
}

/* ─── Ansage-Card: Zugewiesen-Banner mit Banner-Head + Chips-Row ──────── */
/* Struktur (von Ansagen-Claude):
   .ann-card-assigned-banner
     .banner-head       (Pulse-Dot + Title + Sub + Refresh-Icon)
     .assign-chips      (Chip-Liste + "+" Button)
*/
.ann-card-assigned-banner {
  display: block;
  padding: 12px 14px;
  border-radius: var(--bs-r);
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
}
.ann-card-assigned-banner.is-live {
  background: var(--bs-ann-banner-live-bg);
  border-color: var(--bs-ann-banner-live-border);
}
.ann-card-assigned-banner.is-linked {
  background: var(--bs-primary-soft);
  border-color: rgba(30,41,59, 0.20);
}

/* Banner-Head: kompakte Single-Line-Row */
.ann-card-assigned-banner .banner-head {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.ann-card-assigned-banner .banner-pulse {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
}
.ann-card-assigned-banner .banner-text {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
  gap: 1px;
}
.ann-card-assigned-banner .banner-text strong {
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-base);
  letter-spacing: -0.01em;
  line-height: 1.15;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ann-card-assigned-banner.is-live .banner-text strong { color: var(--bs-success); }
.ann-card-assigned-banner.is-linked .banner-text strong { color: var(--bs-primary); }
.ann-card-assigned-banner .banner-sub {
  font-size: 11px;
  color: var(--bs-fg-muted);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ann-card-assigned-banner .live-sync-hint {
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--bs-bg-elevated);
  color: var(--bs-fg-subtle);
  border: 1px solid var(--bs-border);
  transition: color var(--bs-transition);
}
.ann-card-assigned-banner.is-live .live-sync-hint { color: var(--bs-success); border-color: rgba(16,185,129,0.3); }
.ann-card-assigned-banner .live-sync-hint svg { width: 12px; height: 12px; }

/* Chip-Row im Banner — verkleinerte Optik, kein Truncate */
.ann-card-assigned-banner .assign-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin-top: 10px !important;
  padding-top: 10px !important;
  border-top: 1px dashed var(--bs-border) !important;
}
.ann-card-assigned-banner.is-live .assign-chips { border-top-color: rgba(16,185,129,0.25) !important; }
.ann-card-assigned-banner.is-linked .assign-chips { border-top-color: rgba(30,41,59,0.20) !important; }

/* Chip im Banner: solid weiss + ohne aggressive max-width */
.ann-card-assigned-banner .chip {
  background: var(--bs-bg-elevated);
  border-color: var(--bs-border);
}
.ann-card-assigned-banner .chip .chip-name {
  max-width: 200px;
}

/* "+ Weiteres Modul" Mini-Button im Banner — klein, dezent */
.ann-card-assigned-banner .assign-add-btn {
  width: 26px !important;
  height: 26px !important;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bs-bg-elevated);
  border: 1px dashed var(--bs-border);
  border-radius: 999px;
  color: var(--bs-fg-muted);
  cursor: pointer;
  transition: all var(--bs-transition);
  flex-shrink: 0;
}
.ann-card-assigned-banner .assign-add-btn:hover {
  background: var(--bs-primary-soft);
  border-color: var(--bs-primary);
  border-style: solid;
  color: var(--bs-primary);
}
.ann-card-assigned-banner .assign-add-btn svg,
.ann-card-assigned-banner .assign-add-btn i { width: 12px; height: 12px; }

/* Legacy-Klasse (frühere Implementierung — falls noch irgendwo gerendert) */
.assign-add-more {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: transparent;
  border: 1px dashed var(--bs-border);
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg-muted);
  font-size: 12px;
  font-weight: var(--bs-weight-medium);
  cursor: pointer;
  transition: all var(--bs-transition);
  align-self: flex-start;
}
.assign-add-more:hover {
  background: var(--bs-primary-soft);
  border-color: var(--bs-primary);
  border-style: solid;
  color: var(--bs-primary);
}
.assign-add-more svg { width: 12px; height: 12px; }

/* ─── Module-Tab: 3-Sektionen-Layout (KI-Attendant / Voicemail / Ansagen) ─── */
.modules-sections {
  display: flex;
  flex-direction: column;
  gap: var(--bs-6);
}
.modsec {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-xl);
  overflow: hidden;
}
.modsec-head {
  display: flex;
  align-items: center;
  gap: var(--bs-4);
  padding: var(--bs-5) var(--bs-6);
  background: var(--bs-bg-subtle);
  border-bottom: 1px solid var(--bs-border);
}
.modsec-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--bs-r-lg);
  flex-shrink: 0;
}
.modsec-icon-bot {
  background: var(--bs-mod-attendant);
  color: var(--bs-primary-fg);
  box-shadow: 0 4px 16px rgba(16,185,129, 0.25);
}
.modsec-icon-vm {
  background: rgba(16, 185, 129, 0.14);
  color: #10b981;
}
.modsec-icon-ann {
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
}
.modsec-title-wrap {
  flex: 1;
  min-width: 0;
}
.modsec-title-wrap h2 {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-lg);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
  margin: 0;
  line-height: 1.2;
}
.modsec-title-wrap p {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin: 4px 0 0;
  line-height: 1.4;
}
.modsec-actions {
  display: flex;
  align-items: center;
  gap: var(--bs-2);
  flex-shrink: 0;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.modsec-status:empty { display: none; }
.modsec-body {
  padding: var(--bs-5) var(--bs-6);
}
.modsec-body .voicemail-list {
  margin: 0;
}

/* AI-Attendant Auto-Placeholder-Card */
.modsec-att-card {
  display: flex;
  align-items: center;
  gap: var(--bs-4);
  padding: var(--bs-4) var(--bs-5);
  background: var(--bs-modsec-att-card-gradient, linear-gradient(135deg, var(--bs-primary-soft), var(--bs-accent-soft)));
  border: 1px solid var(--bs-modsec-att-card-border-color, rgba(30,41,59, 0.2));
  border-radius: var(--bs-r-lg);
}
.modsec-att-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: var(--bs-r-lg);
  background: var(--bs-mod-attendant);
  color: var(--bs-primary-fg);
  flex-shrink: 0;
  box-shadow: 0 6px 20px rgba(16,185,129, 0.30);
}
.modsec-att-body {
  flex: 1;
  min-width: 0;
}
.modsec-att-title {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  line-height: 1.2;
}
.modsec-att-sub {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin-top: 4px;
  line-height: 1.5;
}
.modsec-att-sub strong { color: var(--bs-primary); }
.modsec-att-mono {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  flex-shrink: 0;
}

/* Setup-Help (collapsible) */
.modsec-help {
  margin-top: var(--bs-4);
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-sm);
}
.modsec-help summary {
  cursor: pointer;
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg-muted);
  padding: 4px 0;
  user-select: none;
}
.modsec-help summary:hover { color: var(--bs-primary); }
.modsec-help ol {
  margin: 12px 0 4px 20px;
  padding: 0;
  color: var(--bs-fg-muted);
  line-height: 1.7;
}
.modsec-help code {
  font-family: var(--bs-font-mono);
  font-size: 0.92em;
  background: var(--bs-bg-elevated);
  padding: 1px 6px;
  border-radius: 4px;
  color: var(--bs-fg);
}

@media (max-width: 700px) {
  .modsec-head { flex-wrap: wrap; }
  .modsec-actions { width: 100%; justify-content: flex-start; }
  .modsec-att-card { flex-wrap: wrap; }
  .modsec-att-mono { flex-direction: row; width: 100%; }
}

/* Slot-Item Badges (statt 📬/🔊/⚠ Emojis — Lucide-Icons mit Farb-Token-Mapping) */
.modsec-badge-icon {
  display: inline-flex;
  align-items: center;
  vertical-align: -1px;
  margin-right: 3px;
}
.modsec-badge-icon svg { width: 12px; height: 12px; stroke-width: 2.2; }
.modsec-badge-vm      { background: rgba(16,185,129,0.10); color: var(--bs-success); }
.modsec-badge-routing { background: var(--bs-primary-soft); color: var(--bs-primary); }
.modsec-badge-warn    { background: var(--bs-warning-soft); color: var(--bs-warning); }

/* Type-Badge (VM-Sync / Routing) — kleiner Tag oberhalb des Slot-Namens */
.modsec-type-badge {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 2px 6px;
  border-radius: 4px;
  margin-right: 6px;
  font-weight: 600;
}
.modsec-type-vm      { color: var(--bs-success); background: rgba(16,185,129,0.12); }
.modsec-type-routing { color: var(--bs-primary); background: var(--bs-primary-soft); }

/* Pill-Icon-Wrapper (z.B. ✓ Aktiv → check-circle Aktiv) */
.bs-pill-icon {
  display: inline-flex;
  align-items: center;
  vertical-align: -1px;
  margin-right: 2px;
}
.bs-pill-icon svg { width: 12px; height: 12px; stroke-width: 2.2; }

/* ═══════════════════════════════════════════════════════════════════════
   ANN-CARD v3 — High-end SaaS Redesign (2026-04-26)
   Ersetzt V2 komplett. Höhere Spezifität via #announcement-list.
   Designprinzipien: viel breathing room, klare Hierarchie, Custom-Audio,
   Single-Line-Banner mit klarer Trennung Status / Chips.
   ═══════════════════════════════════════════════════════════════════════ */

#announcement-list.announcement-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));
  grid-auto-rows: 1fr;
  gap: var(--bs-5);
}
@media (max-width: 1500px) {
  #announcement-list.announcement-grid { grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); }
}
@media (max-width: 700px) {
  #announcement-list.announcement-grid { grid-template-columns: 1fr; gap: var(--bs-3); }
}

/* ═ Card-Container ═══════════════════════════════════════════════════ */
#announcement-list .ann-card {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-xl);
  padding: var(--bs-6);
  display: flex;
  flex-direction: column;
  gap: var(--bs-4);
  transition: all var(--bs-transition-slow);
  position: relative;
  overflow: hidden;
}
#announcement-list .ann-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, transparent, transparent);
  transition: background var(--bs-transition);
  z-index: 1;
}
#announcement-list .ann-card:hover {
  border-color: var(--bs-border-hover);
  box-shadow: 0 12px 32px -16px rgba(15, 23, 42, 0.16);
  transform: translateY(-2px);
}
#announcement-list .ann-card:hover::before {
  background: linear-gradient(90deg, var(--bs-primary), var(--bs-accent));
}
[data-theme="dark"] #announcement-list .ann-card:hover {
  box-shadow: 0 16px 40px -16px rgba(0, 0, 0, 0.5);
}

/* ═ Header — Title + Status-Pill + Delete ═══════════════════════════ */
#announcement-list .ann-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--bs-3);
  margin: 0;
}
#announcement-list .ann-card-status {
  display: flex;
  align-items: center;
  gap: var(--bs-2);
  min-width: 0;
  flex: 1;
}
#announcement-list .ann-card h4 {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
  line-height: 1.2;
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  min-width: 0;
}

/* Status-Pill statt nur Dot — viel klarer */
#announcement-list .ann-card-status .status-dot {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  width: auto;
  height: 22px;
  padding: 0 9px;
  border-radius: var(--bs-r-full);
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  position: relative;
  flex-shrink: 0;
  font-family: var(--bs-font-mono);
  background: transparent;
}
#announcement-list .ann-card-status .status-dot::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}
#announcement-list .ann-card-status .status-dot.s-ready {
  background: var(--bs-success-soft);
  color: var(--bs-success);
}
#announcement-list .ann-card-status .status-dot.s-ready::after { content: "Bereit"; }
#announcement-list .ann-card-status .status-dot.s-pending {
  background: var(--bs-warning-soft);
  color: var(--bs-warning);
  animation: ann-pulse-soft 1.6s ease-in-out infinite;
}
#announcement-list .ann-card-status .status-dot.s-pending::after { content: "Wird erstellt"; }
#announcement-list .ann-card-status .status-dot.s-error {
  background: var(--bs-danger-soft);
  color: var(--bs-danger);
}
#announcement-list .ann-card-status .status-dot.s-error::after { content: "Fehler"; }
@keyframes ann-pulse-soft { 0%,100% { opacity: 1; } 50% { opacity: 0.65; } }

#announcement-list .ann-card-delete {
  width: 32px;
  height: 32px;
  padding: 0;
  border: 1px solid transparent;
  background: transparent;
  color: var(--bs-fg-subtle);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: all var(--bs-transition);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  opacity: 0.5;
}
#announcement-list .ann-card:hover .ann-card-delete { opacity: 1; }
#announcement-list .ann-card-delete:hover {
  border-color: var(--bs-danger-soft);
  color: var(--bs-danger);
  background: var(--bs-danger-soft);
}
#announcement-list .ann-card-delete svg { width: 16px; height: 16px; stroke-width: 2; }

/* ═ Voice — Mono-Tag-Pill ═══════════════════════════════════════════ */
#announcement-list .ann-card-voice {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--bs-fg-muted);
  font-size: 11px;
  font-weight: var(--bs-weight-semibold);
  font-family: var(--bs-font-mono);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 4px 10px;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-full);
  align-self: flex-start;
  max-width: 100%;
  border: 1px solid var(--bs-border);
}
#announcement-list .ann-card-voice svg,
#announcement-list .ann-card-voice i {
  width: 11px; height: 11px;
  flex-shrink: 0;
  color: var(--bs-primary);
}
#announcement-list .ann-card-voice span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ═ Quote-Text ═══════════════════════════════════════════════════════ */
#announcement-list .ann-card-text {
  margin: 0;
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r);
  border-left: 3px solid var(--bs-primary);
  color: var(--bs-fg);
  font-size: var(--bs-text-base);
  line-height: 1.55;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
  cursor: pointer;
  transition: all var(--bs-transition);
  font-style: italic;
  position: relative;
}
#announcement-list .ann-card-text::before {
  content: "“";
  position: absolute;
  left: 8px;
  top: -2px;
  font-size: 36px;
  color: var(--bs-primary);
  opacity: 0.18;
  font-family: Georgia, serif;
  pointer-events: none;
  line-height: 1;
}
#announcement-list .ann-card-text:hover {
  background: var(--bs-primary-soft);
  border-left-color: var(--bs-primary-hover);
}

/* ═ Audio-Player — Native getuned (best effort) ═════════════════════
   Phase 19g (2026-05-13): `color-scheme: light` Override entfernt — das
   blockierte die generelle audio{color-scheme:dark}-Regel (Z. 2766-2770)
   im Dark-Mode. Resultat war: Zahlen "0:00 / 0:25" schwarz auf
   dunkelgrauem Background, unleserlich. Jetzt erbt der Player das
   color-scheme vom <html>-Root (light dark, themed). */
#announcement-list .ann-card-audio {
  width: 100%;
  height: 38px;
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-subtle);
  margin: 0;
}
#announcement-list .ann-card-audio::-webkit-media-controls-enclosure {
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-subtle);
}
#announcement-list .ann-card-audio::-webkit-media-controls-panel {
  background: var(--bs-bg-subtle);
}

#announcement-list .ann-card-status-msg {
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg-muted);
  font-size: var(--bs-text-sm);
  font-style: italic;
  text-align: center;
}

/* ═ Divider — visueller Schnitt ═════════════════════════════════════ */
#announcement-list .ann-card-divider {
  height: 1px;
  background: var(--bs-border);
  margin: var(--bs-2) calc(var(--bs-6) * -1);
}

/* ═ Empty-State (noch nicht zugewiesen) ══════════════════════════════ */
#announcement-list .ann-card-assign-empty,
#announcement-list .ann-card-assign {
  margin-top: auto;
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
}
#announcement-list .ann-card-assign-hint {
  margin: 0;
  color: var(--bs-fg-subtle);
  font-size: var(--bs-text-sm);
  text-align: center;
  font-style: italic;
}
#announcement-list .assign-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 12px 16px;
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  font-family: inherit;
  font-size: var(--bs-text-base);
  font-weight: var(--bs-weight-semibold);
  cursor: pointer;
  transition: all var(--bs-transition);
  box-shadow: none;
}
#announcement-list .assign-cta:hover {
  background: var(--bs-primary);
  color: var(--bs-primary-fg);
  border-color: var(--bs-primary);
  transform: none;
  box-shadow: 0 8px 20px -8px rgba(30,41,59, 0.55);
}
#announcement-list .assign-cta svg,
#announcement-list .assign-cta i {
  width: 15px; height: 15px;
  stroke-width: 2.2;
}

/* ═ Assigned-Banner — DAS HERZSTÜCK ═════════════════════════════════ */
#announcement-list .ann-card-assigned-banner {
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
  padding: var(--bs-4);
  border-radius: var(--bs-r);
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
}
#announcement-list .ann-card-assigned-banner.is-live {
  background: rgba(16, 185, 129, 0.08);
  border-color: rgba(16, 185, 129, 0.3);
}
#announcement-list .ann-card-assigned-banner.is-linked {
  background: var(--bs-primary-soft);
  border-color: rgba(30,41,59, 0.25);
}
[data-theme="dark"] #announcement-list .ann-card-assigned-banner.is-live {
  background: rgba(16, 185, 129, 0.14);
  border-color: rgba(16, 185, 129, 0.35);
}

/* Banner-Head: 1 Row mit Pulse + Texte + Refresh-Icon */
#announcement-list .ann-card-assigned-banner .banner-head {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  min-width: 0;
}
#announcement-list .ann-card-assigned-banner .banner-pulse {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  flex-shrink: 0;
}
#announcement-list .ann-card-assigned-banner.is-live .banner-pulse {
  border-color: rgba(16, 185, 129, 0.4);
  background: rgba(16, 185, 129, 0.08);
}
#announcement-list .ann-card-assigned-banner.is-linked .banner-pulse {
  border-color: rgba(30,41,59, 0.3);
  background: var(--bs-bg-elevated);
}
#announcement-list .ann-card-assigned-banner .live-pulse {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}
#announcement-list .ann-card-assigned-banner .live-pulse.active {
  background: var(--bs-success);
  box-shadow: 0 0 0 0 rgba(16,185,129,0.5);
  animation: ann-live-pulse 2s ease-out infinite;
}
#announcement-list .ann-card-assigned-banner .live-pulse.idle {
  background: var(--bs-primary);
  opacity: 0.65;
}
@keyframes ann-live-pulse {
  0% { box-shadow: 0 0 0 0 rgba(16,185,129,0.6); }
  70% { box-shadow: 0 0 0 8px rgba(16,185,129,0); }
  100% { box-shadow: 0 0 0 0 rgba(16,185,129,0); }
}

#announcement-list .ann-card-assigned-banner .banner-text {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
  gap: 2px;
}
#announcement-list .ann-card-assigned-banner .banner-text strong {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-bold);
  font-size: var(--bs-text-base);
  letter-spacing: -0.02em;
  line-height: 1.15;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#announcement-list .ann-card-assigned-banner.is-live .banner-text strong { color: var(--bs-success); }
#announcement-list .ann-card-assigned-banner.is-linked .banner-text strong { color: var(--bs-primary); }
#announcement-list .ann-card-assigned-banner .banner-sub {
  font-size: 11px;
  color: var(--bs-fg-muted);
  line-height: 1.3;
  font-family: var(--bs-font-mono);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#announcement-list .ann-card-assigned-banner .live-sync-hint {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--bs-bg-elevated);
  color: var(--bs-fg-subtle);
  border: 1px solid var(--bs-border);
}
#announcement-list .ann-card-assigned-banner.is-live .live-sync-hint {
  color: var(--bs-success);
  border-color: rgba(16,185,129,0.3);
}
#announcement-list .ann-card-assigned-banner .live-sync-hint svg,
#announcement-list .ann-card-assigned-banner .live-sync-hint i { width: 14px; height: 14px; }

/* Chip-Row im Banner — clean grid mit add-button */
#announcement-list .ann-card-assigned-banner .assign-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin-top: 0 !important;
  padding-top: var(--bs-3) !important;
  padding-bottom: 0;
  border-top: 1px dashed var(--bs-border) !important;
}
#announcement-list .ann-card-assigned-banner.is-live .assign-chips { border-top-color: rgba(16,185,129,0.3) !important; }
#announcement-list .ann-card-assigned-banner.is-linked .assign-chips { border-top-color: rgba(30,41,59,0.25) !important; }

#announcement-list .ann-card-assigned-banner .chip {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-full);
  padding: 4px 4px 4px 10px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: var(--bs-fg);
  max-width: 100%;
}
#announcement-list .ann-card-assigned-banner .chip-name {
  font-weight: var(--bs-weight-semibold);
  max-width: 220px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  letter-spacing: -0.01em;
}
#announcement-list .ann-card-assigned-banner .chip-slotid {
  font-family: var(--bs-font-mono);
  font-size: 9px;
  letter-spacing: 0.04em;
  color: var(--bs-fg-subtle);
  background: var(--bs-bg-subtle);
  padding: 2px 6px;
  border-radius: var(--bs-r-full);
  text-transform: uppercase;
}
#announcement-list .ann-card-assigned-banner .chip-status {
  font-size: 9px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: var(--bs-weight-semibold);
  padding: 2px 7px;
  border-radius: var(--bs-r-full);
  font-family: var(--bs-font-mono);
}
#announcement-list .ann-card-assigned-banner .chip-status.fresh {
  background: rgba(16, 185, 129, 0.15);
  color: var(--bs-success);
}
#announcement-list .ann-card-assigned-banner .chip-status.stale {
  background: var(--bs-warning-soft);
  color: var(--bs-warning);
}
#announcement-list .ann-card-assigned-banner .chip-status.none {
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-subtle);
}
#announcement-list .ann-card-assigned-banner .chip-x {
  border: 0;
  background: transparent;
  color: var(--bs-fg-subtle);
  width: 22px;
  height: 22px;
  border-radius: 50%;
  cursor: pointer;
  font-size: 13px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--bs-transition);
  padding: 0;
  flex-shrink: 0;
}
#announcement-list .ann-card-assigned-banner .chip-x:hover {
  background: var(--bs-danger);
  color: var(--bs-primary-fg);
}

/* "+ Modul"-Add-Button im Banner — kompakt 28×28 */
#announcement-list .ann-card-assigned-banner .assign-add-btn {
  width: 28px !important;
  height: 28px !important;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bs-bg-elevated);
  border: 1px dashed var(--bs-border);
  border-radius: 999px;
  color: var(--bs-fg-subtle);
  cursor: pointer;
  transition: all var(--bs-transition);
  flex-shrink: 0;
}
#announcement-list .ann-card-assigned-banner .assign-add-btn:hover {
  background: var(--bs-primary);
  border-color: var(--bs-primary);
  border-style: solid;
  color: var(--bs-primary-fg);
  transform: scale(1.08);
}
#announcement-list .ann-card-assigned-banner .assign-add-btn svg,
#announcement-list .ann-card-assigned-banner .assign-add-btn i { width: 13px; height: 13px; }

/* ═ Page-Header (Ansagen-Tab Title) ═════════════════════════════════ */
#tab-announcements .page-header {
  align-items: center;
  margin-bottom: var(--bs-6);
  padding-bottom: var(--bs-5);
  border-bottom: 1px solid var(--bs-border);
}
#tab-announcements .page-header h1 {
  font-family: var(--bs-font-display);
  letter-spacing: -0.04em;
}

/* ═══════════════════════════════════════════════════════════════════════
   Partner-SMTP-Editor (Phase Email-System 2026-04-27)
   ═══════════════════════════════════════════════════════════════════════ */

.psm-list { display: flex; flex-direction: column; gap: var(--bs-2); }
.psm-card {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  padding: var(--bs-4);
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
  transition: border-color var(--bs-transition);
}
.psm-card:hover { border-color: var(--bs-primary-soft); }
.psm-card-off { opacity: 0.55; }
.psm-card-head { display: flex; align-items: center; gap: var(--bs-3); }
.psm-card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  border-radius: var(--bs-r);
  flex-shrink: 0;
}
.psm-card-title-wrap { flex: 1; min-width: 0; }
.psm-card-purpose {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-bold);
  font-size: var(--bs-text-base);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  line-height: 1.2;
}
.psm-card-host {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin-top: 2px;
  font-family: var(--bs-font-mono);
}
.psm-port { color: var(--bs-fg-subtle); }
.psm-tls {
  display: inline-block;
  background: var(--bs-success-soft);
  color: var(--bs-success);
  font-size: 9px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: 0.08em;
  padding: 1px 6px;
  border-radius: var(--bs-r-full);
  margin-left: 6px;
}
.psm-state {
  font-family: var(--bs-font-mono);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: var(--bs-weight-semibold);
  padding: 3px 9px;
  border-radius: var(--bs-r-full);
  flex-shrink: 0;
}
.psm-state-on { background: var(--bs-success-soft); color: var(--bs-success); }
.psm-state-off { background: var(--bs-bg-subtle); color: var(--bs-fg-subtle); }
.psm-card-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-top: var(--bs-3);
  border-top: 1px solid var(--bs-border);
}
.psm-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
}
.psm-card-actions {
  display: flex;
  gap: 6px;
  justify-content: flex-end;
  flex-wrap: wrap;
}
.psm-edit-wrap {
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  padding: 0;
  overflow: hidden;
}
.psm-edit-summary {
  cursor: pointer;
  padding: var(--bs-4) var(--bs-5);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  user-select: none;
  list-style: none;
}
.psm-edit-summary::-webkit-details-marker { display: none; }
.psm-edit-summary:hover { color: var(--bs-primary); }
.psm-edit-wrap[open] .psm-edit-summary { border-bottom: 1px solid var(--bs-border); }
.psm-form {
  padding: var(--bs-5);
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
  background: var(--bs-bg-elevated);
}

/* Email-Versand-Card im Tenant-Settings */
.tenant-email-card .te-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  background: var(--bs-primary-soft);
  border-radius: var(--bs-r);
  font-size: 18px;
  flex-shrink: 0;
}
.te-mode-options {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.te-mode-opt {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 14px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.te-mode-opt:hover { border-color: var(--bs-primary-soft); }
.te-mode-opt input[type="radio"] {
  margin: 4px 0 0;
  flex-shrink: 0;
  accent-color: var(--bs-primary);
}
.te-mode-opt:has(input:checked) {
  border-color: var(--bs-primary);
  background: var(--bs-primary-soft);
}
.te-opt-title {
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  font-size: var(--bs-text-base);
}
.te-mode-opt:has(input:checked) .te-opt-title { color: var(--bs-primary); }
.te-opt-sub {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin-top: 2px;
  line-height: 1.4;
}

/* Email-Card-Icon im Platform-Admin Integrationen-Tab */
.ti-icon-email { background: var(--bs-primary-soft); }

/* ═══════════════════════════════════════════════════════════════════════
   KI-Attendant Tab 6: Postfach (Workflow-Tickets)
   ═══════════════════════════════════════════════════════════════════════ */

.att-msg-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--bs-3);
  margin-bottom: var(--bs-4);
}
.att-msg-stat {
  padding: var(--bs-4);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.att-msg-stat-value {
  font-family: var(--bs-font-display);
  font-size: 28px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--bs-fg);
}
.att-msg-stat-label {
  font-size: 11px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
}
.att-msg-stat-overdue { border-color: var(--bs-warning-soft); }
.att-msg-stat-overdue .att-msg-stat-value { color: var(--bs-warning); }
.att-msg-stat-new { border-color: var(--bs-primary-soft); }
.att-msg-stat-new .att-msg-stat-value { color: var(--bs-primary); }

.att-msg-filters {
  display: flex;
  gap: var(--bs-2);
  margin-bottom: var(--bs-4);
  flex-wrap: wrap;
}
.att-msg-filter { max-width: 220px; }
.att-msg-filter[type="search"] { flex: 1; min-width: 200px; max-width: none; }

.att-msg-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.att-msg-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: var(--bs-3);
  align-items: center;
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.att-msg-row:hover {
  border-color: var(--bs-primary-soft);
  background: var(--bs-bg-elevated);
  transform: translateX(2px);
}
.att-msg-row.selected {
  border-color: var(--bs-primary);
  background: var(--bs-primary-soft);
}
.att-msg-checkbox-label {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 4px;
  cursor: pointer;
  flex-shrink: 0;
}
.att-msg-checkbox {
  width: 16px;
  height: 16px;
  cursor: pointer;
  accent-color: var(--bs-primary);
  margin: 0;
}
/* Department-Badge im Header (Abteilungs-Routing-Hinweis) */
.att-msg-dep {
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  font-weight: 600;
}
/* Priority-Tag (ersetzt früheren Left-Stripe). Wird nur für urgent/high gerendert
   — normal/low sind Default und brauchen keinen visuellen Lärm. Liegt im Head
   neben Caller-Name + Department-Badge. */
.att-msg-prio-tag {
  display: inline-flex;
  align-items: center;
  font-family: var(--bs-font-mono);
  font-size: 9px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: var(--bs-weight-semibold);
  padding: 2px 8px;
  border-radius: var(--bs-r-full);
  flex-shrink: 0;
}
.att-msg-prio-tag-urgent {
  background: var(--bs-danger-soft, rgba(220, 38, 38, 0.12));
  color: var(--bs-danger, #b91c1c);
}
.att-msg-prio-tag-high {
  background: var(--bs-warning-soft, rgba(217, 119, 6, 0.14));
  color: var(--bs-warning, #b45309);
}

.att-msg-body { min-width: 0; flex: 1; }
.att-msg-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 2px;
}
.att-msg-caller {
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-base);
  color: var(--bs-fg);
}
.att-msg-caller-num {
  font-family: var(--bs-font-mono);
  font-size: 11px;
  color: var(--bs-fg-subtle);
}
.att-msg-cat {
  font-size: 9px !important;
}
.att-msg-summary {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.att-msg-meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  flex-shrink: 0;
  font-size: 11px;
}
.att-msg-status-pill {
  font-family: var(--bs-font-mono);
  font-size: 9px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: var(--bs-weight-semibold);
  padding: 3px 9px;
  border-radius: var(--bs-r-full);
}
/* R10 — distinkte Farb-Identität pro Ticket-Status (Workflow-Klarheit) */
.att-msg-status-pill.att-msg-status-open        { background: var(--rp-status-open-soft);     color: var(--rp-status-open); }
.att-msg-status-pill.att-msg-status-in_progress { background: var(--rp-status-progress-soft); color: var(--rp-status-progress); }
.att-msg-status-pill.att-msg-status-snoozed     { background: var(--rp-status-snoozed-soft);  color: var(--rp-status-snoozed); }
.att-msg-status-pill.att-msg-status-done        { background: var(--rp-status-done-soft);     color: var(--rp-status-done); }
.att-msg-status-pill.att-msg-status-dropped     { background: var(--rp-status-dropped-soft);  color: var(--rp-status-dropped); }

/* Row-Indicator: 4px Left-Stripe in Status-Farbe (einziger Streifen — Priorität
   ist jetzt Tag im Head). Border ist sichtbarer geworden, da es der einzige
   farbige Indicator am Rand ist. Selected-State behält primary-color auf top/right/bottom. */
.att-msg-row.att-msg-status-open        { border-left: 4px solid var(--rp-status-open); }
.att-msg-row.att-msg-status-in_progress { border-left: 4px solid var(--rp-status-progress); }
.att-msg-row.att-msg-status-snoozed     { border-left: 4px solid var(--rp-status-snoozed); }
.att-msg-row.att-msg-status-done        { border-left: 4px solid var(--rp-status-done); }
.att-msg-row.att-msg-status-dropped     { border-left: 4px solid var(--rp-status-dropped); }

.att-msg-due {
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
  font-size: 10px;
}
.att-msg-due.att-msg-overdue { color: var(--bs-danger); font-weight: var(--bs-weight-semibold); }
.att-msg-time {
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  font-size: 10px;
}

/* ═══════════════════════════════════════════════════════════════════════
   Ticket-Detail-Modal (Phase 13f — Linear/Intercom-Pattern)
   Hero-Header oben + 2-col Body (Activity left, Properties-Sidebar right)
   ═══════════════════════════════════════════════════════════════════════ */

.dam-dialog {
  display: flex;
  flex-direction: column;
  max-height: 92vh;
  padding: 0;
  overflow: hidden;
}

/* Hero-Header */
.dam-hero {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 18px 24px 16px;
  border-bottom: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
  flex-shrink: 0;
}
.dam-hero-main {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  flex: 1;
  min-width: 0;
}
.dam-avatar {
  width: 48px;
  height: 48px;
  flex-shrink: 0;
  border-radius: 50%;
  background: var(--bs-mod-attendant);
  color: var(--bs-primary-fg);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-bold);
  font-size: 18px;
  letter-spacing: -0.02em;
  user-select: none;
}
.dam-hero-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.dam-hero-toprow {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
.dam-hero-name {
  margin: 0;
  font-family: var(--bs-font-display);
  font-size: 20px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
  line-height: 1.2;
}
.dam-hero-callerno {
  font-size: 11px !important;
}
.dam-hero-callerno:empty,
.dam-hero-callerno[hidden] { display: none; }

/* Status + Priority Pills im Hero */
.dam-hero-pill {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 10px;
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.04em;
  font-family: var(--bs-font-mono);
  white-space: nowrap;
}
.dam-hero-pill[hidden] { display: none; }
/* Robopult-Status-Palette (Slate-Mono mit Akzenten) */
/* R10 — gleiche Status-Palette wie .att-msg-status-pill für visuelle Konsistenz Liste↔Detail */
.dam-hero-status[data-status="open"]        { background: var(--rp-status-open-soft);     color: var(--rp-status-open); }
.dam-hero-status[data-status="in-progress"] { background: var(--rp-status-progress-soft); color: var(--rp-status-progress); }
.dam-hero-status[data-status="snoozed"]     { background: var(--rp-status-snoozed-soft);  color: var(--rp-status-snoozed); }
.dam-hero-status[data-status="done"]        { background: var(--rp-status-done-soft);     color: var(--rp-status-done); }
.dam-hero-status[data-status="dropped"]     { background: var(--rp-status-dropped-soft);  color: var(--rp-status-dropped); }
.dam-hero-prio[data-prio="urgent"] { background: var(--bs-danger); color: var(--bs-primary-fg); }
.dam-hero-prio[data-prio="high"]   { background: rgba(245,158,11,0.18); color: #d97706; }
.dam-hero-prio[data-prio="normal"] { background: var(--bs-bg-subtle); color: var(--bs-fg-muted); }
.dam-hero-prio[data-prio="low"]    { background: var(--bs-bg-subtle); color: var(--bs-fg-subtle); }

.dam-hero-summary {
  margin: 0;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.dam-hero-summary[hidden] { display: none; }
.dam-hero-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  letter-spacing: 0.01em;
}
.dam-hero-meta-id { font-weight: var(--bs-weight-medium); }
.dam-hero-meta-cat[hidden] { display: none; }
/* Lucide-tag-Icon vor der Kategorie via inline-SVG (mono-color) */
.dam-hero-meta-cat::before {
  content: "";
  display: inline-block;
  width: 10px;
  height: 10px;
  margin-right: 4px;
  background-color: currentColor;
  -webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2H2v10l9.29 9.29a1 1 0 0 0 1.42 0l8.58-8.58a1 1 0 0 0 0-1.42L12 2Z"/><circle cx="7" cy="7" r="1"/></svg>') center/contain no-repeat;
          mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2H2v10l9.29 9.29a1 1 0 0 0 1.42 0l8.58-8.58a1 1 0 0 0 0-1.42L12 2Z"/><circle cx="7" cy="7" r="1"/></svg>') center/contain no-repeat;
  vertical-align: -1px;
  opacity: 0.7;
}
.dam-hero-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-shrink: 0;
}
.dam-hero-close {
  width: 32px !important;
  height: 32px !important;
}

/* Action-Bar: alle Aktionen sticky-präsent zwischen Hero und Body */
.dam-actionbar {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 24px;
  background: var(--bs-bg-elevated);
  border-bottom: 1px solid var(--bs-border);
  flex-shrink: 0;
  flex-wrap: wrap;
}

/* Anrufen-Button — gleiche Maße wie .bs-btn-sm (28 px hoch, 14 px Icon),
   damit er optisch zu „Erledigt" daneben passt. */
.dam-actionbar-call {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--bs-2);
  height: 28px;
  padding: 0 var(--bs-3);
  background: var(--bs-success);
  color: var(--bs-primary-fg);
  border-radius: var(--bs-r-sm);
  text-decoration: none;
  font-family: inherit;
  font-weight: var(--bs-weight-medium);
  font-size: var(--bs-text-sm);
  line-height: 1;
  white-space: nowrap;
  transition: all var(--bs-transition);
  border: 0;
}
.dam-actionbar-call:hover {
  background: #059669;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px -4px rgba(16,185,129,0.4);
}
.dam-actionbar-call[hidden] { display: none; }
.dam-actionbar-call-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}
.dam-actionbar-call-icon svg { display: block; }
/* Einzeilig: „Zurückrufen" weglassen wenn Nummer da ist, sonst nur Label.
   Vorher 2-zeilig (Label oben klein + Nummer unten) — wirkte zerbrochen. */
.dam-actionbar-call-label {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  line-height: 1.2;
}
.dam-actionbar-call-text {
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-semibold);
  letter-spacing: -0.005em;
}
/* Wenn Nummer vorhanden: Label „Zurückrufen" ausblenden, Nummer als Primary zeigen */
.dam-actionbar-call:has(.dam-actionbar-call-number:not(:empty)) .dam-actionbar-call-text {
  display: none;
}
.dam-actionbar-call-number {
  font-family: var(--bs-font-mono);
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.01em;
}
.dam-actionbar-call-number:empty { display: none; }

/* Wiedervorlage-Group */
.dam-actionbar-snooze {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
}
.dam-actionbar-group-label {
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  margin-right: 4px;
}
.dam-actionbar-snooze .bs-btn {
  padding: 4px 10px;
  font-size: 11px;
}

.dam-actionbar-spacer {
  flex: 1;
}

.dam-actionbar-done {
  font-weight: var(--bs-weight-semibold);
}

.dam-actionbar-delete {
  width: 32px;
  height: 32px;
  border: 1px solid var(--bs-border);
  background: transparent;
  color: var(--bs-fg-subtle);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all var(--bs-transition);
}
.dam-actionbar-delete:hover {
  border-color: var(--bs-danger);
  color: var(--bs-danger);
  background: var(--bs-danger-soft);
}

/* ═══════════════════════════════════════════════════════════════════════
   Pre-Launch-Polish (Empty-States + Loading + Reaktivieren + Inline-Links)
   ═══════════════════════════════════════════════════════════════════════ */

/* Tab 1: Stats-Empty-State wenn keine Anrufe */
.att-stats-empty {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 40px 32px;
  background: var(--bs-bg-elevated);
  border: 1px dashed var(--bs-border);
  border-radius: var(--bs-r-xl);
}
.att-stats-empty-icon {
  width: 72px;
  height: 72px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bs-mod-attendant-soft);
  color: var(--bs-mod-attendant);
  border-radius: var(--bs-r-lg);
}
.att-stats-empty-title {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-lg);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
  margin: 0 0 6px;
}
.att-stats-empty-text {
  margin: 0 0 14px;
  color: var(--bs-fg-muted);
  line-height: 1.5;
  font-size: var(--bs-text-sm);
}
.att-stats-empty-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

/* Tab 3: Test-Anruf Loading-State */
.att-test-loading {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 20px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
}
.att-test-loading .bs-spinner {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}
.att-test-loading-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.att-test-loading-text strong {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
  font-weight: var(--bs-weight-semibold);
}
.att-test-loading-text span {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
}
.att-test-pending,
.att-test-error {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-sm);
}
.att-test-pending {
  background: var(--bs-att-test-pending-bg);
  color: var(--bs-att-test-pending-fg);
  border-left: 3px solid var(--bs-warning);
}
.att-test-error {
  background: var(--bs-att-test-error-bg);
  color: var(--bs-att-test-error-fg);
  border-left: 3px solid var(--bs-danger);
}

/* Tab 6: Reaktivieren-Quick-Action im Done-Tab */
.att-msg-reactivate {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  margin-top: 4px;
  background: transparent;
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  font-family: inherit;
  font-size: 11px;
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg-muted);
  transition: all var(--bs-transition);
}
.att-msg-reactivate:hover {
  border-color: var(--bs-mod-attendant);
  color: var(--bs-mod-attendant);
  background: var(--bs-mod-attendant-soft);
}

/* Department-Liste: Inline-Link zur Extension */
.att-dep-action-link {
  text-decoration: none;
  cursor: pointer;
  border-bottom: 1px dashed currentColor;
  transition: opacity var(--bs-transition);
}
.att-dep-action-link:hover {
  opacity: 0.75;
  border-bottom-style: solid;
}


@media (max-width: 700px) {
  .dam-actionbar {
    padding: 10px 16px;
    gap: 8px;
  }
  .dam-actionbar-snooze {
    flex-basis: 100%;
    order: 3;
  }
  .dam-actionbar-spacer { display: none; }
}

/* Sidebar Cleanup — die alten Quick-Actions/Danger-Blocks sind jetzt im Action-Bar oben.
   Falls noch CSS rumdaddelt: explizit hide */
.dam-sidebar .dam-quick-actions-block,
.dam-sidebar .dam-danger {
  display: none;
}

/* Body: 2-col Activity + Sidebar */
.dam-body {
  flex: 1;
  display: grid;
  grid-template-columns: 1fr 380px;
  min-height: 0;
  overflow: hidden;
}
@media (max-width: 1100px) {
  .dam-body { grid-template-columns: 1fr 340px; }
}
@media (max-width: 900px) {
  .dam-body { grid-template-columns: 1fr; }
}

/* Left: Activity-Stream */
.dam-activity {
  overflow-y: auto;
  padding: 18px 24px;
  display: flex;
  flex-direction: column;
  gap: 22px;
  min-height: 0;
}
.dam-activity-section {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.dam-activity-head {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  letter-spacing: -0.01em;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--bs-border);
}
.dam-activity-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  color: var(--bs-fg-muted);
  flex-shrink: 0;
}
.dam-activity-icon svg { display: block; }
.dam-activity-title { flex: 1; }
.dam-activity-count:empty { display: none; }
.dam-activity-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.dam-activity-body .das-messages {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* Right: Properties-Sidebar */
.dam-sidebar {
  overflow-y: auto;
  padding: 18px 20px;
  background: var(--bs-bg-subtle);
  border-left: 1px solid var(--bs-border);
  display: flex;
  flex-direction: column;
  gap: 18px;
  min-height: 0;
}
@media (max-width: 900px) {
  .dam-sidebar { border-left: 0; border-top: 1px solid var(--bs-border); }
}
.dam-props {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.dam-props-section-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  margin-bottom: 4px;
}

/* ═══ Akkordeon (dam-acc) — Desktop unsichtbar, Mobile als <details> aktiv ═══
   Wir nutzen das native <details>-Element. Auf Desktop entfernen wir den
   Default-Marker und die Klick-Interaktion (open ist permanent). Auf Mobile
   greift der native Accordion-Mechanismus, plus animierter Chevron. */
.dam-acc {
  border: 0;
  width: 100%;        /* alle Sektionen auf 100% des Parents — verhindert dass <details> intrinsisch shrinkt */
  min-width: 0;
}
.dam-acc > summary {
  list-style: none;
  cursor: default;
  outline: none;
}
.dam-acc > summary::-webkit-details-marker { display: none; }
.dam-acc > summary::marker { display: none; content: ""; }
.dam-acc-chevron {
  display: none;            /* Desktop: kein Chevron */
  margin-left: auto;
  color: var(--bs-fg-subtle);
  transition: transform 200ms ease;
  flex-shrink: 0;
}
.dam-acc[open] > summary .dam-acc-chevron { transform: rotate(180deg); }
/* dam-props-body wurde entfernt — Eigenschaften nutzt jetzt dam-activity-body */
.dam-prop {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.dam-prop-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg-muted);
  margin: 0;
}
.dam-prop-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  color: var(--bs-fg-subtle);
  flex-shrink: 0;
}
.dam-prop-icon svg { display: block; }
.dam-prop-hint {
  margin-left: auto;
  padding: 1px 6px;
  background: var(--bs-success-soft);
  color: var(--bs-success);
  border-radius: 8px;
  font-size: 9px;
  font-family: var(--bs-font-mono);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.dam-prop-input {
  width: 100%;
  height: 34px;
  font-size: var(--bs-text-sm);
}
.dam-prop-input:is(textarea) {
  height: auto;
  min-height: 80px;
  line-height: 1.5;
  resize: vertical;
}
.dam-prop-summary { margin-top: 4px; }

.dam-props-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 6px;
  padding-top: 12px;
  border-top: 1px solid var(--bs-border);
}
.dam-props-actions .bs-btn { flex: 1; }
.dam-props-actions .att-saved-state {
  font-size: var(--bs-text-xs);
  color: var(--bs-success);
  white-space: nowrap;
}

/* Quick-Actions im Sidebar */
.dam-quick-actions-block {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding-top: 12px;
  border-top: 1px solid var(--bs-border);
}
.dam-quick-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

/* Danger-Zone */
.dam-danger {
  padding-top: 12px;
  border-top: 1px solid var(--bs-border);
}
.dam-danger .bs-btn { width: 100%; }

/* Notes-Form-Layout (kompakter im neuen Pattern) */
.dam-note-form {
  display: flex;
  gap: 8px;
  margin-bottom: 8px;
}
.dam-note-form input { flex: 1; }

/* CRM-Sync-Block in Sidebar (kompakter als die alte Block-Variante) */
.dam-sidebar .dam-sync-block {
  padding: 12px 14px;
}
.dam-sidebar .dam-sync-block .dam-sync-link {
  margin-top: 10px;
  width: 100%;
  justify-content: center;
}

/* Footer-Schließen-Button (versteckt — Hero hat eigenes Close) */
.dam-footer-dismiss { display: none; }

.dam-quick-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  padding: 10px 0;
  border-top: 1px dashed var(--bs-border);
  border-bottom: 1px dashed var(--bs-border);
}

.dam-notes-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.dam-note {
  padding: 10px 12px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
}
.dam-note-body {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
  line-height: 1.4;
  margin-bottom: 6px;
}
.dam-note-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 10px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
}
.dam-note-meta span:first-child { font-weight: var(--bs-weight-semibold); }
.dam-note-meta span:nth-child(2) { flex: 1; }
.dam-note-del {
  width: 18px;
  height: 18px;
  border: 0;
  background: transparent;
  color: var(--bs-fg-subtle);
  cursor: pointer;
  border-radius: 50%;
  font-size: 12px;
}
.dam-note-del:hover {
  background: var(--bs-danger);
  color: var(--bs-primary-fg);
}

/* ═══════════════════════════════════════════════════════════════════════
   KI-Attendant Tab 7: Extensions (Plugin-Framework)
   ═══════════════════════════════════════════════════════════════════════ */

.att-ext-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
  gap: var(--bs-3);
}
.att-ext-card {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  padding: var(--bs-4);
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
  transition: border-color var(--bs-transition);
}
.att-ext-card:hover { border-color: var(--bs-primary-soft); }
.att-ext-off { opacity: 0.55; }
.att-ext-head {
  display: flex;
  align-items: flex-start;
  gap: var(--bs-3);
}
.att-ext-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  border-radius: var(--bs-r);
  flex-shrink: 0;
}
.att-ext-title-wrap { flex: 1; min-width: 0; }
.att-ext-name {
  font-family: var(--bs-font-mono);
  font-weight: var(--bs-weight-bold);
  font-size: 13px;
  color: var(--bs-primary);
  letter-spacing: 0.02em;
}
.att-ext-method-url {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 4px;
  font-size: 11px;
}
.att-ext-method {
  font-size: 9px !important;
}
.att-ext-url {
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.att-ext-toggle-wrap {
  flex-shrink: 0;
  margin-top: 2px;
}
.att-ext-desc {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.att-ext-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: var(--bs-3);
  border-top: 1px dashed var(--bs-border);
  gap: var(--bs-2);
  flex-wrap: wrap;
}
.att-ext-tested {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
}
.att-ext-tested svg { width: 11px; height: 11px; }
.att-ext-actions {
  display: flex;
  gap: 6px;
}

/* Test-Result-Box im Edit-Dialog */
.dae-test-result {
  margin-top: var(--bs-4);
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
  border: 1px solid var(--bs-border);
}
.dae-test-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  flex-wrap: wrap;
}
.dae-test-ok strong { color: var(--bs-success); }
.dae-test-fail strong { color: var(--bs-danger); }
.dae-test-body {
  font-family: var(--bs-font-mono);
  font-size: 11px;
  color: var(--bs-fg-muted);
  background: var(--bs-bg-elevated);
  padding: 10px;
  border-radius: var(--bs-r-sm);
  max-height: 240px;
  overflow: auto;
  white-space: pre-wrap;
  word-break: break-all;
  margin: 0;
}

/* ─── Preset-Cards-Section (DocBee + Co.) ─────────────────────────────── */
.att-ext-presets-section {
  margin-bottom: var(--bs-6);
  padding: var(--bs-5);
  background: var(--bs-att-ext-presets-gradient, linear-gradient(135deg, var(--bs-primary-soft), var(--bs-accent-soft)));
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-xl);
}
.att-ext-presets-head {
  margin-bottom: var(--bs-4);
}
.att-ext-presets-head h3 {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-lg);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
  margin: 0 0 4px;
}
.att-ext-presets-head p {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin: 0;
}
.att-ext-presets-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: var(--bs-3);
}
.att-ext-preset-card {
  display: flex;
  flex-direction: column;
  gap: var(--bs-2);
  padding: var(--bs-4);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.att-ext-preset-card:hover {
  border-color: var(--bs-primary);
  transform: translateY(-2px);
  box-shadow: 0 8px 24px -8px rgba(30,41,59,0.25);
}
.att-ext-preset-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 4px;
}
.att-ext-preset-icon {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.att-ext-icon-svg {
  width: 100%;
  height: 100%;
  border-radius: var(--bs-r-sm);
  display: block;
}
.att-ext-icon-emoji {
  font-size: 24px;
}
.att-ext-preset-vendor {
  flex: 1;
  font-family: var(--bs-font-mono);
  font-size: 10px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--bs-fg-subtle);
}
.att-ext-preset-docs {
  text-decoration: none;
  font-size: 16px;
  opacity: 0.6;
  transition: opacity var(--bs-transition);
}
.att-ext-preset-docs:hover { opacity: 1; }
.att-ext-preset-name {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-base);
  color: var(--bs-fg);
  letter-spacing: -0.02em;
  line-height: 1.25;
}
.att-ext-preset-summary {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.att-ext-preset-tags {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  margin-top: 4px;
}
.att-ext-preset-use {
  margin-top: var(--bs-2);
  align-self: flex-start;
}

.att-ext-user-head {
  margin-bottom: var(--bs-3);
  padding-bottom: var(--bs-2);
  border-bottom: 1px solid var(--bs-border);
}
.att-ext-user-head h3 {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  margin: 0;
}

/* ─── Setup-Wizard-Banner im Edit-Dialog ──────────────────────────────── */
.dae-preset-banner {
  margin: 0 0 var(--bs-5) 0;
  padding: var(--bs-4) var(--bs-5);
  background: var(--bs-dae-preset-banner-gradient, linear-gradient(135deg, var(--bs-primary-soft), var(--bs-accent-soft)));
  border: 1px solid rgba(30,41,59,0.25);
  border-radius: var(--bs-r-lg);
}
.dae-pb-head {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding-bottom: var(--bs-3);
  border-bottom: 1px dashed rgba(30,41,59,0.25);
  margin-bottom: var(--bs-3);
}
.dae-pb-icon {
  width: 56px;
  height: 56px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--bs-r);
  background: var(--bs-bg-elevated);
  padding: 4px;
  box-shadow: 0 4px 14px -4px rgba(30,41,59,0.4);
}
.dae-pb-icon .att-ext-icon-svg {
  width: 100%;
  height: 100%;
}
.dae-pb-text {
  flex: 1;
  min-width: 0;
}
.dae-pb-vendor {
  font-family: var(--bs-font-mono);
  font-size: 10px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--bs-primary);
}
.dae-pb-name {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-lg);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  margin: 2px 0;
}
.dae-pb-summary {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.45;
}
.dae-pb-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--bs-3);
}
@media (max-width: 700px) {
  .dae-pb-grid { grid-template-columns: 1fr; }
}
.dae-pb-section {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  padding: 0;
  display: flex;
  flex-direction: column;
}
.dae-pb-section-title {
  padding: 10px 14px;
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
  border-bottom: 1px solid var(--bs-border);
  background: var(--bs-bg-subtle);
}
.dae-pb-section ol,
.dae-pb-section ul {
  margin: 0;
  padding: 12px 14px 14px 32px;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.6;
  flex: 1;
}
.dae-pb-section li { margin-bottom: 6px; }
.dae-pb-section li:last-child { margin-bottom: 0; }

.dae-pb-security { border-color: rgba(245, 158, 11, 0.3); }
.dae-pb-security .dae-pb-section-title {
  color: var(--bs-warning);
  background: rgba(245, 158, 11, 0.06);
  border-bottom-color: rgba(245, 158, 11, 0.3);
}

/* ═══════════════════════════════════════════════════════════════════════
   Dashboard v2 — Bundle-Aware, klar segmentiert (2026-04-27)
   Ersetzt komplett die alte dash-hero / dash-split Struktur.
   ═══════════════════════════════════════════════════════════════════════ */

#tab-dashboard {
  display: flex;
  flex-direction: column;
  gap: var(--bs-6);
}

/* ─── Hero — schlicht, keine Decoration mehr ─────────────────────────── */
.dash2-hero {
  padding-bottom: var(--bs-4);
  border-bottom: 1px solid var(--bs-border);
}
.dash2-hero h1 {
  font-family: var(--bs-font-display);
  font-size: clamp(28px, 3vw, 40px);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.04em;
  line-height: 1.1;
  color: var(--bs-fg);
  margin: 0;
}
.dash2-hero-date {
  font-family: var(--bs-font-mono);
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--bs-fg-subtle);
  margin: 6px 0 0;
}

/* ─── HEUTE — KPI-Row (clickable Cards, cross-domain) ────────────────── */
.dash2-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--bs-3);
}
.dash2-kpi {
  display: grid;
  grid-template-columns: 44px 1fr auto;
  align-items: center;
  gap: var(--bs-3);
  padding: var(--bs-4) var(--bs-5);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-left: 3px solid var(--kpi-color, var(--bs-primary));
  border-radius: var(--bs-r-lg);
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  color: inherit;
  transition: all var(--bs-transition);
}
.dash2-kpi:hover {
  border-color: var(--kpi-color, var(--bs-primary));
  transform: translateY(-2px);
  box-shadow: var(--bs-dash2-kpi-hover-box-shadow, 0 8px 24px -12px rgba(15,23,42,0.18));
}
.dash2-kpi-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  background: var(--bs-bg-subtle);
  color: var(--kpi-color, var(--bs-primary));
  border-radius: var(--bs-r);
}
.dash2-kpi-body { min-width: 0; }
.dash2-kpi-value {
  font-family: var(--bs-font-display);
  font-size: 28px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--bs-fg);
}
.dash2-kpi-label {
  font-size: 11px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
  margin-top: 2px;
}
.dash2-kpi-hint {
  font-size: var(--bs-text-xs);
  color: var(--kpi-color, var(--bs-fg-muted));
  margin-top: 4px;
  font-weight: var(--bs-weight-medium);
}
.dash2-kpi-arrow {
  color: var(--bs-fg-subtle);
  opacity: 0.5;
  transition: all var(--bs-transition);
}
.dash2-kpi:hover .dash2-kpi-arrow {
  color: var(--kpi-color, var(--bs-primary));
  opacity: 1;
  transform: translateX(2px);
}

/* ─── Domain-Section ──────────────────────────────────────────────────── */
.dash2-section {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-xl);
  overflow: hidden;
}
.dash2-section-head {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  padding: var(--bs-4) var(--bs-5);
  border-bottom: 1px solid var(--bs-border);
}
.dash2-section-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: var(--bs-r);
  flex-shrink: 0;
}
/* Module-Icons — Brand-konform alle Emerald (statt Cyan/Emerald/Amber-Mix).
   Brand-DNA: ein einziger Akzent, durchgängig. */
.dash2-icon-vm,
.dash2-icon-att,
.dash2-icon-ann {
  background: #10B981;
  color: var(--bs-primary-fg);
  box-shadow: var(--bs-dash2-icon-shadow, 0 4px 14px -4px rgba(16, 185, 129, 0.30));
}

/* Section-Counts — Inline-Stat-Pills im Section-Header (rechts neben Title).
   Ersetzen die alte Top-KPI-Row, weil die Werte jetzt direkt in der Section
   stehen wo sie hingehören (richtige Stände in den richtigen Bereichen). */
.dash2-section-counts {
  display: inline-flex;
  align-items: center;
  gap: var(--bs-2);
  flex-wrap: wrap;
}
.dash2-section-count {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-full);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  font-weight: var(--bs-weight-medium);
  white-space: nowrap;
}
.dash2-section-count strong {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-base);
  font-weight: var(--bs-weight-bold);
  color: var(--bs-fg);
  letter-spacing: -0.02em;
}
.dash2-section-count.is-warn { border-color: var(--bs-warning-soft); }
.dash2-section-count.is-warn strong { color: var(--bs-warning); }
.dash2-section-count.is-danger { border-color: var(--bs-danger-soft); }
.dash2-section-count.is-danger strong { color: var(--bs-danger); }
.dash2-section-count.is-accent { border-color: rgba(16, 185, 129, 0.30); }
.dash2-section-count.is-accent strong { color: #10B981; }
@media (max-width: 700px) {
  .dash2-section-head { flex-wrap: wrap; }
  .dash2-section-counts { order: 5; width: 100%; padding-top: 4px; }
}
.dash2-section-title-wrap { flex: 1; min-width: 0; }
.dash2-section-title-wrap h2 {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-lg);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
  margin: 0;
  line-height: 1.2;
}
.dash2-section-title-wrap p {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin: 2px 0 0;
  line-height: 1.4;
}
.dash2-section-body {
  padding: var(--bs-5);
}

/* ─── 2-Col-Grid innerhalb Section ────────────────────────────────────── */
.dash2-grid-2 {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: var(--bs-5);
}
@media (max-width: 900px) {
  .dash2-grid-2 { grid-template-columns: 1fr; }
}

.dash2-subtitle {
  font-size: 11px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  margin-bottom: var(--bs-2);
}

/* ─── Feed (Recent VMs / Recent Tickets) ──────────────────────────────── */
.dash2-feed {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.dash2-feed-item {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 10px 12px;
  background: var(--bs-bg-subtle);
  border: 1px solid transparent;
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  color: inherit;
  transition: all var(--bs-transition);
}
.dash2-feed-item:hover {
  background: var(--bs-bg-elevated);
  border-color: var(--bs-primary-soft);
  transform: translateX(2px);
}
.dash2-feed-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  flex-shrink: 0;
}
/* Feed-Icons innerhalb von Section-Cards: bs-tokens (Light + Dark adaptiv).
   Modul-Farbe sitzt schon am Section-Header, hier neutral halten. */
.dash2-icon-vm-soft { background: var(--bs-bg-subtle); color: var(--bs-fg-muted); }
.dash2-feed-body { min-width: 0; }
.dash2-feed-title {
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dash2-feed-snippet {
  font-size: 11px;
  color: var(--bs-fg-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 1px;
}
.dash2-feed-time {
  font-size: 10px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  flex-shrink: 0;
}

/* Priority-Bar in Tickets-Feed */
.dash2-prio {
  width: 3px;
  height: 26px;
  border-radius: 2px;
  flex-shrink: 0;
}
.dash2-prio-urgent { background: var(--bs-danger); }
.dash2-prio-high   { background: var(--bs-warning); }
.dash2-prio-normal { background: var(--bs-primary); }
.dash2-prio-low    { background: var(--bs-fg-subtle); }

/* Empty-State innerhalb Feed */
.dash2-empty {
  text-align: center;
  padding: 24px 16px;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
}

/* Phase 17d: Live-Warning im Section-Modal wenn lockdown droht */
.tu-lockdown-warning {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  margin-bottom: 14px;
  background: var(--bs-warning-soft, #fef3c7);
  border: 1px solid var(--bs-warning, #b45309);
  border-radius: 8px;
  font-size: 13px;
  color: var(--bs-warning, #b45309);
  line-height: 1.45;
}
.tu-lockdown-warning svg { flex-shrink: 0; margin-top: 1px; }
.tu-lockdown-warning[hidden] { display: none; }

/* Empty-State-Card (Phase 17d: „Keine Bereiche freigeschaltet") */
.dash2-empty-card {
  text-align: center;
  padding: 48px 32px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: 12px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.dash2-empty-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  margin-bottom: 4px;
}
.dash2-empty-title {
  font-size: 18px;
  font-weight: 600;
  color: var(--bs-fg);
  margin: 0;
}
.dash2-empty-text {
  font-size: 14px;
  color: var(--bs-fg-muted);
  line-height: 1.5;
  margin: 0;
  max-width: 480px;
}

/* ─── Mailboxen-Liste (rechte Spalte VM-Section) ─────────────────────── */
.dash2-mailboxes {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.dash2-mailbox-item {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 10px 12px;
  background: var(--bs-bg-subtle);
  border: 1px solid transparent;
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  color: inherit;
  transition: all var(--bs-transition);
}
.dash2-mailbox-item:hover {
  background: var(--bs-bg-elevated);
  border-color: var(--bs-primary-soft);
}
.dash2-mailbox-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  flex-shrink: 0;
}
.dash2-mailbox-body { min-width: 0; }
.dash2-mailbox-name {
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
}
.dash2-mailbox-num {
  font-size: 10px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  letter-spacing: 0.04em;
  margin-top: 1px;
}
.dash2-mailbox-count {
  font-family: var(--bs-font-mono);
  font-weight: var(--bs-weight-bold);
  font-size: 13px;
  color: var(--bs-primary);
  background: var(--bs-primary-soft);
  padding: 3px 10px;
  border-radius: var(--bs-r-full);
  flex-shrink: 0;
}

/* ─── KI-Attendant Stats-Lines (rechte Spalte Att-Section) ───────────── */
.dash2-att-stats {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.dash2-stat-line {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
}
.dash2-stat-line-label {
  font-size: 11px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
}
.dash2-stat-line-value {
  font-family: var(--bs-font-display);
  font-size: 20px;
  font-weight: var(--bs-weight-bold);
  color: var(--bs-fg);
  letter-spacing: -0.02em;
}

/* ─── Ansagen-Stats (3 Mini-KPIs) ─────────────────────────────────────── */
.dash2-ann-summary {
  display: grid;
}
.dash2-ann-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--bs-3);
}
@media (max-width: 700px) {
  .dash2-ann-row { grid-template-columns: 1fr; }
}
.dash2-ann-stat {
  text-align: center;
  padding: var(--bs-4);
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r);
}
.dash2-ann-stat-value {
  font-family: var(--bs-font-display);
  font-size: 32px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.03em;
  color: var(--bs-accent);
  line-height: 1;
}
.dash2-ann-stat-label {
  font-size: 11px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
  margin-top: 6px;
}

/* ─── Schnellzugriff-Footer ──────────────────────────────────────────── */
.dash2-quick {
  margin-top: var(--bs-2);
}
.dash2-quick-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--bs-3);
}
.dash2-quick-tile {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: var(--bs-3) var(--bs-4);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-lg);
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  color: inherit;
  transition: all var(--bs-transition);
}
.dash2-quick-tile:hover {
  border-color: var(--kpi-color, var(--bs-primary));
  transform: translateX(2px);
}
.dash2-quick-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--bs-bg-subtle);
  color: var(--kpi-color, var(--bs-primary));
  border-radius: var(--bs-r);
  flex-shrink: 0;
}
.dash2-quick-text { flex: 1; min-width: 0; }
.dash2-quick-label {
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-base);
  color: var(--bs-fg);
}
.dash2-quick-sub {
  font-size: 11px;
  color: var(--bs-fg-muted);
  margin-top: 1px;
}
.dash2-quick-tile svg:last-child {
  color: var(--bs-fg-subtle);
  opacity: 0.5;
  transition: all var(--bs-transition);
}
.dash2-quick-tile:hover svg:last-child {
  color: var(--kpi-color, var(--bs-primary));
  opacity: 1;
  transform: translateX(2px);
}

/* Hide alte dash-* Stuff nicht — wird einfach nicht mehr referenziert */

/* ═══════════════════════════════════════════════════════════════════════
   Form-Symmetry-Layer (2026-04-27)
   Vereinheitlicht Dialoge / Forms / Felder über ALLE bestehenden Patterns.
   Höchste Specificity — überschreibt Section 9/16/17 wo nötig.
   ═══════════════════════════════════════════════════════════════════════ */

/* Dialog-Header: einheitliche Padding + Trennlinie */
.dialog .dialog-inner > .dialog-header {
  padding: 20px 24px !important;
  border-bottom: 1px solid var(--bs-border);
}
.dialog .dialog-inner > .dialog-header h3 {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-lg);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  line-height: 1.2;
  margin: 0;
  color: var(--bs-fg);
}
.dialog .dialog-close {
  width: 36px;
  height: 36px;
  border-radius: var(--bs-r-sm);
  border: 1px solid transparent;
  background: transparent;
  color: var(--bs-fg-muted);          /* Vorher fg-subtle — zu blass bei dunklem BG */
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
  transition: all var(--bs-transition);
  padding: 0;
}
/* Fallback: leere dialog-close-Buttons bekommen automatisch ein × Glyph */
.dialog .dialog-close:empty::before {
  content: "✕";
  font-size: 16px;
  line-height: 1;
}
.dialog .dialog-close:hover {
  background: var(--bs-bg-subtle);
  color: var(--bs-fg);
  border-color: var(--bs-border);
}

/* Dialog-Body-Standard: einheitliche Innenpadding */
.dialog .dialog-body-std {
  padding: 24px !important;
}
/* Dialog-Footer-Standard: Buttons-Reihe mit konsistentem Abstand zum Body
   und zum Card-Rand. Cancel links, Save rechts (auto-margin), Border-Top
   trennt visuell vom Body. */
.dialog .dialog-footer-std {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 16px 24px;
  border-top: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
}
.dialog .dialog-footer-std .bs-btn-primary,
.dialog .dialog-footer-std button[type="submit"]:last-child {
  margin-left: auto;
}
@media (max-width: 700px) {
  .dialog .dialog-footer-std {
    flex-wrap: wrap;
    padding: 12px 18px calc(12px + env(safe-area-inset-bottom)) 18px;
  }
  .dialog .dialog-footer-std > .bs-btn {
    flex: 1 1 auto;
    min-height: 44px;
    justify-content: center;
  }
  .dialog .dialog-footer-std .bs-btn-ghost {
    margin-left: 0 !important;
    flex-basis: 100% !important;
    order: 2;
  }
  .dialog .dialog-footer-std .bs-btn-primary { order: 1; }
}

/* Slot-Picker-spezifische Liste — Scrollarea innerhalb des Standard-Body */
.sp-list-scroll,
.mbx-list-scroll {
  max-height: 420px;
  overflow-y: auto;
  margin-top: 4px;
}
@media (max-width: 700px) {
  /* Mobile: keine fixe max-height, dialog-body-std scrollt eh komplett */
  .sp-list-scroll,
  .mbx-list-scroll { max-height: none; }
}
.dialog .dialog-body-std > form {
  display: flex;
  flex-direction: column;
  gap: var(--bs-4);
}
.dialog .dialog-body-std > form > .grid-2:not(:last-child),
.dialog .dialog-body-std > form > .bs-field:not(:last-child) {
  margin-bottom: 0;
}

/* Forms direkt im dialog-inner (legacy) — einheitliche Padding */
.dialog .dialog-inner > form {
  padding: 24px !important;
  margin: 0 !important;
  display: flex;
  flex-direction: column;
  gap: var(--bs-4);
}
.dialog .dialog-inner > form > .bs-field,
.dialog .dialog-inner > form > .grid-2,
.dialog .dialog-inner > form > .field {
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* bs-field: einheitlicher vertical-rhythm */
.dialog .bs-field {
  display: flex;
  flex-direction: column;
  gap: var(--bs-2) !important;
  margin-bottom: 0 !important;  /* Gap auf form regelt Abstand */
}
.dialog .bs-field > .bs-label {
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg-muted);
  margin: 0;
  line-height: 1.3;
}
.dialog .bs-field > .bs-help {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  margin: 4px 0 0;
  line-height: 1.45;
}

/* grid-2: konsistenter Gap = bs-4 (16px) statt 12px legacy */
.dialog .grid-2,
.bs-card .grid-2,
.tdp .grid-2,
.ti-card-body .grid-2 {
  gap: var(--bs-4) !important;
}
.dialog .grid-2 > .bs-field {
  margin-bottom: 0 !important;
}

/* Inputs: einheitliche Höhe 38px (matched Section 16 Bare-Inputs) */
.dialog .bs-input,
.dialog input[type="text"]:not(.bs-mono-tag),
.dialog input[type="email"],
.dialog input[type="password"],
.dialog input[type="number"],
.dialog input[type="tel"],
.dialog input[type="search"],
.dialog input[type="url"],
.dialog input[type="datetime-local"],
.dialog select.bs-input,
.dialog select.bs-select {
  width: 100%;
  height: 38px;
  box-sizing: border-box;
}
.dialog textarea.bs-input,
.dialog textarea.bs-textarea {
  width: 100%;
  height: auto;
  min-height: 96px;
  padding: 10px var(--bs-3) !important;
  line-height: 1.5;
  resize: vertical;
}

/* form-actions: einheitlicher Top-Border-Separator */
.dialog .form-actions {
  display: flex;
  gap: var(--bs-2);
  align-items: center;
  margin: var(--bs-2) 0 0 !important;
  padding-top: var(--bs-4);
  border-top: 1px solid var(--bs-border);
  flex-wrap: wrap;
}
.dialog .form-actions:first-child {
  /* Form-actions ohne vorherigen Inhalt brauchen keinen Border */
  border-top: 0;
  padding-top: 0;
}

/* dialog-footer-std: konsistent zu form-actions */
.dialog .form-actions.dialog-footer-std,
.dialog .dialog-footer-std {
  margin: 0 !important;
  padding: var(--bs-4) 24px !important;
  border-top: 1px solid var(--bs-border);
}

/* Section-Header in Forms: einheitliche Optik */
.dialog .att-section-title,
.dialog .section-header {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  margin: var(--bs-3) 0 0 !important;
  padding-top: var(--bs-3);
  border-top: 1px solid var(--bs-border);
  display: flex;
  align-items: center;
  gap: 8px;
}
.dialog .att-section-title:first-child,
.dialog .section-header:first-child {
  margin-top: 0 !important;
  padding-top: 0;
  border-top: 0;
}

/* Dialog-Tabs (TDU/PDP/UDT) einheitlich */
.dialog .dialog-tabs,
.dialog .tenant-dialog-tabs {
  display: flex;
  gap: 0;
  padding: 0 24px;
  border-bottom: 1px solid var(--bs-border);
  flex-wrap: wrap;
}
.dialog .dialog-tabs > button,
.dialog .tenant-dialog-tabs > button {
  padding: 12px 16px;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--bs-fg-muted);
  font-family: inherit;
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-medium);
  cursor: pointer;
  margin-bottom: -1px;
  transition: color var(--bs-transition);
}
.dialog .dialog-tabs > button:hover,
.dialog .tenant-dialog-tabs > button:hover { color: var(--bs-fg); }
.dialog .dialog-tabs > button.active,
.dialog .tenant-dialog-tabs > button.active {
  color: var(--bs-primary);
  border-bottom-color: var(--bs-primary);
  font-weight: var(--bs-weight-semibold);
}

/* Dialog-Padding-Reset für tdp/dtu/dtg/das Panes — sie packen ihren Inhalt selbst rein */
.dialog .tdp,
.dialog .dtu-pane,
.dialog .dtg-pane {
  padding: 24px !important;
}

/* Toggle-Row einheitlich */
.dialog .bs-toggle-row {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font-size: var(--bs-text-base);
  color: var(--bs-fg);
}
.dialog .bs-toggle-row input[type="checkbox"] {
  flex-shrink: 0;
  accent-color: var(--bs-primary);
}

@media (max-width: 700px) {
  .att-msg-stats { grid-template-columns: 1fr; }
  .att-ext-list { grid-template-columns: 1fr; }
}

/* ═══════════════════════════════════════════════════════════════════════
   KI-Attendant Mode-Switch — Daily vs Config
   Tab-Definitions: 'attendant' (Daily, alle User) + 'attendant_config'
   (Setup, admin/owner). Beide rendern in #tab-attendant. body-Klassen
   `att-mode-daily` / `att-mode-config` schalten Sub-Tabs sichtbar.
   ═══════════════════════════════════════════════════════════════════════ */

body.att-mode-daily .att-sub-btn[data-att-mode="config"],
body.att-mode-config .att-sub-btn[data-att-mode="daily"] {
  display: none !important;
}

/* Status-Card: in Daily-Mode read-only, kleinere Optik */
body.att-mode-daily .att-status-card {
  /* Read-Only-Look: schmaler, kein Schatten, dezenterer Hintergrund */
  padding: var(--bs-3) var(--bs-5);
}
body.att-mode-daily .att-status-card .att-status-actions .bs-switch {
  /* Switch ausblenden für Daily-User — kein Konfig-Recht */
  display: none;
}
body.att-mode-daily .att-status-card .att-status-icon {
  width: 36px;
  height: 36px;
}
body.att-mode-daily .att-status-card .att-status-title {
  font-size: var(--bs-text-md);
}
body.att-mode-daily .att-status-card .att-status-subtitle {
  font-size: var(--bs-text-sm);
}

/* Mode-Hinweis war hier als ::after — entfernt (verursachte Layout-Bug) */

/* ═══════════════════════════════════════════════════════════════════════
   Dashboard: KI-Attendant Section (zwischen Stats-Row + Dash-Split)
   ═══════════════════════════════════════════════════════════════════════ */

.dash-attendant-row {
  margin-bottom: var(--bs-6);
}
.dash-attendant-row .section-card {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-xl);
  padding: 0;
  overflow: hidden;
}
.dash-att-header {
  display: flex !important;
  align-items: center;
  padding: var(--bs-4) var(--bs-5);
  border-bottom: 1px solid var(--bs-border);
  background: var(--bs-dash-att-header-gradient, linear-gradient(90deg, var(--bs-primary-soft), var(--bs-accent-soft)));
  position: relative;
}
.dash-att-header h3 {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
}
.dash-att-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: var(--bs-r);
  background: var(--bs-mod-attendant);
  color: var(--bs-primary-fg);
  flex-shrink: 0;
  box-shadow: 0 4px 14px -4px rgba(16,185,129,0.40);
}

.dash-att-grid {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: var(--bs-4);
  padding: var(--bs-5);
}
@media (max-width: 900px) {
  .dash-att-grid { grid-template-columns: 1fr; }
}

.dash-att-stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--bs-3);
  align-self: start;
}
.dash-att-kpi {
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-left: 3px solid var(--kpi-color, var(--bs-primary));
  border-radius: var(--bs-r);
  padding: var(--bs-3) var(--bs-4);
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  gap: 2px 12px;
  align-items: center;
}
.dash-att-kpi-icon {
  grid-row: 1 / 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-elevated);
  color: var(--kpi-color, var(--bs-primary));
}
.dash-att-kpi-value {
  font-family: var(--bs-font-display);
  font-size: 24px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.03em;
  color: var(--kpi-color, var(--bs-fg));
  line-height: 1;
}
.dash-att-kpi-label {
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
}

.dash-att-recent {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.dash-att-section-title {
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  margin-bottom: var(--bs-2);
}
.dash-att-recent-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.dash-att-recent-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  color: inherit;
  transition: all var(--bs-transition);
}
.dash-att-recent-item:hover {
  background: var(--bs-bg-elevated);
  border-color: var(--bs-primary-soft);
  transform: translateX(2px);
}
.dash-att-recent-body {
  flex: 1;
  min-width: 0;
}
.dash-att-recent-caller {
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dash-att-recent-summary {
  font-size: 11px;
  color: var(--bs-fg-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dash-att-recent-time {
  font-size: 10px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  flex-shrink: 0;
}

/* ═══════════════════════════════════════════════════════════════════════
   Extension-Dialog v2: Form-driven Builder (2026-04-27)
   Ersetzt JSON-Textareas durch UI-Felder. „Think like a user"
   ═══════════════════════════════════════════════════════════════════════ */

/* Section-Title mit Sub-Untertitel im gleichen Heading */
.att-section-sub {
  font-family: var(--bs-font-base);
  font-weight: var(--bs-weight-regular);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  letter-spacing: 0;
  margin-left: 6px;
}
.bs-label-optional {
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-regular);
  color: var(--bs-fg-subtle);
  margin-left: 4px;
}

/* Form-Layout: einheitlicher Vertikal-Rhythmus */
#dae-form {
  display: flex;
  flex-direction: column;
  gap: var(--bs-4);
}
#dae-form > .att-section-title {
  margin-top: var(--bs-4);
  padding-top: var(--bs-3);
  border-top: 1px solid var(--bs-border);
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-semibold);
  letter-spacing: -0.02em;
  color: var(--bs-fg);
  display: flex;
  align-items: baseline;
  gap: 6px;
}
#dae-form > .att-section-title:first-of-type {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}

/* Erklär-Block — collapsible Pattern-Erklärung */
.dae-explainer {
  background: var(--bs-dae-explainer-gradient, linear-gradient(135deg, var(--bs-primary-soft), var(--bs-accent-soft)));
  border: 1px solid var(--bs-dae-explainer-border, var(--bs-primary-soft));
  border-radius: var(--bs-r);
  overflow: hidden;
}
.dae-explainer-head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-sm);
}
.dae-explainer-icon {
  font-size: 18px;
  flex-shrink: 0;
}
.dae-explainer-head strong {
  flex: 1;
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
}
.dae-explainer-toggle {
  width: 24px;
  height: 24px;
  border: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
  color: var(--bs-fg-muted);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.dae-explainer-body {
  padding: 0 16px 14px;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
}
.dae-explainer-steps {
  margin: 0 0 8px;
  padding-left: 22px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  line-height: 1.5;
}
.dae-explainer-steps li strong {
  color: var(--bs-fg);
}
.dae-explainer-steps code {
  background: var(--bs-bg-subtle);
  padding: 1px 5px;
  border-radius: 3px;
  font-size: 11px;
  font-family: var(--bs-font-mono);
}
.dae-explainer-note {
  margin: 6px 0 0;
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  font-style: italic;
}
.dae-explainer.collapsed .dae-explainer-body {
  display: none;
}

/* Parameter-Builder */
.dae-params-builder {
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
}
.dae-params-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.dae-param-row {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1.6fr auto auto;
  gap: 8px;
  align-items: center;
  padding: 10px 12px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  position: relative;
}
.dae-param-row:focus-within {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px var(--bs-primary-soft);
}
.dae-param-row > .bs-input,
.dae-param-row > select.bs-input {
  height: 36px;
  font-size: var(--bs-text-sm);
}
.dae-param-name {
  font-family: var(--bs-font-mono);
  font-size: 12px !important;
}
.dae-param-required-wrap {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
}
.dae-param-required-wrap input[type="checkbox"] {
  margin: 0;
  accent-color: var(--bs-primary);
}
.dae-param-remove {
  width: 32px;
  height: 32px;
  border: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
  color: var(--bs-fg-subtle);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  line-height: 1;
  transition: all var(--bs-transition);
  flex-shrink: 0;
}
.dae-param-remove:hover {
  border-color: var(--bs-danger);
  color: var(--bs-danger);
  background: var(--bs-danger-soft);
}

/* Enum-Optionen Sub-Row (wenn Typ = Auswahl) */
.dae-param-enum {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 8px;
  padding-top: 6px;
  border-top: 1px dashed var(--bs-border);
  margin-top: 4px;
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
}
.dae-param-enum input {
  flex: 1;
  height: 32px;
  font-size: var(--bs-text-xs);
}
.dae-param-enum-label {
  white-space: nowrap;
}

@media (max-width: 700px) {
  .dae-param-row {
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "name type"
      "desc desc"
      "req remove";
  }
  .dae-param-name { grid-area: name; }
  .dae-param-type { grid-area: type; }
  .dae-param-desc { grid-area: desc; }
  .dae-param-required-wrap { grid-area: req; }
  .dae-param-remove { grid-area: remove; justify-self: end; }
}

.dae-params-empty {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 16px;
  background: var(--bs-bg-subtle);
  border: 1px dashed var(--bs-border);
  border-radius: var(--bs-r-sm);
  color: var(--bs-fg-muted);
  font-size: var(--bs-text-sm);
}
.dae-params-empty-icon {
  font-size: 20px;
}

.dae-params-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.dae-params-hint {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  flex: 1;
  min-width: 0;
}

/* Advanced (collapsible JSON-Textarea) */
.dae-advanced {
  margin-top: 4px;
  border: 1px dashed var(--bs-border);
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-subtle);
}
.dae-advanced > summary {
  cursor: pointer;
  padding: 10px 14px;
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
  letter-spacing: 0.02em;
  list-style: none;
  user-select: none;
  display: flex;
  align-items: center;
  gap: 6px;
}
.dae-advanced > summary::-webkit-details-marker { display: none; }
.dae-advanced > summary::before {
  content: "▸";
  font-size: 10px;
  transition: transform var(--bs-transition);
}
.dae-advanced[open] > summary::before {
  transform: rotate(90deg);
}
.dae-advanced[open] > summary {
  border-bottom: 1px dashed var(--bs-border);
  background: var(--bs-bg-elevated);
}
.dae-advanced .dae-advanced-json {
  font-family: var(--bs-font-mono) !important;
  font-size: 12px !important;
  border: 0 !important;
  background: transparent !important;
  padding: 12px 14px !important;
  width: 100%;
  resize: vertical;
  min-height: 120px;
}
.dae-advanced[open] > * + * {
  border-top: 1px dashed var(--bs-border);
}

/* Auth-Builder */
.dae-auth-builder {
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
}

/* Timeout-Row mit ms-Tag rechts */
.dae-timeout-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.dae-timeout-row > input {
  flex: 1;
}

/* Headers-Builder (innerhalb advanced) */
.dae-headers-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 14px 0;
}
.dae-header-row {
  display: grid;
  grid-template-columns: 1fr 1.5fr auto;
  gap: 8px;
  align-items: center;
}
.dae-header-row > .bs-input {
  height: 34px;
  font-family: var(--bs-font-mono);
  font-size: 12px;
}
.dae-header-row .dae-param-remove {
  width: 30px;
  height: 30px;
  font-size: 14px;
}
.dae-headers-advanced > #dae-headers-add {
  margin: 8px 14px 12px !important;
}

/* ═══════════════════════════════════════════════════════════════════════
   Setup-Fortschritts-Karte (KI-Konfig)
   ═══════════════════════════════════════════════════════════════════════ */

.att-setup-progress {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  padding: 18px 22px;
  margin-bottom: var(--bs-5);
}
.att-setup-head {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 14px;
}
.att-setup-title {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
  margin: 0;
}
.att-setup-sub {
  margin: 4px 0 0;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
}
.att-setup-head > div:first-child {
  flex: 1;
}

/* Progress-Ring */
.att-setup-ring {
  position: relative;
  width: 56px;
  height: 56px;
  flex-shrink: 0;
}
.att-setup-ring-svg {
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
}
.att-setup-ring-bg {
  fill: none;
  stroke: var(--bs-border);
  stroke-width: 2.5;
}
.att-setup-ring-fg {
  fill: none;
  stroke: url(#att-setup-grad);
  stroke: var(--bs-primary);
  stroke-width: 2.8;
  stroke-linecap: round;
  transition: stroke-dasharray 600ms ease;
}
.att-setup-ring-num {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--bs-font-mono);
  font-size: 11px;
  font-weight: var(--bs-weight-bold);
  color: var(--bs-fg);
  letter-spacing: -0.02em;
}

/* Checklist */
.att-setup-checklist {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 8px;
}
.att-setup-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-sm);
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  color: inherit;
  transition: all var(--bs-transition);
}
.att-setup-item:hover {
  background: var(--bs-bg-elevated);
  border-color: var(--bs-primary-soft);
  transform: translateX(2px);
}
.att-setup-item-icon {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 12px;
  font-weight: var(--bs-weight-bold);
}
.att-setup-item.done .att-setup-item-icon {
  background: var(--bs-success);
  color: var(--bs-primary-fg);
}
.att-setup-item.todo .att-setup-item-icon {
  background: var(--bs-bg-elevated);
  border: 1.5px dashed var(--bs-border);
  color: var(--bs-fg-subtle);
}
.att-setup-item-label {
  flex: 1;
  color: var(--bs-fg);
  font-weight: var(--bs-weight-medium);
}
.att-setup-item.done .att-setup-item-label {
  color: var(--bs-fg-muted);
  text-decoration: line-through;
  text-decoration-color: var(--bs-border);
  text-decoration-thickness: 1px;
}
.att-setup-item-arrow {
  color: var(--bs-fg-subtle);
  flex-shrink: 0;
  opacity: 0;
  transition: opacity var(--bs-transition);
}
.att-setup-item.todo:hover .att-setup-item-arrow {
  opacity: 1;
}

/* ═══════════════════════════════════════════════════════════════════════
   CRM-Sync-UI (2026-04-27)
   Department-Auto-Aktion + Postfach-Sync-Indikatoren
   ═══════════════════════════════════════════════════════════════════════ */

/* Phase 13e: Outputs-Multi-Select im Department-Modal — analog zu Tab 2 */
.dad-outputs-section {
  margin-top: var(--bs-3);
}
.dad-outputs-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.dad-output-row {
  display: grid;
  grid-template-columns: auto auto 1fr;
  gap: 12px;
  align-items: flex-start;
  padding: 12px 16px;
  background: var(--bs-bg-subtle);
  border: 1.5px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.dad-output-row:hover {
  border-color: var(--bs-primary-soft);
}
.dad-output-row.is-active {
  border-color: var(--bs-primary);
  background: var(--bs-dad-output-row-active-bg, var(--bs-primary-soft));
}
.dad-output-row > input[type="checkbox"] {
  margin: 4px 0 0;
  accent-color: var(--bs-primary);
}
.dad-output-icon {
  font-size: 18px;
  line-height: 1;
  margin-top: 2px;
}
.dad-output-body {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.dad-output-body strong {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
  line-height: 1.2;
}
.dad-output-body > span {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  line-height: 1.4;
}
.dad-output-sub {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 4px;
  padding-top: 8px;
  border-top: 1px dashed var(--bs-border);
}
.dad-output-sub .bs-input {
  width: 100%;
  height: 36px;
  font-size: var(--bs-text-sm);
}
.dad-output-sub .bs-label {
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg-muted);
  margin: 0;
}

/* Department-Dialog: CRM-Auto-Section (gehighlighted-Container) */
.dad-crm-section {
  background: var(--bs-dad-crm-section-active-bg, var(--bs-primary-soft));
  border: 1px solid var(--bs-dad-crm-section-active-border, var(--bs-primary-soft));
  border-radius: var(--bs-r-sm);
  padding: 14px 16px;
  margin: 4px 0;
}
.dad-crm-head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.dad-crm-icon {
  font-size: 18px;
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-elevated);
  flex-shrink: 0;
}
.dad-crm-text {
  flex: 1;
  min-width: 0;
}
.dad-crm-text strong {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
  letter-spacing: -0.02em;
}
.dad-crm-section .bs-field {
  margin: 0;
}

/* Department-Liste: CRM-Auto-Badge in Header */
.att-dep-crm {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  background: var(--bs-mod-attendant);
  color: var(--bs-primary-fg);
  border-radius: 10px;
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.04em;
  font-family: var(--bs-font-mono);
}
.att-dep-crm svg {
  flex-shrink: 0;
}

/* Department-Card: Sub-Line "wird ausgelöst" */
.att-dep-crm-line {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  margin-top: 6px;
  background: var(--bs-att-dep-crm-line-bg, var(--bs-primary-soft));
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
}
.att-dep-crm-line strong {
  color: var(--bs-primary);
  font-weight: var(--bs-weight-semibold);
}
.att-dep-crm-line svg {
  flex-shrink: 0;
  color: var(--bs-primary);
}

/* Postfach-Card: CRM-Sync-Badge (Token-themed) */
.att-msg-crm-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  background: var(--bs-att-msg-crm-badge-bg, var(--bs-success-soft));
  color: var(--bs-att-msg-crm-badge-fg, var(--bs-success));
  border-radius: 10px;
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.02em;
  font-family: var(--bs-font-mono);
  white-space: nowrap;
}
.att-msg-crm-badge svg {
  flex-shrink: 0;
}
.att-msg-crm-text {
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Postfach-Detail-Modal: Sync-Block */
.dam-sync-block {
  background: var(--bs-dam-sync-block-gradient, linear-gradient(135deg, var(--bs-success-soft), var(--bs-bg-subtle)));
  border: 1px solid var(--bs-dam-sync-block-border, var(--bs-success));
  border-left-width: 3px;
  border-radius: var(--bs-r-sm);
  padding: 12px 14px;
}
.dam-sync-head {
  display: flex;
  align-items: center;
  gap: 12px;
}
.dam-sync-icon {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--bs-success);
  color: var(--bs-primary-fg);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.dam-sync-text {
  flex: 1;
  min-width: 0;
}
.dam-sync-title {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
  letter-spacing: -0.015em;
  line-height: 1.2;
}
.dam-sync-meta {
  margin-top: 3px;
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
  letter-spacing: -0.01em;
}
.dam-sync-block.dam-sync-pending {
  background: var(--bs-warning-soft);
  border-color: var(--bs-warning);
}
.dam-sync-block.dam-sync-pending .dam-sync-icon {
  background: var(--bs-warning);
}

/* ═══════════════════════════════════════════════════════════════════════
   Phase 5+6: Department-Mode-Cards + Postfach-Sub-Tabs (2026-04-27)
   ═══════════════════════════════════════════════════════════════════════ */

/* Department-Dialog: Mode-Choice-Cards (statt nacktem Dropdown) */
.dad-mode-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
@media (max-width: 700px) {
  .dad-mode-cards { grid-template-columns: 1fr; }
}
.dad-mode-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  padding: 14px 16px;
  background: var(--bs-bg-subtle);
  border: 1.5px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: all var(--bs-transition);
  position: relative;
  align-items: center;
  font-size: var(--bs-text-sm);
}
.dad-mode-card:hover {
  background: var(--bs-bg-elevated);
  border-color: var(--bs-primary-soft);
}
.dad-mode-card.active {
  background: var(--bs-dad-mode-card-active-bg, var(--bs-primary-soft));
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px var(--bs-primary-soft);
}
.dad-mode-card input[type="radio"] {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.dad-mode-icon {
  font-size: 22px;
  line-height: 1;
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bs-bg-elevated);
  border-radius: var(--bs-r-sm);
}
.dad-mode-card.active .dad-mode-icon {
  background: var(--bs-dad-mode-card-active-icon-bg, #ffffff);
}
.dad-mode-body {
  display: flex;
  flex-direction: column;
  min-width: 0;
  gap: 2px;
}
.dad-mode-body strong {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  letter-spacing: -0.015em;
  font-size: var(--bs-text-sm);
  line-height: 1.2;
}
.dad-mode-card.active .dad-mode-body strong {
  color: var(--bs-primary);
}
.dad-mode-sub {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  line-height: 1.35;
}

/* Storage-Section + CRM-Section abgesetzt */
.dad-storage-section {
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  padding: 12px 14px;
}
.dad-storage-section .bs-field { margin: 0; }

/* Department-Liste: Mode-Badge */
.att-dep-mode {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  font-family: var(--bs-font-mono);
  letter-spacing: 0.03em;
  white-space: nowrap;
}
.att-dep-mode-icon { font-size: 11px; line-height: 1; }
.att-dep-mode-transfer {
  background: var(--bs-att-dep-mode-transfer-bg, var(--bs-primary-soft));
  color: var(--bs-att-dep-mode-transfer-fg, var(--bs-primary));
}
.att-dep-mode-ticket {
  background: var(--bs-att-dep-mode-ticket-bg, var(--bs-warning-soft));
  color: var(--bs-att-dep-mode-ticket-fg, #b45309);
}
.att-dep-mode-both {
  background: var(--rp-emerald-500);     /* Solid Emerald — kein dark→green-Verlauf */
  color: var(--bs-primary-fg);
}

/* Action-Line in Department-Card (was passiert konkret) */
.att-dep-action-line {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
  padding: 6px 10px;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
}
.att-dep-action-line.att-dep-action-transfer {
  background: var(--bs-att-dep-action-transfer-bg, var(--bs-primary-soft));
}
.att-dep-action-fragment {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.att-dep-action-fragment.att-dep-action-crm {
  color: var(--bs-primary);
  font-weight: var(--bs-weight-medium);
}
.att-dep-action-sep {
  color: var(--bs-fg-subtle);
  font-weight: var(--bs-weight-bold);
}
.att-dep-action-warn {
  color: var(--bs-warning) !important;
  font-style: normal;
}

/* Postfach-Sub-Tabs (über der Tabelle) */
.att-msg-subtabs {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--bs-border);
  margin: var(--bs-3) 0 var(--bs-3);
  flex-wrap: wrap;
}
.att-msg-subtab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 18px;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  cursor: pointer;
  color: var(--bs-fg-muted);
  font-family: inherit;
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-medium);
  transition: color var(--bs-transition), border-color var(--bs-transition);
}
.att-msg-subtab:hover { color: var(--bs-fg); }
.att-msg-subtab.active {
  color: var(--bs-primary);
  border-bottom-color: var(--bs-primary);
  font-weight: var(--bs-weight-semibold);
}
.att-msg-subtab-icon {
  font-size: 14px;
  line-height: 1;
}
.att-msg-subtab-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 18px;
  padding: 0 6px;
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-muted);
  border-radius: 9px;
  font-size: 10px;
  font-family: var(--bs-font-mono);
  font-weight: var(--bs-weight-semibold);
}
.att-msg-subtab.active .att-msg-subtab-count {
  background: var(--bs-primary);
  color: var(--bs-primary-fg);
}
.att-msg-subtab-count:empty { display: none; }

/* Stats-Bar mit Icon */
.att-msg-stat {
  position: relative;
}
.att-msg-stat-icon {
  position: absolute;
  top: 10px;
  right: 12px;
  color: var(--bs-fg-subtle);
  opacity: 0.6;
}
.att-msg-stat-crm-day .att-msg-stat-value { color: var(--bs-primary); }
.att-msg-stat-crm-pending .att-msg-stat-value { color: var(--bs-warning); }

/* ═══════════════════════════════════════════════════════════════════════
   Phase 9: MCP Tool-Discovery + Default-Args + Test-Result-Polish
   ═══════════════════════════════════════════════════════════════════════ */

/* Discover-Bar: prominent gehighlighteter Call-to-Action über Param-Builder */
.dae-discover-bar {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 16px;
  background: var(--bs-dae-discover-bar-gradient, linear-gradient(135deg, var(--bs-primary-soft), var(--bs-accent-soft)));
  border: 1px solid var(--bs-dae-discover-bar-border, var(--bs-primary-soft));
  border-radius: var(--bs-r-sm);
  margin-bottom: var(--bs-3);
}
.dae-discover-info {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  flex: 1;
  min-width: 0;
}
.dae-discover-icon {
  font-size: 18px;
  flex-shrink: 0;
}
.dae-discover-info strong {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
}

/* Tool-Picker-Modal: Tool-Cards */
.ddi-tool-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
.ddi-tool-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 16px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: all var(--bs-transition);
  position: relative;
}
.ddi-tool-card:hover {
  background: var(--bs-bg-elevated);
  border-color: var(--bs-primary);
  box-shadow: 0 4px 12px -4px rgba(30,41,59,0.25);
  transform: translateY(-1px);
}
.ddi-tool-card.is-blocked {
  background: var(--bs-bg-subtle);
  border-style: dashed;
  cursor: not-allowed;
  opacity: 0.7;
}
.ddi-tool-card.is-blocked:hover {
  transform: none;
  box-shadow: none;
}
.ddi-tool-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
.ddi-tool-name {
  font-family: var(--bs-font-mono);
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
  letter-spacing: -0.01em;
}
.ddi-tool-cat {
  text-transform: uppercase;
  font-size: 9px;
  letter-spacing: 0.06em;
}
.ddi-tool-current {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  background: var(--bs-success-soft);
  color: var(--bs-success);
  border-radius: 10px;
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.04em;
}
.ddi-tool-blocked {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  background: var(--bs-warning-soft);
  color: var(--bs-warning);
  border-radius: 10px;
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  font-family: var(--bs-font-mono);
}
.ddi-tool-desc {
  margin: 0;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.4;
}
.ddi-tool-card.is-blocked .ddi-tool-desc {
  font-style: italic;
}
.ddi-tool-meta {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
}
.ddi-tool-cta {
  position: absolute;
  top: 14px;
  right: 14px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-primary);
  opacity: 0;
  transition: opacity var(--bs-transition);
}
.ddi-tool-card:hover:not(.is-blocked) .ddi-tool-cta {
  opacity: 1;
}
.ddi-blocked-section {
  margin-top: var(--bs-4);
  padding-top: var(--bs-3);
  border-top: 1px dashed var(--bs-border);
}
.ddi-tool-list-blocked .ddi-tool-card {
  pointer-events: none;
}

/* Analyze-Status-Banner (Phase 9.3): über Param-Actions */
.dae-analyze-status {
  margin: 4px 0 8px;
  padding: 10px 14px;
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-sm);
  line-height: 1.45;
}
.dae-analyze-status code {
  background: var(--bs-bg-elevated);
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 11px;
  font-family: var(--bs-font-mono);
}
.dae-analyze-loading {
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-muted);
  border-left: 3px solid var(--bs-fg-subtle);
}
.dae-analyze-ok {
  background: var(--bs-dae-analyze-ok-bg-soft, var(--bs-success-soft));
  color: var(--bs-fg);
  border-left: 3px solid var(--bs-success);
}
.dae-analyze-warn {
  background: var(--bs-warning-soft);
  color: var(--bs-fg);
  border-left: 3px solid var(--bs-warning);
}
.dae-analyze-fail {
  background: var(--bs-dae-analyze-fail-bg-soft, var(--bs-danger-soft));
  color: var(--bs-fg);
  border-left: 3px solid var(--bs-danger);
}

/* ═══════════════════════════════════════════════════════════════════════
   KI-Modell-Picker Radio-Cards (Phase 13b/c — Tenant-side)
   ═══════════════════════════════════════════════════════════════════════ */

.att-radio-group {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  margin-bottom: var(--bs-4);
}
@media (max-width: 700px) {
  .att-radio-group { grid-template-columns: 1fr; }
}
.att-radio-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 12px;
  padding: 14px 16px;
  background: var(--bs-bg-elevated);
  border: 1.5px solid var(--bs-border);
  border-radius: var(--bs-r);
  cursor: pointer;
  transition: all var(--bs-transition);
  align-items: flex-start;
  position: relative;
}
.att-radio-card:hover {
  border-color: var(--bs-primary-soft);
  transform: translateY(-1px);
}
.att-radio-card.is-active {
  border-color: var(--bs-primary);
  background: var(--bs-att-radio-card-active-bg, var(--bs-primary-soft));
  box-shadow: 0 0 0 3px var(--bs-primary-soft);
}
.att-radio-tier-mini.is-active {
  border-color: var(--bs-success);
  background: var(--bs-att-radio-tier-mini-active-bg, var(--bs-success-soft));
  box-shadow: 0 0 0 3px var(--bs-success-soft);
}
.att-radio-card input[type="radio"] {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.att-radio-icon {
  font-size: 22px;
  line-height: 1;
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
  flex-shrink: 0;
}
.att-radio-card.is-active .att-radio-icon { background: var(--bs-att-radio-card-active-icon-bg, #ffffff); }
.att-radio-body {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.att-radio-body strong {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
  line-height: 1.2;
}
.att-radio-card.is-active .att-radio-body strong { color: var(--bs-primary); }
.att-radio-tier-mini.is-active .att-radio-body strong { color: var(--bs-success); }
.att-radio-desc {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.45;
}
.att-radio-id {
  font-size: 10px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  letter-spacing: 0.02em;
}

/* ═══════════════════════════════════════════════════════════════════════
   Voll-Modus Outputs-Hint (Phase 13d) — verweist auf Per-Extension-Konfig
   ═══════════════════════════════════════════════════════════════════════ */

.att-outputs-fullmode-hint {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 16px;
  background: var(--bs-bg-subtle);
  border: 1px dashed var(--bs-border);
  border-radius: var(--bs-r-sm);
  margin-bottom: var(--bs-4);
}
.att-outputs-fullmode-icon {
  font-size: 22px;
  flex-shrink: 0;
}
.att-outputs-fullmode-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.att-outputs-fullmode-text strong {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
}
.att-outputs-fullmode-text > span {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.5;
}
.att-outputs-fullmode-text a {
  color: var(--bs-primary);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}

/* ═══════════════════════════════════════════════════════════════════════
   Derived-Mode-Banner (Phase 13c) — read-only, folgt dem KI-Modell
   ═══════════════════════════════════════════════════════════════════════ */

.att-derived-mode-banner {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 14px;
  align-items: center;
  padding: 14px 18px;
  background: var(--bs-att-derived-mode-banner-gradient, linear-gradient(135deg, var(--bs-primary-soft), var(--bs-accent-soft)));
  border: 1px solid var(--bs-att-derived-mode-banner-border, var(--bs-primary-soft));
  border-radius: var(--bs-r);
  margin-bottom: var(--bs-4);
}
.att-derived-mode-icon {
  font-size: 28px;
  line-height: 1;
  width: 48px;
  height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bs-bg-elevated);
  border-radius: var(--bs-r-sm);
}
.att-derived-mode-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.att-derived-mode-text strong {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
}
.att-derived-mode-text p,
.att-derived-mode-text span {
  margin: 0;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.45;
}
.att-derived-mode-foot,
.att-derived-mode-hint {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  letter-spacing: 0.02em;
  text-align: right;
  white-space: nowrap;
}
@media (max-width: 700px) {
  .att-derived-mode-banner {
    grid-template-columns: auto 1fr;
  }
  .att-derived-mode-foot,
  .att-derived-mode-hint {
    grid-column: 1 / -1;
    text-align: left;
  }
}

/* ═══════════════════════════════════════════════════════════════════════
   Operation-Mode-Selector + Outputs (Phase 10) — Tab 2 Konfiguration
   ═══════════════════════════════════════════════════════════════════════ */

/* Mode-Cards (Voll vs. Einfach) */
.att-opmode-cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  margin-bottom: var(--bs-4);
}
@media (max-width: 700px) {
  .att-opmode-cards { grid-template-columns: 1fr; }
}
.att-opmode-card {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 14px;
  padding: 16px 18px;
  background: var(--bs-bg-elevated);
  border: 1.5px solid var(--bs-border);
  border-radius: var(--bs-r);
  cursor: pointer;
  transition: all var(--bs-transition);
  align-items: flex-start;
  position: relative;
}
.att-opmode-card:hover {
  border-color: var(--bs-primary-soft);
  transform: translateY(-1px);
}
.att-opmode-card.is-active {
  border-color: var(--bs-primary);
  background: var(--bs-att-opmode-card-active-bg, var(--bs-primary-soft));
  box-shadow: 0 0 0 3px var(--bs-primary-soft), 0 6px 16px -6px rgba(30,41,59,0.25);
}
.att-opmode-card input[type="radio"] {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.att-opmode-icon {
  font-size: 26px;
  line-height: 1;
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
  flex-shrink: 0;
}
.att-opmode-card.is-active .att-opmode-icon {
  background: var(--bs-att-opmode-card-active-icon-bg, #ffffff);
}
.att-opmode-body {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.att-opmode-body strong {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.att-opmode-card.is-active .att-opmode-body strong {
  color: var(--bs-primary);
}
.att-opmode-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.04em;
  font-family: var(--bs-font-mono);
  background: var(--bs-bg-subtle);
  color: var(--bs-fg-muted);
  white-space: nowrap;
}
.att-opmode-pill-mini {
  background: var(--bs-success-soft);
  color: var(--bs-success);
}
.att-opmode-sub {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.45;
}

/* Simple-Section (conditional) */
.att-simple-section {
  margin-bottom: var(--bs-4);
}
.att-simple-action-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.att-simple-action-row {
  display: grid;
  grid-template-columns: auto auto 1fr;
  gap: 12px;
  align-items: center;
  padding: 14px 16px;
  background: var(--bs-bg-subtle);
  border: 1.5px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.att-simple-action-row:hover {
  border-color: var(--bs-primary-soft);
}
.att-simple-action-row.is-active {
  border-color: var(--bs-primary);
  background: var(--bs-att-simple-action-active-bg, var(--bs-primary-soft));
}
.att-simple-action-row input[type="radio"] {
  margin: 0;
  accent-color: var(--bs-primary);
}
.att-simple-action-icon {
  font-size: 20px;
  line-height: 1;
}
.att-simple-action-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.att-simple-action-text strong {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
}
.att-simple-action-text > span {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  line-height: 1.4;
}
.att-simple-ext-wrap {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 6px;
}
.att-simple-ext-wrap .bs-label {
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg-muted);
  margin: 0;
}
.att-simple-ext-input {
  height: 32px;
  width: 110px;
  font-size: var(--bs-text-sm);
}
.att-simple-ext-input:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* Outputs-Liste */
.att-outputs-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: var(--bs-4);
}
.att-output-row {
  display: grid;
  grid-template-columns: auto auto 1fr;
  gap: 12px;
  align-items: center;
  padding: 12px 16px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  transition: all var(--bs-transition);
}
.att-output-row:has(input:checked) {
  border-color: var(--bs-primary-soft);
  background: var(--bs-att-output-row-checked-bg, var(--bs-primary-soft));
}
.att-output-row input[type="checkbox"] {
  margin: 0;
  accent-color: var(--bs-primary);
}
.att-output-icon {
  font-size: 18px;
  line-height: 1;
}
.att-output-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.att-output-text strong {
  font-family: var(--bs-font-display);
  font-weight: var(--bs-weight-semibold);
  font-size: var(--bs-text-sm);
  color: var(--bs-fg);
}
.att-output-text > span {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  line-height: 1.4;
}
.att-output-email-wrap {
  margin-top: 6px;
}
.att-output-email-input {
  height: 32px;
  font-size: var(--bs-text-sm);
}
.att-output-email-input:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* Hints — orange Warning + roter Error mit optionalem CTA */
.att-config-hints {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: var(--bs-4);
}
.att-config-hint {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-sm);
  line-height: 1.5;
}
.att-config-hint > span { flex: 1; }
.att-config-hint-warn {
  background: var(--bs-att-config-hint-warn-bg, var(--bs-warning-soft));
  border-left: 3px solid var(--bs-warning);
  color: var(--bs-fg);
}
.att-config-hint-error {
  background: var(--bs-att-config-hint-error-bg, var(--bs-danger-soft));
  border-left: 3px solid var(--bs-danger);
  color: var(--bs-fg);
}

/* Simple-Mode: Departments + Extensions Sub-Tabs ausgrauen */
body.att-opmode-simple .att-sub-btn[data-att-tab="departments"],
body.att-opmode-simple .att-sub-btn[data-att-tab="extensions"],
body.att-opmode-simple .att-sub-btn[data-att-tab="prompt"] {
  opacity: 0.4;
  position: relative;
}
body.att-opmode-simple .att-sub-btn[data-att-tab="departments"]::after,
body.att-opmode-simple .att-sub-btn[data-att-tab="extensions"]::after,
body.att-opmode-simple .att-sub-btn[data-att-tab="prompt"]::after {
  content: "Nicht relevant";
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  margin-top: 2px;
  font-size: 9px;
  letter-spacing: 0.04em;
  color: var(--bs-fg-subtle);
  white-space: nowrap;
  font-family: var(--bs-font-mono);
  pointer-events: none;
}

/* ═══════════════════════════════════════════════════════════════════════
   KI-Modell-Picker (Phase 9.5) — Tab 2 Konfiguration
   ═══════════════════════════════════════════════════════════════════════ */

.att-model-picker {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 14px;
  margin-bottom: var(--bs-4);
}
.att-model-picker[aria-busy="true"] {
  display: block;
}

.att-model-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  text-align: left;
  padding: 18px 20px;
  background: var(--bs-bg-elevated);
  border: 1.5px solid var(--bs-border);
  border-radius: var(--bs-r);
  cursor: pointer;
  font-family: inherit;
  color: inherit;
  transition: all var(--bs-transition);
  position: relative;
}
.att-model-card:hover {
  border-color: var(--bs-primary-soft);
  background: var(--bs-bg-elevated);
  transform: translateY(-2px);
  box-shadow: 0 6px 18px -6px rgba(30,41,59,0.18);
}
.att-model-card:focus-visible {
  outline: 2px solid var(--bs-primary);
  outline-offset: 2px;
}
.att-model-card.is-active {
  border-color: var(--bs-primary);
  background: var(--bs-att-model-card-active-bg, var(--bs-primary-soft));
  box-shadow: 0 0 0 3px var(--bs-primary-soft), 0 6px 18px -6px rgba(30,41,59,0.25);
}

.att-model-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.att-model-name {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.025em;
  color: var(--bs-fg);
  line-height: 1.2;
}
.att-model-card.is-active .att-model-name {
  color: var(--bs-primary);
}
.att-model-badge-active {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  background: var(--bs-primary);
  color: var(--bs-primary-fg);
  border-radius: 10px;
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.04em;
  font-family: var(--bs-font-mono);
  white-space: nowrap;
  flex-shrink: 0;
}
.att-model-id {
  font-size: 10px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  word-break: break-all;
}
.att-model-id code {
  background: transparent;
  padding: 0;
}
.att-model-desc {
  margin: 0;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.5;
}

/* Pricing-Box: prominent */
.att-model-pricing {
  display: flex;
  align-items: baseline;
  gap: 6px;
  flex-wrap: wrap;
  padding: 10px 12px;
  background: var(--bs-bg-subtle);
  border-radius: var(--bs-r-sm);
  border-left: 3px solid var(--bs-primary);
}
.att-model-card.is-active .att-model-pricing {
  background: var(--bs-bg-elevated);
}
.att-model-price-main {
  font-family: var(--bs-font-display);
  font-size: 22px;
  font-weight: var(--bs-weight-bold);
  letter-spacing: -0.04em;
  color: var(--bs-fg);
  line-height: 1;
}
.att-model-card.is-active .att-model-price-main { color: var(--bs-primary); }
.att-model-price-sub {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
}
.att-model-price-usd {
  margin-left: auto;
  font-size: 10px;
  font-family: var(--bs-font-mono);
  color: var(--bs-fg-subtle);
}

/* Empfehlungs-Liste */
.att-model-recs {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.att-model-recs-title {
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
}
.att-model-recs ul {
  margin: 0;
  padding-left: 18px;
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.4;
}

/* Tier-spezifische Akzent-Farben */
.att-model-tier-mini .att-model-pricing {
  border-left-color: var(--bs-success);
}
.att-model-tier-mini.is-active .att-model-price-main {
  color: var(--bs-success);
}
.att-model-tier-mini.is-active {
  border-color: var(--bs-success);
  background: var(--bs-att-model-tier-mini-active-bg, var(--bs-success-soft));
  box-shadow: 0 0 0 3px var(--bs-success-soft), 0 6px 18px -6px rgba(16,185,129,0.25);
}
.att-model-tier-mini.is-active .att-model-name {
  color: var(--bs-success);
}
.att-model-tier-mini.is-active .att-model-badge-active {
  background: var(--bs-success);
}

/* Tenant-Side Read-Only Modell-Info-Banner (Phase 9.6.1, Policy-Lock 27.04. spät)
   Kein Pricing, kein Picker. Quelle: att.config.realtime_model{} aus /attendant/config */
.att-model-info-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px 20px;
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  margin-bottom: var(--bs-4);
}
.att-model-info-header {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}
.att-model-info-icon {
  font-size: 24px;
  line-height: 1;
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-elevated);
}
.att-model-info-titleblock {
  flex: 1;
  min-width: 0;
}
.att-model-info-toprow {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
.att-model-info-name {
  font-family: var(--bs-font-display);
  font-size: var(--bs-text-md);
  font-weight: var(--bs-weight-bold);
  color: var(--bs-fg);
  letter-spacing: -0.025em;
  line-height: 1.2;
}
.att-model-info-tier {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 10px;
  font-size: 10px;
  font-weight: var(--bs-weight-semibold);
  letter-spacing: 0.04em;
  font-family: var(--bs-font-mono);
  white-space: nowrap;
}
.att-model-info-tier[data-tier="premium"] {
  background: linear-gradient(135deg, #f59e0b, #ef4444);
  color: var(--bs-primary-fg);
}
.att-model-info-tier:not([data-tier="premium"]) {
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
}
.att-model-info-default {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: 10px;
  font-size: 10px;
  font-weight: var(--bs-weight-medium);
  letter-spacing: 0.04em;
  color: var(--bs-fg-muted);
  white-space: nowrap;
}
.att-model-info-id {
  margin-top: 4px;
  font-size: 11px;
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  word-break: break-all;
}
.att-model-info-desc {
  margin: 0;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  line-height: 1.5;
}
.att-model-info-foot {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 10px 12px;
  background: var(--bs-bg-elevated);
  border-radius: var(--bs-r-sm);
  border-left: 3px solid var(--bs-primary-soft);
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  line-height: 1.45;
}
.att-model-info-foot-icon {
  font-size: 14px;
  flex-shrink: 0;
}

/* Param-Row Default-Sub-Row (Phase 9.3 — unified UI) */
.dae-param-default-row {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 10px;
  padding-top: 8px;
  margin-top: 4px;
  border-top: 1px dashed var(--bs-border);
}
.dae-param-default-label {
  font-size: var(--bs-text-xs);
  font-weight: var(--bs-weight-medium);
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.dae-param-default-cell {
  min-width: 0;
}
.dae-param-default-cell .dae-param-default-input,
.dae-param-default-cell .dae-param-default-select {
  width: 100%;
  height: 34px;
  font-size: var(--bs-text-sm);
}
.dae-param-default-cell .dae-param-default-input::placeholder {
  font-style: italic;
  color: var(--bs-fg-subtle);
}
.dae-param-default-cell .dae-param-default-select {
  border-color: var(--bs-dae-param-default-border, var(--bs-primary-soft));
  background: var(--bs-dae-param-default-bg, var(--bs-primary-soft));
  color: var(--bs-fg);
  font-weight: var(--bs-weight-medium);
}
@media (max-width: 700px) {
  .dae-param-default-row {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}

/* Test-Result-Polish: extrahierte Message + Raw-Body in Details */
.dae-test-msg {
  margin-top: 10px;
  padding: 12px 14px;
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-sm);
  line-height: 1.5;
  color: var(--bs-fg);
}
.dae-test-msg-ok {
  background: var(--bs-dae-test-msg-ok-bg, var(--bs-success-soft));
  border-left: 3px solid var(--bs-success);
}
.dae-test-msg-fail {
  background: var(--bs-dae-test-msg-fail-bg, var(--bs-danger-soft));
  border-left: 3px solid var(--bs-danger);
}
.dae-test-raw {
  margin-top: 8px;
  border: 1px dashed var(--bs-border);
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-subtle);
}
.dae-test-raw > summary {
  cursor: pointer;
  padding: 8px 12px;
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-muted);
  font-family: var(--bs-font-mono);
  list-style: none;
  user-select: none;
}
.dae-test-raw > summary::-webkit-details-marker { display: none; }
.dae-test-raw > summary::before {
  content: "▸ ";
  display: inline-block;
  transition: transform var(--bs-transition);
}
.dae-test-raw[open] > summary::before {
  transform: rotate(90deg);
}
.dae-test-raw .dae-test-body {
  margin: 0;
  padding: 10px 12px;
  border-top: 1px dashed var(--bs-border);
  background: var(--bs-bg-elevated);
  font-family: var(--bs-font-mono);
  font-size: 11px;
  color: var(--bs-fg);
  overflow-x: auto;
  white-space: pre-wrap;
  word-break: break-word;
  max-height: 300px;
  overflow-y: auto;
}

/* Infinite-Scroll Sentinel + End-Marker (Phase 9.8) */
.att-msg-loadmore {
  padding: 24px 16px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.att-msg-loadmore .bs-loading {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 18px;
  background: var(--bs-bg-subtle);
  border-radius: 999px;
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
}
.att-msg-endmarker {
  padding: 18px 16px;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  letter-spacing: 0.04em;
}
.att-msg-endmarker span {
  padding: 6px 14px;
  border: 1px dashed var(--bs-border);
  border-radius: 999px;
}

/* CRM-View: erweiterte Card-Spalten */
.att-msg-row-crm .att-msg-summary {
  margin-bottom: 6px;
}
.att-msg-crm-line {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding: 6px 10px;
  background: var(--bs-att-msg-crm-line-bg, var(--bs-success-soft));
  border-radius: var(--bs-r-sm);
  font-size: var(--bs-text-xs);
}
.att-msg-crm-provider {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--bs-fg);
}
.att-msg-crm-provider strong {
  color: var(--bs-success);
  font-weight: var(--bs-weight-semibold);
}
.att-msg-crm-id-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--bs-primary);
  text-decoration: none;
  transition: opacity var(--bs-transition);
}
.att-msg-crm-id-link:hover { opacity: 0.75; }
.att-msg-crm-id {
  color: var(--bs-fg-muted);
}
.att-msg-crm-synced-at {
  color: var(--bs-fg-subtle);
  font-family: var(--bs-font-mono);
  margin-left: auto;
}

/* ═══════════════════════════════════════════════════════════════════════
   ⭐ MODAL-V2 TEMPLATE — Sidebar + Content Layout
   ═══════════════════════════════════════════════════════════════════════
   📖 Doku: docs/MODAL-V2-PATTERN.md
   🎯 Use für: alle neuen/migrierten Sub-Tab-Modals
   📐 Layout: Sidebar 240px + Content 1fr · Modal 88vh fix · max 1200px/96vw
   🔧 Trigger-Klasse: <div class="dialog dialog-tenant-v2">
   ⚡ Tab-Buttons: .tdt-btn[data-tdt][data-icon] (Icon per JS injiziert)
   ═══════════════════════════════════════════════════════════════════════ */

.dialog-tenant-v2 .dialog-tenant-inner {
  max-width: min(96vw, 1200px) !important;
  width: 96vw;
  /* FIXE Höhe statt max-height — Modal bleibt bei Tab-Wechsel konstant,
     Ansicht „springt" nicht mehr je nach Inhalt. Content-Spalte scrollt
     eigenständig wenn Inhalt überläuft. */
  height: 88vh;
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;          /* Body scrollt eigenständig, nicht Inner */
  padding: 0;
}

/* Header fix oben — kein eigener Scroll */
.dialog-tenant-v2 .dialog-header {
  flex-shrink: 0;
  padding: 18px 24px;
  border-bottom: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
}

/* Body = horizontaler Container für Sidebar + Content */
.dialog-tenant-v2 .tenant-dialog-body-v2 {
  display: grid;
  grid-template-columns: 240px 1fr;
  flex: 1;
  min-height: 0;             /* Verhindert Overflow durch flex-children */
  padding: 0 !important;
  background: var(--bs-bg-subtle);
}

/* Sidebar = vertikale Tab-Navigation */
.dialog-tenant-v2 .tenant-dialog-sidebar {
  background: var(--bs-bg-subtle);
  border-right: 1px solid var(--bs-border);
  padding: 16px 12px;
  overflow-y: auto;
}
.dialog-tenant-v2 .tenant-dialog-tabs {
  display: flex !important;
  flex-direction: column !important;
  gap: 2px;
  border-bottom: 0 !important;
  padding: 0 !important;
  flex-wrap: nowrap !important;
  overflow: visible !important;
}

/* Tab-Buttons — vertikal, mit Icon + Label */
.dialog-tenant-v2 .tdt-btn {
  display: flex !important;
  align-items: center;
  gap: 12px;
  padding: 10px 14px !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  border-bottom: 1px solid transparent !important;   /* überschreibt alten 2px-Border */
  border-radius: 8px;
  color: var(--bs-fg-muted) !important;
  font-family: inherit;
  font-size: 14px !important;
  font-weight: 500 !important;
  cursor: pointer;
  text-align: left;
  width: 100%;
  margin-bottom: 0 !important;
  transition: background var(--bs-transition), color var(--bs-transition);
}
.dialog-tenant-v2 .tdt-btn .tdt-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  color: inherit;
}
.dialog-tenant-v2 .tdt-btn .tdt-icon svg {
  width: 18px;
  height: 18px;
  stroke-width: 2;
}
.dialog-tenant-v2 .tdt-btn:hover {
  background: var(--bs-bg-elevated) !important;
  color: var(--bs-fg) !important;
  border-bottom-color: transparent !important;
}
.dialog-tenant-v2 .tdt-btn.active {
  background: var(--bs-primary) !important;
  color: var(--bs-primary-fg) !important;
  border-color: var(--bs-primary) !important;
  font-weight: 600 !important;
}
.dialog-tenant-v2 .tdt-btn.active:hover {
  background: var(--bs-primary-hover) !important;
  color: var(--bs-primary-fg) !important;
}
/* Danger-Tab — separator + roter Akzent */
.dialog-tenant-v2 .tdt-btn-danger {
  margin-top: 12px !important;
  border-top: 1px solid var(--bs-border) !important;
  padding-top: 14px !important;
  border-radius: 0 8px 8px 0;
}
.dialog-tenant-v2 .tdt-btn-danger:not(.active) {
  color: var(--bs-fg-muted) !important;
}
.dialog-tenant-v2 .tdt-btn-danger:not(.active):hover {
  color: var(--bs-danger) !important;
  background: var(--bs-danger-soft) !important;
}
.dialog-tenant-v2 .tdt-btn-danger.active {
  background: var(--bs-danger) !important;
  border-color: var(--bs-danger) !important;
  color: var(--bs-primary-fg) !important;
}

/* Content-Spalte — eigener Scrollbereich */
.dialog-tenant-v2 .tenant-dialog-content {
  background: var(--bs-bg);
  overflow-y: auto;
  min-height: 0;
}
.dialog-tenant-v2 .tdp {
  padding: 28px 32px !important;
  max-width: 880px;     /* Lesbarkeits-Limit für Forms innerhalb der breiten Spalte */
}

/* Mobile: Sidebar wird zu horizontalen Tabs oben */
@media (max-width: 860px) {
  .dialog-tenant-v2 .dialog-tenant-inner {
    width: 100vw;
    max-width: 100vw !important;
    height: 100vh;
    max-height: 100vh;
    border-radius: 0;
  }
  .dialog-tenant-v2 .tenant-dialog-body-v2 {
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr;
  }
  .dialog-tenant-v2 .tenant-dialog-sidebar {
    border-right: 0;
    border-bottom: 1px solid var(--bs-border);
    padding: 8px;
    overflow-x: auto;
    overflow-y: hidden;
  }
  .dialog-tenant-v2 .tenant-dialog-tabs {
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    gap: 4px;
  }
  .dialog-tenant-v2 .tdt-btn {
    width: auto;
    white-space: nowrap;
    padding: 8px 12px !important;
  }
  .dialog-tenant-v2 .tdt-btn .tdt-label { font-size: 13px; }
  .dialog-tenant-v2 .tdt-btn-danger {
    margin-top: 0 !important;
    border-top: 0 !important;
    padding-top: 8px !important;
    margin-left: auto !important;
  }
  .dialog-tenant-v2 .tdp {
    padding: 20px 16px !important;
    max-width: 100%;
  }
}

/* ═══════════════════════════════════════════════════════════════════════
   ⭐ TNT-FORM TEMPLATE — Wiederverwendbare Form-Komponente
   ═══════════════════════════════════════════════════════════════════════
   📖 Doku: docs/MODAL-V2-PATTERN.md
   🎯 Use für: alle neuen/migrierten Modal-Forms
   ✨ Werte 1:1 shadcn/ui (Vorbild: viico.de/kontakt)
   🔒 Isolated Namespace — keine Konflikte mit .bs-* / .dialog-* möglich
   📋 Klassen: .tnt-form .tnt-field .tnt-label .tnt-input .tnt-grid
              .tnt-section-header .tnt-btn .tnt-actions .tnt-error
   ═══════════════════════════════════════════════════════════════════════ */

.tnt-tdp {
  padding: 28px 32px;
  box-sizing: border-box;
}

/* Form = vertikaler Stack mit konsistentem 20px Gap */
.tnt-form {
  display: flex;
  flex-direction: column;
  gap: 20px;
  width: 100%;
  max-width: 720px;
  margin: 0;
}

/* Field = Label + Input vertikal mit 6px Gap */
.tnt-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* Label */
.tnt-label {
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  color: var(--bs-fg);
  margin: 0;
  padding: 0;
  display: block;
}
.tnt-label-hint {
  font-weight: 400;
  color: var(--bs-fg-subtle);
  margin-left: 4px;
}

/* Input — h-10 + px-3 py-2 + rounded-md + border */
.tnt-input {
  display: block;
  width: 100%;
  height: 40px;
  padding: 8px 12px;
  font-size: 14px;
  line-height: 1.5;
  font-family: inherit;
  color: var(--bs-fg);
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: 6px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.02);
  box-sizing: border-box;
  transition: border-color 150ms, box-shadow 150ms;
  -webkit-appearance: none;
  appearance: none;
}
.tnt-input:hover { border-color: var(--bs-border-hover); }
.tnt-input:focus {
  outline: none;
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px rgba(30, 41, 59, 0.12);
}
.tnt-input:disabled,
.tnt-input[readonly] { opacity: 0.7; cursor: not-allowed; background: var(--bs-bg-subtle); }
.tnt-input::placeholder { color: var(--bs-fg-subtle); }

.tnt-input-mono {
  font-family: var(--bs-font-mono, ui-monospace, monospace);
  font-size: 12px;
  color: var(--bs-fg-muted);
}

/* Input + Btn nebeneinander (Token-Row) */
.tnt-input-row {
  display: flex;
  gap: 8px;
  width: 100%;
}
.tnt-input-row .tnt-input { flex: 1; min-width: 0; }
.tnt-input-row .tnt-btn { flex-shrink: 0; }

/* Grid — 1-Spalte Mobile, 2-Spalten ab 640px (wie shadcn `sm:grid-cols-2`) */
.tnt-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  width: 100%;
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .tnt-grid {
    grid-template-columns: 1fr 1fr;
  }
}

/* Section-Header — subtle uppercase Label statt prominente Headline */
.tnt-section-header {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--bs-fg-muted);
  margin: 12px 0 0 0;
  padding: 0 0 8px 0;
  border-bottom: 1px solid var(--bs-border);
  width: 100%;
}
.tnt-form > .tnt-section-header:first-child { margin-top: 0; }
.tnt-section-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  color: var(--bs-fg-muted);
}
.tnt-section-icon svg { width: 14px; height: 14px; }

/* Buttons */
.tnt-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 40px;
  padding: 0 16px;
  font-size: 14px;
  font-weight: 500;
  font-family: inherit;
  line-height: 1;
  border: 1px solid transparent;
  border-radius: 6px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 150ms, border-color 150ms, color 150ms;
  box-sizing: border-box;
  text-decoration: none;  /* Phase 19g: a.tnt-btn → kein Underline */
}
.tnt-btn:hover { text-decoration: none; }
.tnt-btn-primary {
  background: var(--bs-primary);
  color: var(--bs-primary-fg);
  border-color: var(--bs-primary);
}
.tnt-btn-primary:hover { background: var(--bs-primary-hover); border-color: var(--bs-primary-hover); }
.tnt-btn-secondary {
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  border-color: var(--bs-border);
}
.tnt-btn-secondary:hover { background: var(--bs-bg-subtle); border-color: var(--bs-border-hover); }

/* Error-Text */
.tnt-error {
  font-size: 13px;
  color: var(--bs-danger);
  min-height: 18px;
  margin: 0;
}
.tnt-error:empty { display: none; }

/* Actions-Row */
.tnt-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
  padding-top: 20px;
  border-top: 1px solid var(--bs-border);
}

/* Help-Text unter Input */
.tnt-help {
  font-size: 12px;
  color: var(--bs-fg-subtle);
  line-height: 1.45;
  margin: 4px 0 0 0;
}

/* Intro-Block (Headline + Beschreibung am Tab-Anfang) */
.tnt-intro {
  margin: 0 0 24px 0;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--bs-border);
}
.tnt-intro-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--bs-fg);
  margin: 0 0 6px 0;
}
.tnt-intro-text {
  font-size: 13px;
  color: var(--bs-fg-muted);
  line-height: 1.5;
  margin: 0;
}
.tnt-intro-text + .tnt-intro-text { margin-top: 6px; }

/* Toolbar-Row (Text links + Button rechts, z.B. "+ User anlegen") */
.tnt-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin: 0 0 16px 0;
  flex-wrap: wrap;
}
.tnt-toolbar-text {
  font-size: 13px;
  color: var(--bs-fg-muted);
  margin: 0;
}

/* Inline-Card (z.B. "Neuen User anlegen"-Form) */
.tnt-card {
  background: var(--bs-bg-elevated);
  border: 1px solid var(--bs-border);
  border-radius: 8px;
  padding: 20px;
  margin-top: 16px;
}

/* Checkbox-Row */
.tnt-checkbox-row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  color: var(--bs-fg);
  cursor: pointer;
  user-select: none;
  height: 40px;
}
.tnt-checkbox-row input[type="checkbox"] {
  width: 16px;
  height: 16px;
  cursor: pointer;
  accent-color: var(--bs-primary);
  flex-shrink: 0;
  margin: 0;
}

/* Save-Hint (kleine grüne Bestätigung) */
.tnt-save-hint {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--bs-success);
  margin-top: 12px;
}

/* Danger-Card (z.B. "Tenant löschen") */
.tnt-danger-card {
  border: 1px solid var(--bs-danger);
  background: var(--bs-danger-soft);
  border-radius: 8px;
  padding: 20px;
}
.tnt-danger-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--bs-danger);
  margin: 0 0 8px 0;
}
.tnt-danger-text {
  font-size: 13px;
  color: var(--bs-fg-muted);
  margin: 0 0 14px 0;
  line-height: 1.5;
}

/* Danger-Btn-Variant */
.tnt-btn-danger {
  background: var(--bs-danger);
  color: var(--bs-primary-fg);
  border-color: var(--bs-danger);
}
.tnt-btn-danger:hover {
  background: var(--bs-danger);
  filter: brightness(0.92);
}

/* Radio-Card-Group (z.B. Modul-Typ-Picker im Slot-Dialog) */
.tnt-radio-group {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.tnt-radio-card {
  flex: 1;
  min-width: 200px;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  border: 1px solid var(--bs-border);
  border-radius: 8px;
  cursor: pointer;
  background: var(--bs-bg-elevated);
  transition: border-color 150ms, background 150ms;
}
.tnt-radio-card:hover { border-color: var(--bs-border-hover); }
.tnt-radio-card:has(input:checked) {
  border-color: var(--bs-primary);
  background: var(--bs-primary-soft);
}
.tnt-radio-card input[type="radio"] {
  margin-top: 2px;
  flex-shrink: 0;
  accent-color: var(--bs-primary);
}
.tnt-radio-meta {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 14px;
  color: var(--bs-fg);
}
.tnt-radio-meta strong { font-weight: 600; }
.tnt-radio-sub {
  font-size: 12px;
  color: var(--bs-fg-subtle);
  font-weight: 400;
}

/* Mobile */
@media (max-width: 860px) {
  .tnt-tdp { padding: 20px 16px; }
}

/* ═══════════════════════════════════════════════════════════════════════
   Kunden-Modal V2 — Form-Refinement (shadcn/ui-style nach viico.de/kontakt)
   Werte 1:1 aus produktiver Tailwind-Form übernommen:
   h-10 · px-3 py-2 · rounded-md · text-sm font-medium · gap-5 (20px)
   ═══════════════════════════════════════════════════════════════════════ */

/* TDP Container */
.dialog.dialog-tenant-v2 .tdp {
  padding: 28px 32px !important;
}

/* Form selbst = vertikaler Stack mit konsistenten 20px gaps */
.dialog.dialog-tenant-v2 form,
.dialog.dialog-tenant-v2 .tdp > form {
  display: flex !important;
  flex-direction: column !important;
  gap: 20px !important;
}

/* Field = Label oben + Input unten, mit 6px Abstand (mt-1.5 in shadcn) */
.dialog.dialog-tenant-v2 .bs-field {
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  margin: 0 !important;
}

/* Label — text-sm font-medium, leading-none (line-height 1) */
.dialog.dialog-tenant-v2 .bs-label {
  font-size: 14px !important;
  font-weight: 500 !important;
  line-height: 1 !important;
  color: var(--bs-fg) !important;
  letter-spacing: 0 !important;
  margin: 0 !important;
}
.dialog.dialog-tenant-v2 .bs-label > span {
  font-weight: 400 !important;
  color: var(--bs-fg-subtle) !important;
  margin-left: 4px;
}

/* Inputs — h-10 (40px) · w-full · px-3 py-2 · text-sm · rounded-md · border */
.dialog.dialog-tenant-v2 .bs-input,
.dialog.dialog-tenant-v2 .bs-select,
.dialog.dialog-tenant-v2 input[type="text"]:not(.bs-mono-tag),
.dialog.dialog-tenant-v2 input[type="email"],
.dialog.dialog-tenant-v2 input[type="password"],
.dialog.dialog-tenant-v2 input[type="number"],
.dialog.dialog-tenant-v2 input[type="tel"],
.dialog.dialog-tenant-v2 input[type="url"] {
  display: flex !important;
  height: 40px !important;
  width: 100% !important;
  padding: 8px 12px !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
  border-radius: 6px !important;
  background: var(--bs-bg-elevated) !important;
  border: 1px solid var(--bs-border) !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.02) !important;
}
.dialog.dialog-tenant-v2 .bs-textarea,
.dialog.dialog-tenant-v2 textarea {
  height: auto !important;
  width: 100% !important;
  min-height: 96px !important;
  padding: 8px 12px !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
  border-radius: 6px !important;
  background: var(--bs-bg-elevated) !important;
  border: 1px solid var(--bs-border) !important;
}

/* Focus-Ring shadcn-style — 2px ring + 2px offset */
.dialog.dialog-tenant-v2 .bs-input:focus,
.dialog.dialog-tenant-v2 .bs-select:focus,
.dialog.dialog-tenant-v2 input:focus,
.dialog.dialog-tenant-v2 textarea:focus {
  outline: none !important;
  border-color: var(--bs-primary) !important;
  box-shadow: 0 0 0 3px rgba(30, 41, 59, 0.12) !important;
}

/* Mobile Auto-Zoom-Schutz für dialog-tenant-v2 (Portal-Zugang etc.) —
   Specificity-Match zur ursprünglichen 14px-Regel oben:
   `.dialog.dialog-tenant-v2 input[type="text"]:not(.bs-mono-tag)` hat 0,4,1
   (zwei Klassen + Element + Attribut + Pseudo-Klasse) — wir matchen das EXAKT
   plus zusätzliche Klassen-Selectoren für .tnt-input/.bs-input, damit ALLE
   Form-Controls innerhalb dialog-tenant-v2 auf Mobile 16px werden. */
@media (max-width: 1024px) {
  .dialog.dialog-tenant-v2 .bs-input.bs-input,
  .dialog.dialog-tenant-v2 .bs-select.bs-select,
  .dialog.dialog-tenant-v2 .bs-textarea.bs-textarea,
  .dialog.dialog-tenant-v2 .tnt-input.tnt-input,
  .dialog.dialog-tenant-v2 .tnt-textarea.tnt-textarea,
  .dialog.dialog-tenant-v2 .tnt-select.tnt-select,
  .dialog.dialog-tenant-v2 input[type="text"]:not(.bs-mono-tag),
  .dialog.dialog-tenant-v2 input[type="email"],
  .dialog.dialog-tenant-v2 input[type="password"],
  .dialog.dialog-tenant-v2 input[type="number"],
  .dialog.dialog-tenant-v2 input[type="tel"],
  .dialog.dialog-tenant-v2 input[type="url"],
  .dialog.dialog-tenant-v2 input[type="search"],
  .dialog.dialog-tenant-v2 input[type="date"],
  .dialog.dialog-tenant-v2 input[type="time"],
  .dialog.dialog-tenant-v2 textarea,
  .dialog.dialog-tenant-v2 select {
    font-size: 16px !important;
  }
}

/* Grid 2-Spalten ab 640px — wie shadcn `grid gap-5 sm:grid-cols-2` */
.dialog.dialog-tenant-v2 .grid-2 {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 20px !important;
}
@media (min-width: 640px) {
  .dialog.dialog-tenant-v2 .grid-2 {
    grid-template-columns: 1fr 1fr !important;
  }
}

/* Section-Header — subtle, kein dicker Border, konsistente Abstände */
.dialog.dialog-tenant-v2 .section-header {
  font-size: 13px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.04em !important;
  color: var(--bs-fg-muted) !important;
  margin: 28px 0 4px 0 !important;
  padding: 0 0 12px 0 !important;
  border: 0 !important;
  border-bottom: 1px solid var(--bs-border) !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
}
.dialog.dialog-tenant-v2 form > .section-header:first-child {
  margin-top: 0 !important;
}
.dialog.dialog-tenant-v2 .section-icon {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 18px !important;
  height: 18px !important;
  flex-shrink: 0;
  color: var(--bs-fg-muted);
  background: transparent !important;
}
.dialog.dialog-tenant-v2 .section-icon svg { width: 14px !important; height: 14px !important; }

/* Tenant-Token-Row — Input + Copy-Btn nebeneinander */
.dialog.dialog-tenant-v2 #t-token-row > div {
  display: flex;
  gap: 8px;
  align-items: stretch;
}
.dialog.dialog-tenant-v2 #t-token {
  font-family: var(--bs-font-mono) !important;
  background: var(--bs-bg-subtle) !important;
  color: var(--bs-fg-muted) !important;
}
.dialog.dialog-tenant-v2 #btn-copy-token {
  height: 40px !important;
  padding: 0 14px !important;
  white-space: nowrap;
  flex-shrink: 0;
  font-size: 13px !important;
}

/* Form-Actions — Border-Top + 40px Buttons */
.dialog.dialog-tenant-v2 .form-actions {
  margin-top: 8px !important;
  padding-top: 20px !important;
  border-top: 1px solid var(--bs-border) !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
}
.dialog.dialog-tenant-v2 .form-actions .bs-btn {
  height: 40px !important;
  padding: 0 18px !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  border-radius: 6px !important;
}

/* Mobile-Override */
@media (max-width: 860px) {
  .dialog.dialog-tenant-v2 .tdp { padding: 20px 16px !important; }
}

/* ═══════════════════════════════════════════════════════════════════════
   PHASE 18b — Ansage-Erstellen Modal (dialog-ann-editor)
   Header / Body (scroll) / Footer (fix). Player im Body looks gleich wie
   in der Ansagen-Liste (.ann-card-audio).
   ═══════════════════════════════════════════════════════════════════════ */
.ann-editor-dialog {
  display: flex;
  flex-direction: column;
  max-height: 88vh;
}
.ann-editor-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: var(--bs-r);
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  flex-shrink: 0;
}
.ann-editor-body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 18px 22px 6px 22px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.ann-editor-footer {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px 22px calc(14px + env(safe-area-inset-bottom)) 22px;
  border-top: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
}
.ann-editor-footer .bs-btn-ghost { margin-left: auto; }
.ann-editor-footer .bs-btn { display: inline-flex; align-items: center; gap: 6px; }

/* Versuchs-Counter-Bar */
.ann-attempts-bar {
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  padding: 10px 14px;
  margin-bottom: 4px;
}
.ann-attempts-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.ann-attempts-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-fg);
}
.ann-attempts-label svg { color: var(--bs-fg-muted); }
.ann-attempts-dots {
  display: inline-flex;
  gap: 5px;
  margin-left: 4px;
}
.ann-attempt-dot {
  width: 9px; height: 9px;
  border-radius: 50%;
  flex-shrink: 0;
}
.ann-attempt-dot-used { background: var(--bs-warning, #d97706); }
.ann-attempt-dot-free { background: var(--bs-border-strong, #cbd5e1); opacity: 0.5; }
.ann-attempts-bar[data-state="depleted"] .ann-attempt-dot-used { background: var(--bs-danger, #b91c1c); }
.ann-attempts-text {
  font-size: var(--bs-text-sm);
  color: var(--bs-fg-muted);
  margin-left: auto;
  font-variant-numeric: tabular-nums;
}
.ann-attempts-bar[data-state="depleted"] .ann-attempts-text { color: var(--bs-danger); font-weight: 600; }
.ann-attempts-hint {
  font-size: var(--bs-text-xs);
  color: var(--bs-fg-subtle);
  margin: 6px 0 0 0;
  line-height: 1.4;
}

/* Vorschau-Wrapper mit Label "Vorschau" über dem Player */
.ann-preview-wrap {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 14px;
  background: var(--bs-primary-soft);
  border: 1px solid var(--bs-primary);
  border-radius: var(--bs-r);
}
.ann-preview-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--bs-text-sm);
  font-weight: var(--bs-weight-semibold);
  color: var(--bs-primary);
}
/* Player im Editor-Modal looks gleich wie in der Ansagen-Liste */
/* Phase 19g (2026-05-13): `color-scheme: light` Override entfernt — siehe
   Z. 7640 Begruendung. color-scheme wird global ueber Z. 2766-2770 themed. */
#dialog-ann-editor .ann-card-audio {
  width: 100%;
  height: 38px;
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-elevated);
  margin: 0;
}
#dialog-ann-editor .ann-card-audio::-webkit-media-controls-enclosure {
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-elevated);
}

/* Mobile Anpassungen für das Editor-Modal */
@media (max-width: 700px) {
  .ann-editor-dialog { max-height: 100vh !important; height: 100vh !important; border-radius: 0 !important; }
  .ann-editor-body { padding: 14px 14px 0 14px !important; }
  .ann-editor-footer {
    flex-wrap: wrap !important;
    padding: 12px 14px calc(12px + env(safe-area-inset-bottom)) 14px !important;
  }
  .ann-editor-footer > .bs-btn { flex: 1 1 auto !important; min-height: 44px !important; }
  .ann-editor-footer .bs-btn-ghost { margin-left: 0 !important; flex-basis: 100% !important; }
  .ann-attempts-text { margin-left: 0 !important; }
}

/* ═══════════════════════════════════════════════════════════════════════
   GENERIC CONFIRM-DIALOG  — ersetzt window.confirm() (Mobile-tauglich)
   ─ Variants über data-variant: "danger" | "warn" | "info" (default = warn)
   ─ Mobile = Vollbild wie alle anderen Modals (3-Row Flex)
   ════════════════════════════════════════════════════════════════════ */
.confirm-dialog {
  display: flex;
  flex-direction: column;
  max-height: 90vh;
}
.confirm-icon {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(217, 119, 6, 0.12);   /* warn-default */
  color: #d97706;
  flex-shrink: 0;
}
#dialog-confirm[data-variant="danger"] .confirm-icon {
  background: rgba(185, 28, 28, 0.12);
  color: #b91c1c;
}
#dialog-confirm[data-variant="info"] .confirm-icon {
  background: var(--bs-primary-soft, rgba(15, 118, 110, 0.12));
  color: var(--bs-primary, #0f766e);
}
.confirm-body {
  padding: 18px 24px;
  flex: 1;
  overflow-y: auto;
  font-size: var(--bs-text-sm, 14px);
  line-height: 1.55;
  color: var(--bs-fg, inherit);
}
.confirm-body p { margin: 0; white-space: pre-line; }
.confirm-footer {
  display: flex;
  gap: 10px;
  padding: 14px 24px;
  border-top: 1px solid var(--border);
  background: var(--card);
  flex-shrink: 0;
}
.confirm-footer .bs-btn { display: inline-flex; align-items: center; gap: 6px; }
.confirm-footer .bs-btn-ghost { margin-right: auto; }
/* Danger-Variant: Confirm-Button rot */
#dialog-confirm[data-variant="danger"] #btn-confirm-ok {
  background: #b91c1c !important;
  border-color: #b91c1c !important;
  color: var(--bs-primary-fg) !important;
}
#dialog-confirm[data-variant="danger"] #btn-confirm-ok:hover {
  background: #991b1b !important;
  border-color: #991b1b !important;
}

@media (max-width: 700px) {
  .confirm-dialog {
    max-height: 100vh !important;
    height: auto !important;
    border-radius: 12px !important;
    margin: auto 12px !important;
  }
  .confirm-body { padding: 16px 18px !important; }
  .confirm-footer {
    flex-wrap: wrap !important;
    padding: 12px 18px calc(12px + env(safe-area-inset-bottom)) 18px !important;
  }
  .confirm-footer > .bs-btn {
    flex: 1 1 auto !important;
    min-height: 44px !important;
    justify-content: center;
  }
  .confirm-footer .bs-btn-ghost {
    margin-right: 0 !important;
    flex-basis: 100% !important;
    order: 2;
  }
  .confirm-footer #btn-confirm-ok { order: 1; }
}

/* ═══════════════════════════════════════════════════════════════════════
   PHASE 18 — MOBILE-MODAL (clean v4)

   Pattern:  alle Modals = 3-Row Flex-Column auf Mobile
     ┌────────────────┐
     │ HEADER  fix    │  flex-shrink: 0
     ├────────────────┤
     │ BODY    scroll │  flex: 1, overflow-y: auto
     ├────────────────┤
     │ FOOTER  fix    │  flex-shrink: 0  (wenn vorhanden im DOM)
     └────────────────┘

   Das Voicemail-Modal funktioniert weil sein HTML genau diese 3 Children hat:
   .dialog-header / .vm-body / .vm-footer.

   Die meisten anderen Modals haben nur Header + Form (kein eigener Footer).
   Da scrollt das Form selbst und die Action-Buttons sind am Ende drin.
   ═══════════════════════════════════════════════════════════════════════ */
@media (max-width: 700px) {

  /* ─── 1. Modal-Container Full-Screen + Horizontal-Scroll-Sperre ────── */
  .dialog {
    padding: 0 !important;
    align-items: stretch !important;
    overflow: hidden !important;
  }
  body:has(.dialog:not([hidden])) {
    overflow: hidden;                  /* Page-Body sperren wenn Modal offen */
  }
  /* Generelle Horizontal-Scroll-Sperre auf Mobile — egal welches Element
     in welchem Container überschießt: hier wird's geclippt, vertikales
     Scrollen bleibt erlaubt. */
  html, body { overflow-x: hidden !important; }

  /* ─── 2. Modal-Inner: Flex-Column, Vollbild ───────────────────────────── */
  .dialog-inner,
  .dialog-inner.dialog-lg,
  .dialog-inner.dialog-xl,
  .dialog-inner.dialog-xxl,
  .dialog-tenant-v2 .dialog-tenant-inner {
    width: 100vw !important;
    max-width: 100vw !important;
    height: 100vh !important;
    max-height: 100vh !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    margin: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;          /* Inner scrollt nicht — body scrollt */
  }

  /* ─── 3. Header: fix oben, kompakt ───────────────────────────────────── */
  .dialog-header {
    flex-shrink: 0 !important;
    padding: 12px 14px !important;
    background: var(--bs-bg-elevated, var(--card)) !important;
    border-bottom: 1px solid var(--bs-border, var(--border));
    z-index: 2;
  }
  .dialog-header h3 { font-size: 16px !important; line-height: 1.3 !important; }
  .dialog-close, .bs-dialog-close { width: 36px !important; height: 36px !important; flex-shrink: 0; }

  /* ─── 4. Body-Scroll für Modals OHNE eigenen Footer (= Form scrollt) ─── */
  /* Bei diesen Modals ist die direkte Form das Body. Wir geben ihr flex:1
     und scrollen sie. Action-Buttons sind am Ende der Form, scrollen mit. */
  .dialog-inner > form {
    flex: 1 1 auto !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    padding: 14px 14px calc(40px + env(safe-area-inset-bottom)) 14px !important;
    margin: 0 !important;
  }
  /* Modals mit einem "anonymen" Body-Wrapper (z.B. .dialog-imp form ist drin) */
  .dialog-inner > .dialog-header + div:not(.tenant-dialog-body-v2):not(.vm-body):not(.dialog-backdrop) {
    flex: 1 1 auto !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    padding: 14px !important;
    padding-bottom: calc(40px + env(safe-area-inset-bottom)) !important;
  }

  /* ─── 5. Anti-Horizontal-Overflow ─────────────────────────────────────── */
  .dialog-inner * {
    max-width: 100% !important;
    box-sizing: border-box !important;
    word-break: break-word;
    overflow-wrap: anywhere;
  }
  .dialog-inner audio,
  .dialog-inner img,
  .dialog-inner video { width: 100% !important; min-width: 0 !important; }
  .dialog-inner input[readonly], .dialog-inner code, .dialog-inner pre {
    word-break: break-all;
  }

  /* ─── 6. Inputs: iOS Auto-Zoom-Fix (≥ 16px) ──────────────────────────── */
  /* WICHTIG: type=checkbox/radio AUSSCHLIESSEN — sonst werden sie 100% breit
     und sprengen Slot-Picker, Mailbox-Picker, Toggle-Reihen. */
  .dialog-inner input:not([type="checkbox"]):not([type="radio"]),
  .dialog-inner select,
  .dialog-inner textarea {
    font-size: 16px !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }
  .dialog-inner input[type="checkbox"],
  .dialog-inner input[type="radio"] {
    width: auto !important;
    flex-shrink: 0 !important;
  }

  /* ─── 7. 2-Spalten-Grids → 1 Spalte ───────────────────────────────────── */
  .dialog-inner .grid-2,
  .dialog-inner .tnt-grid {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }

  /* ─── 8. Action-Buttons stack untereinander, voll breit ───────────────── */
  .dialog-inner .form-actions,
  .dialog-inner .tnt-actions {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
    margin-top: 16px !important;
    align-items: stretch !important;
  }
  .dialog-inner .form-actions > *,
  .dialog-inner .tnt-actions > * {
    width: 100% !important;
    min-height: 44px !important;
    font-size: 15px !important;
  }
  .dialog-inner .form-actions > span,
  .dialog-inner .tnt-actions > span { display: none !important; }

  /* ════════════════════════════════════════════════════════════════════
     TENANT-V2 MODALS (dialog-tuser, dialog-tenant, dialog-partner)
     Sind Modals MIT eigenem Body-Wrapper (.tenant-dialog-body-v2).
     Layout: Header / Tab-Bar / Content (scroll). Save-Buttons sind in
     der scrollbaren Content-Region am Ende — User scrollt zu ihnen.
     ════════════════════════════════════════════════════════════════════ */

  /* Generic form-scroll-Regel deaktivieren für tenant-v2 (haben eigenes Layout) */
  .dialog-tenant-v2 .dialog-inner > form,
  .dialog-tenant-v2 .dialog-inner > .dialog-header + div:not(.tenant-dialog-body-v2) {
    flex: none !important;
    overflow: visible !important;
    padding: 0 !important;
  }

  /* Body wird flex-column auf Mobile (statt Grid 240px+1fr) */
  .dialog-tenant-v2 .tenant-dialog-body-v2 {
    display: flex !important;
    flex-direction: column !important;
    grid-template-columns: none !important;
    grid-template-rows: none !important;
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow: hidden !important;
    padding: 0 !important;
  }

  /* Sidebar wird Top-Tab-Bar (horizontal scroll) */
  .dialog-tenant-v2 .tenant-dialog-sidebar {
    flex-shrink: 0 !important;
    border-right: 0 !important;
    border-bottom: 1px solid var(--bs-border) !important;
    padding: 6px 8px !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    scrollbar-width: none;
  }
  .dialog-tenant-v2 .tenant-dialog-sidebar::-webkit-scrollbar { display: none; }
  .dialog-tenant-v2 .tenant-dialog-tabs {
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    overflow: visible !important;
    gap: 4px !important;
    width: max-content;
  }
  .dialog-tenant-v2 .tdt-btn {
    flex-shrink: 0 !important;
    width: auto !important;
    padding: 8px 10px !important;
    font-size: 13px !important;
    white-space: nowrap;
  }

  /* Content-Region scrollt — DIE EINE Scroll-Region des tenant-v2-Modals.
     Padding-bottom genug damit Action-Buttons am Ende erreichbar sind. */
  .dialog-tenant-v2 .tenant-dialog-content {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    padding: 16px !important;
    padding-bottom: calc(40px + env(safe-area-inset-bottom)) !important;
    touch-action: pan-y;
  }

  /* Tab-Panes + Forms innerhalb scrollen NICHT eigenständig */
  .dialog-tenant-v2 .tdp,
  .dialog-tenant-v2 .tdp > form,
  .dialog-tenant-v2 .tdp > .tnt-form {
    padding: 0 !important;
    margin: 0 !important;
    overflow: visible !important;
    height: auto !important;
  }
  .dialog-tenant-v2 .tdp { display: block !important; }
  .dialog-tenant-v2 .tdp[hidden] { display: none !important; }

  /* Felder + Inputs voll-breit */
  .dialog-tenant-v2 .tnt-field { margin: 0 0 12px 0 !important; }
  .dialog-tenant-v2 .tnt-input,
  .dialog-tenant-v2 .bs-input { width: 100% !important; }

  /* Tenant-V2 Header: Avatar kompakt */
  .dialog-tenant-v2 .dialog-header { padding: 12px 14px !important; gap: 10px; }
  .dialog-tenant-v2 .dialog-header .vm-avatar {
    width: 38px !important; height: 38px !important; font-size: 14px !important;
  }
  .dialog-tenant-v2 .dialog-header h3 {
    font-size: 15px !important; overflow: hidden;
    text-overflow: ellipsis; white-space: nowrap;
  }
  .dialog-tenant-v2 .dialog-header > div:first-child { min-width: 0; flex: 1; }

  /* ════════════════════════════════════════════════════════════════════
     VOICEMAIL-MODAL (dialog-voicemail)
     Hat 3 echte Layout-Children: Header / vm-body / vm-footer.
     Funktioniert standardmäßig — wir polish nur Status-Strip,
     Meta-Row und Audio-Width.
     ════════════════════════════════════════════════════════════════════ */
  #dialog-voicemail .vm-body {
    flex: 1 1 auto !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;       /* nur vertikal scrollen, horizontal sperren */
    -webkit-overflow-scrolling: touch;
    padding: 12px !important;
    gap: 12px !important;
  }
  #dialog-voicemail .vm-status-strip {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    scrollbar-width: none;
  }
  #dialog-voicemail .vm-status-strip::-webkit-scrollbar { display: none; }
  #dialog-voicemail .vm-status-btn {
    flex-shrink: 0 !important;
    padding: 8px 10px !important;
    font-size: 13px !important;
  }
  #dialog-voicemail .vm-meta-row {
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
  }
  #dialog-voicemail .vm-split { grid-template-columns: 1fr !important; gap: 12px !important; }
  #dialog-voicemail .vm-footer {
    flex-shrink: 0;
    flex-wrap: wrap !important;
    gap: 8px !important;
    padding: 12px !important;
    border-top: 1px solid var(--bs-border);
  }
  #dialog-voicemail .vm-footer > * { flex: 1 1 auto; min-width: 0; }
  #dialog-voicemail audio,
  #dialog-voicemail #vm-audio {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    display: block !important;
    margin: 0 0 12px 0 !important;     /* Desktop-margin (0 24px) killt sonst die Zentrierung */
  }
  #dialog-voicemail #vm-save { flex: 1 1 100% !important; }

  /* ════════════════════════════════════════════════════════════════════
     POSTFACH-MODAL (dlg-att-msg)
     Desktop: 2-Spalten Grid (Activity + Sidebar) mit eigenem Scroll pro Spalte.
     Mobile:  ein einziger Scroll-Container (dam-body), Activity + Sidebar
              stacken untereinander. Sidebar (Eigenschaften) zuerst, dann
              Aktivität — weil Eigenschaften das ist was der User sofort braucht.
     ════════════════════════════════════════════════════════════════════ */
  #dlg-att-msg .dam-body {
    grid-template-columns: 1fr !important;
    display: flex !important;
    flex-direction: column !important;
    flex: 1 1 auto !important;
    overflow-y: auto !important;          /* dam-body ist DER Scroll-Container */
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    min-height: 0 !important;
  }
  #dlg-att-msg .dam-activity,
  #dlg-att-msg .dam-sidebar {
    overflow: visible !important;          /* Spalten scrollen NICHT mehr — body tut's */
    border-left: 0 !important;
    padding: 14px !important;
    height: auto !important;
    max-height: none !important;
    flex: 0 0 auto !important;
  }
  /* Eigenschaften zuerst zeigen (nutzt CSS order — User braucht meist
     erst Status/Priorität/Wiedervorlage, danach kommt der Anrufverlauf) */
  #dlg-att-msg .dam-sidebar { order: 1; border-bottom: 1px solid var(--bs-border); }
  #dlg-att-msg .dam-activity { order: 2; }

  /* Akkordeon-Modus aktiv — Chevron zeigen, summary klickbar, Body kollabiert wenn nicht [open] */
  #dlg-att-msg .dam-acc > summary {
    cursor: pointer;
    padding: 12px 4px;
    margin: 0 -4px;            /* Klickfläche bleibt im normalen Padding */
    border-radius: var(--bs-r-sm);
    user-select: none;
    -webkit-tap-highlight-color: transparent;
  }
  #dlg-att-msg .dam-acc > summary:active {
    background: var(--bs-bg-subtle);
  }
  #dlg-att-msg .dam-acc-chevron { display: inline-flex; }

  /* Body Animation beim Aufklappen */
  #dlg-att-msg .dam-acc[open] > .dam-activity-body {
    animation: dam-acc-fade 180ms ease-out;
  }
  @keyframes dam-acc-fade {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: none; }
  }

  /* ─── Sonstiges: Slot-Picker, Mailbox-Picker, Token-Row, Help ─── */
  #dialog-slot-picker .sp-item,
  #dialog-mailbox .mbx-item { padding: 12px !important; }
  .dialog-inner .bs-help, .dialog-inner .tnt-help { font-size: 12px !important; }
  .dialog-inner #t-token-row > div { flex-wrap: wrap !important; gap: 6px !important; }
  .dialog-inner #t-token-row > div > #t-token { flex: 1 1 100% !important; min-width: 0; }
}

/* ─── Sehr enge Screens (≤ 380px iPhone SE) ────────────────────────────── */
@media (max-width: 380px) {
  .dialog-inner > form { padding: 12px 12px calc(40px + env(safe-area-inset-bottom)) 12px !important; }
  .dialog-header { padding: 10px 12px !important; }
  .dialog-header h3 { font-size: 15px !important; }
  .dialog-tenant-v2 .tenant-dialog-content { padding: 12px !important; }
}

/* ════════════════════════════════════════════════════════════════════════
   tnt-danger-card Variants (Phase 19c — Dark-Mode-Konform)
   Ersetzt Inline-Hex (#fffbeb, #faf5ff, #eff6ff) durch semantische Tokens.
   ════════════════════════════════════════════════════════════════════════ */

/* WARN-Variante (gelb/amber) — z.B. Suspend/Resume-Card */
.tnt-danger-card.tnt-warn {
  border-color: var(--bs-warning);
  background: var(--bs-warning-soft);
}
.tnt-danger-card.tnt-warn .tnt-danger-title {
  color: var(--bs-warning);
}

/* AVV-Variante (lila/accent) — z.B. AVV-extern-Marker (Operator-Only) */
.tnt-danger-card.tnt-avv {
  border-color: var(--bs-accent);
  background: var(--bs-accent-soft);
}
.tnt-danger-card.tnt-avv .tnt-danger-title {
  color: var(--bs-accent);
}

/* MOVE-Variante (blau/primary) — z.B. Tenant umziehen */
.tnt-danger-card.tnt-move {
  border-color: var(--bs-info);
  background: var(--bs-info-soft);
}
.tnt-danger-card.tnt-move .tnt-danger-title {
  color: var(--bs-info);
}

/* DESTRUCTIVE-Variante (rot) — Default schon definiert, hier nur explizite Klasse */
.tnt-danger-card.tnt-destructive {
  border-color: var(--bs-danger);
  background: var(--bs-danger-soft);
}
.tnt-danger-card.tnt-destructive .tnt-danger-title {
  color: var(--bs-danger);
}

/* tnt-btn-Variants für Action-Buttons in den Cards (Token-themed Text-Color) */
.tnt-btn.tnt-btn-warning {
  background: var(--bs-warning);
  color: var(--bs-tnt-btn-color-on-accent);
  border-color: var(--bs-warning);
  font-weight: 600;
}
.tnt-btn.tnt-btn-warning:hover { filter: brightness(0.95); }

.tnt-btn.tnt-btn-success {
  background: var(--bs-success);
  color: var(--bs-tnt-btn-color-on-accent);
  border-color: var(--bs-success);
  font-weight: 600;
}
.tnt-btn.tnt-btn-success:hover { filter: brightness(0.95); }

.tnt-btn.tnt-btn-accent {
  background: var(--bs-accent);
  color: var(--bs-tnt-btn-color-on-accent);
  border-color: var(--bs-accent);
  font-weight: 600;
}
.tnt-btn.tnt-btn-accent:hover { filter: brightness(0.95); }

.tnt-btn.tnt-btn-info {
  background: var(--bs-info);
  color: var(--bs-primary-fg);
  border-color: var(--bs-info);
  font-weight: 600;
}
.tnt-btn.tnt-btn-info:hover { filter: brightness(0.95); }

.tnt-btn.tnt-btn-neutral {
  background: var(--bs-fg-muted);
  color: var(--bs-bg-elevated);
  border-color: var(--bs-fg-muted);
  font-weight: 600;
}
.tnt-btn.tnt-btn-neutral:hover { filter: brightness(0.95); }

/* Dark-Mode-Adjustment: Text auf Buttons soll lesbar bleiben.
   --bs-tnt-btn-color-on-accent ist in Light = Navy (#1A2B3C),
   in Dark = Slate-900 (Token-themed via :root und prefers-color-scheme). */

/* Pflicht-Stern (statt <span style="color:#c00">) */
.tnt-label-required {
  color: var(--bs-danger);
  margin-left: 2px;
  font-weight: 700;
}

/* ════════════════════════════════════════════════════════════════════════
   bs-status-badge / bs-status-dot (Phase 19c — einheitliche Status-Pille)
   Ersetzt Inline-Hex (#dcfce7, #fee2e2, #fee2e2) in platform.js
   und Inline-Background-Hex bei Status-Filter-Dots.
   ════════════════════════════════════════════════════════════════════════ */

.bs-status-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.5;
  border: 1px solid transparent;
}
.bs-status-badge[data-status="active"],
.bs-status-badge[data-status="ok"] {
  background: var(--bs-success-soft);
  color: var(--bs-success);
}
.bs-status-badge[data-status="paused"],
.bs-status-badge[data-status="suspended"] {
  background: var(--bs-warning-soft);
  color: var(--bs-warning);
}
.bs-status-badge[data-status="blocked"],
.bs-status-badge[data-status="expired"],
.bs-status-badge[data-status="danger"] {
  background: var(--bs-danger-soft);
  color: var(--bs-danger);
}
.bs-status-badge[data-status="in-grace"],
.bs-status-badge[data-status="warning"] {
  background: var(--bs-warning-soft);
  color: var(--bs-warning);
}
.bs-status-badge[data-status="pending"],
.bs-status-badge[data-status="info"] {
  background: var(--bs-info-soft);
  color: var(--bs-info);
}

.bs-status-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 999px;
  vertical-align: middle;
  flex-shrink: 0;
}
.bs-status-dot[data-status="active"],
.bs-status-dot[data-status="ok"] { background: var(--bs-success); }
.bs-status-dot[data-status="paused"],
.bs-status-dot[data-status="suspended"],
.bs-status-dot[data-status="in-grace"],
.bs-status-dot[data-status="warning"] { background: var(--bs-warning); }
.bs-status-dot[data-status="blocked"],
.bs-status-dot[data-status="expired"],
.bs-status-dot[data-status="danger"] { background: var(--bs-danger); }
.bs-status-dot[data-status="pending"],
.bs-status-dot[data-status="info"] { background: var(--bs-info); }

/* Cyan/Teal-Variante für Customer-Admin (Konflikt mit Managed-Lila auflösen) */
.bs-pill-cyan,
.bs-pill-info {
  background: var(--bs-info-soft);
  color: var(--bs-info);
}
.bs-pill-danger {
  background: var(--bs-danger-soft);
  color: var(--bs-danger);
}

/* ════════════════════════════════════════════════════════════════════════
   bs-banner-warning (Phase 19c — Login-Pending-Activation + Managed-Hint)
   Ersetzt Inline-style background:#fef3c7 in app.js
   ════════════════════════════════════════════════════════════════════════ */

.bs-banner-warning {
  background: var(--bs-warning-soft);
  color: var(--bs-warning);
  border: 1px solid var(--bs-warning-soft);
  padding: 12px 14px;
  border-radius: var(--bs-r);
  font-size: 13px;
  line-height: 1.5;
}
.bs-banner-warning strong { color: var(--bs-warning); font-weight: 600; }

.bs-banner-info {
  background: var(--bs-info-soft);
  color: var(--bs-info);
  border: 1px solid var(--bs-info-soft);
  padding: 12px 14px;
  border-radius: var(--bs-r);
  font-size: 13px;
  line-height: 1.5;
}

.bs-banner-success {
  background: var(--bs-success-soft);
  color: var(--bs-success);
  border: 1px solid var(--bs-success-soft);
  padding: 12px 14px;
  border-radius: var(--bs-r);
  font-size: 13px;
  line-height: 1.5;
}

/* ════════════════════════════════════════════════════════════════════════
   MODAL V2.0 NORMALIZATION (Phase 19d UX-Pass)
   ────────────────────────────────────────────────────────────────────────
   Konsistentes Modal-Pattern fuer Header/Body/Footer.
   - 100% token-basiert (var(--bs-*)) — funktioniert in Light + Dark + System-Dark
   - Keine hardcoded white/#fff/#f8fafc Backgrounds (Subagent E Theme-Refactor-kompatibel)
   - Cards drin: var(--bs-bg-elevated) bzw. var(--bs-bg-subtle)
   - Text: var(--bs-fg) / var(--bs-fg-muted)
   - Spacings: var(--bs-N) Tokens (4/8/12/16/20/24/...)
   - Radius: var(--bs-r-lg) fuer Modal, var(--bs-r) fuer Cards drin

   Trigger-Klasse: <div class="dialog bs-modal-v2">
   Wird parallel zu .dialog verwendet (.dialog frame + .bs-modal-v2 marker).
   ════════════════════════════════════════════════════════════════════════ */

/* Modal-Wrapper Marker (KPI-Pin: alle Modals haben diese Klasse oder die
   v1-Tenant-Variante .dialog-tenant-v2 = ebenfalls v2-konform) */
.bs-modal-v2 {
  /* Container-Marker, kein eigenes Layout — uebernimmt .dialog Frame */
}

/* Body-Bereich: token-basierte Section unterhalb des Headers */
.bs-modal-v2-body {
  padding: var(--bs-6);
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  display: flex;
  flex-direction: column;
  gap: var(--bs-4);
}
@media (max-width: 640px) {
  .bs-modal-v2-body { padding: var(--bs-4); gap: var(--bs-3); }
}

/* Body Subtle-Variante: helleres BG fuer Card-Listen */
.bs-modal-v2-body--subtle {
  background: var(--bs-bg-subtle);
}

/* Footer-Bereich: rechtsbuendig Buttons, Border-Top */
.bs-modal-v2-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--bs-3);
  padding: var(--bs-4) var(--bs-6);
  border-top: 1px solid var(--bs-border);
  background: var(--bs-bg-elevated);
}
.bs-modal-v2-footer .bs-btn-ghost,
.bs-modal-v2-footer .bs-btn-secondary {
  margin-right: auto;
}
@media (max-width: 640px) {
  .bs-modal-v2-footer {
    flex-wrap: wrap;
    padding: var(--bs-3) var(--bs-4) calc(var(--bs-3) + env(safe-area-inset-bottom)) var(--bs-4);
  }
  .bs-modal-v2-footer .bs-btn {
    flex: 1 1 auto;
    min-height: 44px;
    justify-content: center;
  }
  .bs-modal-v2-footer .bs-btn-ghost,
  .bs-modal-v2-footer .bs-btn-secondary {
    margin-right: 0 !important;
    order: 2;
    flex-basis: 100% !important;
  }
}

/* Body-Section innerhalb des Modal-Body (z.B. Greeting-Preview: Original / Normalisiert / KI-Vorschlag) */
.bs-modal-v2-section {
  display: flex;
  flex-direction: column;
  gap: var(--bs-2);
}
.bs-modal-v2-section-label {
  font-size: var(--bs-text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--bs-fg-muted);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--bs-2);
}
.bs-modal-v2-section-label--info     { color: var(--bs-info); }
.bs-modal-v2-section-label--warn     { color: var(--bs-warning); }
.bs-modal-v2-section-label--success  { color: var(--bs-success); }
.bs-modal-v2-section-label--danger   { color: var(--bs-danger); }

/* Token-basierte Code-/Preview-Pre-Box (ersetzt hardcoded #f8fafc/#ecfeff/#fff7ed) */
.bs-modal-v2-pre {
  padding: var(--bs-3);
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  font-family: inherit;
  font-size: 13px;
  line-height: 1.5;
  white-space: pre-wrap;
  margin: 0;
  color: var(--bs-fg);
}
.bs-modal-v2-pre--mono {
  font-family: var(--bs-font-mono, 'Menlo', 'Monaco', monospace);
  font-size: 12px;
  max-height: 60vh;
  overflow: auto;
}
.bs-modal-v2-pre--info {
  background: var(--bs-info-soft);
  border-color: var(--bs-info-soft);
  color: var(--bs-fg);
}
.bs-modal-v2-pre--warn {
  background: var(--bs-warning-soft);
  border-color: var(--bs-warning-soft);
  color: var(--bs-fg);
}

/* Card-Liste (Template-Picker / Slot-Picker / Mailbox-Picker) — token-only */
.bs-modal-v2-card-list {
  display: flex;
  flex-direction: column;
  gap: var(--bs-3);
}
.bs-modal-v2-card {
  padding: var(--bs-4);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r);
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  cursor: pointer;
  transition: border-color var(--bs-transition), box-shadow var(--bs-transition), background var(--bs-transition);
  outline: none;
}
.bs-modal-v2-card:hover,
.bs-modal-v2-card:focus-visible {
  border-color: var(--bs-border-hover);
  background: var(--bs-bg);
  box-shadow: var(--bs-shadow, 0 2px 8px rgba(15, 23, 42, 0.06));
}
.bs-modal-v2-card:focus-visible {
  outline: 2px solid var(--bs-primary);
  outline-offset: -2px;
}
.bs-modal-v2-card-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--bs-3);
}
.bs-modal-v2-card-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--bs-2);
}
.bs-modal-v2-card-title {
  font-weight: 600;
  font-size: 14px;
  color: var(--bs-fg);
}
.bs-modal-v2-card-desc {
  font-size: 12px;
  color: var(--bs-fg-muted);
}
/* Inset-Code-Block innerhalb einer Card (z.B. Vorlagen-Text) */
.bs-modal-v2-card-excerpt {
  font-size: 13px;
  line-height: 1.5;
  color: var(--bs-fg);
  background: var(--bs-bg-subtle);
  padding: var(--bs-3);
  border-radius: var(--bs-r-sm);
  border-left: 3px solid var(--bs-primary);
}
.bs-modal-v2-card-cta {
  flex-shrink: 0;
}

/* Inline-Banner innerhalb eines Modals (z.B. DSGVO-Detection-Hinweis) */
.bs-modal-v2-inline-banner {
  display: flex;
  align-items: center;
  gap: var(--bs-2);
  padding: var(--bs-3) var(--bs-4);
  border-radius: var(--bs-r);
  font-size: 13px;
  font-weight: 600;
  background: var(--bs-bg-subtle);
  color: var(--bs-fg);
  border: 1px solid var(--bs-border);
}
.bs-modal-v2-inline-banner--success {
  background: var(--bs-success-soft, var(--bs-bg-subtle));
  color: var(--bs-success);
  border-color: var(--bs-success-soft, var(--bs-border));
}
.bs-modal-v2-inline-banner--warn {
  background: var(--bs-warning-soft);
  color: var(--bs-warning);
  border-color: var(--bs-warning-soft);
}
.bs-modal-v2-inline-banner--danger {
  background: var(--bs-danger-soft);
  color: var(--bs-danger);
  border-color: var(--bs-danger-soft);
}

/* Modal-Avatar — Pendant zu vm-avatar, aber token-only */
.bs-modal-v2-avatar {
  width: 36px;
  height: 36px;
  border-radius: var(--bs-r-full);
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 600;
  flex-shrink: 0;
}

/* ═════════════════════════════════════════════════════════════════════
   Voicemail-Such-Filter (Phase 19g, 2026-05-13)
   Such-Eingabe + Clear-Button + Treffer-Counter ueber der Voicemail-Liste.
   Filtert clientseitig in state.voicemails (caller_name, caller_number,
   transcript, mailbox_number, callback_number).
   ═════════════════════════════════════════════════════════════════════ */

.vm-search-bar {
  display: flex;
  align-items: center;
  gap: var(--bs-3);
  margin-bottom: var(--bs-4);
  flex-wrap: wrap;
}

.vm-search-input-wrap {
  position: relative;
  flex: 1;
  min-width: 200px;
  max-width: 460px;
}

.vm-search-icon {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--bs-fg-subtle);
  pointer-events: none;
}

.vm-search-input {
  width: 100%;
  padding: 9px 36px 9px 36px;
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  font-size: 14px;
  font-family: inherit;
  transition: border-color var(--bs-transition), box-shadow var(--bs-transition);
}

.vm-search-input::placeholder {
  color: var(--bs-fg-subtle);
}

.vm-search-input:focus {
  outline: none;
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px var(--bs-primary-soft);
}

/* Native search-clear ausblenden, eigenen Button nutzen */
.vm-search-input::-webkit-search-cancel-button {
  -webkit-appearance: none;
  appearance: none;
}

.vm-search-clear {
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  width: 26px;
  height: 26px;
  border: 0;
  background: transparent;
  color: var(--bs-fg-muted);
  border-radius: var(--bs-r-sm);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: background var(--bs-transition), color var(--bs-transition);
}

.vm-search-clear:hover {
  background: var(--bs-bg-subtle);
  color: var(--bs-fg);
}

.vm-search-result-count {
  font-size: 13px;
  color: var(--bs-fg-muted);
  white-space: nowrap;
}

.vm-search-result-count.is-empty {
  color: var(--bs-warning);
}

/* Filter-Toggle-Button (Funnel-Icon + "Filter" + Active-Count-Badge) */
.vm-filter-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  font-size: 13px;
  font-family: inherit;
  cursor: pointer;
  transition: border-color var(--bs-transition), background var(--bs-transition);
}

.vm-filter-toggle:hover {
  border-color: var(--bs-border-hover);
  background: var(--bs-bg-subtle);
}

.vm-filter-toggle.is-open {
  border-color: var(--bs-primary);
  background: var(--bs-primary-soft);
  color: var(--bs-primary);
}

.vm-filter-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 6px;
  background: var(--bs-primary);
  color: var(--bs-primary-fg);
  font-size: 11px;
  font-weight: 600;
  border-radius: 999px;
  line-height: 1;
}

/* Reset-Filter-Button (sekundaer, zeigt sich nur wenn ein Filter aktiv ist) */
.vm-filter-reset {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 12px;
  border: 1px solid transparent;
  border-radius: var(--bs-r-sm);
  background: transparent;
  color: var(--bs-fg-muted);
  font-size: 13px;
  font-family: inherit;
  cursor: pointer;
  transition: color var(--bs-transition), background var(--bs-transition);
}

.vm-filter-reset:hover {
  color: var(--bs-fg);
  background: var(--bs-bg-subtle);
}

/* Filter-Drawer (collapsed by default, expanded via Toggle-Button) */
.vm-filter-drawer {
  margin: -8px 0 var(--bs-4);
  padding: var(--bs-4);
  background: var(--bs-bg-subtle);
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  display: flex;
  flex-direction: column;
  gap: var(--bs-4);
}

.vm-filter-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: var(--bs-3);
}

.vm-filter-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.vm-filter-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--bs-fg-muted);
}

.vm-filter-input {
  padding: 7px 10px;
  border: 1px solid var(--bs-border);
  border-radius: var(--bs-r-sm);
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  font-size: 13px;
  font-family: inherit;
  transition: border-color var(--bs-transition), box-shadow var(--bs-transition);
}

.vm-filter-input:focus {
  outline: none;
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px var(--bs-primary-soft);
}

/* date-Input dark-mode konform: native picker-icon */
.vm-filter-input[type="date"] {
  font-family: inherit;
  color-scheme: light dark;
}

.vm-filter-toggles {
  display: flex;
  flex-wrap: wrap;
  gap: var(--bs-3) var(--bs-5);
  padding-top: var(--bs-2);
  border-top: 1px solid var(--bs-border);
}

.vm-filter-toggle-row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--bs-fg);
  cursor: pointer;
  user-select: none;
}

.vm-filter-toggle-row input[type="checkbox"] {
  cursor: pointer;
  margin: 0;
  width: 16px;
  height: 16px;
  accent-color: var(--bs-primary);
}

.vm-filter-toggle-row:hover {
  color: var(--bs-primary);
}

/* ─── Phase 19h: Legal Markdown-Vorschau im Edit-Dialog ─────────────────── */
.legal-md-preview {
  border: 1px solid var(--bs-border);
  border-radius: 8px;
  padding: 18px 22px;
  background: var(--bs-bg-elevated);
  color: var(--bs-fg);
  line-height: 1.6;
  font-size: 14px;
  max-height: 480px;
  overflow-y: auto;
}
.legal-md-preview h1,
.legal-md-preview h2,
.legal-md-preview h3,
.legal-md-preview h4 {
  color: var(--bs-fg);
  margin-top: 18px;
  margin-bottom: 10px;
  font-weight: 700;
  line-height: 1.25;
}
.legal-md-preview h1 { font-size: 22px; }
.legal-md-preview h2 { font-size: 18px; border-bottom: 1px solid var(--bs-border); padding-bottom: 6px; }
.legal-md-preview h3 { font-size: 16px; }
.legal-md-preview h4 { font-size: 14px; }
.legal-md-preview p {
  margin: 10px 0;
  color: var(--bs-fg);
}
.legal-md-preview strong { color: var(--bs-fg); font-weight: 700; }
.legal-md-preview em     { color: var(--bs-fg); font-style: italic; }
.legal-md-preview a {
  color: var(--bs-accent);
  text-decoration: underline;
}
.legal-md-preview a:hover { color: var(--bs-accent-hover); }
.legal-md-preview hr {
  border: 0;
  border-top: 1px solid var(--bs-border);
  margin: 18px 0;
}
.legal-md-preview ul,
.legal-md-preview ol {
  margin: 10px 0;
  padding-left: 24px;
}
.legal-md-preview li {
  margin: 4px 0;
  color: var(--bs-fg);
}
.legal-md-preview code {
  background: var(--bs-bg-inset);
  border: 1px solid var(--bs-border);
  border-radius: 4px;
  padding: 1px 5px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
}
.legal-md-preview .legal-md-table {
  width: 100%;
  border-collapse: collapse;
  margin: 12px 0;
  font-size: 13px;
}
.legal-md-preview .legal-md-table th,
.legal-md-preview .legal-md-table td {
  border: 1px solid var(--bs-border);
  padding: 8px 10px;
  text-align: left;
  vertical-align: top;
  color: var(--bs-fg);
}
.legal-md-preview .legal-md-table th {
  background: var(--bs-bg-inset);
  font-weight: 600;
}
.legal-md-preview .legal-md-table tr:nth-child(even) td {
  background: var(--bs-bg-inset);
}
