/* ============================================================================
   sh-odoo-theme — App-weites Odoo-Backend-Theme (additive Schicht).
   MUSS NACH internal-modern.css laden. Nur Farbe/Rahmen/Radius/Schatten/Typo/
   Dichte — KEINE Grid-/sticky-Layout-Umbauten. ELMETIC-Rot = Akzent.
   Ziel: echtes Odoo-Backend-Gefühl — Control-Panel, flache dichte Listen,
   helle Sheets, crispe kleine Radien, kompakte Buttons.
   ============================================================================ */

:root {
  /* Odoo-Greys: heller, kühler Body; weiße Sheets */
  --elmetic-bg: #f7f7f8;
  --elmetic-bg-soft: #f0f1f3;
  --elmetic-card: #ffffff;
  --elmetic-card-soft: #fbfbfc;
  /* Odoo-Rahmen: zarte, neutrale Linien */
  --elmetic-border: #e5e7eb;
  --elmetic-border-strong: #d7dbe0;
  /* Text: Odoo near-black + ruhiges Grau */
  --elmetic-text: #1f2329;
  --elmetic-text-2: #3c4149;
  --elmetic-muted: #6b7280;
  --elmetic-muted-2: #9aa1ac;
  /* Crispe, kleine Radien (Odoo ist eher kantig) */
  --sh-radius-xs: 3px;
  --sh-radius-sm: 4px;
  --sh-radius-md: 6px;
  --sh-radius-lg: 8px;
  --sh-radius-xl: 12px;
  /* Sehr dezente Schatten (Odoo arbeitet mit Linien, kaum Schatten) */
  --sh-shadow-sm: 0 1px 1px rgba(16, 24, 40, .04);
  --sh-shadow-md: 0 1px 3px rgba(16, 24, 40, .07);
  --sh-shadow-lg: 0 6px 20px rgba(16, 24, 40, .10);
}

body { color: var(--elmetic-text); }

/* ── Topbar: schmale, flache Leiste ───────────────────────────────────── */
.topbar { background: var(--elmetic-card); border-bottom: 1px solid var(--elmetic-border); box-shadow: none; }

/* ── Sidebar-Navigation: flache Items, roter Aktiv-Zustand ────────────── */
#sidebarNavList a {
  border-radius: var(--sh-radius-sm);
  margin: 1px 8px; padding: 7px 12px;
  font-weight: 500; font-size: .9rem;
  transition: background .12s ease, color .12s ease;
}
#sidebarNavList a:hover { background: rgba(255, 255, 255, .08); }
#sidebarNavList a.active,
#sidebarNavList a.is-active,
#sidebarNavList a[aria-current] { background: var(--elmetic-red); color: #fff; }
#sidebarNavList a.active::before, #sidebarNavList a.is-active::before { content: none; }

/* ── Control-Panel (Odoo-Signatur): page-header = schmale Aktionsleiste ── */
.page-header,
.sh-header {
  background: var(--elmetic-card);
  border: 1px solid var(--elmetic-border);
  border-radius: var(--sh-radius-md);
  padding: 10px 16px;
  margin-bottom: 14px;
  box-shadow: var(--sh-shadow-sm);
  min-height: 0;
}
.page-header h1,
.sh-header h1 { font-size: 1.18rem; font-weight: 700; letter-spacing: -.01em; margin: 0; }
.page-header .subtitle,
.sh-header .subtitle { color: var(--elmetic-muted); font-size: .82rem; margin: 2px 0 0; }
.sh-header__actions, .page-header__actions { gap: 8px; }

/* ── Buttons: kompakt, flach, Akzent-Primär (Odoo) ────────────────────── */
.btn {
  border-radius: var(--sh-radius-sm);
  font-weight: 500; font-size: .86rem;
  padding: 6px 13px;
  transition: background .12s ease, border-color .12s ease;
}
.btn-primary, button.btn-primary {
  background: var(--elmetic-red); border: 1px solid var(--elmetic-red); color: #fff; font-weight: 600;
}
.btn-primary:hover, button.btn-primary:hover { background: var(--elmetic-red-dark); border-color: var(--elmetic-red-dark); }
/* Sekundär = neutraler Odoo-Outline-Button (schlägt tokens.css' rot-getöntes .btn.btn-secondary
   per gleicher Spezifität + späterer Quelle — NICHT mehr alles rot) */
.btn-secondary, .btn-ghost,
.btn.btn-secondary {
  background: var(--elmetic-card); border: 1px solid var(--elmetic-border-strong); color: var(--elmetic-text-2);
}
.btn-secondary:hover, .btn-ghost:hover,
.btn.btn-secondary:hover { background: var(--elmetic-bg-soft); border-color: var(--elmetic-border-strong); color: var(--elmetic-text); }

/* ── Listen/Tabellen: ECHTE Odoo-Liste — flach, dicht ─────────────────── */
.data-table, .sh-table {
  border-radius: 0;
  border: none;
  font-size: .86rem;
  width: 100%;
}
.data-table thead th,
.sh-table thead th {
  background: var(--elmetic-bg-soft);
  color: var(--elmetic-text-2);
  font-size: .73rem; font-weight: 700;
  letter-spacing: .02em; text-transform: uppercase;
  border-bottom: 1px solid var(--elmetic-border-strong);
  padding: 9px 14px;
}
.data-table tbody td,
.sh-table tbody td {
  border-bottom: 1px solid var(--elmetic-border);
  padding: 8px 14px;            /* Odoo-dichte Zeilen */
  color: var(--elmetic-text-2);
}
.data-table tbody tr:hover,
.sh-table tbody tr:hover { background: #f5f8ff; }   /* zartes Odoo-Blau beim Hover */
.data-table tbody tr:last-child td,
.sh-table tbody tr:last-child td { border-bottom: none; }

/* ── Karten / Panels: weißes Sheet, zarte Linie ──────────────────────── */
.panel, .sh-card, .db-card, .sh-panel {
  background: var(--elmetic-card);
  border: 1px solid var(--elmetic-border);
  border-radius: var(--sh-radius-md);
  box-shadow: var(--sh-shadow-sm);
}
.sh-card__title, .sh-panel__title { font-weight: 700; letter-spacing: -.01em; }

/* ── Badges / Status / Chips: Odoo-Pillen ────────────────────────────── */
.badge, .sh-badge, .status-badge {
  border-radius: 999px; font-weight: 600; font-size: .72rem; padding: 2px 9px;
}
.sh-chip, .chip {
  border-radius: var(--sh-radius-sm);  /* Odoo-Filter sind eher eckig */
  border: 1px solid var(--elmetic-border-strong);
  background: var(--elmetic-card); font-weight: 500; font-size: .82rem;
}
.sh-chip--active, .chip.active { background: var(--elmetic-red); border-color: var(--elmetic-red); color: #fff; }

/* ── Filter-Toolbar: schmale Suchleiste (Odoo-Searchview-Gefühl) ──────── */
.filter-toolbar {
  background: var(--elmetic-card);
  border: 1px solid var(--elmetic-border);
  border-radius: var(--sh-radius-md);
  padding: 8px 12px;
}

/* ── Dashboard KPI-Kacheln: klare Odoo-Stat-Karten m. Akzentstreifen ──── */
.db-kpi, .kpi-card {
  background: var(--elmetic-card);
  border: 1px solid var(--elmetic-border);
  border-radius: var(--sh-radius-md);
  box-shadow: var(--sh-shadow-sm);
  transition: box-shadow .15s ease, transform .15s ease;
}
.db-kpi:hover, .kpi-card:hover { box-shadow: var(--sh-shadow-md); transform: translateY(-1px); }
/* Korrekte reale Klassennamen (db-kpi-value/-label, NICHT BEM __) */
.db-kpi-value, .kpi-value { font-weight: 800; letter-spacing: -.02em; }
.db-kpi-label, .kpi-label { color: var(--elmetic-muted); text-transform: uppercase; letter-spacing: .03em; font-size: .72rem; }
/* Akzentstreifen über den vorhandenen border-left (3px) der Kachel — ein sauberer Streifen, tonfarbig */
.db-kpi::before { display: none; }   /* Basis-::before-Streifen aus, damit nur EIN sauberer Streifen bleibt */
.db-kpi { border-left: 3px solid var(--elmetic-red); }
.db-kpi--danger { border-left-color: var(--elmetic-danger); }
.db-kpi--warn { border-left-color: var(--elmetic-warning); }
.db-kpi--ok { border-left-color: var(--elmetic-success); }
.db-kpi--info { border-left-color: var(--elmetic-info); }

/* ── Dashboard-Header: dunkler Hero → helle Odoo-Kopfzeile (überschreibt internal-modern.css) ── */
.db-header {
  background: var(--elmetic-card);
  color: var(--elmetic-text);
  border: 1px solid var(--elmetic-border);
  box-shadow: var(--sh-shadow-sm);
  padding: 18px 22px;
}
.db-header::before { display: none; }                 /* roter Glow-Kreis weg */
.db-greeting { color: var(--elmetic-text); font-size: 20px; }
.db-date { color: var(--elmetic-muted); }
.db-qa-btn {
  background: var(--elmetic-card);
  border: 1px solid var(--elmetic-border-strong);
  color: var(--elmetic-text-2);
}
.db-qa-btn:hover { background: var(--elmetic-bg-soft); border-color: var(--elmetic-red); color: var(--elmetic-red); }

/* ── Modals / Dialoge: helles Odoo-Sheet ─────────────────────────────── */
.modal, .dialog {
  border-radius: var(--sh-radius-lg);
  border: 1px solid var(--elmetic-border);
  box-shadow: var(--sh-shadow-lg);
}
.modal-actions, .dialog-footer { border-top: 1px solid var(--elmetic-border); }

/* ── Form-Inputs: ruhige Felder, roter Fokus ─────────────────────────── */
.ui-input, .ui-textarea, .input, .select, .textarea {
  border-radius: var(--sh-radius-sm);
  border: 1px solid var(--elmetic-border-strong);
  font-size: .88rem;
}
.ui-form-card { border-radius: var(--sh-radius-md); border: 1px solid var(--elmetic-border); }

/* ════════════════ ALLGEMEINE POLITUR (alles schöner) ════════════════════ */

/* Sanfte Übergänge auf interaktiven Elementen — wirkt „premium" */
.btn, .sh-chip, .chip, .db-kpi, .kpi-card, .db-qa-btn, .panel, .sh-card, .db-card,
#sidebarNavList a, .ue-toolbar__btn, .data-table tbody tr, .sh-table tbody tr {
  transition: background .14s ease, border-color .14s ease, box-shadow .14s ease, color .14s ease, transform .14s ease;
}

/* Dünne, dezente Odoo-Scrollbars überall */
* { scrollbar-width: thin; scrollbar-color: var(--elmetic-border-strong) transparent; }
*::-webkit-scrollbar { width: 9px; height: 9px; }
*::-webkit-scrollbar-thumb { background: var(--elmetic-border-strong); border-radius: 999px; border: 2px solid transparent; background-clip: padding-box; }
*::-webkit-scrollbar-thumb:hover { background: var(--elmetic-muted-2); background-clip: padding-box; }
*::-webkit-scrollbar-track { background: transparent; }

/* Klarere Typo-Hierarchie */
.page-header h1, .sh-header h1, .db-greeting { letter-spacing: -.02em; }
.db-section-title, .sh-section-title { font-size: .95rem; font-weight: 700; letter-spacing: -.01em; color: var(--elmetic-text); }

/* Sektions-Köpfe (Listen-/Karten-Überschriften) klar abgesetzt */
.db-section-head, .sh-section-head { border-bottom: 1px solid var(--elmetic-border); padding-bottom: 8px; margin-bottom: 10px; }
.db-section-link, .sh-section-link, .db-empty-action { color: var(--elmetic-red); font-weight: 600; text-decoration: none; }
.db-section-link:hover, .sh-section-link:hover, .db-empty-action:hover { text-decoration: underline; }

/* Karten: zarter Hover-Lift */
.panel:hover, .sh-card:hover, .db-card:hover { box-shadow: var(--sh-shadow-md); }

/* Leerzustände freundlicher */
.db-empty, .sh-empty__title { color: var(--elmetic-text-2); font-weight: 600; }
.db-empty-sub, .sh-empty__sub, .db-empty-state { color: var(--elmetic-muted); }

/* Badges: weichere, getönte Odoo-Pillen (statt knallig) */
.status-badge--success, .badge-success, .sh-badge--success, .db-badge--ok { background: var(--elmetic-success-bg, #dcfce7); color: #15803d; }
.status-badge--warning, .badge-warning, .sh-badge--warning, .db-badge--warn { background: var(--elmetic-warning-bg, #fef3c7); color: #b45309; }
.status-badge--danger,  .badge-danger,  .sh-badge--danger,  .db-badge--danger { background: var(--elmetic-danger-bg, #fee2e2); color: #b91c1c; }
.status-badge--info,    .badge-info,    .sh-badge--info,    .db-badge--info { background: var(--elmetic-info-bg, #dbeafe); color: #1d4ed8; }
.status-badge--neutral, .badge-neutral, .sh-badge--neutral, .db-badge--neutral { background: var(--elmetic-bg-soft, #f0f1f3); color: var(--elmetic-muted, #6b7280); }

/* Einheitlicher, sanfter Fokus-Ring (Politur + Barrierefreiheit) */
.ui-input:focus, .ui-textarea:focus, .input:focus, .select:focus, .textarea:focus,
.search-input:focus, .sidebar-search-input:focus, .btn:focus-visible {
  outline: none; box-shadow: 0 0 0 3px var(--elmetic-red-glow, rgba(231,61,37,.18));
}

/* Topbar: ruhiger; KI-/Glocken-Bereich sauber */
.topbar { box-shadow: 0 1px 0 var(--elmetic-border); }

/* Detail-Editor-Toolbar konsistent zur hellen Odoo-Kopfzeile */
.ue-toolbar.sh-cp { background: var(--elmetic-card); }
.ue-toolbar__btn { border-radius: var(--sh-radius-sm); }

/* ════════════════ ODOO-KANBAN (Listen als Karten-Spalten) ════════════════ */

/* Segmentierter Ansicht-Umschalter (Liste / Kanban) im Control-Panel */
.sh-view-toggle { display: inline-flex; border: 1px solid var(--elmetic-border-strong); border-radius: var(--sh-radius-sm); overflow: hidden; }
.sh-view-toggle button {
  border: none; background: var(--elmetic-card); color: var(--elmetic-muted);
  padding: 6px 11px; cursor: pointer; font-size: 1rem; line-height: 1;
  transition: background .12s ease, color .12s ease;
}
.sh-view-toggle button + button { border-left: 1px solid var(--elmetic-border-strong); }
.sh-view-toggle button:hover { background: var(--elmetic-bg-soft); color: var(--elmetic-text-2); }
.sh-view-toggle button.active { background: var(--elmetic-red); color: #fff; }

/* Board: horizontale Spalten, Odoo-Scroll */
.sh-kanban-wrap { margin-bottom: 14px; }
.sh-kanban { display: flex; gap: 14px; overflow-x: auto; padding: 2px 2px 12px; align-items: flex-start; }
.sh-kanban__col {
  flex: 0 0 288px; max-width: 288px;
  background: var(--elmetic-bg-soft);
  border: 1px solid var(--elmetic-border);
  border-radius: var(--sh-radius-md);
  display: flex; flex-direction: column;
  max-height: calc(100vh - 300px);
}
.sh-kanban__col-head {
  padding: 9px 12px;
  border-bottom: 1px solid var(--elmetic-border);
  border-top: 3px solid var(--elmetic-muted-2);
  border-radius: var(--sh-radius-md) var(--sh-radius-md) 0 0;
  display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
}
.sh-kanban__col--info    .sh-kanban__col-head { border-top-color: var(--elmetic-info); }
.sh-kanban__col--warning .sh-kanban__col-head { border-top-color: var(--elmetic-warning); }
.sh-kanban__col--success .sh-kanban__col-head { border-top-color: var(--elmetic-success); }
.sh-kanban__col--danger  .sh-kanban__col-head { border-top-color: var(--elmetic-danger); }
.sh-kanban__col--neutral .sh-kanban__col-head { border-top-color: var(--elmetic-muted-2); }
.sh-kanban__col-title { font-weight: 700; font-size: .85rem; color: var(--elmetic-text); }
.sh-kanban__col-meta { font-size: .72rem; color: var(--elmetic-muted); white-space: nowrap; text-align: right; }
.sh-kanban__col-sum { font-weight: 700; color: var(--elmetic-text-2); }
.sh-kanban__col-body { padding: 10px; display: flex; flex-direction: column; gap: 8px; overflow-y: auto; }
.sh-kanban__col-empty { padding: 16px 8px; text-align: center; color: var(--elmetic-muted-2); font-size: .8rem; }

/* Karte */
.sh-kanban__card {
  display: block;
  background: var(--elmetic-card);
  border: 1px solid var(--elmetic-border);
  border-radius: var(--sh-radius-sm);
  padding: 10px 12px;
  text-decoration: none; color: inherit;
  box-shadow: var(--sh-shadow-sm);
  transition: box-shadow .14s ease, transform .14s ease, border-color .14s ease;
}
.sh-kanban__card:hover { box-shadow: var(--sh-shadow-md); transform: translateY(-1px); border-color: var(--elmetic-border-strong); }
.sh-kanban__card-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 5px; }
.sh-kanban__card-no { font-weight: 700; font-size: .8rem; color: var(--elmetic-text); }
.sh-kanban__card-title {
  font-size: .86rem; color: var(--elmetic-text-2); font-weight: 600; line-height: 1.3; margin-bottom: 3px;
  overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.sh-kanban__card-customer { font-size: .78rem; color: var(--elmetic-muted); margin-bottom: 8px; }
.sh-kanban__card-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; border-top: 1px solid var(--elmetic-border); padding-top: 6px; }
.sh-kanban__card-amount { font-weight: 700; font-size: .84rem; color: var(--elmetic-text); }
.sh-kanban__card-date { font-size: .72rem; color: var(--elmetic-muted); }

/* ════════════ PERSONALISIERBARES DASHBOARD (DashboardManager-Shell) ════════════
   Die Widget-Inhalte (.dw-kpi-*/.dw-table/.dw-list) sind bereits in dashboard.css
   gestylt. Hier fehlte bisher die SHELL (Grid/Karte/Edit-Leiste/Spinner/Drop-Zone)
   + der Widget-PICKER (.dwp-*). Odoo-Look, nutzt --elmetic-*-Tokens. */

/* Kopf + Aktionen */
.dw-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.dw-header-actions { display: flex; align-items: center; gap: 8px; }

/* Edit-Leiste (Bearbeitungsmodus) */
.dw-edit-bar { background: var(--elmetic-card); border: 1px solid var(--elmetic-border); border-left: 3px solid var(--elmetic-red); border-radius: var(--sh-radius-md); margin-bottom: 14px; box-shadow: var(--sh-shadow-sm); }
.dw-edit-bar.hidden { display: none; }
.dw-edit-bar-inner { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; flex-wrap: wrap; }
.dw-edit-hint { font-size: .84rem; color: var(--elmetic-text-2); }
.dw-edit-actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* Grid: 4 Spalten, Breite via --dw-col-span, Höhe via --dw-row-span (feste Zeilenhöhe → einheitliche, aufgeräumte Kacheln; Inhalt scrollt intern) */
.dw-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; grid-auto-flow: row dense; grid-auto-rows: 168px; }
.dw-card {
  grid-column: span var(--dw-col-span, 2);
  grid-row: span var(--dw-row-span, 1);
  background: var(--elmetic-card);
  border: 1px solid var(--elmetic-border-strong);
  border-radius: var(--sh-radius-md);
  box-shadow: var(--sh-shadow-md);
  display: flex; flex-direction: column; overflow: hidden; position: relative;
  transition: box-shadow .14s ease, transform .14s ease, border-color .14s ease;
}
.dw-card:hover { box-shadow: var(--sh-shadow-lg); border-color: var(--elmetic-muted-2); }
.dw-card-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 9px 13px; border-bottom: 1px solid var(--elmetic-border); }
.dw-card-title { font-weight: 700; font-size: .88rem; color: var(--elmetic-text); letter-spacing: -.01em; display: flex; align-items: center; gap: 5px; }
.dw-card-body { padding: 11px 13px; flex: 1; overflow: auto; }
.dw-card-loading { display: flex; align-items: center; justify-content: center; min-height: 70px; }
.dw-spinner { width: 22px; height: 22px; border: 2.5px solid var(--elmetic-border-strong); border-top-color: var(--elmetic-red); border-radius: 50%; animation: dw-spin .7s linear infinite; }
@keyframes dw-spin { to { transform: rotate(360deg); } }

/* Edit-Modus: Karten wirken "fassbar" */
.dw-edit-mode .dw-card { border-style: dashed; border-color: var(--elmetic-border-strong); cursor: grab; }
.dw-edit-mode .dw-card:active { cursor: grabbing; }
.dw-card--dragging { opacity: .45; }
.dw-card--drag-over { outline: 2px dashed var(--elmetic-red); outline-offset: 2px; }

/* Edit-Overlay (Entfernen + Drag-Handle) */
.dw-card-edit-overlay { position: absolute; top: 6px; right: 6px; display: flex; align-items: center; gap: 6px; z-index: 3; }
.dw-card-remove { width: 22px; height: 22px; border-radius: 50%; border: none; background: var(--elmetic-danger, #dc2626); color: #fff; font-size: 12px; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--sh-shadow-sm); }
.dw-card-remove:hover { filter: brightness(.92); }
.dw-card-drag-handle { color: var(--elmetic-muted); cursor: grab; font-size: 15px; user-select: none; padding: 0 2px; }

/* Größen-Steuerung */
.dw-size-controls { display: inline-flex; gap: 2px; }
.dw-size-btn { width: 22px; height: 22px; border: 1px solid var(--elmetic-border-strong); background: var(--elmetic-card); color: var(--elmetic-text-2); border-radius: var(--sh-radius-xs); cursor: pointer; font-size: 10px; line-height: 1; display: inline-flex; align-items: center; justify-content: center; }
.dw-size-btn:hover { background: var(--elmetic-bg-soft); border-color: var(--elmetic-red); color: var(--elmetic-red); }

/* Drop-Zone am Ende */
.dw-drop-zone { grid-column: 1 / -1; border: 2px dashed var(--elmetic-border-strong); border-radius: var(--sh-radius-md); min-height: 90px; display: flex; align-items: center; justify-content: center; color: var(--elmetic-muted); font-size: .85rem; }
.dw-drop-zone--over { border-color: var(--elmetic-red); background: var(--elmetic-red-glow, rgba(231,61,37,.12)); color: var(--elmetic-red); }

/* Leerzustand in Widgets */
.dw-card .dw-empty, .dw-empty--error { color: var(--elmetic-muted); font-size: .85rem; text-align: center; padding: 12px 6px; }
.dw-empty--error { color: var(--elmetic-danger, #dc2626); }
.dw-list-sub { display: block; font-size: .78rem; color: var(--elmetic-muted); }
.dw-table-wrap { overflow: auto; }
/* KPI-Widget-Body: Value/Label waren inline-Spans (→ „15OFFENE AUFTRÄGE") → stapeln */
.dw-kpi-value, .dw-kpi-label, .dw-kpi-sub { display: block; }

/* Widget-Picker-Modal */
.dwp-modal-overlay { position: fixed; inset: 0; background: rgba(16, 24, 40, .45); z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 22px; }
.dwp-modal { background: var(--elmetic-card); border: 1px solid var(--elmetic-border); border-radius: var(--sh-radius-lg); box-shadow: var(--sh-shadow-lg); width: 780px; max-width: 96vw; max-height: 88vh; display: flex; flex-direction: column; overflow: hidden; }
.dwp-modal-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--elmetic-border); }
.dwp-modal-header h3 { margin: 0; font-size: 1.05rem; font-weight: 700; color: var(--elmetic-text); }
.dwp-close-btn { width: 30px; height: 30px; border: none; background: transparent; color: var(--elmetic-muted); font-size: 18px; cursor: pointer; border-radius: var(--sh-radius-sm); line-height: 1; }
.dwp-close-btn:hover { background: var(--elmetic-bg-soft); color: var(--elmetic-text); }
.dwp-modal-toolbar { padding: 12px 18px; border-bottom: 1px solid var(--elmetic-border); }
.dwp-search { width: 100%; border: 1px solid var(--elmetic-border-strong); border-radius: var(--sh-radius-sm); padding: 8px 12px; font-size: .9rem; }
.dwp-modal-body { padding: 16px 18px; overflow: auto; }
.dwp-category { margin-bottom: 18px; }
.dwp-category--empty { display: none; }
.dwp-category-title { font-size: .73rem; text-transform: uppercase; letter-spacing: .04em; color: var(--elmetic-muted); font-weight: 700; margin: 0 0 8px; }
.dwp-widget-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(216px, 1fr)); gap: 10px; }
.dwp-widget-card { text-align: left; border: 1px solid var(--elmetic-border); border-radius: var(--sh-radius-md); padding: 10px 12px; background: var(--elmetic-card); cursor: pointer; display: flex; flex-direction: column; gap: 3px; transition: border-color .12s ease, box-shadow .12s ease; position: relative; }
.dwp-widget-card:hover { border-color: var(--elmetic-red); box-shadow: var(--sh-shadow-sm); }
.dwp-widget-card--added { opacity: .55; cursor: default; }
.dwp-widget-card--added:hover { border-color: var(--elmetic-border); box-shadow: none; }
.dwp-widget-card--hidden { display: none; }
.dwp-widget-title { font-weight: 600; font-size: .86rem; color: var(--elmetic-text); }
.dwp-widget-desc { font-size: .76rem; color: var(--elmetic-muted); line-height: 1.35; }
.dwp-widget-size { font-size: .7rem; color: var(--elmetic-muted-2); }
.dwp-widget-badge { font-size: .68rem; color: var(--elmetic-success, #15803d); font-weight: 600; }
.dwp-empty { color: var(--elmetic-muted); text-align: center; padding: 22px; }

/* Mobile: Grid kollabieren, Kacheln nach Inhalt (kein festes Zeilen-Raster) */
@media (max-width: 1100px) { .dw-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 680px) { .dw-grid { grid-template-columns: 1fr; grid-auto-rows: auto; } .dw-card { grid-column: 1 / -1; grid-row: auto; min-height: 150px; } }

/* ════════════ ODOO-SEARCHVIEW: aktive Filter als Facetten-Pillen ════════════ */
.sh-facets { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0 0 12px; }
.sh-facets:empty { display: none; }
.sh-facets__label { font-size: .78rem; color: var(--elmetic-muted); font-weight: 600; }
.sh-facet {
  display: inline-flex; align-items: center; gap: 5px;
  background: var(--elmetic-red-glow, rgba(231,61,37,.1));
  color: var(--elmetic-red-dark, #c92f1b);
  border: 1px solid var(--elmetic-red);
  border-radius: 999px; padding: 3px 5px 3px 11px;
  font-size: .78rem; font-weight: 500;
}
.sh-facet__k { font-weight: 700; }
.sh-facet__x {
  border: none; background: transparent; color: var(--elmetic-red-dark, #c92f1b);
  cursor: pointer; font-size: 15px; line-height: 1; width: 18px; height: 18px;
  display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; padding: 0;
}
.sh-facet__x:hover { background: var(--elmetic-red); color: #fff; }
.sh-facet-clear-all { border: none; background: transparent; color: var(--elmetic-muted); cursor: pointer; font-size: .76rem; text-decoration: underline; padding: 2px 4px; }
.sh-facet-clear-all:hover { color: var(--elmetic-red); }

/* ════════════ ODOO GROUP-BY: klappbare Gruppen-Header in Tabellen ════════════ */
tr.sh-group-row { background: var(--elmetic-bg-soft); cursor: pointer; }
tr.sh-group-row td { padding: 8px 14px; border-top: 1px solid var(--elmetic-border-strong); border-bottom: 1px solid var(--elmetic-border-strong); font-size: .84rem; color: var(--elmetic-text); }
tr.sh-group-row:hover td { background: #eef1f5; }
.sh-group-caret { display: inline-block; width: 13px; color: var(--elmetic-muted); transition: transform .12s ease; }
tr.sh-group-row--collapsed .sh-group-caret { transform: rotate(-90deg); }
.sh-group-count { display: inline-block; margin-left: 8px; background: var(--elmetic-card); border: 1px solid var(--elmetic-border-strong); border-radius: 999px; padding: 0 8px; font-size: .72rem; font-weight: 700; color: var(--elmetic-text-2); }
.sh-group-sum { float: right; font-weight: 700; color: var(--elmetic-text-2); }

/* ════════════ GESPEICHERTE FILTER / FAVORITEN ════════════ */
.sh-fav-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0 0 10px; }
.sh-fav-bar:empty { display: none; }
.sh-fav__label { font-size: .78rem; color: var(--elmetic-muted); font-weight: 600; }
.sh-fav__empty { font-size: .78rem; color: var(--elmetic-muted-2); }
.sh-fav { display: inline-flex; align-items: stretch; border: 1px solid var(--elmetic-border-strong); border-radius: var(--sh-radius-sm); overflow: hidden; background: var(--elmetic-card); }
.sh-fav__apply { border: none; background: transparent; color: var(--elmetic-text-2); font-size: .78rem; font-weight: 600; padding: 4px 9px; cursor: pointer; }
.sh-fav__apply:hover { background: var(--elmetic-bg-soft); color: var(--elmetic-red); }
.sh-fav__x { border: none; border-left: 1px solid var(--elmetic-border); background: transparent; color: var(--elmetic-muted); cursor: pointer; font-size: 13px; line-height: 1; padding: 0 7px; }
.sh-fav__x:hover { background: var(--elmetic-danger, #dc2626); color: #fff; }
.sh-fav__save { border: 1px dashed var(--elmetic-border-strong); background: transparent; color: var(--elmetic-muted); border-radius: var(--sh-radius-sm); font-size: .76rem; padding: 4px 10px; cursor: pointer; }
.sh-fav__save:hover { border-color: var(--elmetic-red); color: var(--elmetic-red); }

/* ════════════ KANBAN DRAG→STATUS ════════════ */
.sh-kanban__card[draggable="true"] { cursor: grab; }
.sh-kanban__card--dragging { opacity: .5; }
.sh-kanban__col--drop { outline: 2px dashed var(--elmetic-red); outline-offset: -2px; }
.sh-kanban__col--drop .sh-kanban__col-body { background: var(--elmetic-red-glow, rgba(231,61,37,.06)); }

/* ════════════ ODOO SMART-BUTTONS (Detailseiten-Kopf) ════════════ */
.sh-smartbtns { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 14px; }
.sh-smartbtn { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 1px; min-width: 112px; background: var(--elmetic-card); border: 1px solid var(--elmetic-border-strong); border-radius: var(--sh-radius-md); padding: 8px 14px; cursor: pointer; text-align: left; box-shadow: var(--sh-shadow-sm); transition: border-color .12s ease, box-shadow .12s ease, transform .12s ease; }
button.sh-smartbtn:hover { border-color: var(--elmetic-red); box-shadow: var(--sh-shadow-md); transform: translateY(-1px); }
.sh-smartbtn--info { cursor: default; }
.sh-smartbtn__num { font-size: 1.25rem; font-weight: 800; color: var(--elmetic-text); letter-spacing: -.02em; line-height: 1.1; }
.sh-smartbtn__lbl { font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; color: var(--elmetic-muted); font-weight: 600; }

/* ════════════ ⌘K BEFEHLS-/NAVIGATIONS-PALETTE ════════════ */
.sh-cmdk-overlay { position: fixed; inset: 0; background: rgba(16, 24, 40, .45); z-index: 1100; display: flex; align-items: flex-start; justify-content: center; padding: 12vh 16px 16px; }
.sh-cmdk-overlay.hidden { display: none; }
.sh-cmdk { width: 600px; max-width: 96vw; background: var(--elmetic-card); border: 1px solid var(--elmetic-border); border-radius: var(--sh-radius-lg); box-shadow: var(--sh-shadow-lg); overflow: hidden; display: flex; flex-direction: column; max-height: 70vh; }
.sh-cmdk__input { border: none; border-bottom: 1px solid var(--elmetic-border); padding: 14px 18px; font-size: 1rem; outline: none; color: var(--elmetic-text); background: var(--elmetic-card); }
.sh-cmdk__results { overflow-y: auto; padding: 6px; }
.sh-cmdk__cat { font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; color: var(--elmetic-muted); font-weight: 700; padding: 8px 10px 4px; }
.sh-cmdk__row { display: flex; align-items: center; gap: 10px; width: 100%; border: none; background: transparent; border-radius: var(--sh-radius-sm); padding: 8px 10px; cursor: pointer; text-align: left; color: var(--elmetic-text-2); font-size: .9rem; }
.sh-cmdk__row.is-active { background: var(--elmetic-red); color: #fff; }
.sh-cmdk__row.is-active .sh-cmdk__row-sub, .sh-cmdk__row.is-active .sh-cmdk__row-ic { color: rgba(255, 255, 255, .85); }
.sh-cmdk__row-ic { width: 18px; text-align: center; color: var(--elmetic-muted); font-weight: 700; }
.sh-cmdk__row-lbl { flex: 1; font-weight: 500; }
.sh-cmdk__row-sub { font-size: .76rem; color: var(--elmetic-muted); }
.sh-cmdk__empty { padding: 22px; text-align: center; color: var(--elmetic-muted); }
.sh-cmdk__hint { display: flex; justify-content: space-between; gap: 12px; padding: 8px 16px; border-top: 1px solid var(--elmetic-border); font-size: .72rem; color: var(--elmetic-muted-2); background: var(--elmetic-bg-soft); }

/* ════════════ MULTI-SELECT (Listen) ════════════ */
.sh-selcell { width: 36px; text-align: center; }
.sh-selcell input { cursor: pointer; }
.sh-batchbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; background: var(--elmetic-card); border: 1px solid var(--elmetic-border); border-left: 3px solid var(--elmetic-red); border-radius: var(--sh-radius-md); padding: 8px 14px; margin-bottom: 12px; box-shadow: var(--sh-shadow-sm); }
.sh-batchbar__lbl { font-size: .85rem; color: var(--elmetic-text-2); }
.sh-batchbar__lbl strong { color: var(--elmetic-red); }
.sh-batchbar__btns { display: flex; gap: 8px; flex-wrap: wrap; }
