﻿/* =========================================================================
   OMNIFIN CRM — Components
   Strict BEM. Components read tokens only; never literal values.
   Block naming: omni-<block>
   ========================================================================= */

/* ===================================================================
   OMNIFIN LEGACY COMPAT LAYER
   Alte Klassen-Namen → gleiche visuelle Ausgabe wie neue BEM-Klassen.
   Wird entfernt sobald alle PHP-Views migriert sind.
   =================================================================== */

/* Legacy token aliases — maps old var() names to new design-tokens */
:root {
  --text-muted:   var(--text-tertiary);
  --text-dim:     var(--text-secondary);   /* dashboard compat */
  --bg-card:      var(--bg-surface);
  --grad:         var(--brand-gradient);
  --border-color: var(--border);
  --color-accent: var(--accent);
  --radius:       var(--radius-md);   /* legacy shorthand */

  /* Semantic shortcuts used in views */
  --error:   var(--status-danger);
  --warning: var(--status-warning);
  --success: var(--status-success);
  --info:    var(--status-info);

  /* Accent transparent bg — bulk bars etc. */
  --accent-light: oklch(62% 0.18 228 / 0.07);
}

/* Buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); padding: 0 var(--space-4); height: var(--control-h-md); font-size: var(--fs-sm); font-weight: var(--fw-medium); font-family: var(--font-sans); border-radius: var(--radius-md); border: 1px solid transparent; cursor: pointer; white-space: nowrap; text-decoration: none; transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out); background: var(--bg-elevated); color: var(--text-primary); border-color: var(--border); }
.btn:hover { background: var(--bg-hover); color: var(--text-primary); border-color: var(--border-strong); }
.btn:active { transform: translateY(1px); }
.btn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.btn:disabled,
.btn[aria-disabled="true"] { opacity: 1; cursor: not-allowed; background: var(--bg-elevated); color: var(--text-secondary); border-color: var(--border); box-shadow: none; transform: none; }
.btn-primary, .btn.btn-primary { background: var(--accent); color: var(--accent-contrast); border-color: transparent; }
.btn-primary:hover { background: var(--accent-strong); color: var(--accent-contrast); border-color: transparent; }
.btn-secondary { background: var(--bg-elevated); color: var(--text-primary); border-color: var(--border); }
.btn-ghost { background: transparent; color: var(--text-secondary); border-color: transparent; }
.btn-ghost:hover { background: var(--bg-hover); color: var(--text-primary); }
.btn-danger { background: var(--status-danger); color: #fff; border-color: transparent; }
.btn-danger:hover { background: var(--status-danger); color: #fff; border-color: transparent; filter: brightness(.92); }
.btn:disabled:hover,
.btn[aria-disabled="true"]:hover { background: var(--bg-elevated); color: var(--text-secondary); border-color: var(--border); filter: none; }
.btn-outline { background: transparent; color: var(--accent); border-color: var(--accent); }
.btn-outline:hover { background: var(--accent-soft); }
.btn-sm { height: var(--control-h-sm); padding: 0 var(--space-3); font-size: var(--fs-xs); }
.btn-lg { height: var(--control-h-lg); padding: 0 var(--space-6); font-size: var(--fs-md); }
.btn-icon { width: var(--control-h-md); height: var(--control-h-md); padding: 0; }
.btn-icon.btn-sm { width: var(--control-h-sm); height: var(--control-h-sm); }

/* Cards */
.card { background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius-xl); overflow: hidden; }
/* No hard borders — tonal separation via inset shadow (no layout shift) */
.card-header { padding: var(--space-5) var(--space-6); display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.card-title { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--text-primary); display: flex; align-items: center; gap: var(--space-2); }
.card-subtitle { font-size: var(--fs-sm); color: var(--text-secondary); margin-top: var(--space-1); }
.card-body { padding: var(--space-6); }
.card-footer { padding: var(--space-4) var(--space-6); background: var(--bg-elevated); display: flex; align-items: center; justify-content: flex-end; gap: var(--space-2); border-radius: 0 0 var(--radius-xl) var(--radius-xl); }

/* Forms */
.form-group { display: flex; flex-direction: column; gap: var(--space-1); margin-bottom: var(--space-4); }
.form-label { font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--text-secondary); }
.form-control, .form-input { display: block; width: 100%; height: var(--control-h-md); padding: 0 var(--space-3); background: var(--bg-inset); border: 1px solid var(--border); border-radius: var(--radius-md); color: var(--text-primary); font-size: var(--fs-sm); font-family: var(--font-sans); transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out); }
.form-control:focus, .form-input:focus { outline: none; border-color: var(--accent); box-shadow: var(--shadow-focus); }
.form-control::placeholder, .form-input::placeholder { color: var(--text-tertiary); }
.form-select { height: var(--control-h-md); padding: 0 var(--space-3); background: var(--bg-inset); border: 1px solid var(--border); border-radius: var(--radius-md); color: var(--text-primary); font-size: var(--fs-sm); font-family: var(--font-sans); }
textarea.form-control { height: auto; min-height: 80px; padding: var(--space-2) var(--space-3); resize: vertical; }
.form-hint { font-size: var(--fs-xs); color: var(--text-tertiary); }
.form-actions { display: flex; align-items: center; justify-content: flex-end; gap: var(--space-2); margin-top: var(--space-4); }
.form-section-title { font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--text-tertiary); padding: var(--space-4) 0 var(--space-2); }

/* Tables */
.data-table, table.table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
.data-table th, table.table th { padding: var(--space-2) var(--space-4); background: var(--bg-elevated); color: var(--text-secondary); font-weight: var(--fw-medium); font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: var(--tracking-caps); text-align: left; border-bottom: 1px solid var(--border); white-space: nowrap; position: sticky; top: 0; z-index: var(--z-raised); }
.data-table td, table.table td { padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); color: var(--text-primary); vertical-align: middle; }
.data-table tr:hover td, table.table tr:hover td { background: var(--bg-hover); }
.table-link { color: var(--accent); text-decoration: none; font-weight: var(--fw-medium); }
.table-link:hover { text-decoration: underline; }
.table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.filter-row, .filter-row-card { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-3) var(--space-4); background: var(--bg-surface); border-bottom: 1px solid var(--border); flex-wrap: wrap; }

/* Badges */
.badge { display: inline-flex; align-items: center; height: 20px; padding: 0 var(--space-2); border-radius: var(--radius-pill); font-size: var(--fs-2xs); font-weight: var(--fw-semibold); white-space: nowrap; }
.badge-success { background: var(--status-success-soft); color: var(--status-success); }
.badge-warning { background: var(--status-warning-soft); color: var(--status-warning); }
.badge-error, .badge-danger { background: var(--status-danger-soft); color: var(--status-danger); }
.badge-info { background: var(--status-info-soft); color: var(--status-info); }
.badge-brand, .badge-accent { background: var(--accent-soft); color: var(--accent); }
.badge-neutral { background: var(--bg-elevated); color: var(--text-secondary); border: 1px solid var(--border); }

/* Alerts */
.alert { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-4); border-radius: var(--radius-md); font-size: var(--fs-sm); margin-bottom: var(--space-4); }
.alert-success { background: var(--status-success-soft); color: var(--status-success); }
.alert-warning { background: var(--status-warning-soft); color: var(--status-warning); }
.alert-error, .alert-danger { background: var(--status-danger-soft); color: var(--status-danger); }
.alert-info { background: var(--status-info-soft); color: var(--status-info); }

/* Modals (legacy) */
.modal-overlay { position: fixed; inset: 0; z-index: var(--z-modal); background: rgb(0 0 0 / .55); backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; padding: var(--space-4); }
.modal-content { background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius-xl); box-shadow: var(--shadow-xl); width: 100%; max-width: 560px; max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; }
.modal-header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-5) var(--space-6); box-shadow: inset 0 -1px 0 var(--border); }
.modal-body { flex: 1; overflow-y: auto; padding: var(--space-6); }
.modal-footer { display: flex; align-items: center; justify-content: flex-end; gap: var(--space-2); padding: var(--space-4) var(--space-6); box-shadow: inset 0 1px 0 var(--border); background: var(--bg-elevated); }
.modal-close { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--radius-sm); background: transparent; border: none; cursor: pointer; color: var(--text-secondary); }
.modal-close:hover { background: var(--bg-hover); }

/* Modal-Backdrop (used by modal.js for dynamic confirm dialogs & slid-overs) */
.modal-backdrop { display: none; position: fixed; inset: 0; z-index: 2000; background: rgb(0 0 0 / .55); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); align-items: center; justify-content: center; padding: 1rem; }
.modal-backdrop.open { display: flex; }
.modal { background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius-xl, 12px); box-shadow: var(--shadow-xl); width: 100%; max-width: 560px; max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; }
.modal-sm { max-width: 400px; }
.modal .modal-body { padding: 1.5rem 1.5rem 1rem; text-align: center; }
.modal .modal-footer { display: flex; align-items: center; justify-content: flex-end; gap: .5rem; padding: 1rem 1.5rem; background: var(--bg-elevated); border-top: 1px solid var(--border); }

/* Confirm dialog (inside .modal-backdrop) */
.confirm-dialog .modal-footer { background: var(--bg-elevated); }
.confirm-dialog .btn { min-width: 96px; font-weight: var(--fw-semibold); }
.confirm-dialog .btn-danger:hover,
.confirm-dialog .btn-danger:focus-visible { background: var(--status-danger); color: #fff; border-color: transparent; filter: brightness(.88); }
.confirm-dialog .btn-secondary:hover,
.confirm-dialog .btn-secondary:focus-visible { background: var(--bg-hover); color: var(--text-primary); border-color: var(--border-strong); }
.confirm-icon { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 50%; margin: 0 auto .75rem; }
.confirm-icon.danger { background: rgba(239, 68, 68, .12); color: #ef4444; }
.confirm-icon.info { background: var(--accent-soft); color: var(--accent); }
.confirm-title { font-size: 1.05rem; font-weight: 700; color: var(--text-primary); margin-bottom: .35rem; }
.confirm-message { font-size: .875rem; color: var(--text-secondary); line-height: 1.5; margin: 0; }

/* Slideover-Backdrop */
.slideover-backdrop { display: none; position: fixed; inset: 0; z-index: 1900; }
.slideover-backdrop.open { display: block; }

/* KPI Cards */
.kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--space-4); }
.kpi-card { background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius-xl); padding: var(--space-5); }
.kpi-icon { width: 36px; height: 36px; border-radius: var(--radius-md); background: var(--accent-soft); display: flex; align-items: center; justify-content: center; color: var(--accent); margin-bottom: var(--space-3); }
.kpi-value { font-size: var(--fs-3xl); font-weight: var(--fw-bold); color: var(--text-primary); line-height: var(--lh-tight); }
.kpi-label { font-size: var(--fs-sm); color: var(--text-secondary); margin-top: var(--space-1); }
.kpi-trend { font-size: var(--fs-xs); font-weight: var(--fw-medium); margin-top: var(--space-2); display: flex; align-items: center; gap: var(--space-1); }

/* Tabs */
.tab-nav, .settings-tab-nav { display: flex; gap: var(--space-1); border-bottom: 1px solid var(--border); margin-bottom: var(--space-5); flex-wrap: wrap; }
.tab-item {
    display: inline-flex; align-items: center; gap: var(--space-2);
    padding: var(--space-3) var(--space-4);
    font-size: var(--fs-sm); font-weight: var(--fw-medium);
    color: var(--text-secondary);
    cursor: pointer;
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
    margin-bottom: -1px;
    transition: color var(--dur-fast) var(--ease-out),
                background var(--dur-fast) var(--ease-out),
                border-color var(--dur-fast) var(--ease-out);
    text-decoration: none;
    white-space: nowrap;
    user-select: none;
}
.tab-item:hover {
    color: var(--text-primary);
    background: var(--bg-hover);
}
.tab-item.active, .tab-item--active {
    color: var(--accent);
    border-bottom-color: var(--accent);
    font-weight: var(--fw-semibold);
    background: transparent;
}
.tab-item.active:hover, .tab-item--active:hover {
    background: var(--bg-hover);
}
.tab-item:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
    border-radius: var(--radius-sm);
}

/* Page Header */
.page-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-3); margin-bottom: var(--space-6); }
.page-header-left { display: flex; flex-direction: column; gap: var(--space-1); }
.page-title { font-size: var(--fs-2xl); font-weight: var(--fw-bold); color: var(--text-primary); letter-spacing: var(--tracking-tight); }
.page-subtitle { font-size: var(--fs-sm); color: var(--text-secondary); }
.page-actions { display: flex; align-items: center; gap: var(--space-2); flex-shrink: 0; }

/* Layout */
.app-wrapper { display: grid; grid-template-columns: var(--sidebar-width) 1fr; grid-template-rows: var(--topbar-height) 1fr; min-height: 100vh; }
.app-main { grid-row: 2; grid-column: 2; overflow: auto; background: var(--bg-base); }
.app-content { padding: var(--space-8) var(--space-8); width: 100%; max-width: 1500px; margin-left: 0; margin-right: auto; box-sizing: border-box; min-width: 0; }

/* Sidebar legacy */
.sidebar { grid-row: 1 / 3; grid-column: 1; background: var(--bg-sidebar); position: sticky; top: 0; height: 100vh; overflow: hidden; display: flex; flex-direction: column; border-right: 1px solid var(--border); }

/* Topbar legacy */
.topbar { grid-row: 1; grid-column: 2; background: var(--bg-topbar); backdrop-filter: blur(var(--topbar-blur)); -webkit-backdrop-filter: blur(var(--topbar-blur)); position: sticky; top: 0; z-index: var(--z-sticky); display: flex; align-items: center; gap: var(--space-3); padding: 0 var(--space-6); border-bottom: 1px solid var(--border); }

/* Timeline */
.timeline { list-style: none; padding: 0; margin: 0; }
.timeline-item { position: relative; padding: 0 0 var(--space-5) var(--space-8); }
.timeline-item::before { content: ''; position: absolute; left: 11px; top: 20px; bottom: 0; width: 1px; background: var(--border); }
.timeline-item:last-child::before { display: none; }
.timeline-dot { position: absolute; left: 0; top: 2px; width: 22px; height: 22px; border-radius: 50%; background: var(--bg-elevated); border: 2px solid var(--border); display: flex; align-items: center; justify-content: center; }
.timeline-content { font-size: var(--fs-sm); color: var(--text-primary); }
.timeline-meta { font-size: var(--fs-xs); color: var(--text-tertiary); margin-top: var(--space-1); }

/* Pagination */
.pagination { display: flex; align-items: center; gap: var(--space-1); }
.pagination-btn { display: inline-flex; align-items: center; justify-content: center; min-width: 32px; height: 32px; padding: 0 var(--space-2); border-radius: var(--radius-md); font-size: var(--fs-sm); font-weight: var(--fw-medium); cursor: pointer; background: transparent; border: 1px solid transparent; color: var(--text-secondary); transition: background var(--dur-fast) var(--ease-out); }
.pagination-btn:hover { background: var(--bg-hover); color: var(--text-primary); }
.pagination-btn.active { background: var(--accent-soft); color: var(--accent); border-color: var(--accent); }
.pagination-btn:disabled { opacity: .4; pointer-events: none; }

/* Dropdown */
.dropdown { position: relative; }
.dropdown-menu { display: none; position: absolute; top: calc(100% + var(--space-1)); right: 0; min-width: 180px; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); z-index: var(--z-popover); padding: var(--space-1); }
.dropdown.open > .dropdown-menu { display: block; }
.dropdown-item { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); font-size: var(--fs-sm); color: var(--text-primary); cursor: pointer; background: none; border: none; width: 100%; text-align: left; text-decoration: none; transition: background var(--dur-fast) var(--ease-out); }
.dropdown-item:hover { background: var(--bg-hover); }
.dropdown-item.danger { color: var(--status-danger); }
.dropdown-item.danger:hover { background: var(--status-danger-soft); }
.dropdown-divider { height: 1px; background: var(--border); margin: var(--space-1) 0; }

/* Misc */
.avatar { width: 32px; height: 32px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); display: flex; align-items: center; justify-content: center; font-size: var(--fs-sm); font-weight: var(--fw-semibold); flex-shrink: 0; }
.avatar-sm { width: 24px; height: 24px; font-size: var(--fs-2xs); }
.avatar-lg { width: 40px; height: 40px; font-size: var(--fs-md); }
.text-muted { color: var(--text-secondary); }
.text-tertiary { color: var(--text-tertiary); }
.text-sm { font-size: var(--fs-sm); }
.text-xs { font-size: var(--fs-xs); }
.text-2xs { font-size: var(--fs-2xs); }
.text-danger { color: var(--status-danger); }
.text-success { color: var(--status-success); }
.text-warning { color: var(--status-warning); }
.text-info    { color: var(--status-info); }
.text-accent { color: var(--accent); }
.text-sm-muted { font-size: var(--fs-xs); color: var(--text-tertiary); }
.nowrap       { white-space: nowrap; }
.truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* Filter-Row innerhalb von .card (Tabellen-Header → Filter → Daten-Tabelle) */
.card .omni-filter-row,
.omni-filter-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-5);
    background: var(--bg-surface);
    box-shadow: inset 0 -1px 0 var(--border);
}
.card .omni-filter-row .form-control,
.card .omni-filter-row .form-select,
.omni-filter-row .form-control,
.omni-filter-row .form-select {
    height: var(--control-h-md);
    flex: 0 0 auto;
}
.card .omni-filter-row .form-control[type="search"],
.omni-filter-row .form-control[type="search"] {
    flex: 1 1 220px;
    min-width: 200px;
    max-width: 360px;
}
.card .omni-filter-row .form-select,
.omni-filter-row .form-select {
    min-width: 160px;
    max-width: 200px;
}
.card .omni-filter-row > .btn:last-child,
.omni-filter-row > .btn:last-child {
    margin-left: auto;
}

/* Card-Footer-Info (ein-zeiliger muted Hinweis am Ende einer Card mit Tabelle) */
.card-footer-info {
    padding: var(--space-3) var(--space-5);
    font-size: var(--fs-xs);
    color: var(--text-tertiary);
    box-shadow: inset 0 1px 0 var(--border);
}

/* == END LEGACY COMPAT LAYER == */

/* ---------- Reset / base ------------------------------------------------ */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { font-family: var(--font-sans); font-size: var(--fs-md); line-height: var(--lh-normal); color: var(--text-primary); background: var(--bg-base); -webkit-font-smoothing: antialiased; }
body { min-height: 100vh; font-feature-settings: "ss01", "cv11"; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
input, textarea, select { font: inherit; color: inherit; }
[hidden] { display: none !important; }

/* ---- Global form element base: all corners rounded, consistent ---- */
input, textarea, select,
input[type="text"], input[type="email"], input[type="password"],
input[type="number"], input[type="search"], input[type="tel"],
input[type="url"], input[type="date"], input[type="time"],
input[type="datetime-local"], input[type="month"], input[type="week"],
button, [role="button"] {
  border-radius: var(--radius-md);
}
/* Smaller radius for checkboxes and radios */
input[type="checkbox"] { border-radius: var(--radius-sm); }
input[type="radio"]    { border-radius: var(--radius-pill); }

/* Ensure no element in the system ever has 0 or sharp corners unintentionally */
.omni-card, .omni-panel, .omni-modal, .omni-dropdown,
.omni-btn, .omni-badge, .omni-input, .omni-select,
.omni-tabs, .omni-tab, .omni-kpi, .omni-deal, .omni-thread,
.omni-message, .omni-table, .omni-table th, .omni-table td:first-child,
.omni-table td:last-child { border-radius: var(--radius-md); }

/* Table: only outer corners of first/last cells per row */
.omni-table tr:first-child th:first-child { border-radius: var(--radius-md) 0 0 0; }
.omni-table tr:first-child th:last-child  { border-radius: 0 var(--radius-md) 0 0; }
.omni-table tr:last-child  td:first-child { border-radius: 0 0 0 var(--radius-md); }
.omni-table tr:last-child  td:last-child  { border-radius: 0 0 var(--radius-md) 0; }
::selection { background: var(--accent-soft); color: var(--text-primary); }

/* ══ Skeleton Loading ═══════════════════════════════════════════════════════
   BEM: omn-skeleton  (not omni- — short prefix for utility classes)
   Usage:
     <div class="omn-skeleton omn-skeleton--text"></div>
     <div class="omn-skeleton omn-skeleton--circle"></div>
   Loading-state overlay:
     element.classList.add('omn-skeleton--loading')
   ═══════════════════════════════════════════════════════════════════════════ */

@keyframes omn-shimmer {
  0%   { background-position: -800px 0; }
  100% { background-position:  800px 0; }
}

/* Base pulse — apply to any placeholder element */
.omn-skeleton {
  background: linear-gradient(
    90deg,
    var(--bg-elevated) 25%,
    var(--bg-hover)    50%,
    var(--bg-elevated) 75%
  );
  background-size: 1600px 100%;
  animation: omn-shimmer 1.6s ease-in-out infinite;
  border-radius: var(--radius-sm);
  display: block;
}

/* ── Shape modifiers ─────────────────────────────────────────────────────── */
.omn-skeleton--text     { height: .875em; width: 100%; }
.omn-skeleton--text-sm  { height: .75em;  width: 70%; }
.omn-skeleton--text-xs  { height: .7em;   width: 45%; }
.omn-skeleton--heading  { height: 1.35em; width: 55%; }
.omn-skeleton--circle   { border-radius: 50%; width: 2.5rem; height: 2.5rem; flex-shrink: 0; }
.omn-skeleton--avatar   { border-radius: 50%; width: 3rem;   height: 3rem;   flex-shrink: 0; }
.omn-skeleton--rect     { width: 100%; height: 100%; border-radius: 0; }
.omn-skeleton--pill     { height: 1.375rem; border-radius: var(--radius-pill); }
.omn-skeleton--btn      { height: 2rem; width: 6rem; border-radius: var(--radius-md); }

/* KPI card placeholders */
.omn-skeleton--kpi-value { height: 2.25rem; width: 80px; }
.omn-skeleton--kpi-label { height: .72em;   width: 100px; }

/* Table row placeholder — wrap a <tr> with these <td> children */
.omn-skeleton--table-row td {
  padding: .6rem .85rem;
  border-bottom: 1px solid var(--border);
}

/* Gap helper (stack multiple skeleton lines) */
.omn-skeleton-stack { display: flex; flex-direction: column; gap: .55rem; padding: .6rem 0; }

/* ── Full-element loading overlay ────────────────────────────────────────── */
/* Add .omn-skeleton--loading to ANY container during async operations.
   A translucent shimmer sweeps over the existing content.               */
.omn-skeleton--loading {
  position: relative;
  overflow: hidden;
  pointer-events: none;
  user-select: none;
}
.omn-skeleton--loading::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    transparent        0%,
    rgba(255,255,255,.06) 30%,
    rgba(var(--accent-rgb),.05) 50%,
    rgba(255,255,255,.06) 70%,
    transparent        100%
  );
  background-size: 400% 100%;
  animation: omn-shimmer 1.4s ease-in-out infinite;
  pointer-events: none;
  z-index: 5;
  border-radius: inherit;
}
[data-theme="light"] .omn-skeleton--loading::after {
  background: linear-gradient(
    90deg,
    transparent          0%,
    rgba(0,0,0,.04)      30%,
    rgba(var(--accent-rgb),.06) 50%,
    rgba(0,0,0,.04)      70%,
    transparent          100%
  );
  background-size: 400% 100%;
}

/* Scrollbars */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: var(--radius-pill); border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background: var(--text-tertiary); background-clip: padding-box; border: 2px solid transparent; }
::-webkit-scrollbar-track { background: transparent; }

/* ---------- Utility: monospace numerics -------------------------------- */
.mono, .num { font-family: var(--font-mono); font-variant-numeric: tabular-nums; letter-spacing: var(--tracking-tight); }

/* =========================================================================
   BLOCK: omni-app (shell)
   ========================================================================= */
.omni-app { display: grid; grid-template-columns: var(--sidebar-width) 1fr; grid-template-rows: var(--topbar-height) 1fr; min-height: 100vh; background: var(--bg-base); transition: grid-template-columns var(--dur-base) var(--ease-out); }
.omni-app--collapsed { grid-template-columns: var(--sidebar-width-collapsed) 1fr; }
.omni-app__sidebar { grid-row: 1 / 3; grid-column: 1; }
.omni-app__topbar  { grid-row: 1;     grid-column: 2; }
.omni-app__main    { grid-row: 2;     grid-column: 2; overflow: auto; }

/* =========================================================================
   BLOCK: omni-sidebar
   ========================================================================= */
/* ── Dark default sidebar ─────────────────────────────────── */
.omni-sidebar {
  background: linear-gradient(180deg, var(--bg-elevated) 0%, var(--bg-sidebar) 100%);
  border-right: 1px solid color-mix(in oklch, var(--accent) 8%, transparent);
  color: var(--text-primary);
  display: flex; flex-direction: column;
  position: sticky; top: 0; height: 100vh; overflow: hidden;
}
/* ── Light sidebar: pure white, no hard border, subtle shadow ─ */
[data-theme="light"] .omni-sidebar {
  background: var(--bg-sidebar);
  border-right: none;
  box-shadow: var(--sidebar-shadow-light);
}

.omni-sidebar__brand { display: flex; align-items: center; gap: var(--space-2); height: var(--topbar-height); padding: 0 var(--space-4); border-bottom: 1px solid var(--border); flex-shrink: 0; }
.omni-sidebar__logo { width: var(--sidebar-logo-size, 22px); height: var(--sidebar-logo-size, 22px); border-radius: var(--radius-sm); background: var(--brand-gradient); display: grid; place-items: center; color: #fff; font-family: var(--font-mono); font-weight: var(--fw-bold); font-size: 11px; box-shadow: 0 0 0 1px rgb(255 255 255 / 0.08) inset; }
.omni-sidebar__wordmark {
    font-family: var(--font-display);
    font-weight: var(--fw-bold);
    letter-spacing: var(--tracking-caps);
    font-size: var(--fs-sm);
    text-transform: uppercase;
    background: var(--brand-gradient, linear-gradient(135deg, var(--accent), var(--accent-2)));
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.omni-sidebar__wordmark b { font-weight: inherit; background: inherit; -webkit-background-clip: inherit; background-clip: inherit; -webkit-text-fill-color: inherit; }

.omni-sidebar__nav { padding: var(--space-3) var(--space-2); overflow-y: auto; flex: 1; }
.omni-sidebar__group { margin-bottom: var(--space-2); }
.omni-sidebar__group-label { display: block; padding: var(--space-1) var(--space-3); font-size: var(--fs-2xs); font-weight: var(--fw-semibold); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-tertiary); margin-bottom: var(--space-1); }

/* Collapsible group toggle (replaces static label when JS is active) */
.omni-sidebar__group-toggle {
  display: flex; align-items: center; width: 100%;
  padding: var(--space-1) var(--space-3); gap: var(--space-2);
  font-size: var(--fs-2xs); font-weight: var(--fw-semibold);
  letter-spacing: var(--tracking-caps); text-transform: uppercase;
  color: var(--text-tertiary); background: none; border: none;
  cursor: pointer; border-radius: var(--radius-sm);
  transition: color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);
  margin-bottom: var(--space-1);
}
.omni-sidebar__group-toggle:hover { color: var(--text-secondary); background: var(--bg-hover); }
.omni-sidebar__group-toggle span { flex: 1; text-align: left; }
.omni-sidebar__group-chevron { width: 10px; height: 10px; flex-shrink: 0; transition: transform var(--dur-base) var(--ease-out); }
.omni-sidebar__group--collapsed .omni-sidebar__group-chevron { transform: rotate(-90deg); }
.omni-sidebar__group-body { overflow: hidden; transition: none; }
.omni-sidebar__group--collapsed .omni-sidebar__group-body { display: none; }

/* ── Nav items — shared base ─────────────────────────────── */
.omni-nav-item { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); color: var(--text-secondary); font-size: var(--fs-md); font-weight: var(--fw-medium); line-height: 1; cursor: pointer; position: relative; text-decoration: none; transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out); }
.omni-nav-item:hover { background: var(--bg-hover); color: var(--text-primary); }
.omni-nav-item__icon { width: 16px; height: 16px; flex-shrink: 0; color: currentColor; }
.omni-nav-item__label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.omni-nav-item__badge { font-family: var(--font-mono); font-size: var(--fs-2xs); padding: 2px 5px; border-radius: var(--radius-xs); background: var(--bg-elevated); color: var(--text-secondary); min-width: 18px; text-align: center; }

/* Active state — dark (neon glow) */
.omni-nav-item--active { background: var(--accent-soft); color: var(--accent-strong); font-weight: var(--fw-semibold); }
.omni-nav-item--active::before { content: ""; position: absolute; left: 0; top: 5px; bottom: 5px; width: 3px; background: var(--accent); border-radius: 0 var(--radius-pill) var(--radius-pill) 0; box-shadow: 0 0 8px var(--accent-glow); }
.omni-nav-item--active .omni-nav-item__badge { background: var(--accent); color: var(--text-on-accent); }

/* Active state override — light (solid, no glow) */
[data-theme="light"] .omni-nav-item--active { background: var(--bg-active); color: var(--accent); }
[data-theme="light"] .omni-nav-item--active::before { box-shadow: none; }
[data-theme="light"] .omni-nav-item:hover { background: var(--bg-hover); }

.omni-sidebar__footer { padding: var(--space-3); box-shadow: inset 0 1px 0 var(--border); flex-shrink: 0; }

/* =========================================================================
   BLOCK: omni-topbar
   ========================================================================= */
/* ── Topbar — dark: true glassmorphism ───────────────────── */
.omni-topbar {
  display: flex; align-items: center; gap: var(--space-4);
  height: var(--topbar-height); padding: 0 var(--space-5);
  /* Dark: semi-transparent glass */
  background: color-mix(in oklab, var(--bg-topbar) 75%, transparent);
  -webkit-backdrop-filter: blur(var(--topbar-blur));
  backdrop-filter: blur(var(--topbar-blur));
  box-shadow: inset 0 -1px 0 var(--border);
  position: sticky; top: 0; z-index: var(--z-sticky);
}
/* ── Topbar — light: solid white, subtle bottom line ─────── */
[data-theme="light"] .omni-topbar {
  background: rgba(255,255,255,.92);
  -webkit-backdrop-filter: blur(20px);
  backdrop-filter: blur(20px);
  box-shadow: inset 0 -1px 0 var(--border), 0 1px 6px rgb(16 20 27 / 0.04);
}
.omni-topbar__breadcrumb { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-sm); color: var(--text-secondary); min-width: 0; }
.omni-topbar__breadcrumb b { color: var(--text-primary); font-weight: var(--fw-semibold); }
.omni-topbar__breadcrumb svg { width: 12px; height: 12px; color: var(--text-tertiary); flex-shrink: 0; }
.omni-topbar__search { flex: 1; max-width: 520px; margin-left: auto; }
.omni-topbar__actions { display: flex; align-items: center; gap: var(--space-2); }
.omni-topbar__divider { width: 1px; height: 20px; background: var(--border); }
.omni-topbar__user { display: flex; align-items: center; gap: var(--space-2); padding: 3px 3px 3px var(--space-2); border-radius: var(--radius-pill); cursor: pointer; transition: background var(--dur-fast); }
.omni-topbar__user:hover { background: var(--bg-hover); }
.omni-topbar__user-name { font-size: var(--fs-sm); font-weight: var(--fw-medium); }

/* =========================================================================
   BLOCK: omni-avatar
   ========================================================================= */
.omni-avatar { width: 24px; height: 24px; border-radius: var(--radius-pill); background: var(--brand-gradient); color: #fff; display: grid; place-items: center; font-family: var(--font-mono); font-size: var(--fs-2xs); font-weight: var(--fw-semibold); flex-shrink: 0; position: relative; box-shadow: 0 0 0 1px rgb(255 255 255 / 0.08) inset; }
.omni-avatar--sm { width: 20px; height: 20px; font-size: 9px; }
.omni-avatar--md { width: 28px; height: 28px; font-size: var(--fs-xs); }
.omni-avatar--lg { width: 40px; height: 40px; font-size: var(--fs-md); }
.omni-avatar__dot { position: absolute; right: -1px; bottom: -1px; width: 7px; height: 7px; border-radius: var(--radius-pill); background: var(--status-success); box-shadow: 0 0 0 2px var(--bg-surface); }

/* =========================================================================
   BLOCK: omni-btn
   ========================================================================= */
.omni-btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: 0.5rem;
  min-height: 36px; padding: 0 1rem;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  background: var(--bg-surface); color: var(--text-primary);
  font-size: var(--fs-sm); font-weight: var(--fw-medium);
  font-family: var(--font-sans);
  line-height: 1; white-space: nowrap; cursor: pointer; text-decoration: none;
  transition: background var(--dur-fast) var(--ease-out),
              color var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast) var(--ease-out),
              box-shadow var(--dur-fast) var(--ease-out),
              transform var(--dur-fast) var(--ease-out);
  flex-shrink: 0;
  -webkit-font-smoothing: antialiased;
}
.omni-btn:hover { background: var(--bg-hover); border-color: var(--border-strong); color: var(--text-primary); }
.omni-btn:active { transform: translateY(1px); }
.omni-btn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.omni-btn svg { width: 14px; height: 14px; flex-shrink: 0; }

/* ── Variants — color is ALWAYS explicit on each variant + hover ── */
.omni-btn--primary {
  background: var(--brand-gradient, var(--accent));
  border: none;
  color: var(--text-on-accent);
  box-shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.08);
}
.omni-btn--primary:hover {
  background: var(--brand-gradient, var(--accent));
  filter: brightness(1.12) saturate(1.08);
  color: var(--text-on-accent);
  box-shadow: 0 4px 16px -4px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,.10);
}
.omni-btn--primary:active {
  filter: brightness(0.94);
  color: var(--text-on-accent);
  transform: translateY(1px);
}

.omni-btn--secondary { background: var(--bg-elevated); border-color: var(--border); color: var(--text-primary); }
.omni-btn--secondary:hover { background: var(--bg-hover); border-color: var(--border-strong); color: var(--text-primary); }

.omni-btn--ghost { background: transparent; border-color: transparent; color: var(--text-secondary); }
.omni-btn--ghost:hover { background: var(--bg-hover); color: var(--text-primary); border-color: transparent; }

.omni-btn--outline { background: transparent; border-color: var(--accent); color: var(--accent); }
.omni-btn--outline:hover { background: var(--accent-soft); color: var(--accent); border-color: var(--accent); }

.omni-btn--danger { background: transparent; border-color: var(--border); color: var(--status-danger); }
.omni-btn--danger:hover { background: var(--status-danger-soft); border-color: var(--status-danger); color: var(--status-danger); }
.omni-btn--danger.omni-btn--outline { background: transparent; border-color: var(--status-danger); color: var(--status-danger); }
.omni-btn--danger.omni-btn--outline:hover { background: var(--status-danger-soft); }

.omni-btn--danger-ghost { background: transparent; border-color: transparent; color: var(--status-danger); }
.omni-btn--danger-ghost:hover { background: var(--status-danger-soft); border-color: transparent; color: var(--status-danger); }

.omni-btn--danger-outline { background: transparent; border-color: var(--status-danger); color: var(--status-danger); }
.omni-btn--danger-outline:hover { background: var(--status-danger-soft); color: var(--status-danger); }

.omni-btn--success { background: var(--status-success); border-color: var(--status-success); color: #ffffff; }
.omni-btn--success:hover { background: var(--status-success); filter: brightness(1.1); color: #ffffff; }

/* ── Sizes ──────────────────────────────────────────────────────── */
.omni-btn--sm { min-height: 28px; font-size: var(--fs-xs); padding: 0 0.625rem; }
.omni-btn--lg { min-height: 44px; font-size: var(--fs-md); padding: 0 1.25rem; }

/* ── Icon-only square ───────────────────────────────────────────── */
.omni-btn--icon { width: 36px; min-height: 36px; padding: 0; }
.omni-btn--sm.omni-btn--icon { width: 28px; min-height: 28px; padding: 0; }
.omni-btn--lg.omni-btn--icon { width: 44px; min-height: 44px; padding: 0; }

.omni-btn__kbd { font-family: var(--font-mono); font-size: var(--fs-2xs); color: var(--text-tertiary); border: 1px solid var(--border); padding: 1px 4px; border-radius: var(--radius-xs); margin-left: var(--space-1); }

/* =========================================================================
   BLOCK: omni-row-actions
   Horizontal flex container for table/list action buttons.
   Usage: <div class="omni-row-actions"> <button …> <button …> </div>
   ========================================================================= */
.omni-row-actions {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  flex-wrap: nowrap;
}
/* Forms inside action rows must be inline */
.omni-row-actions form { display: contents; }

/* =========================================================================
   BLOCK: omni-input — premium form fields
   Works as a wrapper div (BEM: .omni-input > .omni-input__field)
   AND directly on native <input>, <textarea>, <select> elements.
   ========================================================================= */

/* ── Base ───────────────────────────────────────────────────────────────── */
.omni-input {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
  min-height: var(--input-h, 36px);
  padding: 0 var(--space-3);
  background: var(--input-bg, var(--bg-inset));
  border: 1px solid var(--input-border, var(--border));
  border-radius: var(--input-radius, var(--radius-sm));
  color: var(--text-primary);
  font-size: var(--fs-md);
  font-family: var(--font-sans);
  line-height: var(--lh-normal);
  box-shadow: var(--input-shadow, none);
  transition:
    border-color var(--dur-fast) var(--ease-out),
    box-shadow   var(--dur-fast) var(--ease-out),
    background   var(--dur-fast) var(--ease-out);
  outline: none;
  -webkit-appearance: none;
  appearance: none;
  vertical-align: middle;
}

/* ── Hover ──────────────────────────────────────────────────────────────── */
.omni-input:not(:focus):not(:focus-within):not(:disabled):hover {
  border-color: var(--input-border-hover, var(--border-strong));
}

/* ── Focus — container wrapper pattern ──────────────────────────────────── */
.omni-input:focus-within {
  border-color: var(--input-border-focus, var(--accent));
  box-shadow: var(--input-shadow, none), var(--input-shadow-focus, 0 0 0 3px var(--accent-soft));
  background: var(--bg-surface);
}

/* ── Focus — direct on native element ───────────────────────────────────── */
input.omni-input:focus,
textarea.omni-input:focus,
select.omni-input:focus {
  border-color: var(--input-border-focus, var(--accent));
  box-shadow: var(--input-shadow, none), var(--input-shadow-focus, 0 0 0 3px var(--accent-soft));
  background: var(--bg-surface);
}

/* ── Placeholder ────────────────────────────────────────────────────────── */
.omni-input::placeholder,
.omni-input__field::placeholder {
  color: var(--input-placeholder, var(--text-tertiary));
  font-weight: var(--fw-regular);
  opacity: 1;
}

/* ── Inner field (inside wrapper div) ───────────────────────────────────── */
.omni-input__field {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  outline: 0;
  font-size: var(--fs-md);
  font-family: var(--font-sans);
  color: var(--text-primary);
  line-height: var(--lh-normal);
}
.omni-input__field::placeholder { color: var(--input-placeholder, var(--text-tertiary)); opacity: 1; }

/* ── Icon slot ──────────────────────────────────────────────────────────── */
.omni-input__icon {
  width: 14px; height: 14px;
  color: var(--text-tertiary);
  flex-shrink: 0;
  transition: color var(--dur-fast);
}
.omni-input:focus-within .omni-input__icon { color: var(--accent); }

/* ── KBD hint ───────────────────────────────────────────────────────────── */
.omni-input__kbd { font-family: var(--font-mono); font-size: var(--fs-2xs); color: var(--text-tertiary); border: 1px solid var(--border); padding: 1px 4px; border-radius: var(--radius-xs); }

/* ── textarea ───────────────────────────────────────────────────────────── */
textarea.omni-input {
  height: auto;
  min-height: 82px;
  padding-top: var(--space-2);
  padding-bottom: var(--space-2);
  align-items: flex-start;
  resize: vertical;
  line-height: var(--lh-loose);
}

/* ── select ─────────────────────────────────────────────────────────────── */
select.omni-input {
  cursor: pointer;
  padding-right: 2rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235b6472' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--space-3) center;
  -webkit-appearance: none;
  appearance: none;
}

/* ── Disabled ────────────────────────────────────────────────────────────── */
.omni-input:disabled,
.omni-input[disabled] {
  opacity: .45;
  cursor: not-allowed;
  pointer-events: none;
}

/* ── Error state ─────────────────────────────────────────────────────────── */
.omni-input--error,
.omni-input[aria-invalid="true"] {
  border-color: var(--status-danger) !important;
  box-shadow: var(--input-shadow, none), 0 0 0 3px var(--status-danger-soft) !important;
}

/* ── Read-only ──────────────────────────────────────────────────────────── */
.omni-input:read-only:not(select) {
  background: var(--bg-elevated);
  color: var(--text-secondary);
  cursor: default;
}

/* ── Size variants ───────────────────────────────────────────────────────── */
.omni-input-sm { min-height: var(--control-h-sm, 26px); font-size: var(--fs-xs); padding: 0 var(--space-2); }

/* =========================================================================
   BLOCK: omni-file-input
   Drop-in replacement for bare <input type="file">.
   Usage: <input type="file" class="omni-file-input">
   Optional modifier: .omni-file-input--sm
   ========================================================================= */
.omni-file-input {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: var(--input-h, 44px);
  padding: 0;
  background: var(--input-bg, var(--bg-inset));
  border: 1px solid var(--input-border, var(--border));
  border-radius: var(--input-radius, var(--radius-sm));
  color: var(--text-secondary);
  font-size: var(--fs-md);
  font-family: var(--font-sans);
  cursor: pointer;
  overflow: hidden;
  transition:
    border-color var(--dur-fast) var(--ease-out),
    box-shadow   var(--dur-fast) var(--ease-out);
  outline: none;
}

.omni-file-input:hover {
  border-color: var(--input-border-hover, var(--border-strong));
}

.omni-file-input:focus {
  border-color: var(--input-border-focus, var(--accent));
  box-shadow: 0 0 0 3px var(--accent-soft);
}

/* The browser-native "Choose File" button */
.omni-file-input::file-selector-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  min-height: var(--input-h, 44px);
  padding: 0 var(--space-3);
  margin: 0;
  background: var(--bg-elevated);
  border: none;
  border-right: 1px solid var(--border);
  border-radius: 0;
  color: var(--text-primary);
  font-size: var(--fs-sm);
  font-family: var(--font-sans);
  font-weight: var(--fw-medium);
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
}

.omni-file-input::file-selector-button:hover {
  background: var(--bg-hover);
  color: var(--accent);
}

/* Filename text area (the space after the button) */
.omni-file-input:not(:disabled) {
  padding-left: var(--space-3);
}

/* Override: padding only when no button renders (empty state in some browsers) */
.omni-file-input::file-selector-button + * {
  padding-left: var(--space-3);
}

/* Disabled */
.omni-file-input:disabled {
  opacity: .45;
  cursor: not-allowed;
  pointer-events: none;
}

/* Size variant: sm */
.omni-file-input--sm {
  min-height: var(--control-h-sm, 32px);
  font-size: var(--fs-sm);
}
.omni-file-input--sm::file-selector-button {
  min-height: var(--control-h-sm, 32px);
  font-size: var(--fs-xs);
  padding: 0 var(--space-2);
}

/* =========================================================================
   BLOCK: omni-card
   ========================================================================= */
.omni-card { background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; display: flex; flex-direction: column; }
.omni-card--elevated { background: var(--bg-elevated); box-shadow: var(--shadow-sm); }
.omni-card--interactive { cursor: pointer; transition: border-color var(--dur-fast), transform var(--dur-fast); }
.omni-card--interactive:hover { border-color: var(--border-strong); }
.omni-card--accent { border-color: var(--accent); box-shadow: var(--shadow-glow); }

.omni-card__header { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: var(--space-3) var(--space-4); box-shadow: inset 0 -1px 0 var(--border); min-height: 36px; }
.omni-card__header--bare { border-bottom: 0; padding-bottom: var(--space-1); }
.omni-card__title { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--text-primary); display: flex; align-items: center; gap: var(--space-2); letter-spacing: var(--tracking-tight); }
.omni-card__title svg { width: 14px; height: 14px; color: var(--text-secondary); }
.omni-card__subtitle { font-size: var(--fs-xs); color: var(--text-tertiary); font-family: var(--font-mono); letter-spacing: var(--tracking-caps); text-transform: uppercase; }
.omni-card__actions { display: flex; align-items: center; gap: var(--space-1); }
.omni-card__body { padding: var(--space-4); flex: 1; }
.omni-card__body--flush { padding: 0; }
.omni-card__body--md { padding: 1rem 1.25rem; }
.omni-card__body--sm { padding: .75rem 1rem; }
.omni-card__footer { padding: var(--space-3) var(--space-4); box-shadow: inset 0 1px 0 var(--border); background: var(--bg-elevated); display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); font-size: var(--fs-xs); color: var(--text-secondary); }

/* =========================================================================
   BLOCK: omni-kpi
   ========================================================================= */
.omni-kpi { padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-3); min-height: 120px; position: relative; overflow: hidden; }
.omni-kpi__header { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.omni-kpi__label { font-size: var(--fs-2xs); font-weight: var(--fw-medium); text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--text-tertiary); display: flex; align-items: center; gap: var(--space-1); }
.omni-kpi__label svg { width: 12px; height: 12px; }
.omni-kpi__menu { color: var(--text-tertiary); cursor: pointer; }
.omni-kpi__value { font-family: var(--font-mono); font-size: var(--fs-4xl); font-weight: var(--fw-medium); color: var(--text-primary); letter-spacing: var(--tracking-tight); line-height: 1; font-variant-numeric: tabular-nums; }
.omni-kpi__unit { font-size: var(--fs-md); color: var(--text-tertiary); margin-left: var(--space-1); font-weight: var(--fw-regular); }
.omni-kpi__footer { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); font-size: var(--fs-xs); }
.omni-kpi__delta { display: inline-flex; align-items: center; gap: 3px; font-family: var(--font-mono); font-weight: var(--fw-medium); padding: 2px 6px; border-radius: var(--radius-xs); }
.omni-kpi__delta svg { width: 10px; height: 10px; }
.omni-kpi__delta--up { background: var(--status-success-soft); color: var(--status-success); }
.omni-kpi__delta--down { background: var(--status-danger-soft); color: var(--status-danger); }
.omni-kpi__delta--flat { background: var(--status-neutral-soft); color: var(--text-secondary); }
.omni-kpi__meta { color: var(--text-tertiary); font-family: var(--font-mono); }
.omni-kpi__spark { position: absolute; right: 0; bottom: 0; left: 0; height: 44px; pointer-events: none; opacity: 0.9; }

/* =========================================================================
   BLOCK: omni-badge
   ========================================================================= */
.omni-badge { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-2xs); font-family: var(--font-mono); font-weight: var(--fw-medium); padding: 2px 6px; border-radius: var(--radius-xs); line-height: 1.4; letter-spacing: var(--tracking-wide); text-transform: uppercase; border: 1px solid transparent; white-space: nowrap; }
.omni-badge::before { content: ""; width: 5px; height: 5px; border-radius: var(--radius-pill); background: currentColor; }
.omni-badge--success { background: var(--status-success-soft); color: var(--status-success); }
.omni-badge--warning { background: var(--status-warning-soft); color: var(--status-warning); }
.omni-badge--danger  { background: var(--status-danger-soft);  color: var(--status-danger); }
.omni-badge--info    { background: var(--status-info-soft);    color: var(--status-info); }
.omni-badge--neutral { background: var(--status-neutral-soft); color: var(--text-secondary); }
.omni-badge--accent  { background: var(--accent-soft);         color: var(--accent-strong); }
.omni-badge--plain::before { display: none; }
.omni-badge--outlined { background: transparent; border-color: currentColor; }

/* =========================================================================
   BLOCK: omni-tabs
   ========================================================================= */
.omni-tabs {
  display: flex; align-items: flex-end; gap: 0;
  border-bottom: 1px solid var(--border);
  padding: 0 var(--space-4);
  margin-bottom: var(--space-6);
}
.omni-tabs--wrap { flex-wrap: wrap; margin-bottom: 0; }
.omni-tabs--wrap .omni-tabs__tab { flex: 1 1 0; min-width: 0; justify-content: center; text-align: center; }
.omni-tabs--sm { padding: 0 var(--space-2); }
.omni-tabs__tab {
  position: relative;
  display: inline-flex; align-items: center; gap: var(--space-2);
  padding: var(--space-2) var(--space-3) var(--space-3);
  font-size: var(--fs-md); font-weight: var(--fw-regular);
  color: var(--text-tertiary);
  cursor: pointer; border: 0; background: none;
  text-decoration: none; white-space: nowrap;
  transition: color var(--dur-fast) var(--ease-out);
}
.omni-tabs__tab:hover { color: var(--text-secondary); }
.omni-tabs__tab svg { width: 14px; height: 14px; flex-shrink: 0; }
.omni-tabs__tab--active,
.omni-tabs__tab.active {
  color: var(--text-primary);
  font-weight: var(--fw-semibold);
}
.omni-tabs__tab--active::after,
.omni-tabs__tab.active::after {
  content: "";
  position: absolute; left: var(--space-3); right: var(--space-3); bottom: -1px;
  height: 2px;
  background: var(--accent);
  border-radius: 1px 1px 0 0;
}
.omni-tabs__count {
  font-family: var(--font-mono); font-size: var(--fs-2xs);
  padding: 1px 5px; border-radius: var(--radius-xs);
  background: var(--bg-elevated); color: var(--text-tertiary);
}

/* =========================================================================
   BLOCK: omni-chip
   ========================================================================= */
.omni-chip { display: inline-flex; align-items: center; gap: var(--space-1); padding: 3px var(--space-2); font-size: var(--fs-xs); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text-secondary); background: var(--bg-surface); cursor: pointer; transition: background var(--dur-fast), border-color var(--dur-fast); }
.omni-chip:hover { background: var(--bg-hover); color: var(--text-primary); }
.omni-chip svg { width: 12px; height: 12px; }
.omni-chip--active { background: var(--accent-soft); border-color: var(--accent); color: var(--accent-strong); }

/* =========================================================================
   BLOCK: omni-table
   ========================================================================= */
.omni-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--fs-sm); }
.omni-table__head { background: var(--bg-base); position: sticky; top: 0; z-index: 1; }
.omni-table__th { text-align: left; padding: var(--space-2) var(--space-3); font-size: var(--fs-2xs); font-weight: var(--fw-medium); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-tertiary); border-bottom: 1px solid var(--border); white-space: nowrap; }
.omni-table__th--num, .omni-table__td--num { text-align: right; font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.omni-table__row { transition: background var(--dur-fast); }
.omni-table__row:hover { background: var(--bg-hover); }
.omni-table__row--selected { background: var(--accent-soft); }
.omni-table__td { padding: var(--space-2) var(--space-3); border-bottom: 1px solid var(--border); color: var(--text-primary); white-space: nowrap; vertical-align: middle; }
.omni-table__td--muted { color: var(--text-secondary); }
.omni-table__cell { display: inline-flex; align-items: center; gap: var(--space-2); }

/* =========================================================================
   BLOCK: omni-kanban (Module 5)
   ========================================================================= */
.omni-kanban { display: flex; gap: var(--space-3); padding: var(--space-4); overflow-x: auto; height: 100%; align-items: flex-start; }
.omni-kanban__col { flex: 0 0 300px; max-height: 100%; display: flex; flex-direction: column; background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }
.omni-kanban__col-header { padding: var(--space-3) var(--space-3); display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); border-bottom: 1px solid var(--border); position: relative; }
.omni-kanban__col-header::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: var(--col-accent, var(--accent)); opacity: 0.7; }
.omni-kanban__col-title { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--text-primary); }
.omni-kanban__col-dot { width: 8px; height: 8px; border-radius: var(--radius-pill); background: var(--col-accent, var(--accent)); box-shadow: 0 0 8px var(--col-accent, var(--accent)); }
.omni-kanban__col-meta { display: flex; align-items: center; gap: var(--space-1); font-family: var(--font-mono); font-size: var(--fs-2xs); color: var(--text-tertiary); }
.omni-kanban__col-count { background: var(--bg-elevated); padding: 2px 6px; border-radius: var(--radius-xs); color: var(--text-secondary); }
.omni-kanban__col-body { padding: var(--space-2); display: flex; flex-direction: column; gap: var(--space-2); overflow-y: auto; flex: 1; }
.omni-kanban__add { margin: var(--space-2); padding: var(--space-2); border: 1px dashed var(--border); border-radius: var(--radius-sm); color: var(--text-tertiary); font-size: var(--fs-xs); text-align: center; cursor: pointer; transition: all var(--dur-fast); display: flex; align-items: center; justify-content: center; gap: var(--space-1); }
.omni-kanban__add:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }

.omni-deal { padding: var(--space-3); background: var(--bg-elevated); border: 1px solid var(--border); border-radius: var(--radius-sm); cursor: grab; transition: border-color var(--dur-fast), transform var(--dur-fast); display: flex; flex-direction: column; gap: var(--space-2); }
.omni-deal:hover { border-color: var(--border-strong); }
.omni-deal--dragging { transform: rotate(1.5deg); border-color: var(--accent); box-shadow: var(--shadow-lg); }
/* Optimistic-UI Pending: Karte ist visuell verschoben, Server-Bestätigung ausstehend */
.omni-deal--pending { opacity: 0.55; pointer-events: none; transition: opacity 0.18s ease-out; }
.omni-deal--pending::after {
    content: '';
    position: absolute; top: 6px; right: 6px;
    width: 6px; height: 6px; border-radius: 50%;
    background: var(--accent);
    box-shadow: 0 0 0 0 var(--accent-glow);
    animation: omni-deal-pulse 1.2s infinite;
}
@keyframes omni-deal-pulse {
    0%   { box-shadow: 0 0 0 0   var(--accent-glow); }
    70%  { box-shadow: 0 0 0 8px transparent; }
    100% { box-shadow: 0 0 0 0   transparent; }
}
/* Revert-Feedback bei Fehler */
.omni-deal--shake { animation: omni-deal-shake 0.45s cubic-bezier(.36,.07,.19,.97) both; }
@keyframes omni-deal-shake {
    10%, 90% { transform: translateX(-1px); }
    20%, 80% { transform: translateX(2px); }
    30%, 50%, 70% { transform: translateX(-4px); }
    40%, 60% { transform: translateX(4px); }
}
.omni-deal__head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-2); }
.omni-deal__company { font-size: var(--fs-2xs); text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--text-tertiary); font-family: var(--font-mono); }
.omni-deal__title { font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--text-primary); line-height: var(--lh-snug); }
.omni-deal__value { font-family: var(--font-mono); font-weight: var(--fw-semibold); font-size: var(--fs-lg); color: var(--text-primary); font-variant-numeric: tabular-nums; }
.omni-deal__value-curr { color: var(--text-tertiary); font-size: var(--fs-xs); margin-right: 2px; }
.omni-deal__meta { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); padding-top: var(--space-2); border-top: 1px dashed var(--border); }
.omni-deal__tags { display: flex; gap: 4px; flex-wrap: wrap; }
.omni-deal__owner { display: flex; align-items: center; gap: var(--space-1); }
.omni-deal__probability { display: flex; align-items: center; gap: var(--space-1); font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--text-secondary); }
.omni-deal__progress { width: 28px; height: 3px; background: var(--bg-inset); border-radius: var(--radius-pill); overflow: hidden; }
.omni-deal__progress-fill { height: 100%; background: var(--col-accent, var(--accent)); border-radius: inherit; }
.omni-deal__due { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--text-tertiary); display: inline-flex; align-items: center; gap: 4px; }
.omni-deal__due svg { width: 11px; height: 11px; }
.omni-deal__due--soon { color: var(--status-warning); }
.omni-deal__due--overdue { color: var(--status-danger); }

/* =========================================================================
   BLOCK: omni-inbox (Module 17 — Unified Inbox)
   ========================================================================= */
.omni-inbox { display: grid; grid-template-columns: 240px 380px 1fr; height: 100%; min-height: 0; }
.omni-inbox__channels { border-right: 1px solid var(--border); background: var(--bg-surface); overflow-y: auto; }
.omni-inbox__section { padding: var(--space-3); }
.omni-inbox__section-label { font-size: var(--fs-2xs); font-weight: var(--fw-medium); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-tertiary); padding: 0 var(--space-2); margin-bottom: var(--space-2); }

.omni-channel { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-2); border-radius: var(--radius-sm); font-size: var(--fs-sm); color: var(--text-secondary); cursor: pointer; transition: background var(--dur-fast); position: relative; }
.omni-channel:hover { background: var(--bg-hover); color: var(--text-primary); }
.omni-channel--active { background: var(--accent-soft); color: var(--accent-strong); }
.omni-channel__icon { width: 16px; height: 16px; flex-shrink: 0; }
.omni-channel__label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.omni-channel__count { font-family: var(--font-mono); font-size: var(--fs-2xs); color: var(--text-tertiary); }
.omni-channel--active .omni-channel__count { color: var(--accent-strong); }

.omni-inbox__list { border-right: 1px solid var(--border); background: var(--bg-surface); overflow-y: auto; }
.omni-inbox__list-header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); position: sticky; top: 0; background: var(--bg-surface); z-index: 1; }
.omni-inbox__list-title { font-weight: var(--fw-semibold); font-size: var(--fs-md); display: flex; align-items: center; gap: var(--space-2); }

.omni-thread { display: flex; gap: var(--space-3); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border); cursor: pointer; transition: background var(--dur-fast); position: relative; }
.omni-thread:hover { background: var(--bg-hover); }
.omni-thread--active { background: var(--bg-hover); }
.omni-thread--active::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 2px; background: var(--accent); box-shadow: 0 0 8px var(--accent-glow); }
.omni-thread--unread .omni-thread__subject { color: var(--text-primary); font-weight: var(--fw-semibold); }
.omni-thread--unread .omni-thread__from { color: var(--text-primary); }
.omni-thread__avatar { position: relative; flex-shrink: 0; }
.omni-thread__channel-badge { position: absolute; right: -4px; bottom: -4px; width: 14px; height: 14px; background: var(--bg-surface); border-radius: var(--radius-pill); display: grid; place-items: center; border: 1px solid var(--border); }
.omni-thread__channel-badge svg { width: 9px; height: 9px; }
.omni-thread__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.omni-thread__row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.omni-thread__from { font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.omni-thread__time { font-family: var(--font-mono); font-size: var(--fs-2xs); color: var(--text-tertiary); flex-shrink: 0; }
.omni-thread__subject { font-size: var(--fs-sm); color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.omni-thread__preview { font-size: var(--fs-xs); color: var(--text-tertiary); overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
.omni-thread__tags { display: flex; gap: 4px; margin-top: 4px; }

.omni-inbox__viewer { display: flex; flex-direction: column; min-width: 0; overflow: hidden; }
.omni-inbox__viewer-header { padding: var(--space-4) var(--space-5); border-bottom: 1px solid var(--border); display: flex; flex-direction: column; gap: var(--space-3); }
.omni-inbox__viewer-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3); }
.omni-inbox__viewer-title { font-size: var(--fs-xl); font-weight: var(--fw-semibold); letter-spacing: var(--tracking-tight); color: var(--text-primary); }
.omni-inbox__viewer-meta { display: flex; gap: var(--space-2); align-items: center; flex-wrap: wrap; font-size: var(--fs-xs); color: var(--text-tertiary); }
.omni-inbox__viewer-actions { display: flex; gap: var(--space-1); }
.omni-inbox__viewer-body { flex: 1; overflow-y: auto; padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-4); }

.omni-message { display: flex; gap: var(--space-3); padding: var(--space-3); background: var(--bg-elevated); border: 1px solid var(--border); border-radius: var(--radius-sm); }
.omni-message--outbound { background: var(--accent-soft); border-color: color-mix(in oklab, var(--accent) 30%, var(--border)); }
.omni-message__body { flex: 1; min-width: 0; }
.omni-message__head { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-2); }
.omni-message__from { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--text-primary); }
.omni-message__time { font-family: var(--font-mono); font-size: var(--fs-2xs); color: var(--text-tertiary); margin-left: auto; }
.omni-message__content { font-size: var(--fs-sm); line-height: var(--lh-normal); color: var(--text-primary); white-space: pre-wrap; }

.omni-inbox__composer { border-top: 1px solid var(--border); padding: var(--space-3) var(--space-5); background: var(--bg-surface); }
.omni-composer { border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--bg-elevated); }
.omni-composer:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.omni-composer__body { min-height: 60px; padding: var(--space-3); font-size: var(--fs-sm); outline: 0; color: var(--text-primary); }
.omni-composer__body[data-placeholder]:empty::before { content: attr(data-placeholder); color: var(--text-tertiary); }
.omni-composer__toolbar { display: flex; align-items: center; justify-content: space-between; padding: var(--space-2) var(--space-3); border-top: 1px solid var(--border); gap: var(--space-2); }
.omni-composer__tools { display: flex; gap: 2px; }

/* =========================================================================
   BLOCK: omni-toolbar (view-level filters/actions)
   ========================================================================= */
.omni-toolbar { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-3) var(--space-5); border-bottom: 1px solid var(--border); background: var(--bg-surface); flex-wrap: wrap; }
.omni-toolbar__title { display: flex; align-items: baseline; gap: var(--space-3); }
.omni-toolbar__h1 { font-size: var(--fs-2xl); font-weight: var(--fw-semibold); letter-spacing: var(--tracking-tight); color: var(--text-primary); }
.omni-toolbar__meta { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--text-tertiary); }
.omni-toolbar__spacer { flex: 1; }
.omni-toolbar__group { display: flex; align-items: center; gap: var(--space-1); }
.omni-toolbar__divider { width: 1px; height: 20px; background: var(--border); margin: 0 var(--space-1); }

/* =========================================================================
   BLOCK: omni-segmented
   ========================================================================= */
.omni-segmented { display: inline-flex; background: var(--bg-inset); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 2px; gap: 2px; }
.omni-segmented__option { padding: 2px var(--space-2); font-size: var(--fs-xs); color: var(--text-secondary); border-radius: calc(var(--radius-sm) - 1px); cursor: pointer; transition: background var(--dur-fast); font-family: var(--font-mono); text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.omni-segmented__option--active { background: var(--bg-surface); color: var(--text-primary); box-shadow: var(--shadow-xs); }

/* =========================================================================
   BLOCK: omni-grid
   ========================================================================= */
.omni-grid { display: grid; gap: var(--space-3); padding: var(--space-5); }
.omni-grid--kpis { grid-template-columns: repeat(4, 1fr); }
.omni-grid--split { grid-template-columns: 2fr 1fr; }
.omni-grid--thirds { grid-template-columns: repeat(3, 1fr); }

/* =========================================================================
   BLOCK: omni-activity
   ========================================================================= */
.omni-activity { display: flex; flex-direction: column; }
.omni-activity__item { display: flex; gap: var(--space-3); padding: var(--space-2) var(--space-4); position: relative; }
.omni-activity__item::before { content: ""; position: absolute; left: calc(var(--space-4) + 7px); top: 26px; bottom: -2px; width: 1px; background: var(--border); }
.omni-activity__item:last-child::before { display: none; }
.omni-activity__dot { width: 16px; height: 16px; border-radius: var(--radius-pill); background: var(--bg-elevated); border: 1px solid var(--border); display: grid; place-items: center; flex-shrink: 0; margin-top: 2px; position: relative; z-index: 1; }
.omni-activity__dot svg { width: 9px; height: 9px; color: var(--text-secondary); }
.omni-activity__dot--accent { background: var(--accent-soft); border-color: var(--accent); }
.omni-activity__dot--accent svg { color: var(--accent-strong); }
.omni-activity__body { flex: 1; min-width: 0; padding-bottom: var(--space-3); }
.omni-activity__text { font-size: var(--fs-sm); color: var(--text-primary); line-height: var(--lh-snug); }
.omni-activity__text b { font-weight: var(--fw-semibold); }
.omni-activity__meta { font-family: var(--font-mono); font-size: var(--fs-2xs); color: var(--text-tertiary); margin-top: 2px; }

/* =========================================================================
   BLOCK: omni-progress-bar
   ========================================================================= */
.omni-progress-bar { width: 100%; height: 4px; background: var(--bg-inset); border-radius: var(--radius-pill); overflow: hidden; }
.omni-progress-bar__fill { height: 100%; background: var(--accent); border-radius: inherit; box-shadow: 0 0 8px var(--accent-glow); }

/* =========================================================================
   BLOCK: omni-tweaks (in-design editor)
   ========================================================================= */
.omni-tweaks { position: fixed; right: var(--space-4); bottom: var(--space-4); width: 320px; max-height: calc(100vh - var(--space-8)); background: var(--bg-elevated); border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-xl); z-index: var(--z-popover); display: flex; flex-direction: column; overflow: hidden; font-size: var(--fs-sm); transform-origin: bottom right; transition: opacity var(--dur-base), transform var(--dur-base); }
.omni-tweaks[hidden] { display: none; }
.omni-tweaks__header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-3); border-bottom: 1px solid var(--border); }
.omni-tweaks__title { font-weight: var(--fw-semibold); font-size: var(--fs-sm); display: flex; align-items: center; gap: var(--space-2); }
.omni-tweaks__body { overflow-y: auto; padding: var(--space-3); display: flex; flex-direction: column; gap: var(--space-3); }
.omni-tweaks__group { display: flex; flex-direction: column; gap: var(--space-2); }
.omni-tweaks__group-label { font-size: var(--fs-2xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--text-tertiary); margin-top: var(--space-2); padding-bottom: var(--space-1); border-bottom: 1px dashed var(--border); }
.omni-tweaks__row { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: var(--space-2); }
.omni-tweaks__row-full { grid-column: 1 / -1; }
.omni-tweaks__label { font-size: var(--fs-xs); color: var(--text-secondary); font-family: var(--font-mono); }
.omni-tweaks__input { border: 1px solid var(--border); background: var(--bg-surface); color: var(--text-primary); padding: 2px 6px; border-radius: var(--radius-xs); font: inherit; font-size: var(--fs-xs); font-family: var(--font-mono); max-width: 110px; }
.omni-tweaks__color { width: 26px; height: 22px; padding: 0; border: 1px solid var(--border); border-radius: var(--radius-xs); background: none; cursor: pointer; }
.omni-tweaks__seg { display: inline-flex; background: var(--bg-inset); border-radius: var(--radius-xs); padding: 2px; gap: 2px; }
.omni-tweaks__seg button { padding: 2px 6px; font-size: var(--fs-2xs); color: var(--text-secondary); border-radius: var(--radius-xs); font-family: var(--font-mono); text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.omni-tweaks__seg button[aria-pressed="true"] { background: var(--bg-surface); color: var(--text-primary); box-shadow: var(--shadow-xs); }

/* =========================================================================
   Typography helpers (non-BEM, used for showcase)
   ========================================================================= */
.omni-section { padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-4); }
.omni-stack { display: flex; flex-direction: column; gap: var(--space-3); }
.omni-row { display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.omni-divider { height: 1px; background: var(--border); border: 0; margin: var(--space-4) 0; }
.omni-eyebrow { font-size: var(--fs-2xs); font-family: var(--font-mono); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-tertiary); }

/* ── Modal ────────────────────────────────────────────────────── */
.omni-modal-overlay {
  position: fixed; inset: 0; z-index: var(--z-modal);
  background: rgb(0 0 0 / .55); backdrop-filter: blur(4px);
  display: none; align-items: center; justify-content: center;
  padding: var(--space-4);
}
.omni-modal-overlay.open { display: flex; }
.omni-modal {
  background: var(--bg-surface); border: 1px solid var(--border);
  border-radius: var(--radius-xl); box-shadow: var(--shadow-xl);
  width: 100%; max-width: 560px; max-height: 90vh;
  display: flex; flex-direction: column; overflow: hidden;
}
.omni-modal__header {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--space-5) var(--space-6);
  border-bottom: 1px solid var(--border);
}
.omni-modal__title {
  font-size: var(--fs-lg); font-weight: var(--fw-semibold);
  color: var(--text-primary);
}
.omni-modal__close {
  display: flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: var(--radius-sm);
  background: transparent; border: none; cursor: pointer;
  color: var(--text-secondary); transition: background var(--dur-fast) var(--ease-out);
}
.omni-modal__close:hover { background: var(--bg-hover); color: var(--text-primary); }
.omni-modal__body {
  flex: 1; overflow-y: auto; padding: var(--space-6);
}
.omni-modal__footer {
  display: flex; align-items: center; justify-content: flex-end; gap: var(--space-3);
  padding: var(--space-4) var(--space-6);
  border-top: 1px solid var(--border); background: var(--bg-elevated);
}

/* ── Alert ────────────────────────────────────────────────────── */
.omni-alert {
  display: flex; align-items: flex-start; gap: var(--space-3);
  padding: var(--space-4); border-radius: var(--radius-md);
  font-size: var(--fs-sm); line-height: var(--lh-normal);
}
.omni-alert--success { background: var(--status-success-soft); color: var(--status-success); }
.omni-alert--warning { background: var(--status-warning-soft); color: var(--status-warning); }
.omni-alert--danger  { background: var(--status-danger-soft);  color: var(--status-danger); }
.omni-alert--info    { background: var(--status-info-soft);     color: var(--status-info); }

/* ── Utility Layer ────────────────────────────────────────────── */
.u-row { display: flex; align-items: center; gap: var(--space-2); }
.u-row--gap3 { gap: var(--space-3); }
.u-row--gap4 { gap: var(--space-4); }
.u-row--wrap { flex-wrap: wrap; }
.u-row--between { justify-content: space-between; }
.u-stack { display: flex; flex-direction: column; gap: var(--space-2); }
.u-stack--gap3 { gap: var(--space-3); }
.u-mt-1 { margin-top: var(--space-1); } .u-mt-2 { margin-top: var(--space-2); }
.u-mt-3 { margin-top: var(--space-3); } .u-mt-4 { margin-top: var(--space-4); }
.u-mt-5 { margin-top: var(--space-5); } .u-mt-6 { margin-top: var(--space-6); }
.u-mb-1 { margin-bottom: var(--space-1); } .u-mb-2 { margin-bottom: var(--space-2); }
.u-mb-3 { margin-bottom: var(--space-3); } .u-mb-4 { margin-bottom: var(--space-4); }
.u-mb-5 { margin-bottom: var(--space-5); } .u-mb-6 { margin-bottom: var(--space-6); }
.u-w-full { width: 100%; }
.u-text-muted { color: var(--text-secondary); }
.u-text-xs { font-size: var(--fs-xs); }
.u-text-sm { font-size: var(--fs-sm); }
.u-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.u-mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.is-muted { opacity: .5; pointer-events: none; }

/* ── Page header (toolbar wrapper for page-level heading) ─────── */
.omni-page-header {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: var(--space-3);
  margin-bottom: var(--space-6);
}
.omni-page-header__title {
  font-size: var(--fs-2xl); font-weight: var(--fw-bold); color: var(--text-primary);
  letter-spacing: var(--tracking-tight);
}
.omni-page-header__subtitle { font-size: var(--fs-sm); color: var(--text-secondary); margin-top: var(--space-1); }
.omni-page-header__actions { display: flex; align-items: center; gap: var(--space-2); flex-shrink: 0; }

/* ── Form field wrapper ───────────────────────────────────────── */
.omni-field { display: flex; flex-direction: column; gap: var(--space-1); }
.omni-field__label {
  display: block;
  font-size: 11px;
  font-weight: var(--fw-semibold);
  color: var(--text-secondary);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin-bottom: var(--space-1);
  line-height: var(--lh-normal);
  user-select: none;
}
.omni-field__hint { font-size: var(--fs-xs); color: var(--text-tertiary); }
.omni-field__actions { display: flex; justify-content: flex-end; gap: var(--space-2); margin-top: var(--space-4); }
.omni-field__section-title {
  font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase;
  letter-spacing: var(--tracking-caps); color: var(--text-tertiary);
  padding: var(--space-4) 0 var(--space-2);
}

/* =========================================================================
   BLOCK: omni-dropdown
   ========================================================================= */
.omni-dropdown { position: relative; }
.omni-dropdown__menu {
  position: absolute;
  top: calc(100% + var(--space-1));
  left: 0;
  min-width: 180px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-popover);
  padding: var(--space-1);
  display: none;
}
.omni-dropdown__menu.is-open,
.omni-dropdown.is-open > .omni-dropdown__menu { display: block; }
.omni-dropdown__item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  font-size: var(--fs-sm);
  color: var(--text-primary);
  cursor: pointer;
  background: none;
  border: none;
  width: 100%;
  text-align: left;
  text-decoration: none;
  transition: background var(--dur-fast) var(--ease-out);
}
.omni-dropdown__item:hover { background: var(--bg-hover); }
.omni-dropdown__item i,
.omni-dropdown__item svg { width: 14px; height: 14px; flex-shrink: 0; color: var(--text-tertiary); }
.omni-dropdown__item--danger { color: var(--status-danger); }
.omni-dropdown__item--danger:hover { background: var(--status-danger-soft); }
.omni-dropdown__divider { height: 1px; background: var(--border); margin: var(--space-1) 0; }

/* ── Eyebrow label ───────────────────────────────────────────── */
.omni-eyebrow {
  display: block;
  font-size: var(--fs-2xs);
  font-weight: var(--fw-medium);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-tertiary);
  margin-bottom: var(--space-2);
}

/* ── Divider ─────────────────────────────────────────────────── */
.omni-divider {
  height: 1px;
  background: var(--border);
  margin: var(--space-3) 0;
  border: none;
}
.omni-divider--vertical {
  width: 1px;
  height: 20px;
  background: var(--border);
}

/* =========================================================================
   KANBAN — additional missing elements
   ========================================================================= */
/* Column value (total €) */
.omni-kanban__col-value {
  font-family: var(--font-mono);
  font-size: var(--fs-2xs);
  font-variant-numeric: tabular-nums;
  color: var(--text-tertiary);
  margin-left: var(--space-1);
}

/* Drop target highlight */
.omni-kanban__col-body--over {
  background: var(--accent-soft);
  border-radius: var(--radius-sm);
}

/* Empty state inside column */
.omni-kanban__empty {
  padding: var(--space-4);
  text-align: center;
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  border: 1px dashed var(--border);
  border-radius: var(--radius-sm);
}

/* Deal priority dot */
.omni-deal__priority {
  width: 7px; height: 7px;
  border-radius: var(--radius-pill);
  flex-shrink: 0;
  background: var(--text-tertiary);
}
.omni-deal__priority--high   { background: var(--status-danger);  box-shadow: 0 0 6px var(--status-danger); }
.omni-deal__priority--medium { background: var(--status-warning); }
.omni-deal__priority--low    { background: var(--text-tertiary); }

/* Deal company row */
.omni-deal__company {
  display: flex; align-items: center; gap: var(--space-1);
  font-size: var(--fs-2xs);
  color: var(--text-tertiary);
  text-transform: uppercase;
  letter-spacing: var(--tracking-caps);
  font-family: var(--font-mono);
}
.omni-deal__company i,
.omni-deal__company svg { width: 11px; height: 11px; flex-shrink: 0; }

/* Deal contact row (phone / email chips) */
.omni-deal__contact {
  display: flex; flex-wrap: wrap; gap: var(--space-1);
}
.omni-deal__contact .omni-btn { font-size: 11px; height: 22px; padding: 0 var(--space-2); }

/* =========================================================================
   LEGACY TOKEN ALIASES — status
   ========================================================================= */
:root {
  --error:   var(--status-danger);
  --warning: var(--status-warning);
  --success: var(--status-success);
  --info:    var(--status-info);
}

/* =========================================================================
   EMPTY STATE — omni-empty-state
   ========================================================================= */
.omni-empty-state {
  display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: var(--space-4);
  padding: var(--space-16) var(--space-8);
  text-align: center;
}
.omni-empty-state__text {
  font-size: var(--fs-md); color: var(--text-secondary);
}

/* =========================================================================
   SETTINGS TABS — two-row separator
   ========================================================================= */
.settings-tab-sep {
  display: block;
  flex-basis: 100%;
  height: 1px;
  overflow: hidden;
  background: var(--border);
  margin: 0 calc(-1 * var(--space-4));
}

/* ── Settings-specific two-row tab nav ─────────────────────────────────── */
.omni-tabs--settings {
  flex-wrap: wrap;
  align-items: stretch;
  padding: 0 var(--space-6);
  gap: 0;
  margin-bottom: 0;
}
/* Each tab: natural width, never squished */
.omni-tabs--settings .omni-tabs__tab {
  flex: 0 0 auto;
  padding: var(--space-2) var(--space-4) var(--space-3);
  font-size: var(--fs-sm);
  white-space: nowrap;
}
/* Row 2 tabs slightly smaller to create visual hierarchy */
.settings-tab-sep ~ .omni-tabs__tab {
  font-size: var(--fs-xs);
  padding: var(--space-2) var(--space-3) var(--space-3);
  color: var(--text-muted, var(--text-tertiary));
}

/* =========================================================================
   PAGE HEADER — missing sub-elements
   ========================================================================= */
.omni-page-header__left { display: flex; flex-direction: row; align-items: center; gap: var(--space-3); min-width: 0; flex-wrap: wrap; }

/* =========================================================================
   PAGE HEADER — action group
   ========================================================================= */
.omni-page-header__actions {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
  align-items: center;
}

/* =========================================================================
   INPUT — size variant
   ========================================================================= */
.omni-input-sm {
  height: var(--control-h-sm);
  font-size: var(--fs-xs);
}

/* =========================================================================
   KPI — icon circle
   ========================================================================= */
.omni-kpi__icon-circle {
  width: 36px; height: 36px;
  border-radius: var(--radius-md);
  background: var(--bg-inset);
  display: flex; align-items: center; justify-content: center;
  color: var(--text-secondary);
  flex-shrink: 0;
}
.omni-kpi__icon-circle.warn { background: var(--status-warning-soft); color: var(--status-warning); }
.omni-kpi__icon-circle i,
.omni-kpi__icon-circle svg { width: 16px; height: 16px; }

/* =========================================================================
   TOOLBAR — filter variant
   ========================================================================= */
.omni-toolbar--filter {
  padding: var(--space-2) var(--space-4);
  min-height: 44px;
}

/* =========================================================================
   TABLE — link cell
   ========================================================================= */
.omni-table__link {
  color: var(--accent);
  font-weight: var(--fw-medium);
  text-decoration: none;
}
.omni-table__link:hover { text-decoration: underline; }

/* =========================================================================
   REMAINING MISSING CLASSES (auto-detected from view scan)
   ========================================================================= */

/* Alert title inside danger alert */
.omni-alert--danger-title { font-weight: var(--fw-semibold); margin-bottom: var(--space-1); }

/* Ghost danger button */
.omni-btn--danger-ghost {
  background: transparent;
  border-color: transparent;
  color: var(--status-danger);
}
.omni-btn--danger-ghost:hover { background: var(--status-danger-soft); border-color: transparent; }

/* Save button alias → same as omni-btn--sm omni-btn--primary */
.omni-btn--sm-save {
  height: var(--control-h-sm);
  font-size: var(--fs-xs);
  padding: 0 var(--space-3);
  background: var(--accent);
  border-color: var(--accent);
  color: var(--text-on-accent);
}
.omni-btn--sm-save:hover { background: var(--accent-strong); border-color: var(--accent-strong); }

/* Dropdown trigger marker */
.omni-dropdown__trigger { cursor: pointer; user-select: none; }

/* Input with select appearance */
.omni-input--select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238a93a3' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--space-3) center;
  padding-right: calc(var(--space-3) * 2 + 12px);
}

/* KPI grid wrapper */
.omni-kpi-wrap {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-4);
}

/* KPI icon (smaller, inline) */
.omni-kpi__icon {
  width: 14px; height: 14px;
  color: currentColor;
  flex-shrink: 0;
}

/* Page header right-side actions alias */
.omni-page-header-right {
  display: flex; align-items: center; gap: var(--space-2); flex-shrink: 0;
}

/* Responsive table modifier */
.omni-table--responsive { overflow-x: auto; }

/* =========================================================================
   BADGE — missing modifiers
   ========================================================================= */
.omni-badge { display: inline-flex; align-items: center; height: 20px; padding: 0 var(--space-2); border-radius: var(--radius-pill); font-size: var(--fs-2xs); font-weight: var(--fw-semibold); white-space: nowrap; gap: var(--space-1); }
.omni-badge--success { background: var(--status-success-soft); color: var(--status-success); }
.omni-badge--warning { background: var(--status-warning-soft); color: var(--status-warning); }
.omni-badge--danger  { background: var(--status-danger-soft);  color: var(--status-danger); }
.omni-badge--info    { background: var(--status-info-soft);    color: var(--status-info); }
.omni-badge--neutral { background: var(--bg-elevated); color: var(--text-secondary); border: 1px solid var(--border); }

/* =========================================================================
   UTILITY HELPERS — missing across all views
   ========================================================================= */
.text-right  { text-align: right !important; }
.text-center { text-align: center !important; }
.text-left   { text-align: left !important; }
.nowrap      { white-space: nowrap; }
.fw-400 { font-weight: 400; }
.fw-500 { font-weight: 500; }
.fw-600 { font-weight: 600; }
.fw-700 { font-weight: 700; }
.fw-bold { font-weight: var(--fw-bold); }
.text-error  { color: var(--status-danger); }  /* alias */
.text-overdue { color: var(--status-danger); font-weight: var(--fw-semibold); }
.d-flex       { display: flex; }
.align-center { align-items: center; }
.gap-1  { gap: var(--space-1); }
.gap-2  { gap: var(--space-2); }
.gap-3  { gap: var(--space-3); }
.gap-4  { gap: var(--space-4); }

/* ── Grid utility classes (used in companies, contacts, steuerberater, etc.) */
.grid           { display: grid; }
.grid-cols-2    { grid-template-columns: repeat(2, 1fr); }
.grid-cols-3    { grid-template-columns: repeat(3, 1fr); }
.grid-cols-4    { grid-template-columns: repeat(4, 1fr); }
.omni-align-start { align-items: start; } /* re-declared here for colocation — also at line 2779 */

/* =========================================================================
   BADGE — named-color aliases (used in invoices/quotes/contracts)
   badge-gray, badge-blue, badge-green, badge-orange, badge-red, badge-purple
   ========================================================================= */
.badge-default, .badge-gray, .badge-muted {
  background: var(--bg-elevated); color: var(--text-secondary); border: 1px solid var(--border);
}
.badge-blue   { background: var(--status-info-soft);    color: var(--status-info); }
.badge-green  { background: var(--status-success-soft); color: var(--status-success); }
.badge-orange { background: var(--status-warning-soft); color: var(--status-warning); }
.badge-red    { background: var(--status-danger-soft);  color: var(--status-danger); }
.badge-purple { background: rgba(93,51,162,.12);        color: #7c3aed; }

/* Lead source badges */
.badge-source-scraper  { background: var(--accent-soft); color: var(--accent); }
.badge-source-manual   { background: var(--bg-elevated);   color: var(--text-secondary); border: 1px solid var(--border); }
.badge-source-referral { background: rgba(16,185,129,.12); color: var(--status-success); }
.badge-source-website  { background: rgba(93,51,162,.12);  color: #7c3aed; }
.badge-source-import   { background: var(--status-warning-soft); color: var(--status-warning); }

/* =========================================================================
   ACTION GROUP — table row action buttons
   ========================================================================= */
.action-group {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  flex-wrap: nowrap;
}
.action-group .btn { flex-shrink: 0; }

/* =========================================================================
   BLOCK: omni-banner — accented info banner (left-border, header + actions)
   ========================================================================= */
.omni-banner {
  display: flex; flex-wrap: wrap; gap: var(--space-5);
  align-items: flex-start;
  background: var(--bg-hover);
  border-radius: var(--radius-md);
  border-left: 3px solid var(--accent);
  padding: var(--space-4) var(--space-5);
  margin-bottom: var(--space-6);
}
.omni-banner__body { flex: 1 1 260px; min-width: 0; }
.omni-banner__head { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-2); font-weight: var(--fw-semibold); font-size: var(--fs-sm); }
.omni-banner__text { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.6; margin: 0; }
.omni-banner__actions { display: flex; gap: var(--space-2); align-items: center; flex-shrink: 0; flex-wrap: wrap; }
.omni-banner__extra { flex-basis: 100%; margin-top: var(--space-3); padding-top: var(--space-3); box-shadow: inset 0 1px 0 var(--border); font-size: var(--fs-sm); }

/* =========================================================================
   BLOCK: omni-stat — inline metric (number + label)
   ========================================================================= */
.omni-stat { text-align: center; min-width: 90px; }
.omni-stat__value { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--text-primary); line-height: 1.1; }
.omni-stat__value--success { color: var(--status-success); }
.omni-stat__value--muted   { color: var(--text-muted); }
.omni-stat__label { font-size: var(--fs-xs); color: var(--text-muted); margin-top: var(--space-1); }
.omni-stats { display: flex; gap: var(--space-6); flex-wrap: wrap; padding: var(--space-2) 0; }

/* =========================================================================
   UTILITIES — visibility / alignment / inline / text colors
   ========================================================================= */
.omni-hidden          { display: none !important; }
.omni-inline          { display: inline; }
.omni-text-center     { text-align: center; }
.omni-text-success    { color: var(--status-success); }
.omni-text-warning    { color: var(--status-warning); }
.omni-text-danger     { color: var(--status-danger); }
.omni-link            { color: var(--accent); text-decoration: none; }
.omni-link:hover      { text-decoration: underline; }
.omni-sub-title       { font-size: var(--fs-sm); margin: 0 0 var(--space-2); color: var(--text-primary); }

/* Badges — extensions */
.omni-badge--muted    { background: var(--bg-elevated); color: var(--text-muted); }
.omni-badge--button   { border: 0; cursor: pointer; font: inherit; }

/* Stack size modifiers */
.omni-stack--xs       { gap: var(--space-1); }
.omni-stack--sm       { gap: var(--space-2); }
.omni-stack--lg       { gap: var(--space-5); }

/* Row modifiers */
.omni-row--between    { justify-content: space-between; margin-bottom: var(--space-2); }

/* Field — inline variant (checkbox + label) */
.omni-field--inline         { flex-direction: row; align-items: center; gap: var(--space-2); }
.omni-field__label--inline  { margin: 0; cursor: pointer; }

/* Hint — tonal variants */
.omni-hint--warning   { color: var(--status-warning); }
.omni-hint--danger    { color: var(--status-danger); }

/* Modal — scrollable card content variant */
.omni-modal-card      { width: 640px; max-width: 100%; max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius-xl); box-shadow: var(--shadow-xl); }
.modal-card           { background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius-xl); box-shadow: var(--shadow-xl); width: 100%; max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; }
.omni-modal-card > form           { display: flex; flex-direction: column; min-height: 0; flex: 1; }
.omni-modal-card .omni-card__body { overflow-y: auto; }

/* Condition / action grids used in automation modal */
.omni-grid-cond   { display: grid; grid-template-columns: 1fr 1fr 1fr auto; gap: var(--space-2); align-items: center; }
.omni-grid-param  { display: grid; grid-template-columns: 140px 1fr; gap: var(--space-2); align-items: center; }
.omni-action-row  { background: var(--bg-elevated); border-radius: var(--radius-md); padding: var(--space-3); display: flex; flex-direction: column; gap: var(--space-2); }

/* =========================================================================
   GRID UTILITIES — responsive column grids for forms/pages
   ========================================================================= */
.omni-grid--2col        { display: grid; grid-template-columns: 1fr 1fr;         gap: var(--space-5); }
.omni-grid--3col        { display: grid; grid-template-columns: repeat(3, 1fr);  gap: var(--space-5); }
.omni-grid--4col        { display: grid; grid-template-columns: repeat(4, 1fr);  gap: var(--space-5); }
.omni-grid--salutation  { display: grid; grid-template-columns: 140px 1fr 1fr;   gap: var(--space-4); }
.omni-grid--sidebar     { display: grid; grid-template-columns: 280px 1fr;       gap: var(--space-6); }
@media (max-width: 768px) {
  .omni-grid--2col,
  .omni-grid--3col,
  .omni-grid--4col,
  .omni-grid--salutation,
  .omni-grid--sidebar   { grid-template-columns: 1fr; }
}

.omni-field__hint--block { display: block; margin-bottom: var(--space-4); }

/* =========================================================================
   TOGGLE ROWS — checkbox cards used in settings (Bewerberportal field toggles)
   ========================================================================= */
.omni-toggle-row {
    display: flex;
    align-items: flex-start;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background .15s ease, border-color .15s ease;
    background: var(--bg-surface);
}
.omni-toggle-row:hover {
    background: var(--bg-elevated);
    border-color: var(--accent-soft);
}
.omni-toggle-row:has(input:checked) {
    background: var(--accent-soft);
    border-color: var(--accent);
}
.omni-toggle-row input[type="checkbox"] {
    margin-top: 2px;
    flex-shrink: 0;
    accent-color: var(--accent);
}
.omni-toggle-row__body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    line-height: 1.35;
}
.omni-toggle-row__title {
    font-weight: 600;
    font-size: var(--text-sm);
    color: var(--text-primary);
}
.omni-toggle-row__hint {
    font-size: var(--text-xs);
    color: var(--text-tertiary);
}

/* =========================================================================
   SPACING UTILITIES — margin/padding using design-token scale
   ========================================================================= */
.mt-0 { margin-top:    0 !important; }
.mt-1 { margin-top:    var(--space-1) !important; }
.mt-2 { margin-top:    var(--space-2) !important; }
.mt-3 { margin-top:    var(--space-3) !important; }
.mt-4 { margin-top:    var(--space-4) !important; }
.mt-5 { margin-top:    var(--space-5) !important; }
.mt-6 { margin-top:    var(--space-6) !important; }
.mb-0 { margin-bottom: 0 !important; }
.mb-1 { margin-bottom: var(--space-1) !important; }
.mb-2 { margin-bottom: var(--space-2) !important; }
.mb-3 { margin-bottom: var(--space-3) !important; }
.mb-4 { margin-bottom: var(--space-4) !important; }
.mb-5 { margin-bottom: var(--space-5) !important; }
.mb-6 { margin-bottom: var(--space-6) !important; }
.mx-auto { margin-left: auto !important; margin-right: auto !important; }
.p-0  { padding: 0 !important; }
.p-2  { padding: var(--space-2) !important; }
.p-3  { padding: var(--space-3) !important; }
.p-4  { padding: var(--space-4) !important; }
.p-5  { padding: var(--space-5) !important; }

/* =========================================================================
   FLEX UTILITIES — column/row variants for structured lists
   ========================================================================= */
.omni-flex-col             { display: flex; flex-direction: column; }
.omni-flex-col-gap-xs      { display: flex; flex-direction: column; gap: var(--space-1); }
.omni-flex-col-gap-sm      { display: flex; flex-direction: column; gap: var(--space-2); }
.omni-flex-col-gap         { display: flex; flex-direction: column; gap: var(--space-3); }
.omni-flex-col-gap-lg      { display: flex; flex-direction: column; gap: var(--space-5); }
.omni-flex-between         { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.omni-flex-end             { display: flex; align-items: center; justify-content: flex-end;      gap: var(--space-2); }
.omni-flex-center          { display: flex; align-items: center; justify-content: center;        gap: var(--space-2); }

/* =========================================================================
   BORDER / VISUAL ACCENTS — left-bar for callouts/sections
   ========================================================================= */
.omni-border-left-accent   { border-left: 3px solid var(--accent);          padding-left: var(--space-4); }
.omni-border-left-success  { border-left: 3px solid var(--status-success);  padding-left: var(--space-4); }
.omni-border-left-danger   { border-left: 3px solid var(--status-danger);   padding-left: var(--space-4); }
.omni-border-left-warning  { border-left: 3px solid var(--status-warning);  padding-left: var(--space-4); }

/* =========================================================================
   OVERDUE — table row and cell state
   ========================================================================= */
.overdue         { color: var(--status-danger) !important; }
td.overdue       { color: var(--status-danger) !important; }
.row-overdue td  { background: rgba(239,68,68,.04) !important; }
.row-overdue:hover td { background: rgba(239,68,68,.08) !important; }

/* =========================================================================
   SEARCH INPUT — icon-prefixed search field used in filter toolbars
   ========================================================================= */
.search-input-wrapper {
  position: relative;
  display: flex;
  align-items: center;
  flex: 1;
  min-width: 200px;
  max-width: 360px;
}
.search-icon {
  position: absolute;
  left: var(--space-3);
  color: var(--text-tertiary);
  pointer-events: none;
  flex-shrink: 0;
}
.search-input {
  width: 100%;
  padding-left: calc(var(--space-3) * 2 + 16px) !important;
}
.filter-group {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

/* =========================================================================
   FILTER TOOLBAR — auto-flex: eliminates inline style="display:flex…" on forms
   ========================================================================= */
.omni-toolbar--filter form,
.omni-toolbar--filter > form {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  width: 100%;
}
/* Auto width for selects inside filter toolbars */
.omni-toolbar--filter select,
.omni-toolbar--filter .omni-input[type="select"],
.omni-card.omni-toolbar--filter select {
  width: auto;
  min-width: 140px;
}
/* Filter card auto-spacing: filter card followed by table card */
.card:has(+ .card) { margin-bottom: var(--space-6); }

/* =========================================================================
   EMPTY STATE — used in leads, contacts, etc. without inline styles
   ========================================================================= */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 3.5rem 1.5rem;
  text-align: center;
  color: var(--text-secondary);
  gap: var(--space-3);
}
.empty-state svg { opacity: .35; }
.empty-state p   { margin: 0; font-size: var(--fs-sm); }
.empty-state .btn { margin-top: var(--space-2); }

/* =========================================================================
   TABLE EMPTY ROW — td[colspan] empty state inside table body
   ========================================================================= */
table.table tbody tr:only-child td[colspan] {
  text-align: center;
  padding: 3rem 1.5rem;
  color: var(--text-secondary);
  font-size: var(--fs-sm);
}

/* =========================================================================
   TABLE OVERFLOW WRAPPER — overflow-x:auto on div wrapping table
   ========================================================================= */
.card > div:has(> table.table) { overflow-x: auto; }

/* =========================================================================
   AVATAR CELL — flex row with avatar + text (contacts, companies)
   ========================================================================= */
.omni-avatar-cell {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
/* Auto-apply to any div wrapping .avatar + content inside td */
table.table td > div:has(> .avatar) {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

/* =========================================================================
   SUMMARY GRID — 4-column KPI summary row (invoices, quotes, etc.)
   ========================================================================= */
.omni-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-4);
  margin-bottom: var(--space-5);
}
@media (max-width: 1024px) { .omni-summary-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 580px)  { .omni-summary-grid { grid-template-columns: 1fr; gap: var(--space-2); } }

.omni-summary-card {
  padding: 1.25rem 1.5rem;
  display: flex;
  flex-direction: column;
  gap: .3rem;
}
.omni-summary-card__label {
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: .04em;
}
.omni-summary-card__value {
  font-size: 1.5rem;
  font-weight: var(--fw-bold);
  color: var(--text-primary);
  line-height: 1.2;
}
.omni-summary-card__value--danger  { color: var(--status-danger); }
.omni-summary-card__value--success { color: var(--status-success); }
.omni-summary-card__sub {
  font-size: var(--fs-xs);
  color: var(--text-secondary);
}
.omni-summary-card--overdue { border-left: 3px solid var(--status-danger); }

/* =========================================================================
   LEAD FOLLOW-UP BADGES — inline status labels in leads table
   ========================================================================= */
.lead-followup {
  display: inline-flex;
  align-items: center;
  font-size: .72rem;
  font-weight: var(--fw-semibold);
  padding: 1px 6px;
  border-radius: var(--radius-pill);
  white-space: nowrap;
}
.lead-followup.overdue  { background: var(--status-danger-soft);  color: var(--status-danger); }
.lead-followup.today    { background: var(--status-warning-soft); color: var(--status-warning); }
.lead-followup.upcoming { background: var(--status-info-soft);    color: var(--status-info); }

/* =========================================================================
   PRIORITY DOT TOKENS — for priority indicators
   ========================================================================= */
:root {
  --priority-low:  #10b981;
  --priority-med:  #f59e0b;
  --priority-high: #ef4444;
}

/* =========================================================================
   CARD BODY — standard padding patterns
   ========================================================================= */
/* .omni-card__body already has default padding; these modifiers override */
.omni-card__body--compact { padding: var(--space-3) var(--space-4); }
.omni-card__body--spacious { padding: var(--space-6) var(--space-6); }

/* Filter card body — .875rem 1.25rem (14px 20px) */
.omni-card__body--filter {
  padding: .875rem 1.25rem;
}

/* =========================================================================
   ACCENT LIGHT — soft accent background (bulk action bars, etc.)
   ========================================================================= */
:root {
  --accent-light: color-mix(in oklch, var(--accent) 7%, transparent);
}

/* =========================================================================
   TABS — additional modifiers
   ========================================================================= */
/* Spacer inside a tab row pushes remaining items to the right */
.omni-tabs__spacer {
  margin-left: auto;
  display: flex;
  align-items: center;
}

/* =========================================================================
   INPUT — small size modifier
   ========================================================================= */
.omni-input--sm {
  height: var(--control-h-sm);
  font-size: var(--fs-xs);
  padding: 0 var(--space-3);
  width: auto;
}

/* =========================================================================
   FORM INLINE — small filter form inside tab bars
   ========================================================================= */
.omni-toolbar--filter[style*="gap:.5rem"] form,
.omni-toolbar--filter.omni-toolbar--inline {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  width: auto;
}

/* =========================================================================
   CARD FILTER SPACING — :has() based (modern browsers)
   Any card directly preceding another card gets bottom gap
   ========================================================================= */
@supports selector(:has(+ *)) {
  .card:has(+ .card) { margin-bottom: var(--space-6); }
}
.omni-badge--plain   { background: transparent; color: var(--text-secondary); }

/* =========================================================================
   WIDTH UTILITIES — replace inline style="max-width / width" patterns
   ========================================================================= */
.omni-w-auto   { width: auto; }
.omni-w-xs     { max-width: 240px; }
.omni-w-sm     { max-width: 360px; }
.omni-w-md     { max-width: 560px; }
.omni-w-form   { max-width: 720px; }
.omni-w-lg     { max-width: 900px; }
.omni-w-content{ max-width: 1040px; }
.omni-w-full   { width: 100%; }

/* =========================================================================
   BULK ACTION BAR — replaces inline #bulkBar / #compBulkBar patterns
   ========================================================================= */
.omni-bulk-bar {
  display: none;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-4);
  background: var(--accent-soft);
  box-shadow: inset 0 0 0 1px var(--accent);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-4);
  flex-wrap: wrap;
  animation: slide-down var(--dur-fast) var(--ease-out);
}
.omni-bulk-bar--visible { display: flex; }
.omni-bulk-bar__count {
  font-weight: var(--fw-semibold);
  font-size: var(--fs-sm);
  color: var(--accent-strong);
}

/* =========================================================================
   CONTACT CELL — sales-optimized phone/email cells in tables
   ========================================================================= */
.omni-contact-cell {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.omni-contact-cell__link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--fs-sm);
  color: var(--text-secondary);
  text-decoration: none;
  white-space: nowrap;
  transition: color var(--dur-fast);
}
.omni-contact-cell__link:hover { color: var(--accent); }
.omni-contact-cell__link svg { flex-shrink: 0; opacity: .65; transition: opacity var(--dur-fast); }
.omni-contact-cell__link:hover svg { opacity: 1; }

/* Phone button inside table cell */
.omni-phone-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: 3px var(--space-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--bg-elevated);
  color: var(--text-primary);
  font-size: var(--fs-xs);
  font-weight: var(--fw-medium);
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--dur-fast), border-color var(--dur-fast);
}
.omni-phone-btn:hover { background: var(--bg-hover); border-color: var(--border-strong); }

/* Priority dot */
.omni-prio-dot {
  display: inline-block;
  width: 7px; height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
}
.omni-prio-dot--low    { background: var(--priority-low); }
.omni-prio-dot--medium { background: var(--priority-med); }
.omni-prio-dot--high   { background: var(--priority-high); }

/* Stage indicator (colored dot + label) */
.omni-stage-cell {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--fs-sm);
}
.omni-stage-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

/* =========================================================================
   ROLE BADGES — replaces emp-badge-* hardcoded classes
   ========================================================================= */
.omni-badge--role-sales      { background: oklch(44% 0.16 238 / 0.12); color: var(--status-info); }
.omni-badge--role-backoffice { background: oklch(46% 0.19 300 / 0.12); color: oklch(54% 0.19 300); }
.omni-badge--role-manager    { background: oklch(52% 0.15 80 / 0.12);  color: var(--status-warning); }
.omni-badge--role-support    { background: oklch(42% 0.16 152 / 0.12); color: var(--status-success); }
.omni-badge--role-admin      { background: oklch(46% 0.20 25 / 0.12);  color: var(--status-danger); }

/* =========================================================================
   ANIMATIONS
   ========================================================================= */
@keyframes slide-down {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* =========================================================================
   OMNI-CARD — No-Line Rule: inset shadows already set in base definition
   ========================================================================= */

/* =========================================================================
   TABLE — checkbox column tight padding
   ========================================================================= */
.omni-col-check { width: 36px; padding-right: 0 !important; }

/* =========================================================================
   MOBILE — touch-target enforcement for small buttons
   ========================================================================= */
@media (pointer: coarse) {
  .omni-btn--sm { min-height: var(--touch-min); padding: 0 var(--space-4); }
  .omni-btn--icon.omni-btn--sm { min-width: var(--touch-min); min-height: var(--touch-min); }
  .omni-nav-item { min-height: 40px; }
}

/* =========================================================================
   LIGHT-MODE SPECIFIC COMPONENT OVERRIDES
   ========================================================================= */
/* Card: Light Mode — kein harter Rahmen, nur Shadow für Tiefe */
[data-theme="light"] .card {
  border-color: transparent;
  box-shadow: 0 1px 3px rgba(16,20,27,.07), 0 0 0 1px rgba(16,20,27,.04);
}
[data-theme="light"] .omni-card {
  border-color: transparent;
  box-shadow: 0 1px 3px rgba(16,20,27,.07), 0 0 0 1px rgba(16,20,27,.04);
}
/* Card sub-sections: keep white — no grey stripe in light mode */
[data-theme="light"] .omni-card__footer { background: #f8f9fb; box-shadow: inset 0 1px 0 var(--border); }
[data-theme="light"] .omni-card--elevated { background: #ffffff; }
/* Interaktive Karten: hover zeigt Outline */
[data-theme="light"] .omni-card--interactive:hover {
  border-color: var(--accent);
  box-shadow: 0 4px 12px rgba(16,20,27,.10), 0 0 0 1px var(--accent);
}

/* Topbar search input: visible border on light */
[data-theme="light"] .omni-topbar .omni-input { background: var(--bg-inset); border-color: var(--border); }

/* Badge soft tints visible on white */
[data-theme="light"] .badge-success { background: oklch(42% 0.16 152 / 0.10); color: var(--status-success); }
[data-theme="light"] .badge-blue    { background: oklch(44% 0.16 238 / 0.10); color: var(--status-info); }
[data-theme="light"] .badge-red     { background: oklch(46% 0.20 25 / 0.10);  color: var(--status-danger); }
[data-theme="light"] .badge-orange  { background: oklch(48% 0.14 65 / 0.10);  color: var(--status-warning); }
[data-theme="light"] .badge-green   { background: oklch(42% 0.16 152 / 0.10); color: var(--status-success); }
[data-theme="light"] .omni-badge--success { background: oklch(42% 0.16 152 / 0.10); color: var(--status-success); }
[data-theme="light"] .omni-badge--danger  { background: oklch(46% 0.20 25 / 0.10);  color: var(--status-danger); }
[data-theme="light"] .omni-badge--warning { background: oklch(48% 0.14 65 / 0.10);  color: var(--status-warning); }
[data-theme="light"] .omni-badge--info    { background: oklch(44% 0.16 238 / 0.10); color: var(--status-info); }

/* Table row hover on light: cleaner than dark-mode glow */
[data-theme="light"] table.table tr:hover td { background: var(--bg-hover); }
[data-theme="light"] .row-overdue td { background: oklch(46% 0.20 25 / 0.05) !important; }
[data-theme="light"] .row-overdue:hover td { background: oklch(46% 0.20 25 / 0.09) !important; }

/* Filter toolbar on light: transparent — no grey stripe on white cards */
[data-theme="light"] .omni-toolbar--filter { background: transparent; }
[data-theme="light"] .omni-toolbar { background: var(--bg-surface); border-bottom-color: var(--border); }
/* Card body filter on light: transparent so it merges with card surface */
[data-theme="light"] .omni-card__body--filter { background: transparent; }
/* Recessed sections on light: barely-there tint instead of visible grey */
[data-theme="light"] .omni-recessed { background: #f5f7fb; }
[data-theme="light"] .omni-bg-inset { background: #f5f7fb; }

/* Status dot avatar online indicator on light */
[data-theme="light"] .omni-avatar__dot { box-shadow: 0 0 0 2px var(--bg-surface); }

/* =========================================================================
   DASHBOARD & KPI — cards, list rows, progress bars
   ========================================================================= */

/* 2-column dashboard layout */
.omni-2col-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
  align-items: start;
}
@media (max-width: 960px) { .omni-2col-grid { grid-template-columns: 1fr; } }

/* KPI card modifiers — colored left accent strip */
.card--success { box-shadow: inset 3px 0 0 var(--status-success); }
.card--warning { box-shadow: inset 3px 0 0 var(--status-warning); }
.card--danger  { box-shadow: inset 3px 0 0 var(--status-danger); }
.card--info    { box-shadow: inset 3px 0 0 var(--status-info); }

/* KPI icon — neutral container, no colored background (accent lives on the data) */
.kpi-icon {
  width: 36px; height: 36px;
  border-radius: var(--radius-md);
  background: var(--bg-inset);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  color: var(--text-secondary);
  margin-bottom: 0;           /* override legacy .kpi-icon margin-bottom */
}
/* Modifier classes are kept for markup compatibility but all neutral */
.kpi-icon--success,
.kpi-icon--warning,
.kpi-icon--danger,
.kpi-icon--info    { background: var(--bg-inset); color: var(--text-secondary); }

/* KPI card — compact horizontal layout, Luminous Slate tonal depth (No-Line Rule) */
.kpi-card {
  background: var(--bg-elevated);
  border: none;               /* override legacy .kpi-card border */
  border-radius: var(--radius-xl);
  padding: var(--space-4) var(--space-5);
  display: flex;
  align-items: center;
  gap: var(--space-4);
  text-decoration: none;
  color: inherit;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .22);
  transition: transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
}
.kpi-card:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0, 0, 0, .32); }
/* Typographic weight — 24px/800w, -0.5px tracking (spec: weight over size) */
.kpi-value { font-size: 24px; font-weight: 800; color: var(--text-primary); line-height: 1.15; letter-spacing: -0.5px; }
/* Labels — 11px/700w uppercase for hierarchy signal */
.kpi-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-tertiary); margin-top: 4px; }

/* List row — used in dashboard cards */
.omni-list-row {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-5);
  box-shadow: inset 0 -1px 0 var(--border);
  transition: background var(--dur-fast);
}
.omni-list-row:last-child { box-shadow: none; }
.omni-list-row:hover { background: var(--bg-hover); }
.omni-list-row__main { flex: 1; min-width: 0; }
.omni-list-row__title {
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.omni-list-row__title a { color: inherit; text-decoration: none; }
.omni-list-row__title a:hover { color: var(--accent); text-decoration: underline; }
.omni-list-row__sub {
  font-size: var(--fs-xs);
  color: var(--text-secondary);
  margin-top: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.omni-list-row__meta {
  font-size: var(--fs-xs);
  color: var(--text-secondary);
  white-space: nowrap;
  flex-shrink: 0;
}

/* Filter toolbar row utility */
.omni-filter-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
}
.omni-filter-row input[type="date"],
.omni-filter-row input[type="text"],
.omni-filter-row select { width: auto; }

/* Semantic KPI value colors */
.omni-kpi__value--success { color: var(--status-success); }
.omni-kpi__value--danger  { color: var(--status-danger); }
.omni-kpi__value--warning { color: var(--status-warning); }
.omni-kpi__value--accent  { color: var(--accent); }

/* Semantic text helpers */
.text-xs-muted { font-size: var(--fs-xs); color: var(--text-tertiary); }
.text-sm-muted { font-size: var(--fs-sm); color: var(--text-tertiary); }
.text-sm-strong { font-size: var(--fs-sm); font-weight: var(--fw-semibold); }

/* Card semantic accent border (left stripe, 3px) */
.card--accent  { box-shadow: inset 3px 0 0 var(--accent); }
.card--info    { box-shadow: inset 3px 0 0 var(--status-info); }
.card--muted   { box-shadow: inset 3px 0 0 var(--text-tertiary); }

/* Vertical stack layout utility */
.omni-col-stack    { display: flex; flex-direction: column; gap: var(--space-5); }
.omni-col-stack--sm { display: flex; flex-direction: column; gap: var(--space-4); }

/* Document detail grid (invoice/quote/contract) — narrower sidebar */
.omni-detail-grid--doc { grid-template-columns: 1fr 320px; }

/* Document totals footer section */
.omni-doc-totals {
  padding: var(--space-4);
  box-shadow: inset 0 1px 0 var(--border);
}
.omni-doc-totals__table {
  width: 280px;
  margin-left: auto;
}
.omni-doc-totals__row {
  display: flex;
  justify-content: space-between;
  padding: .3rem 0;
}
.omni-doc-totals__row--total {
  font-weight: var(--fw-semibold);
  font-size: 1.05rem;
  padding-top: var(--space-2);
  box-shadow: inset 0 1px 0 var(--border);
}

/* Dropdown wrapper */
.omni-dropdown-wrap { position: relative; display: inline-block; }
.omni-dropdown-menu {
  display: none;
  position: absolute;
  right: 0;
  top: 110%;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  min-width: 220px;
  z-index: var(--z-dropdown, 200);
}
.omni-dropdown-menu.is-open { display: block; }
.omni-dropdown-menu hr { margin: .25rem 0; border-color: var(--border); border-style: solid; border-width: 1px 0 0; }

/* Progress bar (pipeline value bar in dashboard) */
.omni-bar-track {
  height: 4px;
  background: var(--bg-elevated);
  border-radius: var(--radius-pill);
  overflow: hidden;
}
.omni-bar-fill {
  height: 100%;
  border-radius: var(--radius-pill);
  transition: width var(--dur-base) var(--ease-out);
  min-width: 2px;
}

/* Pipeline row — special block layout in dashboard */
.omni-pipeline-row {
  padding: var(--space-3) var(--space-5);
  box-shadow: inset 0 -1px 0 var(--border);
}
.omni-pipeline-row:last-child { box-shadow: none; }
.omni-pipeline-row__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-1);
}
.omni-pipeline-row__name {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-sm);
  color: var(--text-primary);
}
.omni-pipeline-row__dot {
  width: 9px; height: 9px;
  border-radius: 50%;
  flex-shrink: 0;
}
.omni-pipeline-row__value {
  font-size: var(--fs-sm);
  font-weight: var(--fw-bold);
  color: var(--status-success);
}

/* emp-badge alias → kept for compat, redirect to badge system */
.emp-badge { display: inline-flex; align-items: center; height: 18px; padding: 0 var(--space-2); border-radius: var(--radius-pill); font-size: 10px; font-weight: var(--fw-semibold); white-space: nowrap; }
.emp-badge-muted   { background: var(--bg-elevated); color: var(--text-secondary); }
.emp-badge-azure   { background: var(--status-info-soft); color: var(--status-info); }
.emp-badge-violet  { background: oklch(46% 0.19 300 / 0.12); color: oklch(54% 0.19 300); }
.emp-badge-amber   { background: var(--status-warning-soft); color: var(--status-warning); }
.emp-badge-green   { background: var(--status-success-soft); color: var(--status-success); }

/* =========================================================================
   SUMMARY GRID — 6 and 8 column variants (for wider KPI rows)
   ========================================================================= */
.omni-summary-grid--6 { grid-template-columns: repeat(6, 1fr); }
.omni-summary-grid--8 { grid-template-columns: repeat(8, 1fr); }
@media (max-width: 1200px) {
  .omni-summary-grid--6 { grid-template-columns: repeat(3, 1fr); }
  .omni-summary-grid--8 { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 760px) {
  .omni-summary-grid, .omni-summary-grid--6, .omni-summary-grid--8 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 440px) {
  .omni-summary-grid, .omni-summary-grid--6, .omni-summary-grid--8 { grid-template-columns: 1fr; }
}

/* Light-mode KPI card elevation */
[data-theme="light"] .kpi-card { box-shadow: 0 1px 4px rgba(0,0,0,.07); }
[data-theme="light"] .kpi-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.12); }

/* Dashboard semantic modifiers */
.card-title--danger  { color: var(--status-danger); }
.card-title--warning {
    color: var(--status-warning);
    font-size: .84rem;
    text-transform: none;
    letter-spacing: 0;
    font-weight: var(--fw-semibold);
}
.omni-list-row__title--wrap {
    white-space: normal;
    font-weight: var(--fw-medium);
    font-size: .82rem;
}
.omni-list-row__sub--danger  { color: var(--status-danger); }
.omni-list-row__meta--dim    { color: var(--text-dim); font-weight: var(--fw-normal); }
.empty-state--sm {
    text-align: center;
    color: var(--text-dim);
    font-size: .85rem;
    padding: 2rem var(--space-5);
}
.svg-noshrink { flex-shrink: 0; }

/* ── Detail / Show page layout ─────────────────────────── */
/* Two-column layout: main content + right sidebar */
.omni-detail-grid {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: var(--space-6);
  align-items: start;
}
.omni-detail-grid--narrow  { grid-template-columns: 1fr 280px; }
.omni-detail-grid--wide    { grid-template-columns: 1fr 360px; }
.omni-detail-grid--2fr1fr  { grid-template-columns: 2fr 1fr; }
.omni-detail-grid--split   { grid-template-columns: 1fr 1fr; }  /* equal 50/50 split */
@media (max-width: 900px) {
  .omni-detail-grid,
  .omni-detail-grid--narrow,
  .omni-detail-grid--wide,
  .omni-detail-grid--2fr1fr,
  .omni-detail-grid--split { grid-template-columns: 1fr; }
}

/* Two-column form grid — collapses to 1-col on mobile (≤767px via mobile.css) */
.form-row-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
}

/* Entity hero section (candidate/employee profile header) */
.omni-entity-hero {
  display: flex;
  align-items: flex-start;
  gap: var(--space-5);
  flex-wrap: wrap;
}
.omni-entity-hero__photo {
  position: relative;
  flex-shrink: 0;
}
.omni-entity-hero__photo img,
.omni-entity-hero__photo-placeholder {
  width: 90px;
  height: 90px;
  border-radius: 50%;
  object-fit: cover;
}
.omni-entity-hero__photo-placeholder {
  background: var(--brand-gradient);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2.25rem;
  font-weight: var(--fw-extrabold);
  color: var(--text-on-brand, #fff);
}
.omni-entity-hero__body { flex: 1; min-width: 0; }
.omni-entity-hero__name {
  font-size: 1.375rem;
  font-weight: var(--fw-extrabold);
  margin-bottom: var(--space-1);
  color: var(--text-primary);
}
.omni-entity-hero__subtitle {
  color: var(--text-secondary);
  margin-bottom: var(--space-2);
}
.omni-entity-hero__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  font-size: var(--fs-sm);
  color: var(--text-tertiary);
}

/* Field label / value pair */
.omni-field__label { margin-bottom: .2rem; }
.omni-field__value { font-size: .9375rem; }

/* Info block (padded section within a card) */
.omni-info-block {
  margin-top: var(--space-5);
  padding: var(--space-4);
  background: var(--bg-elevated);
  border-radius: var(--radius-md);
}
.omni-info-block--sm { margin-top: var(--space-4); }

/* Modal overlay / inner (structural BEM for custom modals) */
.omni-modal__overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.55);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: var(--z-modal, 900);
}
.omni-modal__overlay.open { display: flex; }
.omni-modal__inner {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  width: 100%;
  max-width: 560px;
  max-height: 90vh;
  overflow-y: auto;
}

/* AI panel card */
.card--ai {
  border: 1px solid rgba(var(--accent-rgb, 53 193 239) / .22);
  box-shadow: 0 0 24px rgba(var(--accent-rgb, 53 193 239) / .07);
}

/* Inline icon with accent color */
.icon-accent  { color: var(--accent); }
.icon-danger  { color: var(--status-danger); }
.icon-success { color: var(--status-success); }
.icon-warning { color: var(--status-warning); }

/* Accent link (for coloring anchor text with accent, without inline style) */
a.link-accent, .link-accent { color: var(--accent); text-decoration: none; }
a.link-accent:hover, .link-accent:hover { text-decoration: underline; }

/* Horizontal stats row (N-column KPI band) */
.omni-stats-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
  gap: var(--space-4);
}

/* DNC (Do Not Contact) alert banner */
.dnc-banner {
  background: var(--status-danger-soft);
  border: 1px solid rgba(var(--danger-rgb, 239 68 68) / .20);
  color: var(--status-danger);
  border-radius: var(--radius-md);
  padding: .75rem 1rem;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}

/* KPI progress bar (compact bar below kpi-value) */
.kpi-bar-wrap {
  height: 4px;
  background: var(--border);
  border-radius: var(--radius-pill);
  overflow: hidden;
  margin-top: .4rem;
}
.kpi-bar {
  height: 100%;
  border-radius: var(--radius-pill);
  transition: width var(--dur-base) var(--ease-out);
}
.kpi-progress-text { font-size: .7rem; color: var(--text-tertiary); margin-top: .2rem; }

/* KPI body (text content in a horizontal kpi-card variant) */
.kpi-body { flex: 1; min-width: 0; }

/* Sidebar action button stack */
.omni-sidebar-actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.omni-sidebar-actions .btn { justify-content: center; }

/* Margin-left auto push (for badges at end of flex row) */
.ms-auto { margin-left: auto; }

/* Inline code/badge for personnel numbers etc */
.omni-code-badge {
  font-size: .875rem;
  background: var(--bg-elevated);
  padding: .2rem .625rem;
  border-radius: var(--radius-sm);
  color: var(--accent);
  letter-spacing: .04em;
  font-family: var(--font-mono, monospace);
}

/* Tab panel padding (document tabs) */
.omni-tab-panel { padding: var(--space-5); }
.omni-tab-panel--hidden { display: none; }

/* Section label (uppercase eyebrow heading above grouped content) */
.omni-section-label {
  font-size: .68rem;
  font-weight: var(--fw-bold, 700);
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--text-muted, var(--text-tertiary));
  margin-bottom: .875rem;
}

/* Badge XS — for tiny overdue/count badges that need smaller font */
.omni-badge--xs {
  font-size: .65rem;
  padding: .1rem .35rem;
  margin-left: .25rem;
}

/* fw-700 weight utility (complement to fw-600) */
.fw-700 { font-weight: 700; }

/* Flex gap utilities */
.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }

/* White-space nowrap utility */
.ws-nowrap { white-space: nowrap; }

/* Uppercase label with tracking (eyebrow / category headings) */
.text-label-caps {
  text-transform: uppercase;
  letter-spacing: .05em;
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  color: var(--text-tertiary);
}

/* KPI value size modifiers */
.omni-kpi__value--lg { font-size: 1.6rem; }
.omni-kpi__value--md { font-size: 1.4rem; }

/* Detail-grid sidebar variant — narrower aside (300 px) */
.omni-detail-grid--sm { grid-template-columns: 1fr 300px; }
@media (max-width: 900px) { .omni-detail-grid--sm { grid-template-columns: 1fr; } }

/* Font-size utilities (no color override — complement text-xs-muted / text-sm-muted) */
.fs-xs { font-size: .8rem; }
.fs-sm { font-size: .875rem; }

/* Tab-panel default padding (used when display is not JS-toggled) */
.omni-tab-panel { padding: 1.25rem; }

/* ── Inline-style cleanup utilities ─────────────────────────────────────── */

/* Max-width constraints */
.mw-300 { max-width: 300px; }
.mw-560 { max-width: 560px; }

/* Min-width */
.min-w-100 { min-width: 100px; }

/* Margin / padding resets and spacing */
.m-0  { margin: 0; }
.mt-3 { margin-top: .75rem; }
.ms-2 { margin-left: .5rem; }
.pb-3 { padding-bottom: .75rem; }

/* Font-size utilities (size only, no colour override) — see canonical definition at top of file */
/* .text-xs and .text-sm are defined earlier; these aliases kept for backward compat */
.text-sm { font-size: .875rem; }

/* Page-level column stack (profile / narrow form pages) */
.omni-col-stack--page {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  max-width: 560px;
}

/* ── Named spacing utilities for portal/onboarding inline-style cleanup ── */
.omni-mr-2  { margin-right:  .5rem; }
.omni-mb-3  { margin-bottom: .75rem; }
.omni-mb-4  { margin-bottom: 1rem; }
.omni-mb-5  { margin-bottom: 1.25rem; }
.omni-mt-4  { margin-top:    1rem; }
.omni-mt-5  { margin-top:    1.25rem; }
/* Width-full shorthand (complements .u-w-full / .omni-w-full) */
.w-full { width: 100%; }

/* ── Spacing / layout micro-utilities (added for inline-style cleanup) ── */
.p-0  { padding: 0; }
.p-3  { padding: .75rem; }
.p-4  { padding: 1rem; }
.mt-4 { margin-top: 1rem; }
.mb-3 { margin-bottom: .75rem; }
.d-inline    { display: inline; }
.flex-1      { flex: 1; }
.pos-relative { position: relative; }

/* ── Margin-bottom micro-steps (complete the mb-* scale) ───────────────── */
.mb-0 { margin-bottom: 0; }
.mb-1 { margin-bottom: .25rem; }
.mb-2 { margin-bottom: .5rem; }
.mb-4 { margin-bottom: 1rem; }
.mb-5 { margin-bottom: 1.25rem; }
.mb-6 { margin-bottom: 1.5rem; }

/* ── Column-form flex stacks – gap-4 (1 rem) and gap-5 (1.25 rem) ──────── */
.u-stack--gap4 { gap: var(--space-4); }
.u-stack--gap5 { gap: var(--space-5); }

/* ── Monospace content textarea / editor (template & doc content) ────────── */
.omni-input--mono {
  font-family: var(--font-mono, monospace);
  font-size: .85rem;
}

/* ── Responsive auto-fill card grid (templates list) ──────────────────────── */
.omni-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 1rem;
}

/* ── Card footer: actions pushed to the right end ─────────────────────────── */
.omni-card__footer--end {
  display: flex;
  gap: .5rem;
  justify-content: flex-end;
}

/* ── Modal card width constraints ─────────────────────────────────────────── */
.omni-modal-card--sm { width: 480px; max-width: 95vw; }
.omni-modal-card--md { width: 720px; max-width: 95vw; max-height: 87vh; display: flex; flex-direction: column; }

/* ── Two-column template-edit layout (form + sticky sidebar) ─────────────── */
.omni-tpl-layout {
  display: grid;
  grid-template-columns: 1fr 260px;
  gap: 1.25rem;
  align-items: start;
}

/* ── Sticky sidebar helper ────────────────────────────────────────────────── */
.omni-sidebar-sticky {
  position: sticky;
  top: 1rem;
}

/* ── Card body with reduced text size (placeholder list, metadata) ────────── */
.omni-card__body--text-sm { font-size: .82rem; }

/* ── Inline page-header row (smaller than full .omni-page-header toolbar) ─── */
.omni-page-header--row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: .5rem;
  margin-bottom: 1.25rem;
}
.omni-page-header--row__left {
  display: flex;
  align-items: center;
  gap: .75rem;
}
.omni-page-header--row__title {
  font-size: 1.05rem;
  font-weight: 600;
  margin: 0;
}

/* ── Empty-state centred card body ───────────────────────────────────────── */
.omni-empty-body {
  text-align: center;
  padding: 3rem;
  color: var(--text-muted, var(--text-tertiary));
}
.omni-empty-icon {
  font-size: 2.5rem;
  margin-bottom: 1rem;
}

/* ── Form width constraints ───────────────────────────────────────────────── */
.omni-form--md { max-width: 860px; }
.omni-form--sm { max-width: 760px; }

/* ── Grid span helper ─────────────────────────────────────────────────────── */
.col-span-2 { grid-column: span 2; }

/* ── 3-column equal grid ──────────────────────────────────────────────────── */
.omni-3col-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 1rem;
}
@media (max-width: 960px) { .omni-3col-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .omni-3col-grid { grid-template-columns: 1fr; } }

/* ── Calendar inline-style cleanup utilities ──────────────────────────────── */

/* View-tab strip (shared across month / week / day / list views) */
.cal-view-tabs { display: flex; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.cal-view-tabs a { padding: .35rem .8rem; font-size: .8rem; font-weight: 500; color: var(--text-secondary); text-decoration: none; transition: background .15s, color .15s; background: var(--bg-card); }
.cal-view-tabs a:hover { background: var(--bg-elevated); color: var(--text-primary); }
.cal-view-tabs a.active { background: var(--accent); color: var(--text-on-brand, #fff); }

/* Filter-panel label above <select> / <input> */
.cal-filter-label {
  font-size: .75rem;
  font-weight: 600;
  color: var(--text-muted);
  display: block;
  margin-bottom: .3rem;
}

/* Small font-size for popup action buttons */
.fs-78 { font-size: .78rem; }

/* Fixed-width table action column */
.w-100px { width: 100px; }

/* ── Inline-style cleanup — inbox / sequences / lead-lists ───────────────── */
/* Select min-width used in filter bars */
.min-w-140     { min-width: 140px; }
/* Max-width cap for narrow number inputs (e.g. trigger hours) */
.omni-max-w-140 { max-width: 140px; }
/* Fixed-width table columns */
.w-140         { width: 140px; }
.w-60          { width: 60px; }
/* Full-span grid child (grid-column: 1 / -1) */
.gc-full       { grid-column: 1 / -1; }

/* ── Margin-top 1.25rem ───────────────────────────────────────────────────── */
.mt-5 { margin-top: 1.25rem; }

/* ── Inline-style cleanup utilities (journey / sessions / candidates) ──────── */
.flex-shrink-0 { flex-shrink: 0; }
.min-w-0       { min-width: 0; }
.opacity-40    { opacity: .4; }
/* .text-xs canonical: font-size: var(--fs-xs) — defined at top of file */
.mb-2          { margin-bottom: .5rem; }
.text-error    { color: var(--error, #ef4444); }

/* ── Settings-page width constraints ─────────────────────────────────────── */
.omni-max-w-720 { max-width: 720px; }
.omni-max-w-700 { max-width: 700px; }
.omni-max-w-640 { max-width: 640px; }
.omni-max-w-300 { max-width: 300px; }
.omni-max-w-120 { max-width: 120px; }

/* ── Doc-form utility additions ──────────────────────────────────────────── */
/* Sub-label hint text (e.g. "Next number: X" in form page headers)          */
.text-note  { font-size: .85rem; }
/* Reset to browser body size (used for gross-total emphasis in doc forms)   */
.text-base  { font-size: 1rem; }

/* ── Settings-view inline-style cleanup additions ───────────────────────── */
/* Outer page column stack with 1.5 rem gap (settings sections)              */
.omni-col-stack--lg { display: flex; flex-direction: column; gap: var(--space-6); }
/* Small muted hint line below form inputs / info paragraphs                 */
.omni-hint { font-size: .72rem; color: var(--text-muted); margin: .25rem 0 0; }

/* ── Padding scale completion ───────────────────────────────────────────── */
.p-5 { padding: 1.25rem; }

/* ── Margin-top/bottom completion ───────────────────────────────────────── */
.mt-6 { margin-top: 1.5rem; }
.mb-7 { margin-bottom: 1.75rem; }

/* ── Form-actions row (flex right-aligned button group) ─────────────────── */
.omni-form-actions { display: flex; gap: .75rem; justify-content: flex-end; align-items: center; }

/* ── Inline button icon (transparent, icon-only sizing) ─────────────────── */
.btn-icon { background: none; border: none; cursor: pointer; padding: .25rem .4rem; border-radius: var(--radius-sm); display: inline-flex; align-items: center; justify-content: center; }
.btn-icon--danger { color: var(--status-danger); }
.btn-icon--danger:hover { background: var(--status-danger-soft); }

/* ── KPI-view inline-style cleanup utilities ─────────────────────────────── */
/* Micro font size for avatar initials inside table cells                     */
.fs-2xs { font-size: .65rem; }

/* Table bottom margin matching .875rem design token                          */
.omni-mb-875 { margin-bottom: .875rem; }

/* Single-step top margin (.25rem) for stacked inline actions                 */
.omni-mt-1 { margin-top: .25rem; }

/* Fixed-width table header columns                                           */
.omni-w-120 { width: 120px; }
.omni-w-140 { width: 140px; }
.omni-w-160 { width: 160px; }

/* Padded empty-state inside flush card bodies                                */
.omni-p-8 { padding: 2rem; }

/* Horizontal scroll wrapper for wide data tables                             */
.omni-overflow-x-auto { overflow-x: auto; }

/* ── Inline-style cleanup (appointments / candidates / seo) ─────────────── */
/* Card max-width for product/table pages                                     */
.omni-max-w-900 { max-width: 900px; }
/* Icon/SVG opacity step for empty-state illustrations                        */
.opacity-35 { opacity: .35; }
/* Visualizer bar chart series fixed colors                                   */
.text-series-tasks  { color: #4ade80; }
.text-series-emails { color: #a78bfa; }
/* Visualizer legend dot backgrounds matching series colors                   */
.bg-series-tasks    { background: #4ade80; }
.bg-series-emails   { background: #a78bfa; }

/* ── Form inline-style cleanup utilities ─────────────────────────────────── */
/* Grid alignment for two-column form layouts                                  */
.omni-align-start { align-items: start; }

/* Flex-grow ratio for asymmetric form rows (e.g. name + legal_form 2:1)      */
.omni-flex-2 { flex: 2; }

/* Full-width span inside a two-column CSS grid (contracts form)               */
.omni-col-full { grid-column: 1 / -1; }

/* Constrained select width for template picker                                */
.omni-max-w-340 { max-width: 340px; }

/* Compact icon-only padding for small action buttons                          */
.omni-p-icon-sm { padding: .3rem .6rem; }

/* Tight top margin for field hints below flex rows                            */
.omni-mt-35 { margin-top: .35rem; }

/* Transition preset for flash alert auto-dismiss fade + slide                 */
.omni-transition-fade { transition: opacity .3s, transform .3s; }

/* ── Inline-style cleanup utilities (categories / job-portal / leads) ──────── */
.justify-end  { justify-content: flex-end; }
.items-start  { align-items: flex-start; }

/* ── Onboarding-template inline-style cleanup ───────────────────────────── */
/* Right margin .5 rem — matches ms-2 scale, end direction */
.me-2 { margin-right: .5rem; }

/* ── Multi-file inline-style cleanup (candidate-portal / backup / seo / calendar) ── */
/* margin-top: 1.125rem — used in candidate portal language section           */
.mt-875  { margin-top: 1.125rem; }
/* margin-top: .375rem — used in portal footer                                */
.mt-375  { margin-top: .375rem; }
/* opacity step .25 — inactive timeline dot                                   */
.opacity-25  { opacity: .25; }
/* cursor for tooltip-bearing spans                                           */
.cursor-help { cursor: help; }
/* Definition-list card inner padding (1.25 rem vertical / 1.5 rem horizontal) */
.omni-dl-pad { padding: 1.25rem 1.5rem; }
/* Inherit parent font-family — used in file-backup label span                */
.font-inherit { font-family: inherit; }
/* Vertical resize only — textarea helper                                     */
.resize-v    { resize: vertical; }
/* Inline display — used for forms that must not break flex rows              */
.d-inline    { display: inline; }

/* =========================================================================
   DASHBOARD GRID ROW LAYOUTS
   The admin dashboard uses these named grid row containers combined with
   `.omni-section`. Because these rules are defined AFTER `.omni-section`,
   their `display:grid` and `padding:0` override omni-section's flex/padding.
   ========================================================================= */

/* Reset omni-section padding when combined with any dashboard grid row */
.omni-summary-grid { padding: 0; }   /* omni-section adds unwanted inner padding */

/* Legacy 7-tile grid (kept for back-compat with other dashboards) */
.omni-summary-grid--7 {
  grid-template-columns: repeat(7, 1fr);
}
@media (max-width: 1280px) { .omni-summary-grid--7 { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 768px)  { .omni-summary-grid--7 { grid-template-columns: repeat(2, 1fr); } }

/* =========================================================================
   ARCHITECTURAL PORTFOLIO — KPI CARDS
   White cards, near-black numbers, monochrome aesthetic.
   Theme-independent: forced light treatment regardless of dark/light mode.
   BEM prefix: omn-
   ========================================================================= */

/* Page surface — Architectural Portfolio canvas, theme-aware */
.omn-portfolio-surface {
  background: var(--bg-base);
  margin: calc(var(--space-8) * -1);
  padding: var(--space-8);
  min-height: calc(100vh - 64px);
  color: var(--text-primary);
}
.omn-portfolio-surface .omni-page-header__title { color: var(--text-primary); }
.omn-portfolio-surface .omni-page-header__subtitle { color: var(--text-secondary); }
.omn-portfolio-surface .btn.omni-btn--ghost { color: var(--text-secondary); border-color: transparent; }
.omn-portfolio-surface .btn.omni-btn--ghost:hover { background: var(--bg-hover); color: var(--text-primary); }
.omn-portfolio-surface .btn.omni-btn--primary { background: var(--text-primary); border-color: var(--text-primary); color: var(--bg-surface); }
.omn-portfolio-surface .btn.omni-btn--primary:hover { background: var(--text-secondary); border-color: var(--text-secondary); box-shadow: none; }

/* Grid wrappers */
.omn-kpi-grid {
  display: grid;
  gap: 16px;
  margin-bottom: 16px;
}
.omn-kpi-grid--primary    { grid-template-columns: repeat(4, 1fr); }
.omn-kpi-grid--secondary  { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 1100px) {
  .omn-kpi-grid--primary  { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 900px) {
  .omn-kpi-grid--secondary { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .omn-kpi-grid--primary  { grid-template-columns: 1fr; }
}

/* Card — strict spec — UNIFORM size enforced, theme-aware */
.omn-kpi {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 24px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 8px;
  height: 132px;
  box-sizing: border-box;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.omn-kpi:hover {
  border-color: var(--border-strong);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

/* Label — 11px / 700 / uppercase / secondary text */
.omn-kpi__label {
  font-family: "Inter", var(--font-sans);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-secondary);
  margin: 0;
}

/* Value — Inter 36px / 800 / -1px / primary text */
.omn-kpi__value {
  font-family: "Inter", var(--font-sans);
  font-size: 36px;
  font-weight: 800;
  letter-spacing: -1px;
  line-height: 1;
  color: var(--text-primary);
  font-variant-numeric: tabular-nums;
  margin: 0;
}

/* Sub-text — context */
.omn-kpi__sub {
  font-family: "Inter", var(--font-sans);
  font-size: 12px;
  font-weight: 500;
  color: var(--text-secondary);
  margin-top: auto;
}

/* Compact modifier — for secondary KPIs (same design, denser) */
.omn-kpi--compact {
  padding: 20px 24px;
  height: 96px;             /* fixed height = uniform compact tiles */
  gap: 6px;
}
.omn-kpi--compact .omn-kpi__value {
  font-size: 28px;
  letter-spacing: -0.6px;
}

/* Link affordance — chevron in top-right of card */
.omn-kpi__link {
  position: absolute;
  top: 18px; right: 18px;
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: 50%;
  background: transparent;
  color: var(--text-secondary);
  text-decoration: none;
  transition: background .15s ease, color .15s ease;
}
.omn-kpi__link:hover { background: var(--bg-hover); color: var(--text-primary); }
.omn-kpi { position: relative; }

/* =========================================================================
   ARCHITECTURAL PORTFOLIO — DASHBOARD CARD OVERRIDES
   Forces all .card elements inside dashboard rows to white aesthetic.
   ========================================================================= */
.omni-charts-row .card,
.omni-bottom-row .card {
  background: var(--bg-surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: 12px !important;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02) !important;
  color: var(--text-primary);
}
.omni-charts-row .card-title,
.omni-bottom-row .card-title { color: var(--text-primary); font-weight: 700; }
.omni-charts-row .card-title svg,
.omni-bottom-row .card-title svg { stroke: currentColor; }
.omni-charts-row .card-header,
.omni-bottom-row .card-header { background: transparent; }

/* Gauge center overlay — perfectly centered under the half-circle arc */
.omn-gauge-wrap { position: relative; width: 100%; height: 100%; }
.omn-gauge-center {
  position: absolute;
  left: 50%;
  bottom: 12%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  pointer-events: none;
  text-align: center;
}
.omn-gauge-center__pct {
  font-family: "Inter", var(--font-sans);
  font-size: 36px;
  font-weight: 800;
  letter-spacing: -0.8px;
  color: var(--text-primary);
  line-height: 1;
}
.omn-gauge-center__sub {
  font-family: "Inter", var(--font-sans);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-secondary);
  margin-top: 6px;
}

/* Donut center label — theme-aware */
.omni-charts-row .donut-center-val {
  font-family: "Inter", var(--font-sans);
  font-size: 36px; font-weight: 800; color: var(--text-primary);
  letter-spacing: -0.8px; line-height: 1;
}
.omni-charts-row .donut-center-lbl {
  font-family: "Inter", var(--font-sans);
  font-size: 11px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--text-secondary); margin-top: 6px;
}

/* Heatmap — theme-aware */
.omni-bottom-row .hm-user-cell {
  max-width: 110px;
  font-size: .72rem;
  color: var(--text-primary);
}
.omni-bottom-row .hm-table th { color: var(--text-secondary); }

/* Leaderboard — theme-aware */
.omni-bottom-row .lb-name { color: var(--text-primary); }
.omni-bottom-row .lb-meta,
.omni-bottom-row .lb-won { color: var(--text-secondary); }
.omni-bottom-row .lb-item { background: var(--bg-elevated); }
.omni-bottom-row .lb-bar-track { background: var(--border); }
.omni-bottom-row .lb-bar-fill { background: var(--omn-brand-primary) !important; }

/* Unassigned table — theme-aware */
.omni-bottom-row .ua-table th { color: var(--text-secondary); border-bottom-color: var(--border); }
.omni-bottom-row .ua-table td { border-bottom-color: var(--bg-hover); }
.omni-bottom-row .ua-table tr:hover td { background: var(--bg-hover); }
.omni-bottom-row .ua-lead-title a { color: var(--text-primary); }
.omni-bottom-row .ua-date,
.omni-bottom-row .ua-lead-company { color: var(--text-secondary); }
.omni-bottom-row .ua-select { background: var(--bg-surface); border: 1px solid var(--border); color: var(--text-primary); }

/* =========================================================================
   CHARTS ROW — 3 equal columns, all uniform height
   ========================================================================= */
.omni-charts-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  align-items: stretch;
  padding: 0;
  margin-bottom: 16px;
}
.omni-chart-card {
  display: flex;
  flex-direction: column;
  height: 280px;            /* uniform card height across all 3 charts */
  box-sizing: border-box;
}
.omni-chart-card .card-header { padding: 18px 24px 8px; flex-shrink: 0; }
.omni-chart-card .card-body   { flex: 1; padding: 8px 24px 20px; min-height: 0; }
.omn-chart-fill {
  position: relative;
  width: 100%;
  height: 100%;
}
.omn-chart-fill canvas {
  width: 100% !important;
  height: 100% !important;
  display: block;
}

@media (max-width: 1100px) {
  .omni-charts-row { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 700px) {
  .omni-charts-row { grid-template-columns: 1fr; }
}

/* =========================================================================
   BOTTOM ROW — 4 columns: Velocity | Leaderboard | Heatmap | Unassigned
   All cards share identical fixed height for uniform look.
   ========================================================================= */
.omni-bottom-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  padding: 0;
  margin-bottom: 16px;
  align-items: stretch;
}
.omni-bottom-row > .card {
  display: flex;
  flex-direction: column;
  height: 280px;            /* uniform card height */
  box-sizing: border-box;
}
.omni-bottom-row .card-header { padding: 16px 20px 8px; }
.omni-bottom-row .card-body   { flex: 1; padding: 8px 20px 16px; overflow: auto; min-height: 0; }
.omni-bottom-row .card-title  { font-size: 12px; }

@media (max-width: 1280px) {
  .omni-bottom-row { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 700px) {
  .omni-bottom-row { grid-template-columns: 1fr; }
}

/* Velocity + Leaderboard row — 2 columns (wide left, narrow right)          */
.omni-velo-board-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
  align-items: start;
  padding: 0;
  margin-bottom: var(--space-4);
}
@media (max-width: 960px) { .omni-velo-board-row { grid-template-columns: 1fr; } }

/* Heatmap + Unassigned leads row — 2 columns                                */
.omni-heat-assign-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
  align-items: start;
  padding: 0;
  margin-bottom: var(--space-4);
}
@media (max-width: 960px) { .omni-heat-assign-row { grid-template-columns: 1fr; } }

/* =========================================================================
   BUTTON HOVER — HIGH-END DESKTOP POLISH
   These override the base .btn hover when omni modifier classes are absent.
   For ghost buttons without .omni-btn base: ensure transparent border on hover.
   ========================================================================= */
/* Ghost variant on .btn (used as .btn.omni-btn--ghost combos)               */
.btn.omni-btn--ghost        { background: transparent; border-color: transparent; color: var(--text-secondary); }
.btn.omni-btn--ghost:hover  { background: var(--bg-hover); border-color: transparent; color: var(--text-primary); }
/* Primary variant on .btn (used as .btn.omni-btn--primary combos)           */
.btn.omni-btn--primary       { background: var(--brand-gradient, var(--accent)); border: none; color: var(--text-on-accent); }
.btn.omni-btn--primary:hover { filter: brightness(1.12); color: var(--text-on-accent); box-shadow: 0 4px 16px -4px var(--accent-glow); }
/* Danger variant */
.btn.omni-btn--danger        { background: transparent; border-color: var(--border); color: var(--status-danger); }
.btn.omni-btn--danger:hover  { background: var(--status-danger-soft); border-color: var(--status-danger); color: var(--status-danger); }
/* Outline variant */
.btn.omni-btn--outline        { background: transparent; border-color: var(--accent); color: var(--accent); }
.btn.omni-btn--outline:hover  { background: var(--accent-soft); color: var(--accent); }

/* ── Desktop focus improvement — larger, clearer ring                       */
.btn:focus-visible,
.omni-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--bg-base), 0 0 0 4px var(--accent);
}

/* =========================================================================
   ADMIN DASHBOARD — Component Styles
   All dashboard-specific classes: modals, charts, leaderboard, heatmap,
   unassigned leads, FAB pulse, KPI card variants.
   ========================================================================= */

/* ── Card state variants — tonal accent stripe (No-Line Rule: inset shadow, not border) */
.card--warning { box-shadow: inset 3px 0 0 var(--status-warning); }
.card--success { box-shadow: inset 3px 0 0 var(--status-success); }

/* ── Chart wrapper — constrains canvas height ────────────────────────────── */
.chart-wrap { position: relative; width: 100%; }

/* ── Donut center label (overlaid on canvas) ─────────────────────────────── */
.donut-center {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  pointer-events: none;
}
.donut-center-val { font-size: var(--fs-2xl); font-weight: 800; color: var(--text-primary); line-height: 1; letter-spacing: -0.5px; }
.donut-center-lbl { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-tertiary); margin-top: 4px; }

/* ── Win-Rate gauge label block ──────────────────────────────────────────── */
.gauge-label { text-align: center; margin-top: var(--space-3); }
.gauge-pct   { font-size: 32px; font-weight: 800; color: var(--text-primary); line-height: 1; letter-spacing: -0.5px; }
.gauge-sub   { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-tertiary); margin-top: 4px; }
.gauge-wl    { display: flex; align-items: center; justify-content: center; gap: var(--space-4); margin-top: var(--space-3); font-size: var(--fs-xs); color: var(--text-secondary); }
.gauge-wl-item { display: flex; align-items: center; gap: 5px; }
.gauge-dot   { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }

/* ── Team Leaderboard (DENSE) ────────────────────────────────────────────── */
.lb-list { list-style: none; display: flex; flex-direction: column; gap: 6px; }
.lb-item {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 8px;
  border-radius: var(--radius-md);
  background: var(--bg-elevated);
  transition: background var(--dur-fast);
  position: relative;
}
.lb-item:hover { background: var(--bg-hover); }
.lb-item.top-performer { background: color-mix(in oklch, var(--accent) 8%, transparent); box-shadow: inset 0 0 0 1px color-mix(in oklch, var(--accent) 12%, transparent); }
.lb-crown {
  position: absolute; top: -6px; left: 10px;
  width: 18px; height: 18px; border-radius: 50%;
  background: var(--brand-gradient, linear-gradient(135deg, var(--accent), var(--accent-2)));
  display: flex; align-items: center; justify-content: center;
}
.lb-avatar {
  width: 28px; height: 28px; border-radius: 50%;
  background: linear-gradient(135deg, var(--brand-color-start), var(--brand-color-end));
  display: flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 700; color: #fff;
  flex-shrink: 0; letter-spacing: .02em;
}
.lb-bar-wrap { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.lb-name  { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lb-meta  { font-size: var(--fs-xs); color: var(--text-tertiary); }
.lb-won   { font-size: var(--fs-xs); color: var(--text-tertiary); }
.lb-bar-track { height: 4px; border-radius: 2px; background: var(--bg-hover); overflow: hidden; margin-top: 3px; }
.lb-bar-fill  { height: 100%; border-radius: 2px; background: var(--brand-gradient, linear-gradient(90deg, var(--accent), var(--accent-2))); transition: width .6s var(--ease-out); }
.lb-detail { padding: var(--space-2) var(--space-3); font-size: var(--fs-xs); color: var(--text-secondary); background: var(--bg-elevated); border-radius: var(--radius-md); display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-5); }

/* ── Activity Heatmap ────────────────────────────────────────────────────── */
.hm-grid { overflow-x: auto; }
.hm-table { border-collapse: collapse; width: 100%; font-size: .78rem; }
.hm-table th { text-align: center; padding: .25rem .35rem; font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--text-tertiary); }
.hm-table td { padding: .2rem .3rem; }
.hm-user-cell { text-align: left; padding-right: .6rem !important; font-size: .72rem; color: var(--text-secondary); white-space: nowrap; max-width: 90px; overflow: hidden; text-overflow: ellipsis; }
.hm-cell {
  width: 18px; height: 18px; border-radius: 4px; margin: auto;
  background: color-mix(in srgb, var(--brand-color-start) calc(var(--hm-i, 0) * 25%), var(--bg-elevated));
  transition: transform .1s;
  cursor: default;
}
.hm-cell.bright { background: linear-gradient(135deg, var(--brand-color-start), var(--brand-color-end)); box-shadow: 0 0 8px var(--accent-glow); }
.hm-cell:hover { transform: scale(1.15); }

/* ── Unassigned Leads table ──────────────────────────────────────────────── */
.ua-table { width: 100%; border-collapse: collapse; font-size: .84rem; }
.ua-table th { text-align: left; padding: .5rem 1rem; font-size: .7rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--text-tertiary); border-bottom: 1px solid var(--border); }
.ua-table td { padding: .6rem 1rem; border-bottom: 1px solid var(--border-subtle, var(--border)); }
.ua-table tr:last-child td { border-bottom: none; }
.ua-table tr:hover td { background: var(--bg-elevated); }
.ua-lead-title a { color: var(--text-primary); text-decoration: none; font-weight: 600; transition: color var(--dur-fast); }
.ua-lead-title a:hover { color: var(--accent); }
.ua-lead-company { font-size: .78rem; color: var(--text-tertiary); margin-top: 2px; }
.ua-date { font-size: .78rem; color: var(--text-tertiary); white-space: nowrap; }
.ua-select {
  padding: .3rem .55rem; font-size: .8rem; border-radius: var(--radius-sm);
  border: 1px solid var(--border); background: var(--bg-elevated); color: var(--text-primary);
  cursor: pointer; transition: border-color var(--dur-fast);
}
.ua-select:focus { border-color: var(--accent); outline: none; }

/* ── omni-modal header & close (used in db-modal) ───────────────────────── */
.omni-modal__header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-5) var(--space-6); }
.omni-modal__close {
  display: flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: var(--radius-sm);
  border: none; background: transparent; cursor: pointer;
  color: var(--text-secondary); transition: background var(--dur-fast), color var(--dur-fast);
}
.omni-modal__close:hover { background: var(--bg-hover); color: var(--text-primary); }
.omni-modal__body { padding: var(--space-5) var(--space-6); overflow-y: auto; max-height: 60vh; }

/* ── Dashboard drill-down modal (db-modal) ───────────────────────────────── */
.db-modal {
  display: none;
  position: fixed; inset: 0; z-index: 500;
  background: rgba(0,0,0,.65);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  align-items: center; justify-content: center;
  padding: var(--space-4);
}
.db-modal.open { display: flex; }
.db-modal-box {
  background: var(--bg-elevated);
  box-shadow: 0 24px 64px rgba(0,0,0,.55), inset 0 0 0 1px rgba(255,255,255,.06);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-xl);
  width: 100%; max-width: 580px;
  max-height: 85vh; overflow: hidden;
  display: flex; flex-direction: column;
  animation: dbModalIn .2s var(--ease-out) both;
}
.db-modal-title { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--text-primary); }
@keyframes dbModalIn {
  from { opacity: 0; transform: translateY(12px) scale(.97); }
  to   { opacity: 1; transform: translateY(0)    scale(1);   }
}

/* ── Modal table (inside db-modal) ──────────────────────────────────────── */
.modal-table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.modal-table th { text-align: left; padding: .4rem .75rem; font-size: .72rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--text-tertiary); border-bottom: 1px solid var(--border); }
.modal-table td { padding: .6rem .75rem; border-bottom: 1px solid var(--border-subtle, var(--border)); }
.modal-table tr:last-child td { border-bottom: none; }
.modal-table tr:hover td { background: var(--bg-elevated); }

/* ── FAB — floating action button (mobile pulse trigger) ─────────────────── */
.db-fab {
  position: fixed; bottom: 1.5rem; right: 1.5rem; z-index: 400;
  width: 52px; height: 52px; border-radius: 50%;
  background: var(--brand-gradient, linear-gradient(135deg, var(--accent), var(--accent-2)));
  border: none; cursor: pointer;
  display: none; /* hidden on desktop — shown on mobile only */
  align-items: center; justify-content: center;
  box-shadow: 0 8px 24px var(--accent-glow);
  transition: transform var(--dur-fast), box-shadow var(--dur-fast);
}
.db-fab:hover { transform: scale(1.08); box-shadow: 0 12px 32px var(--accent-glow); }
@media (max-width: 768px) { .db-fab { display: flex; } }

/* ── Pulse slide-up modal (mobile KPI summary) ───────────────────────────── */
.db-pulse-modal {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 450;
  background: var(--bg-elevated);
  box-shadow: 0 -8px 32px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.06);
  border-radius: var(--radius-xl) var(--radius-xl) 0 0;
  padding: var(--space-4) var(--space-5) var(--space-6);
  transform: translateY(100%);
  transition: transform .3s var(--ease-out);
  box-shadow: 0 -8px 32px rgba(0,0,0,.3);
}
.db-pulse-modal.open { transform: translateY(0); }
.db-pulse-handle { width: 40px; height: 4px; border-radius: 2px; background: var(--border); margin: 0 auto var(--space-4); }
.db-pulse-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-4); text-align: center; }
.db-pulse-kpi-val { font-size: 22px; font-weight: 800; letter-spacing: -0.5px; color: var(--accent); }
.db-pulse-kpi-lbl { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-tertiary); margin-top: 4px; }
.db-pulse-close { text-align: center; margin-top: var(--space-4); }
.db-pulse-close button { background: none; border: 1px solid var(--border); border-radius: var(--radius-sm); padding: .35rem 1.25rem; font-size: .85rem; color: var(--text-secondary); cursor: pointer; transition: background var(--dur-fast); }
.db-pulse-close button:hover { background: var(--bg-hover); }

/* ── badge-orange variant ────────────────────────────────────────────────── */
.badge-orange { background: rgba(245,158,11,.15); color: #f59e0b; border-color: rgba(245,158,11,.3); }

/* =========================================================================
   TONAL LAYERING — global system
   Anti-Box-in-Box: kein Border/Shadow auf inneren Elementen, nur
   tonale Hintergrundschichten + Weißraum.
   ========================================================================= */

/* ── Recessed item: leicht eingesunkener Hintergrund, kein Rahmen ── */
.omni-recessed {
  background: var(--bg-hover);
  border-radius: var(--radius-md);
  padding: var(--space-4);
}
.omni-recessed--sm { padding: var(--space-3); }
.omni-recessed--lg { padding: var(--space-5) var(--space-6); }

/* ── Clean list: trenne Items durch Weißraum statt Linien ── */
.omni-list-clean { display: flex; flex-direction: column; gap: var(--space-4); }
.omni-list-clean--sm { gap: var(--space-2); }
.omni-list-clean--lg { gap: var(--space-6); }

/* ── Divider list: trennt durch feine inset-Shadow Linie (No-Line Rule) ── */
.omni-list-divider { list-style: none; padding: 0; margin: 0; }
.omni-list-divider > li + li { box-shadow: inset 0 1px 0 var(--border); }
.omni-list-divider > li { padding: var(--space-3) 0; }

/* ── Section heading inside a card/panel ── */
.omni-section-head {
  font-size: var(--fs-xs); font-weight: var(--fw-bold);
  text-transform: uppercase; letter-spacing: var(--tracking-caps);
  color: var(--text-tertiary);
  padding-bottom: var(--space-2);
  margin-bottom: var(--space-3);
  box-shadow: inset 0 -1px 0 var(--border);
}

/* =========================================================================
   OMNI-TIMELINE — elegante Ablauf-Darstellung
   Für Sequenzen, Pipelines, Step-Builder
   ========================================================================= */
.omni-timeline {
  position: relative;
  padding-left: 28px;
}
.omni-timeline::before {
  content: '';
  position: absolute;
  left: 9px; top: 10px; bottom: 10px;
  width: 1px;
  background: var(--border);
}
.omni-timeline__step {
  position: relative;
  padding-bottom: var(--space-4);
}
.omni-timeline__step:last-child { padding-bottom: 0; }

/* Knoten auf der Linie */
.omni-timeline__dot {
  position: absolute;
  left: -22px; top: 3px;
  width: 10px; height: 10px;
  border-radius: 50%;
  background: var(--bg-surface);
  border: 2px solid var(--border);
  transition: border-color var(--dur-fast), background var(--dur-fast);
}
.omni-timeline__step:first-child .omni-timeline__dot,
.omni-timeline__dot--accent {
  background: var(--accent);
  border-color: var(--accent);
}

/* Zeitstempel / Meta */
.omni-timeline__meta {
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-caps);
  color: var(--text-tertiary);
  margin-bottom: var(--space-1);
  line-height: 1;
}

/* Inhalt des Schritts — recessed, kein Rahmen */
.omni-timeline__body {
  background: var(--bg-hover);
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4);
  font-size: var(--fs-md);
  color: var(--text-secondary);
  line-height: var(--lh-normal);
  word-break: break-word;
}

/* Kompakte Variante (nur Text, keine Box) */
.omni-timeline--flat .omni-timeline__body {
  background: none;
  padding: 0;
  font-size: var(--fs-sm);
}

/* =========================================================================
   OMNI-ENTRY — Card-freie Listenzeile (kein Border, tonal)
   Für Automations-Listen, Sequenz-Karten etc.
   ========================================================================= */
.omni-entry {
  display: flex; align-items: flex-start; gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  border-radius: var(--radius-md);
  background: transparent;
  transition: background var(--dur-fast) var(--ease-out);
}
.omni-entry:hover { background: var(--bg-hover); }
.omni-entry + .omni-entry { box-shadow: inset 0 1px 0 var(--border); }

.omni-entry__icon {
  flex-shrink: 0;
  width: 32px; height: 32px;
  border-radius: var(--radius-sm);
  background: var(--accent-soft);
  display: grid; place-items: center;
  color: var(--accent);
}
.omni-entry__main { flex: 1; min-width: 0; }
.omni-entry__title {
  font-size: var(--fs-lg); font-weight: var(--fw-bold);
  color: var(--text-primary);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.omni-entry__meta {
  font-size: var(--fs-xs); font-weight: var(--fw-bold);
  text-transform: uppercase; letter-spacing: var(--tracking-caps);
  color: var(--text-tertiary); margin-top: 2px;
}
.omni-entry__actions {
  display: flex; align-items: center; gap: var(--space-2); flex-shrink: 0;
}

/* =========================================================================
   LIGHT-MODE REFINEMENTS für Einstellungs-/Detail-Seiten
   ========================================================================= */
[data-theme="light"] .omni-recessed        { background: #f3f4f6; }
[data-theme="light"] .omni-timeline__body  { background: #f3f4f6; }
[data-theme="light"] .omni-entry:hover     { background: #f9f9fb; }
[data-theme="light"] .omni-tabs {
  background: var(--bg-surface);
}
[data-theme="light"] .omni-tabs__tab.active,
[data-theme="light"] .omni-tabs__tab--active {
  color: #1a1a1a;
}
[data-theme="light"] .omni-tabs__tab { color: #909090; }
[data-theme="light"] .omni-tabs__tab:hover { color: #555; }

/* =========================================================================
   TASK-QUEUE FOCUS MODE — HubSpot-style sequential execution
   ========================================================================= */
.omni-task-focus {
  display: flex; flex-direction: column;
  min-height: calc(100vh - var(--topbar-height) - var(--space-6));
  margin: calc(var(--space-6) * -1);
  padding: 0;
}

/* Top-Bar (sticky) */
.omni-task-nav {
  position: sticky; top: 0; z-index: 20;
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(200px, 2fr) auto;
  align-items: center; gap: var(--space-4);
  padding: var(--space-3) var(--space-5);
  background: color-mix(in oklab, var(--bg-surface) 82%, transparent);
  backdrop-filter: blur(var(--topbar-blur));
  -webkit-backdrop-filter: blur(var(--topbar-blur));
  box-shadow: inset 0 -1px 0 var(--border);
}
.omni-task-nav__left   { display: flex; align-items: center; gap: var(--space-3); min-width: 0; }
.omni-task-nav__center { display: flex; align-items: center; justify-content: center; }
.omni-task-nav__right  { display: flex; align-items: center; gap: var(--space-2); position: relative; }

.omni-task-nav__exit {
  display: grid; place-items: center;
  width: var(--control-h-md); height: var(--control-h-md);
  border-radius: var(--radius-md);
  background: var(--bg-hover);
  color: var(--text-secondary);
  transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
  text-decoration: none;
}
.omni-task-nav__exit:hover { background: var(--bg-active); color: var(--text-primary); }

.omni-task-nav__counter { display: flex; align-items: center; gap: var(--space-3); min-width: 0; }
.omni-task-nav__type {
  display: inline-flex; align-items: center;
  padding: 2px var(--space-2);
  border-radius: var(--radius-pill);
  background: var(--accent-soft);
  color: var(--accent);
  font-size: var(--fs-2xs); font-weight: var(--fw-bold);
  text-transform: uppercase; letter-spacing: var(--tracking-caps);
}
.omni-task-nav__progress {
  font-size: var(--fs-sm); color: var(--text-secondary);
  white-space: nowrap;
}
.omni-task-nav__progress strong { color: var(--text-primary); font-weight: var(--fw-semibold); }

.omni-task-nav__progress-bar {
  width: 100%; max-width: 320px; height: 4px;
  border-radius: var(--radius-pill);
  background: var(--bg-hover);
  overflow: hidden;
}
.omni-task-nav__progress-fill {
  height: 100%;
  background: var(--brand-gradient);
  border-radius: inherit;
  transition: width var(--dur-base) var(--ease-out);
}

.omni-task-nav__iconbtn {
  display: grid; place-items: center;
  width: var(--control-h-md); height: var(--control-h-md);
  border-radius: var(--radius-md);
  background: transparent; border: 0;
  color: var(--text-secondary); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
}
.omni-task-nav__iconbtn:hover:not(:disabled) { background: var(--bg-hover); color: var(--text-primary); }
.omni-task-nav__iconbtn:disabled { opacity: .35; cursor: not-allowed; }

.omni-task-nav__reschedule-pop {
  position: absolute; top: calc(100% + var(--space-2)); right: 0;
  z-index: 30;
  width: 300px;
  padding: var(--space-4);
  border-radius: var(--radius-lg);
  background: var(--bg-elevated);
  box-shadow: var(--shadow-lg);
  display: flex; flex-direction: column; gap: var(--space-3);
}
.omni-task-nav__reschedule-pop[hidden] { display: none; }
.omni-task-nav__pop-actions { display: flex; justify-content: flex-end; gap: var(--space-2); }

/* Split Body */
.omni-task-focus__grid {
  flex: 1;
  display: grid;
  grid-template-columns: minmax(280px, 380px) 1fr;
  gap: var(--space-5);
  padding: var(--space-5);
  align-items: start;
}
@media (max-width: 880px) {
  .omni-task-focus__grid { grid-template-columns: 1fr; }
}

.omni-task-focus__side,
.omni-task-focus__main {
  border-radius: var(--radius-lg);
  background: var(--bg-surface);
  box-shadow: var(--shadow-sm);
  border: 0;
}
.omni-task-focus__side { position: sticky; top: calc(var(--topbar-height) + 72px); }

/* Contact card — left */
.omni-task-focus__avatar {
  width: 72px; height: 72px;
  border-radius: 50%;
  background: var(--brand-gradient);
  color: var(--text-on-accent);
  display: grid; place-items: center;
  font-size: var(--fs-2xl); font-weight: var(--fw-bold);
  letter-spacing: var(--tracking-tight);
  margin-bottom: var(--space-4);
  box-shadow: 0 0 0 4px color-mix(in oklab, var(--accent) 15%, transparent);
}
.omni-task-focus__name {
  font-size: var(--fs-xl); font-weight: var(--fw-semibold);
  color: var(--text-primary);
  margin: 0 0 2px; line-height: var(--lh-tight);
}
.omni-task-focus__sub {
  font-size: var(--fs-sm); color: var(--text-secondary);
  margin-bottom: var(--space-4);
}

.omni-task-focus__contact-list {
  display: flex; flex-direction: column; gap: var(--space-1);
  padding: var(--space-3) 0;
  box-shadow: inset 0 1px 0 var(--border), inset 0 -1px 0 var(--border);
  margin-bottom: var(--space-4);
}
.omni-task-focus__contact-row {
  display: flex; align-items: center; gap: var(--space-2);
  padding: var(--space-2) 0;
  color: var(--text-secondary);
}
.omni-task-focus__contact-row[hidden] { display: none; }
.omni-task-focus__contact-row svg { flex-shrink: 0; color: var(--text-tertiary); }
.omni-task-focus__contact-link {
  color: var(--text-primary);
  text-decoration: none;
  font-size: var(--fs-md); font-weight: var(--fw-medium);
  transition: color var(--dur-fast) var(--ease-out);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.omni-task-focus__contact-link:hover { color: var(--accent); }

.omni-task-focus__meta {
  display: flex; flex-direction: column; gap: var(--space-2);
  margin-bottom: var(--space-4);
}
.omni-task-focus__meta-row {
  display: flex; align-items: center; justify-content: space-between;
  font-size: var(--fs-sm);
}
.omni-task-focus__meta-label {
  color: var(--text-tertiary);
  text-transform: uppercase; letter-spacing: var(--tracking-caps);
  font-size: var(--fs-2xs); font-weight: var(--fw-bold);
}
.omni-task-focus__meta-val { color: var(--text-primary); font-weight: var(--fw-medium); }

.omni-task-focus__entity-link { width: 100%; justify-content: center; }
.omni-task-focus__entity-link[hidden] { display: none; }

/* Main card — right */
.omni-task-focus__title-row { margin-bottom: var(--space-3); }
.omni-task-focus__title {
  font-size: var(--fs-2xl); font-weight: var(--fw-semibold);
  color: var(--text-primary);
  line-height: var(--lh-snug);
  margin: 0;
  letter-spacing: var(--tracking-tight);
}
.omni-task-focus__description {
  font-size: var(--fs-md);
  color: var(--text-secondary);
  line-height: var(--lh-normal);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  background: var(--bg-hover);
  margin-bottom: var(--space-4);
}
.omni-task-focus__description[hidden] { display: none; }

.omni-task-focus__note { margin-bottom: var(--space-4); }
.omni-task-focus__note .omni-input {
  width: 100%;
  font-family: var(--font-sans);
  font-size: var(--fs-md);
  line-height: var(--lh-normal);
  resize: vertical;
}

.omni-task-focus__outcome {
  padding-top: var(--space-4);
  box-shadow: inset 0 1px 0 var(--border);
}
.omni-task-focus__outcome[hidden] { display: none; }
.omni-task-focus__outcome-label {
  font-size: var(--fs-2xs); font-weight: var(--fw-bold);
  text-transform: uppercase; letter-spacing: var(--tracking-caps);
  color: var(--text-tertiary);
  margin-bottom: var(--space-3);
}
.omni-task-focus__outcome-buttons {
  display: flex; flex-wrap: wrap; gap: var(--space-2);
}
.omni-task-focus__outcome-btn {
  transition: background var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast) var(--ease-out),
              color var(--dur-fast) var(--ease-out);
}
.omni-task-focus__outcome-btn.is-selected {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--text-on-accent);
  box-shadow: 0 0 12px -4px var(--accent-glow);
}

/* Finished overlay */
.omni-task-focus__done {
  position: fixed; inset: 0;
  display: grid; place-items: center;
  background: color-mix(in oklab, var(--bg-base) 80%, transparent);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  z-index: 50;
  padding: var(--space-6);
}
.omni-task-focus__done[hidden] { display: none; }
.omni-task-focus__done .omni-card { max-width: 420px; width: 100%; padding: var(--space-8); }
.omni-task-focus__done-icon {
  width: 72px; height: 72px;
  border-radius: 50%;
  background: var(--status-success-soft);
  color: var(--status-success);
  display: grid; place-items: center;
  margin: 0 auto var(--space-4);
}
.omni-task-focus__done-title {
  font-size: var(--fs-2xl); font-weight: var(--fw-semibold);
  color: var(--text-primary);
  margin: 0 0 var(--space-2);
}
.omni-task-focus__done-sub {
  font-size: var(--fs-md); color: var(--text-secondary);
  margin: 0 0 var(--space-5);
}

/* Light-mode refinements */
[data-theme="light"] .omni-task-nav {
  background: color-mix(in oklab, var(--bg-surface) 90%, transparent);
}
[data-theme="light"] .omni-task-focus__description { background: #f3f4f6; }

/* Leads bulk-bar (Aufgaben erstellen) */
.omni-bulkbar {
  display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  background: var(--bg-elevated);
  box-shadow: var(--shadow-sm);
  margin-bottom: var(--space-4);
}
.omni-bulkbar__count {
  font-size: var(--fs-sm); font-weight: var(--fw-semibold);
  color: var(--text-primary);
}
.omni-bulkbar__actions { display: flex; align-items: center; gap: var(--space-2); margin-left: auto; }


/* ============================================================
   Design-System enforcement utilities (scope: settings/partials/
   errors/help/license/audit/auth/backup inline-style refactor)
   ============================================================ */
.omni-m-0          { margin: 0 !important; }
.omni-mt-0         { margin-top: 0; }
.omni-mb-0         { margin-bottom: 0; }
.omni-mt-2         { margin-top: var(--space-2); }
.omni-mt-3         { margin-top: var(--space-3); }
.omni-mt-6         { margin-top: var(--space-6); }
.omni-mb-2         { margin-bottom: var(--space-2); }
.omni-mb-6         { margin-bottom: var(--space-6); }
.omni-mt-lg        { margin-top: 1.5rem; }

.omni-p-1          { padding: var(--space-1); }
.omni-p-2          { padding: var(--space-2); }
.omni-p-3          { padding: var(--space-3); }
.omni-p-4          { padding: var(--space-4); }
.omni-p-5          { padding: var(--space-5); }
.omni-p-6          { padding: var(--space-6); }

.omni-flex         { display: flex; }
.omni-flex-col     { display: flex; flex-direction: column; }
.omni-flex-center  { display: flex; align-items: center; }
.omni-flex-between { display: flex; align-items: center; justify-content: space-between; }
.omni-flex-end     { display: flex; justify-content: flex-end; }
.omni-flex-1       { flex: 1; }
.omni-flex-wrap    { flex-wrap: wrap; }
.omni-flex-nowrap  { flex-wrap: nowrap; }
.omni-gap-1        { gap: var(--space-1); }
.omni-gap-2        { gap: var(--space-2); }
.omni-gap-3        { gap: var(--space-3); }
.omni-gap-4        { gap: var(--space-4); }
.omni-gap-5        { gap: var(--space-5); }
.omni-gap-6        { gap: var(--space-6); }
.omni-inline-flex  { display: inline-flex; align-items: center; gap: var(--space-2); }

.omni-grid-2       { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); }
.omni-grid-2--sm   { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); }
.omni-grid-2--lg   { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); }
.omni-grid-3       { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-3); }
.omni-grid-auto    { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--space-3); }

.omni-text-muted      { color: var(--text-muted); }
.omni-text-secondary  { color: var(--text-secondary); }
.omni-text-primary    { color: var(--text-primary); }
.omni-text-accent     { color: var(--accent); }
.omni-text-right      { text-align: right; }
.omni-text-left       { text-align: left; }
.omni-text-nowrap     { white-space: nowrap; }

.omni-fs-xs           { font-size: .72rem; }
.omni-fs-sm           { font-size: .78rem; }
.omni-fs-md           { font-size: .85rem; }
.omni-fs-lg           { font-size: 1rem; }

.omni-label-caps      { color: var(--text-muted); font-size: .74rem; text-transform: uppercase; font-weight: 600; letter-spacing: .02em; }
.omni-label-normal    { color: var(--text-muted); font-weight: 400; }

.omni-cursor-pointer  { cursor: pointer; }
.omni-clickable       { cursor: pointer; user-select: none; }

.omni-chip            { display: inline-flex; align-items: center; gap: var(--space-2); padding: .35rem .6rem; border: 1px solid var(--border); border-radius: 999px; background: var(--bg-elevated); }
.omni-code-inline     { background: var(--bg-section); padding: .1rem .3rem; border-radius: 3px; font-family: var(--font-mono, monospace); }
.omni-code-input      { width: 90px; font-family: var(--font-mono, monospace); font-size: .8rem; padding: .2rem .4rem; border: 1px solid var(--border); border-radius: 6px; background: var(--bg); }
.omni-code-input--md  { width: 140px; font-size: .85rem; padding: .2rem .4rem; border: 1px solid var(--border); border-radius: 6px; background: var(--bg); }

.omni-icon-btn--bare  { width: 28px; height: 28px; padding: 0; border: none; background: transparent; cursor: pointer; display: inline-grid; place-items: center; }
.omni-icon-btn--swatch{ width: 36px; height: 32px; border: none; padding: 0; cursor: pointer; border-radius: var(--radius-sm); }

.omni-sep-dot         { color: var(--border); padding: 0 .2rem; }
.omni-divider-v       { width: 1px; height: 20px; background: var(--border); margin: 0 .25rem; display: inline-block; }
.omni-divider-v--sm   { width: 1px; height: 18px; background: var(--border); margin: 0 .2rem; display: inline-block; }

.omni-w-40            { width: 40px; }
.omni-w-130           { width: 130px; }
.omni-w-icon          { width: 16px; height: 16px; }
.omni-minw-0          { min-width: 0; }

.omni-center-box      { text-align: center; padding: var(--space-4); background: var(--bg-elevated); border-radius: var(--radius-md); }
.omni-empty-pad       { padding: var(--space-8); text-align: center; color: var(--text-muted); }
.omni-empty-pad--sm   { padding: var(--space-4); text-align: center; color: var(--text-muted); font-size: .85rem; }

.omni-form-stack      { max-width: 720px; display: flex; flex-direction: column; gap: 1.5rem; }
.omni-w-full-input    { margin-top: .5rem; width: 100%; }

.omni-bg-elevated     { background: var(--bg-elevated); }
.omni-bg-section      { background: var(--bg-section); }

.omni-title-row       { margin: 0; font-size: 1rem; font-weight: 700; }
.omni-pad-lg          { padding: 1.25rem 1.5rem; }

.omni-svg-defs { position: absolute; overflow: hidden; pointer-events: none; }

/* Activity feed list */
.omni-feed-list { list-style: none; margin: 0; padding: 0; }
.omni-feed-item { display: flex; align-items: flex-start; gap: var(--space-3); padding: .875rem 1.25rem; border-bottom: 1px solid var(--border); }
.omni-feed-item__icon { font-size: 1.1rem; flex-shrink: 0; margin-top: .05rem; }
.omni-feed-item__body { flex: 1; min-width: 0; }
.omni-feed-item__line { font-size: .875rem; line-height: 1.45; }
.omni-feed-item__meta { font-size: .75rem; color: var(--text-muted); margin-top: .2rem; }

/* Sidebar refinements */
.omni-sidebar__logo--img      {
    height:        var(--sidebar-logo-size, 32px);
    width:         var(--sidebar-logo-size, 32px);
    object-fit:    contain;
    background:    transparent;
    box-shadow:    none;
    border-radius: 0;
}
.omni-sidebar__phoneguide-btn { width: calc(100% - var(--space-4)); margin: var(--space-1) var(--space-2); justify-content: flex-start; gap: var(--space-2); }
.omni-sidebar__avatar         { background: var(--accent-soft); color: var(--accent); flex-shrink: 0; }
.omni-sidebar__user           { line-height: 1.2; flex: 1; min-width: 0; overflow: hidden; }
.omni-sidebar__user-name      { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.omni-sidebar__logout-form    { flex-shrink: 0; }

/* ── Inline-style cleanup batch (dashboard/leads/companies/contacts/pipeline/lead_lists/tasks) ── */
.omni-pr-0           { padding-right: 0; }
.omni-pl-0           { padding-left: 0; }
.omni-w-36           { width: 36px; }
.omni-w-44           { width: 44px; }
.omni-w-100          { width: 100px; }
.omni-w-160          { width: 160px; }
.omni-w-200          { width: 200px; }
.omni-w-220          { width: 220px; }
.omni-w-260          { width: 260px; }
.omni-w-320          { width: 320px; }
.omni-strike         { text-decoration: line-through; }
.omni-alert__list    { margin: 0; padding-left: 1.25rem; }
.omni-nowrap         { white-space: nowrap; }
.omni-break-all      { word-break: break-all; }
.omni-va-middle      { vertical-align: middle; }
.omni-max-w-480      { max-width: 480px; }
.omni-max-w-520      { max-width: 520px; }
.omni-max-w-600      { max-width: 600px; }
.omni-max-w-800      { max-width: 800px; }
.omni-max-w-1000     { max-width: 1000px; }
.omni-mt-8           { margin-top: 2rem; }
.omni-mb-1           { margin-bottom: .25rem; }
.omni-mb-8           { margin-bottom: 2rem; }
.omni-ml-auto        { margin-left: auto; }
.omni-mr-auto        { margin-right: auto; }
.omni-py-2           { padding-top: .5rem; padding-bottom: .5rem; }
.omni-py-3           { padding-top: .75rem; padding-bottom: .75rem; }
.omni-px-3           { padding-left: .75rem; padding-right: .75rem; }
.omni-px-4           { padding-left: 1rem; padding-right: 1rem; }
.omni-fw-500         { font-weight: 500; }
.omni-fw-700         { font-weight: 700; }
.omni-uppercase      { text-transform: uppercase; }
.omni-truncate       { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.omni-block          { display: block; }
.omni-inline-block   { display: inline-block; }
.omni-opacity-60     { opacity: .6; }
.omni-opacity-80     { opacity: .8; }
.omni-h-full         { height: 100%; }
.omni-min-h-120      { min-height: 120px; }
.omni-min-h-200      { min-height: 200px; }
.omni-border-0       { border: 0; }
.omni-border-top     { border-top: 1px solid var(--border); }
.omni-border-bottom  { border-bottom: 1px solid var(--border); }
.omni-list-none      { list-style: none; padding-left: 0; margin: 0; }
.omni-pill           { display: inline-flex; align-items: center; gap: .25rem; padding: .15rem .5rem; border-radius: 999px; font-size: .75rem; font-weight: 600; background: var(--bg-elevated); color: var(--text-secondary); }
.omni-dot            { width: .6rem; height: .6rem; border-radius: 50%; display: inline-block; }
.omni-scroll-y-400   { overflow-y: auto; max-height: 400px; }
.omni-scroll-y-500   { overflow-y: auto; max-height: 500px; }
.omni-grid-4         { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.omni-grid-auto-220  { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; }
.omni-grid-auto-260  { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1rem; }
.omni-grid-auto-300  { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1rem; }

/* Topbar notification dropdown */
.omni-topbar__notif-btn          { position: relative; }
.omni-topbar__notif-badge        { display: none; position: absolute; top: 2px; right: 2px; background: var(--status-danger); color: #fff; border-radius: var(--radius-pill); min-width: 14px; height: 14px; font-size: 9px; font-weight: 700; align-items: center; justify-content: center; padding: 0 3px; line-height: 1; }
.omni-topbar__notif-badge.is-visible { display: flex; }
.omni-topbar__notif-menu         { min-width: 300px; max-height: 400px; overflow-y: auto; right: 0; left: auto; }
.omni-topbar__notif-header       { padding: var(--space-3) var(--space-4) var(--space-2); font-weight: var(--fw-semibold); font-size: var(--fs-sm); border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; align-items: center; }
.omni-topbar__notif-readall      { font-size: var(--fs-xs); font-weight: var(--fw-regular); color: var(--accent); background: none; border: none; cursor: pointer; padding: 0; }
.omni-topbar__notif-list         { padding: var(--space-6); text-align: center; color: var(--text-tertiary); font-size: var(--fs-sm); }
.omni-topbar__notif-empty        { padding: var(--space-6); text-align: center; color: var(--text-tertiary); font-size: var(--fs-sm); }
.omni-topbar__notif-row          { padding: var(--space-2) var(--space-4); border-bottom: 1px solid var(--border); }
.omni-topbar__notif-row--unread  { background: var(--bg-elevated); }
.omni-topbar__notif-title        { font-size: var(--fs-sm); font-weight: var(--fw-regular); }
.omni-topbar__notif-title--unread{ font-weight: var(--fw-semibold); }
.omni-topbar__notif-msg          { font-size: var(--fs-xs); color: var(--text-tertiary); margin-top: 2px; }
.omni-topbar__notif-time         { font-size: var(--fs-xs); color: var(--text-tertiary); margin-top: 2px; }

/* Topbar user dropdown */
.omni-topbar__user-trigger       { cursor: pointer; }
.omni-topbar__user-menu          { min-width: 220px; right: 0; left: auto; }
.omni-topbar__user-head          { padding: var(--space-3) var(--space-4) var(--space-2); }
.omni-topbar__user-fullname      { font-weight: var(--fw-semibold); font-size: var(--fs-sm); }
.omni-topbar__user-email         { font-size: var(--fs-xs); color: var(--text-tertiary); text-decoration: none; }
.omni-topbar__chevron            { color: var(--text-tertiary); width: 12px; height: 12px; }

/* ── Dashboard list-row helpers (inline-style cleanup) ─────────────── */
.omni-list-row--top         { align-items: flex-start; }
.omni-list-row__grow        { min-width: 0; flex: 1; }
.omni-list-row__head        { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.omni-list-row__link        { font-size: .85rem; font-weight: 600; color: var(--text-primary); text-decoration: none; }
.omni-list-row__company     { font-size: .76rem; color: var(--text-dim); margin-top: .1rem; }
.omni-list-row__actions     { display: flex; gap: .5rem; margin-top: .35rem; flex-wrap: wrap; align-items: center; }
.omni-list-row__actions--tight { display: flex; gap: .4rem; flex-shrink: 0; align-items: center; }
.omni-list-row__actions--meta  { display: flex; gap: .6rem; margin-top: .25rem; flex-wrap: wrap; align-items: center; }
.omni-list-row__duedate     { font-size: .74rem; color: var(--text-dim); }
.omni-list-row__duedate--overdue { font-size: .74rem; color: var(--error); }
.omni-list-row__meta-line   { font-size: .76rem; color: var(--text-dim); }
.omni-list-row__meta-line--danger { font-size: .76rem; font-weight: 600; color: var(--error); }
.omni-list-row--done        { opacity: .5; }
.omni-list-row__checkform   { flex-shrink: 0; display: flex; align-items: center; }
.omni-list-row__check       { width: 16px; height: 16px; cursor: pointer; accent-color: var(--success); }
.omni-list-row__title-strong{ min-width: 0; flex: 1; }
.omni-list-row__title-strong--done { text-decoration: line-through; }
.omni-list-row__title-text  { font-size: .84rem; font-weight: 500; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.omni-card-title--danger    { color: var(--error); }
.omni-card-section-label    { font-size: .78rem; color: var(--text-dim); }
.omni-attain-val-main       { color: var(--text-primary); }
.omni-attain-val-sub        { font-weight: 400; color: var(--text-dim); }
.omni-goal-bar-track--flush { margin-top: 0; }
.omni-prio-dot--overdue     { width: 8px; height: 8px; border-radius: 50%; background: var(--error); margin-top: .3rem; }
.omni-prio-dot-wrap         { flex-shrink: 0; margin-top: .15rem; }
.omni-card--mb-6            { margin-bottom: 1.5rem; }
.omni-card--mb-4            { margin-bottom: 1rem; }
.omni-card--mb-0            { margin-bottom: 0; }

/* Email Modal (partials/email_modal.php) */
.omni-email-modal__card     { max-width: 860px; width: 96%; max-height: 92vh; display: flex; flex-direction: column; }
.omni-email-modal__header   { flex-shrink: 0; }
.omni-email-modal__footer   { flex-shrink: 0; }
.omni-email-modal__tabs     { display: flex; border-bottom: 2px solid var(--border); flex-shrink: 0; padding: 0 1.5rem; background: var(--bg-elevated); }
.omni-email-modal__tab      { padding: .625rem 1.25rem; border: none; background: none; cursor: pointer; font-weight: 500; font-size: .875rem; color: var(--text-secondary); border-bottom: 2px solid transparent; margin-bottom: -2px; }
.omni-email-modal__tab.is-active { font-weight: 600; color: var(--text-primary); border-bottom-color: var(--accent); }
.omni-email-modal__form     { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.omni-email-modal__pane-compose { flex: 1; overflow-y: auto; padding: 1.25rem 1.5rem; display: grid; gap: .875rem; }
.omni-email-modal__pane-preview { display: none; flex: 1; flex-direction: column; min-height: 0; }
.omni-email-modal__pane-preview.is-active { display: flex; }
.omni-email-modal__row2     { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.omni-email-modal__toolbar  { display: flex; align-items: center; gap: .375rem; padding: .5rem .625rem; background: var(--bg-elevated); border: 1px solid var(--border); border-bottom: none; border-radius: var(--radius) var(--radius) 0 0; flex-wrap: wrap; }
.omni-email-modal__ph-select{ height: 28px; padding: 0 .4rem; font-size: .78rem; width: auto; }
.omni-email-modal__editor   { min-height: 200px; padding: .75rem; line-height: 1.75; border-radius: 0 0 var(--radius) var(--radius); border-top: none; font-size: .875rem; overflow-y: auto; }
.omni-email-modal__hint     { font-size: .78rem; color: var(--text-muted); margin: 0; }
.omni-email-modal__preview-bar { display: flex; align-items: center; gap: .75rem; padding: .625rem 1.5rem; background: var(--bg-elevated); border-bottom: 1px solid var(--border); flex-shrink: 0; }
.omni-email-modal__preview-label { font-size: .8rem; color: var(--text-secondary); font-weight: 600; }
.omni-email-modal__spinner  { display: none; width: 14px; height: 14px; border: 2px solid var(--border); border-top-color: var(--accent); border-radius: 50%; animation: spin .8s linear infinite; }
.omni-email-modal__spinner.is-active { display: block; }
.omni-email-modal__frame    { flex: 1; border: none; background: #f3f4f6; min-height: 420px; width: 100%; }
.omni-email-modal__btn-sm   { font-size: .75rem; padding: .2rem .6rem; }
.omni-email-modal__fmt-btn  { background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius); padding: .15rem .5rem; cursor: pointer; font-size: .82rem; color: var(--text-primary); line-height: 1.6; }
.omni-email-modal__fmt-btn:hover { background: var(--bg-elevated); border-color: var(--accent); }
.omni-email-modal__editor:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(var(--accent-rgb),.15); }

/* ── Closer/admin dashboard helpers ──────────────────────────────────── */
.omni-list-row__link--truncate { font-size: .85rem; font-weight: 600; color: var(--text-primary); text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.omni-list-row__money       { font-size: .82rem; font-weight: 700; color: var(--success); }
.omni-list-row__money-sm    { font-size: .84rem; font-weight: 700; color: var(--success); }
.omni-list-row__followup    { font-size: .76rem; color: var(--text-dim); }
.omni-list-row__followup--overdue { font-size: .76rem; color: var(--error); }
.omni-list-row__time-col    { flex-shrink: 0; min-width: 44px; text-align: center; }
.omni-list-row__time-big    { font-size: .85rem; font-weight: 700; color: var(--accent); line-height: 1.1; }
.omni-list-row__time-label  { font-size: .68rem; color: var(--text-dim); letter-spacing: .04em; }
.omni-list-row__title-primary { font-size: .85rem; font-weight: 600; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.omni-list-row__icon-col    { flex-shrink: 0; color: var(--text-dim); }
.omni-list-row__activity    { font-size: .84rem; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.omni-list-row__activity-meta { font-size: .74rem; color: var(--text-dim); margin-top: .15rem; }
.omni-pipeline-row--inline  { display: block; padding: .75rem 1.2rem; }
.omni-pipeline-row__line    { display: flex; justify-content: space-between; align-items: center; margin-bottom: .35rem; }
.omni-pipeline-row__group   { display: flex; align-items: center; gap: .5rem; }
.omni-pipeline-row__label   { font-size: .84rem; font-weight: 500; color: var(--text-primary); }
.omni-pipeline-row__count   { font-size: .64rem; }
.omni-kpi__value--md2       { font-size: 1.2rem; }
.omni-list-row__detail-row  { display: flex; gap: .75rem; margin-top: .25rem; flex-wrap: wrap; align-items: center; }

/* Auth pages — brand logo block */
.auth-logo            { display: flex; align-items: center; gap: .875rem; justify-content: center; }
.auth-logo__img       { object-fit: contain; border-radius: 6px; filter: drop-shadow(0 4px 16px var(--accent-glow)); }
.auth-logo__wordmark  { font-size: 1.45rem; font-weight: 900; letter-spacing: -.03em; background: var(--brand-gradient, linear-gradient(135deg, var(--accent), var(--accent-2))); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; line-height: 1; }
.auth-forgot-link     { float: right; font-weight: 400; font-size: .78rem; color: var(--accent); text-decoration: none; }

/* Stage badge — uses --stage-color CSS var passed by inline style (data-driven) */
.omni-stage-badge { background: color-mix(in oklab, var(--stage-color, var(--accent)) 15%, transparent); color: var(--stage-color, var(--accent)); border: 1px solid color-mix(in oklab, var(--stage-color, var(--accent)) 30%, transparent); }

.omni-page-footer-note { text-align: center; padding: 2rem 0 1rem; color: var(--text-secondary); font-size: .8125rem; }

/* License invalid page */
.omni-license-details       { background: var(--bg-base); border: 1px solid var(--border); border-radius: 8px; padding: .85rem 1rem; margin-bottom: 1.25rem; font-size: .82rem; color: var(--text-secondary); }
.omni-license-details__title{ margin-bottom: .25rem; font-weight: 600; color: var(--text-primary); }
.omni-license-key           { font-family: var(--font-mono, monospace); letter-spacing: .08em; color: var(--accent); }
.omni-auth-cta-link         { display: block; text-align: center; text-decoration: none; padding: .75rem; background: var(--accent); color: var(--text-on-accent); border-radius: 8px; font-weight: 600; }
.auth-footer--pushed        { margin-top: 1rem; }

/* ── Admin dashboard utilities ───────────────────────────────────────── */
.omni-chart-wrap--80   { height: 80px; }
.omni-chart-wrap--110  { height: 110px; }
.omni-chart-wrap--140  { height: 140px; }
.omni-chart-wrap--160  { height: 160px; }
.omni-chart-wrap--180  { height: 180px; }
.omni-chart-wrap--200  { height: 200px; }
.omni-chart-wrap--260  { height: 260px; }
.omni-gauge-dot--success { background: var(--success); }
.omni-gauge-dot--danger  { background: var(--danger, var(--error)); }
.omni-lb-bar-wrap        { min-width: 0; }
.omni-lb-role-row        { display: flex; align-items: center; gap: .4rem; }
.omni-lb-stat-col        { display: flex; flex-direction: column; align-items: flex-end; gap: .15rem; flex-shrink: 0; }
.omni-lb-revenue         { font-size: .82rem; font-weight: 700; color: var(--accent); white-space: nowrap; flex-shrink: 0; }
.omni-lb-detail-btn      { padding: .15rem .4rem; font-size: .72rem; }
.omni-card-body--tight   { padding: .85rem 1rem; }
.omni-card-body--flush   { padding: 0; }
.omni-hm-th-label        { text-align: left; padding-right: .6rem; font-size: .72rem; color: var(--text-dim); }
.omni-hm-day-sub         { font-weight: 400; opacity: .6; }
.omni-ml-auto-sm         { margin-left: .4rem; }
.omni-card-body--muted   { color: var(--text-dim); font-size: .85rem; }
.omni-section--mt-lg     { margin-top: 1.5rem; }
.omni-overflow-x         { overflow-x: auto; }
.omni-ca-table           { width: 100%; border-collapse: collapse; font-size: .84rem; }
.omni-ca-table th        { text-align: left; padding: .55rem 1.1rem; font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); border-bottom: 1px solid var(--border); white-space: nowrap; }
.omni-ca-table td        { padding: .65rem 1.1rem; }
.omni-ca-table tr        { border-bottom: 1px solid var(--border); }
.omni-ca-table__name     { color: var(--text-primary); text-decoration: none; font-weight: 600; transition: color .15s; }
.omni-ca-table__name:hover { color: var(--accent); }
.omni-ca-table__email    { color: var(--text-secondary); }
.omni-ca-table__job      { color: var(--text-muted); font-size: .8rem; }
.omni-ca-table__dash     { opacity: .4; }
.omni-ca-table__date     { text-align: right; color: var(--text-muted); font-size: .78rem; white-space: nowrap; }
.omni-ca-table__score    { text-align: center; }
.omni-score-pill         { border-radius: 20px; padding: .1rem .5rem; font-size: .78rem; font-weight: 700; background: color-mix(in oklab, var(--score-color, var(--accent)) 15%, transparent); color: var(--score-color, var(--accent)); }
.omni-th--center         { text-align: center; }
.omni-th--right          { text-align: right; }
.omni-td-money--accent   { text-align: right; font-weight: 700; color: var(--accent); }
.omni-td-money--success  { text-align: right; font-weight: 700; color: var(--success); }
.omni-modal-row          { display: flex; align-items: center; gap: .6rem; }
.omni-modal-dot          { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; background: var(--dot-color, var(--accent)); }
.omni-muted-hint         { color: var(--text-dim); font-size: .85rem; }
.omni-lb-detail-row      { padding: .55rem .9rem; font-size: .8rem; color: var(--text-secondary); background: var(--bg-elevated); border-radius: 8px; border: 1px solid var(--border); display: flex; flex-wrap: wrap; gap: .6rem 1.2rem; }

/* Audit log view */
.omni-filter-card              { margin-bottom: 1.5rem; }
.omni-filter-grid              { gap: .75rem; align-items: flex-end; }
.omni-filter-row               { display: flex; gap: var(--space-2); margin-top: var(--space-3); align-items: center; }
.omni-filter-row__search       { flex: 1; max-width: 320px; }
.omni-filter-row__count        { margin-left: auto; font-size: .8rem; color: var(--text-muted); }

.omni-col-w-170  { width: 170px; }
.omni-col-w-180  { width: 180px; }
.omni-col-w-210  { width: 210px; }
.omni-col-w-130  { width: 130px; }
.omni-col-w-40   { width: 40px; }

.omni-audit-cell-time   { font-size: .82rem; color: var(--text-secondary); white-space: nowrap; }
.omni-audit-user-name   { font-size: .85rem; font-weight: 600; }
.omni-audit-user-email  { font-size: .75rem; color: var(--text-muted); }
.omni-audit-user-system { color: var(--text-muted); font-size: .82rem; }
.omni-audit-cell-entity { font-size: .83rem; }
.omni-audit-cell-ip     { font-size: .78rem; color: var(--text-muted); font-family: var(--font-mono); }

.omni-pagination-bar    { display: flex; align-items: center; justify-content: space-between; padding: .875rem 1.25rem; border-top: 1px solid var(--border); }
.omni-pagination-info   { font-size: .82rem; color: var(--text-muted); }
.omni-pagination-list   { display: flex; gap: .25rem; }
.omni-pagination-ellipsis { padding: 0 .25rem; color: var(--text-muted); }

/* Audit detail modal */
.omni-audit-modal-inner   { max-width: 680px; width: 100%; }
.omni-audit-modal-body    { padding: 1.25rem; }
.omni-audit-diff-grid     { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.omni-audit-diff-label    { font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); margin-bottom: .5rem; }
.omni-audit-diff-pre      { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: var(--radius); padding: .875rem; font-size: .78rem; overflow: auto; max-height: 380px; color: var(--text-secondary); white-space: pre-wrap; word-break: break-word; }

/* Backup views */
.omni-backup-run-grid           { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
@media (max-width: 768px) { .omni-backup-run-grid { grid-template-columns: 1fr; } }

.omni-detail-list dt            { font-size: .78rem; color: var(--text-muted); font-weight: 600; margin-bottom: .1rem; }
.omni-detail-list dd            { font-size: .92rem; color: var(--text-primary); margin: 0 0 .9rem; }

.omni-log-line                  { padding: .35rem .5rem; border-radius: 4px; font-size: .8rem; font-family: var(--font-mono, monospace); line-height: 1.5; }
.omni-log-line.info             { color: var(--text-secondary); }
.omni-log-line.warning          { background: rgba(245,158,11,.1); color: #b45309; }
.omni-log-line.error            { background: rgba(220,38,38,.1); color: #dc2626; }
.omni-log-line__time            { opacity: .6; margin-right: .5rem; }
.omni-log-line__level           { font-weight: 600; text-transform: uppercase; font-size: .7rem; margin-right: .4rem; }

.omni-item-status-ok            { color: var(--success, #10b981); }
.omni-item-status-skipped       { color: var(--text-muted); }
.omni-item-status-error         { color: var(--error, #dc2626); }

.omni-backup-header-left        { display: flex; align-items: center; gap: .75rem; }
.omni-detail-path               { word-break: break-all; font-family: var(--font-mono, monospace); font-size: .78rem; }
.omni-backup-empty              { padding: 1rem; color: var(--text-muted); font-size: .85rem; }
.omni-backup-scroll             { max-height: 320px; overflow-y: auto; }
.omni-backup-scroll--tall       { max-height: 360px; overflow-y: auto; }
.omni-backup-table--sm          { font-size: .82rem; }
.omni-backup-table-code         { font-size: .78rem; }
.omni-log-list                  { padding: .75rem 1rem; display: flex; flex-direction: column; gap: 2px; }
.omni-backup-actions            { margin-top: 1.5rem; display: flex; gap: .75rem; flex-wrap: wrap; }

/* Backup restore page */
.omni-restore-warning         { background: rgba(220,38,38,.08); border: 1.5px solid rgba(220,38,38,.3); border-radius: 10px; padding: 1rem 1.25rem; margin-bottom: 1.5rem; display: flex; gap: .85rem; align-items: flex-start; }
.omni-restore-warning__icon   { flex-shrink: 0; color: #dc2626; margin-top: .05rem; }
.omni-restore-warning h4      { font-weight: 700; color: #dc2626; margin: 0 0 .3rem; }
.omni-restore-warning p       { margin: 0; font-size: .86rem; color: var(--text-secondary); line-height: 1.55; }

.omni-restore-select-header   { display: flex; justify-content: space-between; align-items: center; margin-bottom: .6rem; }
.omni-restore-select-actions  { display: flex; gap: .4rem; }

.omni-table-cb-list           { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; max-height: 480px; overflow-y: auto; }
.omni-table-cb-row            { display: flex; align-items: center; gap: .75rem; padding: .55rem .9rem; border-bottom: 1px solid var(--border); transition: background .12s; cursor: pointer; }
.omni-table-cb-row:last-child { border-bottom: none; }
.omni-table-cb-row:hover      { background: var(--bg-elevated); }
.omni-table-cb-row input[type=checkbox] { flex-shrink: 0; }
.omni-table-cb-row__name      { font-size: .85rem; font-weight: 600; color: var(--text-primary); flex: 1; font-family: var(--font-mono, monospace); }
.omni-table-cb-row__rows      { font-size: .78rem; color: var(--text-muted); white-space: nowrap; }
.omni-table-cb-row__size      { font-size: .78rem; color: var(--text-muted); white-space: nowrap; width: 56px; text-align: right; }
.omni-table-cb-row.is-protected { opacity: .45; cursor: not-allowed; background: var(--bg-elevated); }
.omni-table-cb-row__badge     { font-size: .68rem; background: rgba(245,158,11,.15); color: #b45309; padding: .1rem .4rem; border-radius: 4px; font-weight: 600; white-space: nowrap; }

.omni-restore-protected-head  { padding: .4rem .9rem; font-size: .73rem; color: var(--text-muted); background: var(--bg-elevated); border-top: 1px solid var(--border); }
.omni-restore-files-block     { padding: .75rem 1rem; border-top: 1px solid var(--border); }
.omni-restore-files-label     { border: none; padding: .4rem .1rem; }
.omni-restore-files-icon      { color: var(--accent); flex-shrink: 0; }
.omni-restore-files-hint      { font-size: .78rem; color: var(--text-muted); }
.omni-restore-nofiles         { padding: .6rem 1rem; border-top: 1px solid var(--border); font-size: .8rem; color: var(--text-muted); }
.omni-restore-nofiles__icon   { vertical-align: middle; margin-right: .3rem; }

.omni-confirm-section         { background: var(--bg-elevated); border: 1.5px solid var(--border); border-radius: 10px; padding: 1.25rem 1.5rem; margin-top: 1.25rem; }
.omni-confirm-section label   { font-weight: 600; font-size: .88rem; display: block; margin-bottom: .45rem; }
.omni-confirm-section small   { color: var(--text-muted); font-size: .78rem; }

.omni-restore-progress        { display: none; align-items: center; gap: .75rem; padding: .85rem 1.1rem; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 8px; margin-bottom: 1rem; font-size: .875rem; }
.omni-restore-progress.active { display: flex; }
.omni-restore-progress__icon  { animation: spin 1s linear infinite; flex-shrink: 0; }

.omni-restore-result          { display: none; border-radius: 10px; padding: 1rem 1.25rem; margin-bottom: 1rem; }
.omni-restore-result.success  { background: rgba(16,185,129,.1); border: 1px solid rgba(16,185,129,.3); display: block; }
.omni-restore-result.error    { background: rgba(220,38,38,.08); border: 1px solid rgba(220,38,38,.3); display: block; }

.omni-restore-layout          { display: grid; grid-template-columns: 1fr 320px; gap: 1.25rem; }
@media (max-width: 900px) { .omni-restore-layout { grid-template-columns: 1fr; } }

.omni-restore-info-body       { padding: 1rem 1.25rem; font-size: .84rem; }
.omni-restore-info-list       { display: flex; flex-direction: column; gap: .55rem; }
.omni-confirm-input           { margin-bottom: .6rem; letter-spacing: .05em; }
.omni-restore-btn             { width: 100%; background: #dc2626; border-color: #dc2626; }
.omni-restore-btn-note        { font-size: .73rem; color: var(--text-muted); text-align: center; margin: .5rem 0 0; }

.omni-restore-tipcard         { margin-top: .75rem; padding: .75rem 1rem; background: rgba(99,102,241,.07); border: 1px solid rgba(99,102,241,.2); border-radius: 8px; font-size: .8rem; color: var(--text-secondary); }
.omni-restore-tipcard__link   { color: var(--accent); cursor: pointer; font-weight: 600; }

/* ===== leads/index.php utilities ===== */
.omni-select--bulk { width: auto; min-width: 220px; }
.omni-modal--w-520 { max-width: 520px; }
.omni-modal__body--stack { display: flex; flex-direction: column; gap: 1rem; }
.omni-card--mb-6 { margin-bottom: 1.5rem; }
.omni-mt-4 { margin-top: 1rem; }
.omni-th-check { width: 36px; padding-right: 0; }
.omni-td-check { padding-right: 0; }
.omni-cursor-pointer { cursor: pointer; }
.omni-badge--xs { font-size: .65rem; margin-left: .3rem; }
.omni-meta-row { display: flex; gap: .5rem; margin-top: .2rem; flex-wrap: wrap; }
.omni-company-link { font-size: .88rem; }
.omni-phone-btn {
    display: inline-flex; align-items: center; gap: .35rem;
    padding: .25rem .6rem;
    border: 1px solid var(--border); border-radius: 6px;
    background: var(--bg-elevated); color: var(--text-primary);
    font-size: .78rem; font-weight: 500; cursor: pointer; white-space: nowrap;
}
.omni-stage-inline { display: inline-flex; align-items: center; gap: .375rem; font-size: .85rem; }
.omni-stage-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--dot-color, var(--accent)); flex-shrink: 0; }

.omni-restore-summary-row   { padding: .75rem 1rem .25rem; font-size: .78rem; color: var(--text-muted); }

/* ===== leads/show.php utilities ===== */
.omni-badge--lg { font-size: .875rem; padding: .375rem .75rem; }
.omni-form-inline { display: inline; }
.omni-card__body--compact { padding: 1rem 1.5rem; }
.omni-pipeline-track { display: flex; align-items: center; gap: 0; overflow: hidden; border-radius: 6px; }
.omni-pipeline-step {
    flex: 1;
    padding: .5rem .75rem;
    font-size: .8125rem;
    text-align: center;
    border-right: 1px solid var(--border);
    cursor: pointer;
    transition: background .15s;
    background: var(--step-bg, var(--bg-elevated));
    color: var(--step-color, var(--text-secondary));
    font-weight: var(--step-weight, 500);
}
.omni-pipeline-step:last-child { border-right: none; }
.omni-form-hidden { display: none; }
.omni-grid-align-start { align-items: start; }
.omni-col-stack { display: flex; flex-direction: column; gap: 1.5rem; }
.omni-link-accent { color: var(--accent); }
.omni-ml-badge { margin-left: .375rem; }
.omni-notes-block { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--border); }
.omni-notes-label { margin-bottom: .375rem; }
.omni-notes-text { white-space: pre-line; }
.omni-ml-2 { margin-left: .5rem; }
.omni-empty-state--md { padding: 1.5rem 2rem; }
.omni-empty-state--lg { padding: 2rem; }
.omni-empty-state__text { margin: 0; color: var(--text-muted); font-size: .875rem; }
.omni-appt-list { display: flex; flex-direction: column; gap: 0; }
.omni-appt-row { display: flex; align-items: center; gap: .875rem; padding: .75rem 1.25rem; border-bottom: 1px solid var(--border); }
.omni-appt-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--dot-color, var(--accent)); flex-shrink: 0; }
.omni-appt-main { flex: 1; min-width: 0; }
.omni-appt-title { font-weight: 600; font-size: .875rem; color: var(--text-primary); text-decoration: none; }
.omni-appt-meta { font-size: .78rem; color: var(--text-muted); margin-top: .1rem; }
.omni-badge--xxs { font-size: .72rem; }
.omni-list-item--task { padding: .75rem 1.5rem; }
.omni-task-doneform { display: flex; align-items: center; }
.omni-field--mb-3 { margin-bottom: .75rem; }
.omni-radio-row { display: flex; gap: .5rem; margin-bottom: .75rem; }
.omni-radio-label { display: flex; align-items: center; gap: .375rem; cursor: pointer; font-size: .875rem; }

.omni-restore-result__ok     { color: #059669; }
.omni-restore-result__err    { color: #dc2626; }
.omni-restore-result__list   { margin: .25rem 0 0 1rem; font-size: .82rem; }

/* ===== leads/scraper.php — moved from view <style> blocks ===== */
.scraper-card {
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: 10px;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
    position: relative;
}
.scraper-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.scraper-card.selected {
    border-color: var(--accent);
    background: var(--accent-light);
    box-shadow: 0 0 0 2px rgba(var(--accent-rgb),.15);
}
.scraper-card.duplicate { opacity: .72; }
.dup-badge {
    position: absolute;
    top: .5rem; right: .5rem;
    font-size: .68rem;
    font-weight: 700;
    padding: .15rem .5rem;
    border-radius: 999px;
    pointer-events: none;
}
.dup-badge.exists   { background: rgba(245,158,11,.15); color: #b45309; border: 1px solid rgba(245,158,11,.3); }
.dup-badge.new-lead { background: rgba(16,185,129,.12); color: #047857; border: 1px solid rgba(16,185,129,.25); }
.scraper-spinner {
    display: inline-block; width:16px; height:16px;
    border: 2px solid var(--border); border-top-color: var(--accent);
    border-radius:50%; animation: scraper-spin .7s linear infinite; vertical-align: middle;
}
@keyframes scraper-spin { to { transform: rotate(360deg); } }
.sc-row { font-size:.77rem; margin-top:.18rem; line-height:1.4; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.scraper-search-row {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    align-items: flex-end;
}
.scraper-search-row .ss-field {
    display: flex; flex-direction: column; gap: .2rem; margin: 0;
}
.scraper-search-row .ss-label {
    font-size: .72rem; font-weight: 600; color: var(--text-secondary); white-space: nowrap;
}
.scraper-search-row .ss-input {
    font-size: .82rem;
    padding: .3rem .55rem;
    height: 2rem;
    line-height: 1.3;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--bg-input, var(--bg-surface));
    color: var(--text-primary);
    box-sizing: border-box;
}
.scraper-search-row .ss-input:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 2px rgba(var(--accent-rgb),.12);
}
.scraper-search-row .ss-grow  { flex: 1 1 140px; min-width: 120px; max-width: 280px; }
.scraper-search-row .ss-sm    { flex: 0 0 auto; }
.scraper-search-row .ss-sm .ss-input { width: 95px; }
.scraper-search-row .ss-stage .ss-input { width: 130px; }
.scraper-search-row .ss-max   .ss-input { width: 90px; }
@media (max-width: 700px) {
    .scraper-search-row .ss-grow  { flex: 1 1 100%; max-width: 100%; }
    .scraper-search-row .ss-sm,
    .scraper-search-row .ss-stage,
    .scraper-search-row .ss-max   { flex: 1 1 calc(50% - .25rem); }
    .scraper-search-row .ss-sm .ss-input,
    .scraper-search-row .ss-stage .ss-input,
    .scraper-search-row .ss-max .ss-input { width: 100%; }
}

.sr-table { width:100%; border-collapse:collapse; font-size:.81rem; }
.sr-table th {
    padding:.5rem .75rem; text-align:left; font-size:.72rem; font-weight:700; letter-spacing:.03em; text-transform:uppercase;
    color:var(--text-muted); background:var(--bg-elevated);
    border-bottom:2px solid var(--border); white-space:nowrap; position:sticky; top:0; z-index:1;
}
.sr-table td {
    padding:.6rem .75rem; border-bottom:1px solid var(--border);
    vertical-align:middle; background:var(--bg-card); color:var(--text-primary);
}
.sr-table tr:last-child td { border-bottom:none; }
.sr-table tr:hover td { background:var(--bg-elevated); cursor:pointer; }
.sr-table tr.sr-selected td { background:var(--bg-elevated); border-left:none; }
.sr-table tr.sr-selected td:first-child { border-left:3px solid var(--accent); padding-left:.5rem; }
.sr-table tr.sr-selected:hover td { background:var(--bg-surface,var(--bg-elevated)); }
.sr-table tr.sr-dup td { color:var(--text-muted); }
.sr-table tr.sr-dup .sr-name { color:var(--text-secondary,var(--text-muted)); }
.sr-name { font-weight:700; color:var(--text-primary); }
.sr-industry { font-size:.72rem; color:var(--accent); font-weight:600; margin-top:.1rem; }
.sr-phone a { color:var(--text-primary); text-decoration:none; font-weight:500; }
.sr-phone a:hover { color:var(--accent); text-decoration:underline; }
.sr-web a { color:var(--accent); text-decoration:none; font-size:.76rem; }
.sr-web a:hover { text-decoration:underline; }
.sr-email a { color:var(--accent); text-decoration:none; font-size:.78rem; }
.sr-email a:hover { text-decoration:underline; }
.sr-rating { color:var(--warning,#d97706); font-weight:600; font-size:.78rem; white-space:nowrap; }
.sr-rating-count { font-weight:400; font-size:.7rem; color:var(--text-muted); }
.sr-dash { color:var(--text-muted); font-size:.8rem; }
.sr-pending { display:inline-block; width:12px; height:12px; border:2px solid var(--border); border-top-color:var(--accent); border-radius:50%; animation:scraper-spin .7s linear infinite; vertical-align:middle; }
.sr-badge-new { display:inline-block; font-size:.68rem; font-weight:700; padding:.2rem .5rem; border-radius:5px; background:var(--success-bg,#dcfce7); color:var(--success,#16a34a); border:1px solid var(--success-border,#bbf7d0); white-space:nowrap; letter-spacing:.02em; }
.sr-badge-dup { display:inline-block; font-size:.68rem; font-weight:700; padding:.2rem .5rem; border-radius:5px; background:var(--warning-bg,#fef3c7); color:var(--warning,#b45309); border:1px solid var(--warning-border,#fde68a); white-space:nowrap; letter-spacing:.02em; }

.omni-scraper-active-fields { display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; margin-bottom:.875rem; font-size:.78rem; color:var(--text-muted); }
.omni-scraper-active-fields__title { font-weight:600; color:var(--text-secondary); }
.omni-scraper-chip { background:var(--bg-elevated); border:1px solid var(--border); border-radius:999px; padding:.1rem .55rem; }
.omni-scraper-configure-link { margin-left:.25rem; color:var(--accent); }
.omni-warn-card { border-left:4px solid var(--warning,#f59e0b); margin-bottom:1.5rem; }
.omni-warn-card__body { display:flex; align-items:center; gap:.75rem; }
.omni-warn-icon { font-size:1.3rem; }
.omni-warn-link { margin-left:.5rem; }
.omni-card__body--pb-3 { padding-bottom:.75rem; }
.omni-search-btn { height:2rem; padding:.3rem .9rem; font-size:.82rem; white-space:nowrap; align-self:flex-end; }
.omni-search-hint { font-size:.72rem; color:var(--text-muted); margin:.4rem 0 0; }
.omni-loading-state { display:none; text-align:center; padding:3rem; color:var(--text-muted); }
.omni-loading-state.is-visible { display:block; }
.omni-loading-state__icon { font-size:2rem; margin-bottom:.75rem; }
.omni-loading-state__hint { font-size:.82rem; margin-top:.4rem; }
.omni-loadmore-row { display:none; align-items:center; gap:.75rem; margin-bottom:1rem; flex-wrap:wrap; }
.omni-loadmore-row.is-visible { display:flex; }
.omni-loadmore-hint { font-size:.8rem; color:var(--text-muted); }
.omni-scraper-toolbar { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.5rem; margin-bottom:.75rem; }
.omni-scraper-toolbar__left { display:flex; align-items:center; gap:.75rem; }
.omni-scraper-toolbar__right { display:flex; gap:.5rem; align-items:center; flex-wrap:wrap; }
.omni-scraper-result-count { font-weight:700; font-size:.95rem; }
.omni-scraper-dup-summary { font-size:.8rem; color:var(--text-muted); }
.omni-scraper-status { font-size:.8rem; color:var(--text-muted); }
.omni-skip-dups-label { font-size:.82rem; color:var(--text-secondary); display:flex; align-items:center; gap:.3rem; cursor:pointer; }
.omni-scraper-table-wrap { overflow-x:auto; border:1px solid var(--border); border-radius:10px; margin-bottom:1rem; }
.omni-th-w-32 { width:32px; }
.omni-td-w-32 { width:32px; }
.omni-hidden { display:none; }
.omni-results-section { display:none; }
.omni-results-section.is-visible { display:block; }
.omni-import-result { display:none; }
.omni-import-result.is-visible { display:block; }
.omni-import-detail-wrap { margin-top:.75rem; max-height:200px; overflow-y:auto; border:1px solid var(--border); border-radius:8px; }
.omni-import-detail-table { width:100%; border-collapse:collapse; font-size:.8rem; }
.omni-import-detail-table thead tr { background:var(--bg-elevated); }
.omni-import-detail-table th { padding:.4rem .75rem; text-align:left; }
.omni-import-detail-table td { padding:.35rem .75rem; }
.omni-import-detail-table tr.is-row { border-top:1px solid var(--border); }
.omni-import-reason { color:var(--text-muted); }
.omni-import-summary-row { display:flex; align-items:center; gap:1rem; flex-wrap:wrap; margin-bottom:.5rem; }
.omni-import-summary-title { color:var(--success,#10b981); font-size:1rem; }
.omni-dup-new { color:#059669; }
.omni-dup-exists { color:#b45309; }
.omni-status-cell--imported { color:#059669; }
.omni-status-cell--skipped { color:#b45309; }

/* ─── Backup Index: stats cards, settings, cron, destinations ───────────── */
.omni-backup-stats              { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 1rem; margin-bottom: 1.5rem; }
.omni-backup-stat               { background: var(--bg-card); border: 1px solid var(--border); border-radius: 10px; padding: 1rem 1.25rem; }
.omni-backup-stat__label        { font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--text-muted); margin-bottom: .25rem; }
.omni-backup-stat__value        { font-size: 1.5rem; font-weight: 700; color: var(--text-primary); }
.omni-backup-stat__value--sm    { font-size: 1rem; }
.omni-backup-stat__sub          { font-size: .75rem; color: var(--text-muted); margin-top: .15rem; }

.omni-backup-table th, .omni-backup-table td { padding: .65rem .85rem; }
.omni-backup-run-actions        { display: flex; gap: .4rem; }
.omni-backup-restore-link       { color: var(--accent); }

.omni-backup-settings-grid      { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 640px) { .omni-backup-settings-grid { grid-template-columns: 1fr; } }
.omni-backup-settings-form      { padding: 1.25rem 1.5rem; }

.omni-cron-box                  { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 8px; padding: 1rem 1.25rem; font-size: .82rem; }
.omni-cron-box code             { word-break: break-all; background: var(--bg-card); padding: .2rem .4rem; border-radius: 4px; font-size: .8rem; }
.omni-cron-box__title           { display: block; margin-bottom: .4rem; }
.omni-cron-box__copy            { margin-left: .5rem; }
.omni-cron-body                 { padding: 1.25rem 1.5rem; }
.omni-cron-intro                { font-size: .875rem; color: var(--text-secondary); margin-bottom: 1rem; }

.omni-status-dot                { width: 10px; height: 10px; border-radius: 50%; display: inline-block; margin-right: .35rem; }
.omni-status-dot--ok            { background: var(--success, #10b981); }
.omni-status-dot--warning       { background: var(--warning, #f59e0b); }
.omni-status-dot--error         { background: var(--error, #dc2626); }
.omni-status-dot--running       { background: var(--accent); animation: omni-pulse 1.2s infinite; }
@keyframes omni-pulse           { 0%,100%{opacity:1} 50%{opacity:.4} }
@keyframes omni-spin            { to { transform: rotate(360deg); } }
.omni-spin                      { animation: omni-spin 1s linear infinite; }

.omni-backup-progress           { display: none; align-items: center; gap: .75rem; padding: .75rem 1rem; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 8px; margin-bottom: 1rem; }
.omni-backup-progress.is-active { display: flex; }

.omni-section-spacer            { margin-top: 1.5rem; }
.omni-btn--mt-sm                { margin-top: .75rem; }

.omni-dest-form                 { padding: 1.25rem 1.5rem; border-bottom: 1px solid var(--border); background: var(--bg-section, var(--bg-elevated)); }
.omni-dest-form.is-hidden       { display: none; }
.omni-dest-form__grid           { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1rem; }
.omni-dest-form__row            { display: flex; gap: .5rem; }
.omni-dest-form__options        { display: flex; gap: 1.25rem; margin-bottom: 1rem; font-size: .875rem; }
.omni-dest-form__option         { display: flex; align-items: center; gap: .4rem; cursor: pointer; }
.omni-dest-form__actions        { display: flex; gap: .5rem; }
.omni-dest-test-result          { font-size: .8rem; margin-top: .3rem; display: none; }
.omni-dest-test-result.is-visible { display: block; }
.omni-dest-test-result--ok      { color: var(--success, #10b981); }
.omni-dest-test-result--err     { color: var(--error, #dc2626); }

.omni-dest-table                { font-size: .85rem; }
.omni-dest-row--disabled        { opacity: .5; }
.omni-dest-cell-label           { font-weight: 600; }
.omni-dest-cell-path            { font-size: .78rem; font-family: monospace; color: var(--text-secondary); max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.omni-dest-cell--sm             { font-size: .78rem; }
.omni-dest-actions              { display: flex; gap: .3rem; }
.omni-dest-hint                 { color: var(--accent); }
.omni-dest-hint--muted          { color: var(--text-secondary); }

.omni-dest-footer               { padding: .75rem 1.5rem; border-top: 1px solid var(--border); font-size: .78rem; color: var(--text-muted); }
.omni-code-chip                 { background: var(--bg-section); padding: .1rem .3rem; border-radius: 3px; }
.omni-nowrap-cell               { white-space: nowrap; }
.omni-muted-dash                { color: var(--text-muted); }
.omni-pagination-row            { display: flex; justify-content: center; gap: .4rem; padding: 1rem; }
.omni-empty-big                 { padding: 2rem; text-align: center; color: var(--text-muted); }
.omni-empty-big__icon           { margin: 0 auto .75rem; display: block; opacity: .4; }

.omni-toast                     { position: fixed; bottom: 1.5rem; right: 1.5rem; z-index: 9999; color: #fff; padding: .7rem 1.1rem; border-radius: 8px; font-size: .85rem; box-shadow: 0 4px 12px rgba(0,0,0,.2); transition: opacity .3s; }
.omni-toast--success            { background: var(--success, #10b981); }
.omni-toast--error              { background: var(--error, #dc2626); }
.omni-toast.is-fading           { opacity: 0; }

/* =========================================================================
   LEADS — Component styles (migrated from inline <style> in leads/index.php)
   ========================================================================= */

/* Bulk-action bar */
#bulkBar {
    display: none;
    align-items: center;
    gap: .75rem;
    padding: .6rem 1rem;
    background: var(--accent-light);
    border: 1px solid var(--accent);
    border-radius: 8px;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}
#bulkBar.visible { display: flex; }

.bulk-count { font-weight: 700; font-size: .9rem; color: var(--accent); }

/* Sales-optimised contact cells */
.lead-contact-cell { display: flex; flex-direction: column; gap: .15rem; }
.lead-contact-link {
    display: inline-flex; align-items: center; gap: .3rem;
    font-size: .82rem; color: var(--text-muted);
    text-decoration: none; white-space: nowrap;
    transition: color .15s;
}
.lead-contact-link:hover { color: var(--accent); }
.lead-contact-link svg { flex-shrink: 0; opacity: .7; }
.lead-contact-link:hover svg { opacity: 1; }

/* Priority dot */
.lead-prio-dot {
    display: inline-block; width: 7px; height: 7px;
    border-radius: 50%; flex-shrink: 0; margin-top: 1px;
}

/* Lead meta row */
.lead-meta { display: flex; align-items: center; gap: .35rem; flex-wrap: wrap; }

/* Follow-up badges */
.lead-followup {
    display: inline-flex; align-items: center;
    font-size: .7rem; font-weight: 600;
    padding: .1rem .45rem;
    border-radius: var(--radius-pill);
    white-space: nowrap;
}
.lead-followup.overdue  { background: oklch(from var(--status-danger)  l c h / 0.12); color: var(--status-danger);  }
.lead-followup.today    { background: oklch(from var(--status-warning) l c h / 0.12); color: var(--status-warning); }

/* ==========================================================================
   TASKS — Mobile card component styles
   ========================================================================== */

/* Desktop: table visible, cards hidden */
@media (min-width: 768px) {
  .omni-task-cards { display: none !important; }
}

.omni-task-cards {
  list-style: none;
  margin: 0;
  padding: var(--space-3);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.omni-task-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  position: relative;
  transition:
    border-color var(--dur-fast) var(--ease-out),
    box-shadow   var(--dur-fast) var(--ease-out);
}
.omni-task-card:active { transform: scale(0.99); }

/* Priority left stripe */
.omni-task-card::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 3px;
  background: var(--tc-prio-color, transparent);
}
.omni-task-card--prio-high   { --tc-prio-color: var(--status-danger); }
.omni-task-card--prio-medium { --tc-prio-color: var(--status-warning); }
.omni-task-card--prio-low    { --tc-prio-color: var(--accent); }
.omni-task-card--done        { opacity: .6; }

/* Header */
.omni-task-card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4) var(--space-2) calc(var(--space-4) + 3px);
}
.omni-task-card__title-wrap {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex: 1;
  min-width: 0;
}
.omni-task-card__title {
  font-size: var(--fs-md, .9375rem);
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
  text-decoration: none;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.omni-task-card__title:hover { color: var(--accent); }
.omni-task-card__title--done {
  text-decoration: line-through;
  color: var(--text-muted);
}

/* Done button */
.omni-task-card__done-form { line-height: 0; }
.omni-task-card__done-btn {
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  color: var(--text-muted);
  flex-shrink: 0;
  line-height: 0;
  min-width: 44px;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.omni-task-card__done-btn:hover { color: var(--accent); }
.omni-task-card__done-btn--undo:hover { opacity: .65; }
.omni-task-card__done-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--status-success, #10b981);
  flex-shrink: 0;
}

/* Description */
.omni-task-card__desc {
  font-size: var(--fs-sm);
  color: var(--text-secondary);
  margin: 0;
  padding: 0 var(--space-4) var(--space-2) calc(var(--space-4) + 3px);
  line-height: 1.4;
}

/* Meta row */
.omni-task-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  padding: 0 var(--space-4) var(--space-3) calc(var(--space-4) + 3px);
}
.omni-task-card__meta-item {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  font-size: var(--fs-xs, .75rem);
  color: var(--text-muted);
  text-decoration: none;
}
.omni-task-card__meta-item--overdue {
  color: var(--status-danger);
  font-weight: var(--fw-semibold);
}
.omni-task-card__meta-item--link { color: var(--accent); }
.omni-task-card__meta-item--link:hover { text-decoration: underline; }

/* Call CTA */
.omni-task-card__call {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 44px;
  background: var(--brand-gradient, var(--accent));
  color: var(--text-on-accent, #fff);
  text-decoration: none;
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  box-shadow: 0 4px 16px -4px var(--accent-glow);
  transition: filter var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);
  margin: 0 var(--space-4) var(--space-2) calc(var(--space-4) + 3px);
  border-radius: var(--radius-md);
}
.omni-task-card__call:active {
  filter: brightness(.92);
  transform: scale(.98);
}

/* Actions footer */
.omni-task-card__actions {
  display: flex;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4) var(--space-3) calc(var(--space-4) + 3px);
  border-top: 1px solid var(--border);
  background: var(--bg-elevated);
  flex-wrap: wrap;
}
.omni-task-card__queue-form { display: contents; }
.omni-task-card__actions .omni-btn { min-height: 40px; }
.lead-followup.upcoming { background: oklch(from var(--accent)         l c h / 0.10); color: var(--accent); }

/* =========================================================================
   COMPANIES — bulk bar + table checkbox columns
   ========================================================================= */
#compBulkBar {
  display: none;
  align-items: center;
  gap: .75rem;
  padding: .6rem 1rem;
  background: var(--accent-light);
  border: 1px solid var(--accent);
  border-radius: 8px;
  margin-bottom: 1rem;
  flex-wrap: wrap;
}
#compBulkBar.visible { display: flex; }

.omni-table__cb-col  { width: 36px; padding-right: 0; }
.omni-table__cb-cell { padding-right: 0; cursor: pointer; }
tr.is-selected       { background: var(--accent-light, rgba(99,102,241,.07)) !important; }

/* =========================================================================
   COMPANIES — mobile card list (desktop guard)
   ========================================================================= */
@media (min-width: 768px) {
  .omni-company-cards { display: none !important; }
}

.omni-company-cards {
  list-style: none;
  margin: 0;
  padding: var(--space-3);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

/* Card shell */
.omni-company-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
}

/* Header: avatar + name + legal badge */
.omni-company-card__header {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4) var(--space-2);
}
.omni-company-card__avatar {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--accent-soft, rgba(99,102,241,.12));
  color: var(--accent);
  font-weight: var(--fw-semibold);
  font-size: .9rem;
  display: flex;
  align-items: center;
  justify-content: center;
}
.omni-company-card__title-wrap {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
}
.omni-company-card__name {
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
  text-decoration: none;
  font-size: var(--fs-md, .9375rem);
}
.omni-company-card__name:hover { color: var(--accent); }
.omni-company-card__legal-badge { font-size: .7rem; }

/* Sub: city · country */
.omni-company-card__sub {
  margin: 0;
  padding: 0 var(--space-4) var(--space-2);
  font-size: var(--fs-sm);
  color: var(--text-muted);
}

/* Call CTA */
.omni-company-card__call {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 52px;
  background: var(--brand-gradient, var(--accent));
  color: var(--text-on-accent, #fff);
  text-decoration: none;
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  box-shadow: 0 4px 16px -4px var(--accent-glow);
  transition: filter var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);
  margin: 0 var(--space-4) var(--space-2);
  border-radius: var(--radius-md);
}
.omni-company-card__call:active {
  filter: brightness(.92);
  transform: scale(.98);
}

/* Email row */
.omni-company-card__email-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0 var(--space-4) var(--space-2);
  font-size: var(--fs-sm);
  color: var(--text-muted);
}
.omni-company-card__email-link {
  color: var(--text-muted);
  text-decoration: none;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.omni-company-card__email-link:hover { color: var(--accent); }

/* Meta (assigned) */
.omni-company-card__meta {
  margin: 0;
  padding: 0 var(--space-4) var(--space-2);
  font-size: var(--fs-xs, .75rem);
  color: var(--text-muted);
}

/* Actions footer */
.omni-company-card__actions {
  display: flex;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4) var(--space-3);
  border-top: 1px solid var(--border);
  background: var(--bg-elevated);
  flex-wrap: wrap;
}
.omni-company-card__actions .btn { min-height: 40px; }

/* =========================================================================
   INCOMING DOCUMENTS — filter form, stats grid, table cells
   ========================================================================= */
.omni-indoc-filter-form {
  margin-bottom: 1.5rem;
  flex-wrap: wrap;
  gap: .5rem;
}
.omni-indoc-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 1rem;
  margin-bottom: 1.5rem;
}
.omni-indoc-stat-card { padding: 1rem; }

/* Table cell classes */
.omni-indoc-td--date   { white-space: nowrap; color: var(--text-muted); font-size: .825rem; }
.omni-indoc__type-badge { font-size: .7rem; }
.omni-indoc__inv-num   { font-size: .775rem; color: var(--text-muted); }
.omni-indoc__cat-wrap  { display: inline-flex; align-items: center; gap: .3rem; font-size: .8rem; }
.omni-indoc__cat-dot   { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.omni-indoc__cat-empty { color: var(--text-muted); font-size: .8rem; }
.omni-indoc-td--amount { text-align: right; font-weight: 600; white-space: nowrap; }
.omni-indoc__due       { font-size: .7rem; margin-top: .15rem; }
.omni-indoc-td--files  { color: var(--text-muted); font-size: .8rem; }
.omni-indoc__att-icon  { vertical-align: middle; margin-right: .2rem; }
.omni-indoc-td--actions { text-align: right; white-space: nowrap; }
.omni-table__empty-cell { text-align: center; padding: 3rem; color: var(--text-muted); }
.omni-btn--mt          { margin-top: .75rem; }
.omni-indoc-pagination {
  display: flex;
  justify-content: center;
  gap: .375rem;
  margin-top: 1.25rem;
  flex-wrap: wrap;
}

/* =========================================================================
   INCOMING DOCUMENTS — mobile card list (desktop guard)
   ========================================================================= */
@media (min-width: 768px) {
  .omni-indoc-cards { display: none !important; }
}

.omni-indoc-cards {
  list-style: none;
  margin: 0;
  padding: var(--space-3);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

/* Card shell */
.omni-indoc-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
}

/* Header */
.omni-indoc-card__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4) var(--space-2);
}
.omni-indoc-card__header-left { flex: 1; min-width: 0; }
.omni-indoc-card__vendor {
  display: block;
  font-weight: var(--fw-semibold);
  font-size: 1rem;
  color: var(--text-primary);
  text-decoration: none;
  margin-bottom: var(--space-1);
}
.omni-indoc-card__vendor:hover { color: var(--accent); }
.omni-indoc-card__header-meta { display: flex; gap: var(--space-1); flex-wrap: wrap; }
.omni-indoc-card__date {
  font-size: var(--fs-xs, .75rem);
  color: var(--text-muted);
  white-space: nowrap;
  flex-shrink: 0;
}

/* Amount */
.omni-indoc-card__amount {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--accent);
  padding: 0 var(--space-4) var(--space-2);
}

/* Info rows */
.omni-indoc-card__info-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-4);
  font-size: var(--fs-sm);
  color: var(--text-muted);
}

/* Badges row */
.omni-indoc-card__badges {
  display: flex;
  gap: var(--space-2);
  flex-wrap: wrap;
  padding: var(--space-2) var(--space-4);
}

/* Due date warning */
.omni-indoc-card__due { color: var(--text-muted); }
.omni-indoc-card__due--overdue { color: var(--danger, #ef4444); font-weight: var(--fw-semibold); }

/* Actions footer */
.omni-indoc-card__actions {
  display: flex;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4) var(--space-3);
  border-top: 1px solid var(--border);
  background: var(--bg-elevated);
  flex-wrap: wrap;
}
.omni-indoc-card__actions .btn { min-height: 40px; }

/* =========================================================================
   LEAD LISTS — table cell classes
   ========================================================================= */
.omni-llist__name-link {
  font-weight: 600;
  color: var(--text-primary);
  text-decoration: none;
}
.omni-llist__name-link:hover { color: var(--accent); }
.omni-llist__desc    { font-size: .78rem; color: var(--text-muted); margin-top: .15rem; }
.omni-llist-td--date { color: var(--text-muted); font-size: .82rem; }

/* Modal overlay for lead-lists (JS toggles .is-open) */
.omni-llist-modal-overlay {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9000;
  background: rgb(0 0 0 / .55);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  align-items: center;
  justify-content: center;
  padding: 1rem;
}
.omni-llist-modal-overlay.is-open { display: flex; }

/* Modal card size variant */
.omni-modal-card--xs { width: 400px; max-width: 95vw; }

/* =========================================================================
   LEAD LISTS — mobile card list (desktop guard)
   ========================================================================= */
@media (min-width: 768px) {
  .omni-llist-cards { display: none !important; }
}

.omni-llist-cards {
  list-style: none;
  margin: 0;
  padding: var(--space-3);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

/* Card shell */
.omni-llist-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
}

/* Header */
.omni-llist-card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4) var(--space-2);
  flex-wrap: wrap;
}
.omni-llist-card__name {
  font-size: var(--fs-md, .9375rem);
  flex: 1;
  min-width: 0;
}

/* Description */
.omni-llist-card__desc {
  margin: 0;
  padding: 0 var(--space-4) var(--space-2);
}

/* Meta row */
.omni-llist-card__meta {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  padding: 0 var(--space-4) var(--space-2);
  font-size: var(--fs-sm);
}
.omni-llist-card__assigned { font-size: var(--fs-xs, .75rem); }

/* Actions footer */
.omni-llist-card__actions {
  display: flex;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4) var(--space-3);
  border-top: 1px solid var(--border);
  background: var(--bg-elevated);
  flex-wrap: wrap;
}
.omni-llist-card__actions .btn { min-height: 40px; }

/* =========================================================================
   TIME-TRACKING ADMIN
   ========================================================================= */

/* Classes moved from inline <style> blocks */
.team-table td { vertical-align: middle; }
.team-row-active { background: rgba(16,185,129,.06); }
.perf-bar { height: 6px; border-radius: 99px; background: var(--border); }
.perf-bar-fill { height: 100%; border-radius: 99px; }
.eff-badge { display: inline-block; padding: .2rem .55rem; border-radius: 4px; font-size: .72rem; font-weight: 700; }
.eff-green  { background: rgba(16,185,129,.15); color: #10b981; }
.eff-yellow { background: rgba(245,158,11,.15);  color: #f59e0b; }
.eff-red    { background: rgba(220,38,38,.12);   color: #dc2626; }
.live-status { display: flex; flex-direction: column; gap: .4rem; }
.live-item { display: flex; align-items: center; gap: .6rem; font-size: .82rem; padding: .3rem .5rem; border-radius: 6px; }
.live-item.active   { background: rgba(16,185,129,.08); }
.live-item.inactive { color: var(--text-muted); }
.live-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.live-dot.green { background: #10b981; }
.live-dot.gray  { background: var(--text-muted); }

.zt-session-row {
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 10px;
  padding: .875rem 1rem;
  margin-bottom: .6rem;
  display: grid;
  grid-template-columns: auto 1fr 1fr 80px 90px;
  gap: .625rem;
  align-items: center;
}
.zt-session-row.edited { border-color: color-mix(in oklch, var(--accent) 35%, transparent); background: color-mix(in oklch, var(--accent) 5%, transparent); }
.zt-session-row.new    { border-color: rgba(93,51,162,.35);  background: rgba(93,51,162,.05); }
.zt-corr-row {
  background: rgba(245,158,11,.06);
  border: 1px solid rgba(245,158,11,.2);
  border-radius: 8px;
  padding: .75rem 1rem;
  margin-bottom: .5rem;
  font-size: .82rem;
}

/* Layout */
.omni-tt-admin-grid {
  display: grid;
  grid-template-columns: 1fr 300px;
  gap: 1.25rem;
  align-items: start;
}
.omni-tt-mgmt-card { margin-top: 1.5rem; }
.omni-tt-empty { padding: 1rem; color: var(--text-muted); }

/* Filter form inputs */
.omni-tt-admin-date   { width: 150px; }
.omni-tt-admin-period { width: 110px; }

/* Pending corrections */
.omni-tt-corr-table { font-size: .84rem; }
.omni-tt-corr-td--req    { font-size: .78rem; font-weight: 600; }
.omni-tt-corr-td--reason { max-width: 200px; font-size: .78rem; }
.omni-tt-corr-th--action { width: 200px; }
.omni-tt-corr-action-btns { display: flex; gap: .4rem; flex-wrap: wrap; }
.omni-badge--ml { margin-left: .4rem; }

/* Comparison table */
.omni-tt-comp-th--bar { width: 100px; }
.omni-tt-comp-cell    { display: flex; align-items: center; gap: .5rem; }
.omni-tt-comp-name    { font-weight: 500; }
.omni-tt-active-sub   { font-size: .7rem; color: #10b981; }

/* Management table */
.omni-tt-mgmt-table  { font-size: .84rem; }
.omni-tt-mgmt-name   { font-weight: 500; }
.omni-tt-mgmt-email  { font-size: .72rem; color: var(--text-muted); }
.omni-tt-mgmt-th--emp     { width: 160px; }
.omni-tt-mgmt-th--daily   { width: 110px; }
.omni-tt-mgmt-th--weekly  { width: 120px; }
.omni-tt-mgmt-th--save    { width: 120px; }
.omni-tt-mgmt-th--sessions { width: 130px; }
.omni-tt-mgmt-th--link    { width: 120px; }
.omni-btn--accent { color: var(--accent); }

/* Live-status item body */
.omni-live-item__body  { flex: 1; min-width: 0; }
.omni-live-item__name  { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 400; }
.omni-live-item__name--active { font-weight: 600; }
.omni-live-item__sub   { font-size: .7rem; }
.omni-live-item__sub--active { color: #10b981; }

/* Desktop guard for mobile cards */
@media (min-width: 768px) {
  .omni-tt-comp-cards { display: none !important; }
  .omni-tt-mgmt-cards { display: none !important; }
  .omni-tt-corr-table-wrap { display: block; }
}

/* Comparison mobile cards */
.omni-tt-comp-cards { list-style: none; padding: 0; margin: 0; }
.omni-tt-comp-card {
  background: var(--bg-card, var(--bg-elevated));
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-3);
  overflow: hidden;
}
.omni-tt-comp-card__header {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3);
}
.omni-tt-comp-card__info { flex: 1; min-width: 0; }
.omni-tt-comp-card__name { font-weight: 600; font-size: var(--fs-base); }
.omni-tt-comp-card__active { font-size: .7rem; color: #10b981; }
.omni-tt-comp-card__stats {
  display: flex;
  gap: var(--space-4);
  padding: var(--space-2) var(--space-3);
  font-size: var(--fs-sm);
  flex-wrap: wrap;
  border-top: 1px solid var(--border);
}
.omni-tt-comp-card__stat label { font-size: .7rem; color: var(--text-muted); display: block; }
.omni-tt-comp-card__bar { padding: 0 var(--space-3) var(--space-2); }
.omni-tt-comp-card__actions {
  padding: var(--space-2) var(--space-3) var(--space-3);
  border-top: 1px solid var(--border);
  background: var(--bg-elevated);
}

/* Management mobile cards */
.omni-tt-mgmt-cards { list-style: none; padding: 0; margin: 0; }
.omni-tt-mgmt-card {
  background: var(--bg-card, var(--bg-elevated));
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-3);
  overflow: hidden;
  padding: var(--space-3);
}
.omni-tt-mgmt-card__header {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}
.omni-tt-mgmt-card__fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}
.omni-tt-mgmt-card__field label {
  display: block;
  font-size: .72rem;
  color: var(--text-muted);
  margin-bottom: .2rem;
}
.omni-tt-mgmt-card__field .omni-input { width: 100%; }
.omni-tt-mgmt-card__emp { grid-column: 1 / -1; }
.omni-tt-mgmt-card__actions {
  display: flex;
  gap: var(--space-2);
  flex-wrap: wrap;
  border-top: 1px solid var(--border);
  padding-top: var(--space-2);
}
.omni-tt-mgmt-card__actions .btn { flex: 1 1 auto; min-height: 40px; justify-content: center; }

/* =========================================================================
   SEO / PERFORMANCE REPORTS
   ========================================================================= */
.cr-tabs { display: flex; gap: .25rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--border); padding-bottom: 0; }
.cr-tab {
  padding: .55rem 1.1rem; font-size: .85rem; font-weight: 600; border: none; background: none;
  color: var(--text-muted); cursor: pointer; border-bottom: 2px solid transparent;
  margin-bottom: -1px; transition: color .15s, border-color .15s; text-decoration: none; display: inline-block;
}
.cr-tab:hover { color: var(--text-primary); }
.cr-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
.cr-type-badge {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .2rem .6rem; border-radius: var(--radius-sm); font-size: .73rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em;
}
.cr-badge-seo    { background: var(--accent-soft); color: var(--accent); }
.cr-badge-social { background: rgba(99,102,241,.12); color: #818cf8; }
.cr-key-metric   { display: flex; flex-direction: column; gap: .1rem; }
.cr-key-metric strong { font-size: .92rem; font-weight: 700; color: var(--text-primary); }
.cr-key-metric span   { font-size: .73rem; color: var(--text-muted); }
.cr-actions     { display: flex; gap: .4rem; justify-content: flex-end; }
.cr-actions-wrap { display: flex; gap: .5rem; }
.cr-td--period  { white-space: nowrap; font-weight: 600; color: var(--text-primary); }
.cr-company-link { color: var(--accent); text-decoration: none; font-weight: 500; }
.cr-company-link:hover { text-decoration: underline; }
.cr-td--date    { color: var(--text-muted); font-size: .82rem; white-space: nowrap; }

/* Desktop guard */
@media (min-width: 768px) { .cr-report-cards { display: none !important; } }

/* Mobile cards */
.cr-report-cards { list-style: none; padding: 0; margin: 0; }
.cr-report-card {
  background: var(--bg-card, var(--bg-elevated));
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-3);
  overflow: hidden;
}
.cr-report-card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-3);
  border-bottom: 1px solid var(--border);
}
.cr-report-card__period { font-weight: 700; font-size: var(--fs-base); }
.cr-report-card__body   { padding: var(--space-2) var(--space-3); }
.cr-report-card__company { font-weight: 500; color: var(--accent); text-decoration: none; font-size: var(--fs-sm); margin-bottom: var(--space-1); display: block; }
.cr-report-card__metric  { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-1); }
.cr-report-card__metric strong { font-size: 1.1rem; }
.cr-report-card__date   { font-size: .75rem; color: var(--text-muted); }
.cr-report-card__actions {
  display: flex;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3) var(--space-3);
  border-top: 1px solid var(--border);
  background: var(--bg-elevated);
}

/* =========================================================================
   COACHING SESSIONS
   ========================================================================= */
.omni-sessions-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  max-width: 100%;
  align-items: start;
}
.omni-sessions-form-card { padding: 1.5rem; }
.omni-sessions-form__title {
  font-weight: 700; font-size: 1rem; margin-bottom: 1.25rem;
  display: flex; align-items: center; gap: .5rem;
}
.omni-sessions-form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .75rem;
  margin-bottom: .75rem;
}
.omni-sessions-form__field      { margin-bottom: .75rem; }
.omni-sessions-form__field--mb  { margin-bottom: 1.25rem; }
.omni-sessions-info-box {
  font-size: .78rem; color: var(--text-muted); margin-bottom: .75rem;
  padding: .375rem .5rem;
  background: var(--bg-subtle, rgba(255,255,255,.04));
  border-radius: 6px;
  display: flex; align-items: center; gap: .375rem;
}
.omni-sessions-list { display: flex; flex-direction: column; gap: .75rem; }
.omni-sessions-list__label { font-size: .8125rem; font-weight: 600; color: var(--text-muted); padding: 0 .25rem; }
.omni-sessions-card { padding: 1rem 1.25rem; }
.omni-sessions-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.omni-sessions-card__name { font-weight: 700; font-size: .9375rem; }
.omni-sessions-card__topic { font-size: .8125rem; color: var(--text-muted); margin-bottom: .25rem; }
.omni-sessions-card__summary { font-size: .8rem; color: var(--text-muted); line-height: 1.5; }
.omni-sessions-card__meta { text-align: right; flex-shrink: 0; }
.omni-sessions-card__date { font-size: .8125rem; font-weight: 600; white-space: nowrap; }
.omni-sessions-card__coach { font-size: .75rem; color: var(--text-muted); margin-top: .15rem; }
.omni-sessions-empty { padding: 2.5rem; text-align: center; color: var(--text-muted); }
.omni-sessions-empty__icon { margin: 0 auto .75rem; opacity: .35; display: block; }
.omni-sessions-empty__sub { font-size: .875rem; margin-top: .25rem; }

/* =========================================================================
   AGENCY PORTAL ADMIN (admin_tokens)
   ========================================================================= */
.apm-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: .75rem; margin-bottom: 1.5rem; }
.apm-search { display: flex; align-items: center; gap: .5rem; background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: .4rem .875rem; flex: 1; min-width: 200px; max-width: 360px; }
.apm-search input { border: none; outline: none; background: transparent; font-size: .9rem; color: var(--text-primary); width: 100%; }
.apm-search input::placeholder { color: var(--text-secondary); }
.apm-search__icon { flex-shrink: 0; color: var(--text-secondary); }
.apm-filter-row { display: flex; gap: .5rem; flex-wrap: wrap; }
.apm-filter-btn { padding: .35rem .875rem; border-radius: var(--radius-sm); font-size: .75rem; font-weight: 700; border: 1px solid var(--border); background: var(--bg-surface); color: var(--text-secondary); cursor: pointer; text-decoration: none; transition: background .15s, border-color .15s, color .15s; }
.apm-filter-btn:hover, .apm-filter-btn.active { background: var(--accent); border-color: var(--accent); color: var(--text-on-accent); }
.apm-table-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--border); }
.apm-table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.apm-table th { text-align: left; font-size: .6875rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--text-secondary); padding: .75rem 1rem; background: var(--bg-elevated); border-bottom: 1px solid var(--border); }
.apm-table td { padding: .875rem 1rem; border-bottom: 1px solid rgba(0,0,0,.05); vertical-align: middle; color: var(--text-primary); }
[data-theme="dark"] .apm-table td { border-bottom-color: rgba(255,255,255,.05); }
.apm-table tr:last-child td { border-bottom: none; }
.apm-table tr:hover td { background: var(--bg-elevated); }
.apm-badge { display: inline-flex; align-items: center; padding: .2rem .65rem; border-radius: var(--radius-sm); font-size: .6875rem; font-weight: 700; white-space: nowrap; gap: .3rem; }
.apm-badge--step1 { background: rgba(234,179,8,.1); color: #b45309; border: 1px solid rgba(234,179,8,.25); }
.apm-badge--step2 { background: var(--accent-soft); color: var(--accent); border: 1px solid color-mix(in oklch, var(--accent) 25%, transparent); }
.apm-badge--step3 { background: rgba(16,185,129,.1); color: var(--status-success, #059669); border: 1px solid rgba(16,185,129,.25); }
.apm-badge--expired { background: rgba(239,68,68,.08); color: #dc2626; border: 1px solid rgba(239,68,68,.2); }
.apm-token-code { font-family: monospace; font-size: .8rem; color: var(--text-secondary); background: var(--bg-elevated); padding: .15rem .45rem; border-radius: 4px; border: 1px solid var(--border); }
.apm-action-btn { display: inline-flex; align-items: center; gap: .35rem; padding: .3rem .75rem; border-radius: var(--radius-sm); font-size: .775rem; font-weight: 600; border: 1px solid var(--border); background: var(--bg-surface); color: var(--text-secondary); cursor: pointer; transition: background .15s, border-color .15s, color .15s; text-decoration: none; }
.apm-action-btn:hover { background: var(--bg-elevated); border-color: var(--brand-a, var(--accent)); color: var(--brand-a, var(--accent)); }
.apm-action-btn--danger:hover { border-color: #ef4444; color: #ef4444; }
.apm-action-btn--primary { background: var(--accent); color: var(--text-on-accent); border-color: transparent; }
.apm-action-btn--primary:hover { background: var(--accent-strong); color: var(--text-on-accent); }
.apm-company-link { font-weight: 600; color: var(--text-primary); text-decoration: none; }
.apm-company-link:hover { color: var(--brand-a, var(--accent)); }
.apm-empty { text-align: center; padding: 3.5rem 1rem; color: var(--text-secondary); }
.apm-empty svg { margin: 0 auto .875rem; display: block; opacity: .35; }
/* Modal */
.apm-modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 9000; display: none; align-items: center; justify-content: center; padding: 1rem; }
.apm-modal-overlay.open { display: flex; }
.apm-modal { background: var(--bg-surface); border-radius: 16px; border: 1px solid var(--border); max-width: 520px; width: 100%; box-shadow: 0 24px 60px rgba(0,0,0,.25); display: flex; flex-direction: column; max-height: 90vh; overflow: hidden; }
.apm-modal--wide { max-width: 600px; }
.apm-modal__head { padding: 1.25rem 1.5rem; border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-shrink: 0; }
.apm-modal__title { font-size: 1.0625rem; font-weight: 700; color: var(--text-primary); margin: 0; }
.apm-modal__close { background: none; border: none; cursor: pointer; color: var(--text-secondary); padding: .25rem; border-radius: 6px; display: flex; align-items: center; }
.apm-modal__close:hover { background: var(--bg-elevated); color: var(--text-primary); }
.apm-modal__body { padding: 1.5rem; overflow-y: auto; flex: 1; }
.apm-modal__footer { padding: 1rem 1.5rem; border-top: 1px solid var(--border); display: flex; justify-content: flex-end; gap: .75rem; flex-shrink: 0; }
.apm-form-group { margin-bottom: 1.125rem; }
.apm-label { display: block; font-size: .8125rem; font-weight: 600; color: var(--text-secondary); margin-bottom: .375rem; }
.apm-label span { font-weight: 400; opacity: .7; margin-left: .25rem; }
.apm-input, .apm-select { width: 100%; box-sizing: border-box; padding: .6rem .875rem; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-base); color: var(--text-primary); font-size: .875rem; outline: none; transition: border-color .15s, box-shadow .15s; }
.apm-input:focus, .apm-select:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.apm-result { background: var(--bg-elevated); border-radius: 10px; border: 1px solid rgba(16,185,129,.25); padding: 1.125rem 1.25rem; margin-top: 1rem; display: none; }
.apm-result__label { font-size: .75rem; font-weight: 700; text-transform: uppercase; color: var(--text-secondary); margin-bottom: .35rem; }
.apm-result__link { font-family: monospace; font-size: .8125rem; word-break: break-all; color: var(--brand-a, var(--accent)); background: var(--bg-surface); border: 1px solid var(--border); border-radius: 6px; padding: .5rem .75rem; display: block; margin-bottom: .625rem; }
.apm-creds-row { display: grid; grid-template-columns: 120px 1fr 1fr auto; gap: .5rem .75rem; align-items: center; padding: .6rem 0; border-bottom: 1px solid rgba(0,0,0,.05); font-size: .8125rem; }
[data-theme="dark"] .apm-creds-row { border-bottom-color: rgba(255,255,255,.05); }
.apm-creds-row:last-child { border-bottom: none; }
.apm-creds-platform { font-weight: 700; color: var(--text-primary); text-transform: capitalize; }
.apm-creds-val { font-family: monospace; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 5px; padding: .2rem .5rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 160px; }
.apm-creds-val--pw { position: relative; display: inline-flex; align-items: center; gap: .35rem; }
.apm-pw-mask { letter-spacing: .15em; }
.apm-pw-toggle { font-size: .7rem; background: none; border: none; cursor: pointer; color: var(--brand-a, var(--accent)); font-weight: 600; }
.apm-creds-error { color: #dc2626; font-size: .775rem; grid-column: span 2; }
.apm-creds-header { display: grid; grid-template-columns: 110px 1fr 1fr; gap: .5rem .75rem; font-size: .7rem; font-weight: 700; text-transform: uppercase; color: var(--text-secondary); padding: .25rem 0 .5rem; border-bottom: 1px solid var(--border); }
.apm-security-notice { font-size: .75rem; color: var(--text-secondary); margin-bottom: 1rem; padding: .5rem .75rem; background: rgba(239,68,68,.06); border: 1px solid rgba(239,68,68,.2); border-radius: 8px; }
.apm-security-notice__label { color: #dc2626; }
.apm-create-error { margin-top: .75rem; padding: .625rem .875rem; border-radius: 8px; background: rgba(239,68,68,.08); border: 1px solid rgba(239,68,68,.25); font-size: .8125rem; color: #dc2626; }
.apm-loading-text { text-align: center; color: var(--text-secondary); padding: 2rem 0; }
.apm-error-text { text-align: center; color: #dc2626; padding: 2rem 0; }
/* Helpers */
.apm-hidden-submit { display: none; }
.apm-created-by { font-size: .7rem; color: var(--text-secondary); margin-top: .125rem; }
.apm-td--muted { color: var(--text-secondary); }
.apm-cell-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .375rem; }
/* Desktop guard for mobile cards */
@media (min-width: 768px) { .apm-token-cards { display: none !important; } }
/* Mobile token cards */
.apm-token-cards { list-style: none; padding: 0; margin: 0; }
.apm-token-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  margin-bottom: var(--space-3);
  overflow: hidden;
}
.apm-token-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-2); padding: var(--space-3); border-bottom: 1px solid var(--border); }
.apm-token-card__company { font-weight: 600; color: var(--text-primary); text-decoration: none; font-size: var(--fs-base); }
.apm-token-card__body { padding: var(--space-2) var(--space-3); display: flex; flex-direction: column; gap: var(--space-1); font-size: var(--fs-sm); }
.apm-token-card__row { display: flex; gap: var(--space-2); align-items: center; }
.apm-token-card__row label { font-size: .7rem; color: var(--text-muted); min-width: 70px; }
.apm-token-card__actions { display: flex; gap: var(--space-2); flex-wrap: wrap; padding: var(--space-2) var(--space-3) var(--space-3); border-top: 1px solid var(--border); background: var(--bg-elevated); }
.apm-token-card__actions .apm-action-btn { flex: 1 1 auto; justify-content: center; min-height: 40px; }

/* =========================================================================
   CO-PILOT FULL PAGE
   ========================================================================= */
.omni-copilot-page { display: flex; flex-direction: column; gap: var(--space-4); }
.omni-copilot-page__personas {
  display: flex; gap: var(--space-2); flex-wrap: wrap;
}
.omni-copilot-page__persona-btn {
  display: inline-flex; align-items: center; gap: var(--space-2);
  height: var(--control-h-sm); padding: 0 var(--space-3);
  border-radius: var(--radius-sm); font-size: var(--fs-sm); font-weight: var(--fw-medium);
  border: 1px solid var(--border); background: var(--bg-elevated); color: var(--text-secondary);
  cursor: pointer; transition: background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
  white-space: nowrap;
}
.omni-copilot-page__persona-btn:hover { border-color: var(--border-strong); color: var(--text-primary); background: var(--bg-hover); }
.omni-copilot-page__persona-btn.is-active { background: var(--accent); border-color: var(--accent); color: var(--text-on-accent); box-shadow: 0 0 12px -4px var(--accent-glow); }
.omni-copilot-page__persona-icon { width: 14px; height: 14px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; }
.omni-copilot-page__persona-icon svg { width: 14px; height: 14px; }
.omni-copilot-page__no-personas { color: var(--text-muted); font-size: var(--fs-sm); }
.omni-copilot-page__chat {
  display: flex; flex-direction: column;
  min-height: 500px; max-height: calc(100vh - 280px);
  overflow: hidden;
}
.omni-copilot-page__messages {
  flex: 1; overflow-y: auto; padding: var(--space-4);
  display: flex; flex-direction: column; gap: var(--space-3);
}
.omni-copilot-page__welcome {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  flex: 1; color: var(--text-muted); text-align: center; gap: var(--space-3);
  padding: var(--space-6) 0;
}
.omni-copilot-page__msg {
  max-width: 80%; padding: .75rem 1rem; border-radius: 12px;
  font-size: var(--fs-sm); line-height: 1.55; white-space: pre-wrap;
}
.omni-copilot-page__msg--user {
  align-self: flex-end; background: var(--accent); color: var(--text-on-accent); border-radius: 12px 12px 3px 12px;
}
.omni-copilot-page__msg--assistant {
  align-self: flex-start; background: var(--bg-elevated); color: var(--text-primary);
  border: 1px solid var(--border); border-radius: 12px 12px 12px 3px;
}
.omni-copilot-page__msg--thinking { opacity: .6; }
.omni-copilot-page__msg--error { background: rgba(220,38,38,.1); color: #dc2626; border-color: rgba(220,38,38,.2); }
.omni-copilot-page__input-row {
  display: flex; gap: var(--space-2); align-items: flex-end;
  padding: var(--space-3); border-top: 1px solid var(--border); background: var(--bg-elevated);
}
.omni-copilot-page__textarea {
  flex: 1; resize: none; min-height: 60px; max-height: 160px; overflow-y: auto;
}
.omni-copilot-page__send-btn { flex-shrink: 0; align-self: flex-end; min-height: 44px; }
.omni-copilot-page__footer {
  padding: var(--space-2) var(--space-3); border-top: 1px solid var(--border);
  display: flex; justify-content: flex-end;
}

/* =========================================================================
   WHISPER AGENT — Live Einwandbehandlung Flashcard
   BEM: omn-whisper-flashcard
   ========================================================================= */
.omn-whisper-flashcard {
    position: fixed;
    bottom: 5rem;
    left: 50%;
    transform: translateX(-50%) translateY(1rem);
    z-index: 900;
    width: min(480px, calc(100vw - 2rem));
    opacity: 0;
    transition: opacity var(--dur-normal) var(--ease-out),
                transform var(--dur-normal) var(--ease-out);
    pointer-events: none;
}
.omn-whisper-flashcard[hidden] { display: none; }
.omn-whisper-flashcard--visible {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
    pointer-events: auto;
}
.omn-whisper-flashcard__inner {
    background: var(--bg-surface);
    border: 1.5px solid var(--accent);
    border-radius: var(--radius-xl);
    box-shadow: 0 8px 40px color-mix(in oklab, var(--accent) 25%, transparent),
                var(--shadow-lg);
    padding: var(--space-4) var(--space-5);
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    position: relative;
}
.omn-whisper-flashcard__label {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--fs-xs);
    font-weight: var(--fw-bold);
    text-transform: uppercase;
    letter-spacing: var(--tracking-caps);
    color: var(--accent);
}
.omn-whisper-flashcard__text {
    font-size: var(--fs-lg);
    font-weight: var(--fw-semibold);
    color: var(--text-primary);
    line-height: var(--lh-snug);
}
.omn-whisper-flashcard__close {
    position: absolute;
    top: var(--space-3);
    right: var(--space-3);
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border: 0;
    background: var(--bg-hover);
    border-radius: var(--radius-md);
    cursor: pointer;
    color: var(--text-secondary);
    transition: background var(--dur-fast) var(--ease-out),
                color var(--dur-fast) var(--ease-out);
}
.omn-whisper-flashcard__close:hover {
    background: var(--bg-active);
    color: var(--text-primary);
}

/* Anrufen button in nav — active state */
.omni-btn--call {
    background: var(--bg-surface);
    border: 1.5px solid var(--success, #22c55e);
    color: var(--success, #22c55e);
    transition: background var(--dur-fast) var(--ease-out),
                color var(--dur-fast) var(--ease-out);
}
.omni-btn--call:hover {
    background: color-mix(in oklab, var(--success, #22c55e) 12%, transparent);
}
.omn-whisper-call-btn--active {
    background: var(--success, #22c55e) !important;
    border-color: var(--success, #22c55e) !important;
    color: #fff !important;
    animation: omn-pulse-call 1.5s ease-in-out infinite;
}
@keyframes omn-pulse-call {
    0%, 100% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--success, #22c55e) 40%, transparent); }
    50%       { box-shadow: 0 0 0 6px color-mix(in oklab, var(--success, #22c55e) 0%, transparent); }
}
/* =========================================================================
   DOC-CARDS — Unified mobile card list for Quotes/Invoices/Contracts/Dunning/Onboarding
   Desktop: hidden — table is shown via .omni-table--responsive
   Mobile (≤767px): cards shown, table wrap hidden
   ========================================================================= */
@media (min-width: 768px) {
  .omni-doc-cards { display: none !important; }
}
@media (max-width: 767px) {
  /* Sibling table is hidden whenever a doc-cards list is present in same .card */
  .card:has(> .omni-doc-cards) > .omni-table--responsive { display: none !important; }
}

.omni-doc-cards {
  list-style: none;
  margin: 0;
  padding: var(--space-3);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.omni-doc-card {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  padding: var(--space-3) var(--space-4);
}
.omni-doc-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
  flex-wrap: wrap;
}
.omni-doc-card__num {
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
  text-decoration: none;
  font-size: var(--fs-md, .9375rem);
}
.omni-doc-card__num:hover { color: var(--accent); }
.omni-doc-card__title {
  margin: 0 0 var(--space-1);
  font-size: var(--fs-sm);
  color: var(--text-secondary);
  word-break: break-word;
}
.omni-doc-card__meta {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--space-2) var(--space-3);
  margin: var(--space-2) 0;
  font-size: var(--fs-sm);
  color: var(--text-muted);
}
.omni-doc-card__meta-label {
  display: block;
  font-size: var(--fs-xs, .72rem);
  color: var(--text-muted);
  margin-bottom: .15rem;
  text-transform: uppercase;
  letter-spacing: .03em;
}
.omni-doc-card__meta-value {
  color: var(--text-primary);
  font-weight: var(--fw-medium);
}
.omni-doc-card__meta-value--amount { font-weight: var(--fw-semibold); }
.omni-doc-card__meta-value--overdue { color: var(--danger, #dc2626); font-weight: var(--fw-semibold); }
.omni-doc-card__actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--space-2);
  margin-top: var(--space-3);
  padding-top: var(--space-2);
  border-top: 1px solid var(--border);
}
.omni-doc-card__actions .btn {
  min-height: 44px;
  justify-content: center;
}
.omni-doc-card__actions--3 {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
}
.omni-doc-card__actions--full > .btn {
  grid-column: 1 / -1;
}

/* =========================================================================
   ONBOARDING — KPI grid + progress bar utilities
   ========================================================================= */
.omn-onb-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: .875rem;
  margin-bottom: 1.5rem;
}
.omn-onb-kpi {
  padding: 1rem 1.25rem;
}
.omn-onb-kpi__value {
  font-size: 1.625rem;
  font-weight: 800;
}
.omn-onb-kpi__value--cyan   { color: var(--accent); }
.omn-onb-kpi__value--blue   { color: #3b82f6; }
.omn-onb-kpi__value--amber  { color: #f59e0b; }
.omn-onb-kpi__value--green  { color: #10b981; }
.omn-onb-kpi__value--violet { color: #8b5cf6; }
.omn-onb-kpi__label {
  font-size: .78rem;
  color: var(--text-muted);
  margin-top: .15rem;
}
.omn-onb-filter-card {
  padding: 1rem 1.25rem;
  margin-bottom: 1rem;
}
.omn-onb-filter-form {
  display: flex;
  gap: .75rem;
  flex-wrap: wrap;
  align-items: center;
}
.omn-onb-filter-form .omn-onb-search { flex: 1; min-width: 180px; }
.omn-onb-filter-form .omn-onb-status { min-width: 160px; }
.omn-onb-empty-icon { margin-bottom: 1rem; opacity: .35; }
.omn-onb-empty-title { font-weight: 600; margin-bottom: .25rem; }
.omn-onb-empty-text  { font-size: .875rem; }
.omn-onb-cell { font-size: .875rem; color: var(--text-muted); }
.omn-onb-name { font-weight: 600; }
.omn-onb-sub  { font-size: .8rem; color: var(--text-muted); }
.omn-onb-progress {
  display: flex;
  align-items: center;
  gap: .5rem;
  min-width: 100px;
}
.omn-onb-progress__bar {
  flex: 1;
  height: 6px;
  background: var(--border);
  border-radius: 3px;
  overflow: hidden;
}
.omn-onb-progress__fill {
  height: 100%;
  border-radius: 3px;
  background: var(--accent);
  transition: width var(--dur-fast) var(--ease-out);
}
.omn-onb-progress__fill--complete { background: var(--success); }
.omn-onb-progress__label {
  font-size: .78rem;
  color: var(--text-muted);
  flex-shrink: 0;
}
@media (max-width: 767px) {
  .omn-onb-filter-form { flex-direction: column; align-items: stretch; }
  .omn-onb-filter-form .omn-onb-search,
  .omn-onb-filter-form .omn-onb-status,
  .omn-onb-filter-form .btn { width: 100%; min-height: 44px; }
}

/* =========================================================================
   DUNNING — banner & cell utilities
   ========================================================================= */
.omn-dun-banner {
  border-left: 4px solid var(--warning, #f59e0b);
  margin-bottom: 1.25rem;
}
.omn-dun-banner__body {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .875rem 1.25rem;
}
.omn-dun-banner__icon { font-size: 1.25rem; display: inline-flex; }
.omn-dun-banner__link { margin-left: .5rem; }
.omn-dun-cell--small { font-size: .8rem; }
.omni-empty-pad-lg {
  text-align: center;
  padding: 3rem 1rem;
  color: var(--text-muted);
}

/* =========================================================================
   PIPELINE — empty-state icon size util (avoid inline style)
   ========================================================================= */
.omn-pipe-empty-icon {
  width: 48px;
  height: 48px;
  color: var(--text-tertiary);
}

/* Inline form (for in-table buttons) */
.omni-inline-form { display: inline; }

/* Block button — full width within container */
.omni-btn--block { width: 100%; justify-content: center; }
.omni-doc-card__actions form { display: flex; }
.omni-doc-card__actions form .btn { flex: 1; }

/* =========================================================================
   KPI MANAGEMENT — section titles, attainment bar
   ========================================================================= */
.omn-kpi-section-title {
  font-size: .9rem;
  font-weight: 700;
  margin-bottom: .875rem;
  color: var(--text-secondary);
}
.omn-kpi-name {
  display: flex;
  align-items: center;
  gap: .5rem;
}
.omn-kpi-attain {
  display: flex;
  align-items: center;
  gap: .5rem;
  min-width: 120px;
}
.kpi-bar-wrap {
  height: 6px;
  background: var(--border-color, var(--border, #e5e7eb));
  border-radius: 3px;
  overflow: hidden;
}
.kpi-bar {
  height: 100%;
  border-radius: 3px;
  transition: width .35s ease;
  background: var(--success, #10b981);
}
.kpi-bar--success { background: var(--success, #10b981); }
.kpi-bar--warning { background: var(--warning, #f59e0b); }
.kpi-bar--danger  { background: var(--error,  #dc2626); }

@media (max-width: 767px) {
  /* Stack the two-column setter/closer defaults */
  .card .grid.grid-cols-2 { grid-template-columns: 1fr; }
  .omn-kpi-attain { min-width: 0; }
}

/* =========================================================================
   JOB QUEUE ADMIN — extracted from views/jobs/index.php
   ========================================================================= */
.omn-jobs-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--space-4, 1rem);
    margin-bottom: var(--space-6, 1.5rem);
}
.omn-jobs-stat {
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-xl, 16px);
    padding: var(--space-4, 1rem) var(--space-5, 1.25rem);
    box-shadow: var(--shadow-sm);
    position: relative;
    overflow: hidden;
}
.omn-jobs-stat::before {
    content: '';
    position: absolute;
    inset: 0 auto auto 0;
    width: 4px; height: 100%;
    background: var(--accent);
}
.omn-jobs-stat--pending::before  { background: var(--status-warning); }
.omn-jobs-stat--reserved::before { background: var(--accent); }
.omn-jobs-stat--done::before     { background: var(--status-success); }
.omn-jobs-stat--failed::before   { background: var(--status-danger); }
.omn-jobs-stat__label {
    font-size: var(--fs-xs, .72rem);
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: .05em;
}
.omn-jobs-stat__value {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1.1;
    margin-top: .35rem;
}
.omn-jobs-filterbar {
    display: flex;
    align-items: center;
    gap: var(--space-2, .5rem);
    flex-wrap: wrap;
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-md, 10px);
    padding: var(--space-3, .75rem) var(--space-4, 1rem);
    margin-bottom: var(--space-4, 1rem);
}
.omn-jobs-filterbar__label {
    font-size: .78rem;
    color: var(--text-secondary);
}
.omn-jobs-filterbar__label--gap { margin-left: .75rem; }
.omn-jobs-filterbar select {
    background: var(--bg-inset, var(--bg-base));
    border: 1px solid var(--border);
    border-radius: var(--radius-md, 8px);
    padding: .35rem .65rem;
    color: var(--text-primary);
    font-size: var(--fs-sm, .875rem);
    min-height: 36px;
}
.omn-jobs-filterbar__spacer { flex: 1; }
.omn-jobs-table-wrap {
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-xl, 16px);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
}
.omn-jobs-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fs-sm, .875rem);
}
.omn-jobs-table th {
    background: var(--bg-elevated);
    text-align: left;
    padding: var(--space-3, .75rem) var(--space-4, 1rem);
    font-size: var(--fs-xs, .72rem);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--text-secondary);
    border-bottom: 1px solid var(--border);
    white-space: nowrap;
}
.omn-jobs-table td {
    padding: var(--space-3, .75rem) var(--space-4, 1rem);
    border-bottom: 1px solid var(--border);
    color: var(--text-primary);
    vertical-align: top;
}
.omn-jobs-table tr:last-child td { border-bottom: none; }
.omn-jobs-table tr:hover td { background: var(--bg-hover); }
.omn-jobs-id    { font-family: var(--font-mono, ui-monospace, monospace); color: var(--text-tertiary); font-size: .75rem; }
.omn-jobs-class { font-family: var(--font-mono, ui-monospace, monospace); font-size: .8rem;  color: var(--text-primary); }
.omn-jobs-payload {
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: .72rem;
    color: var(--text-tertiary);
    max-width: 300px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.omn-jobs-error {
    color: var(--status-danger);
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: .72rem;
    max-width: 380px;
    max-height: 4em;
    overflow: auto;
    white-space: pre-wrap;
}
.omn-jobs-meta { color: var(--text-tertiary); font-size: var(--fs-xs, .72rem); white-space: nowrap; }
.omn-jobs-status {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 .65rem;
    border-radius: var(--radius-pill, 999px);
    font-size: var(--fs-2xs, .7rem);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.omn-jobs-status--pending  { background: var(--status-warning-soft); color: var(--status-warning); }
.omn-jobs-status--reserved { background: var(--accent-soft);         color: var(--accent); }
.omn-jobs-status--done     { background: var(--status-success-soft); color: var(--status-success); }
.omn-jobs-status--failed   { background: var(--status-danger-soft);  color: var(--status-danger); }
.omn-jobs-actions { display: flex; gap: .35rem; flex-wrap: nowrap; }
.omn-jobs-actions button {
    padding: .25rem .55rem;
    font-size: .72rem;
    border-radius: var(--radius-sm, 6px);
    border: 1px solid var(--border);
    background: var(--bg-elevated);
    color: var(--text-primary);
    cursor: pointer;
    min-height: 32px;
    transition: background .15s, color .15s;
}
.omn-jobs-actions button:hover { background: var(--bg-hover); }
.omn-jobs-actions .btn-retry  { color: var(--accent); border-color: color-mix(in oklch, var(--accent) 30%, transparent); }
.omn-jobs-actions .btn-delete { color: var(--status-danger); border-color: rgba(239,68,68,.3); }
.omn-jobs-actions .btn-retry:hover  { background: var(--accent-soft); }
.omn-jobs-actions .btn-delete:hover { background: var(--status-danger-soft); }
.omn-jobs-empty {
    padding: var(--space-10, 3rem) var(--space-4, 1rem);
    text-align: center;
    color: var(--text-tertiary);
}
.omn-jobs-empty__icon { opacity: .4; margin-bottom: .5rem; }
.omn-jobs-empty__hint { font-size: .78rem; margin-top: .35rem; }
.omn-jobs-error-empty { color: var(--text-tertiary); font-size: .75rem; }

@media (max-width: 767px) {
    .omn-jobs-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: var(--radius-md); }
    .omn-jobs-filterbar { flex-direction: column; align-items: stretch; }
    .omn-jobs-filterbar select { width: 100%; min-height: 44px; }
    .omn-jobs-filterbar__label--gap { margin-left: 0; }
    .omn-jobs-actions button { min-height: 38px; padding: .35rem .65rem; }
}

/* =========================================================================
   ONBOARDING — Template editor, list cards, instance detail
   BEM prefix: .omni-onb-*
   ========================================================================= */

/* --- Templates list (templates/index.php) --- */
.omni-onb-tpl-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 1rem;
}
.omni-onb-tpl-card {
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: .75rem;
}
.omni-onb-tpl-card__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .5rem;
}
.omni-onb-tpl-card__title { font-weight: 700; font-size: 1rem; }
.omni-onb-tpl-card__desc {
    font-size: .8125rem;
    color: var(--text-muted);
    margin-top: .2rem;
}
.omni-onb-tpl-card__badges {
    display: flex;
    gap: .375rem;
    flex-shrink: 0;
}
.omni-onb-tpl-card__meta {
    display: flex;
    gap: 1rem;
    font-size: .8125rem;
    color: var(--text-muted);
    flex-wrap: wrap;
}
.omni-onb-tpl-card__actions {
    display: flex;
    gap: .5rem;
    margin-top: .25rem;
}
.omni-onb-tpl-card__edit-btn { flex: 1; justify-content: center; }
.omni-onb-tpl-card__del-btn--disabled { opacity: .4; cursor: not-allowed; }
.omni-onb-tpl-empty {
    grid-column: 1 / -1;
    padding: 3rem;
    text-align: center;
    color: var(--text-muted);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .5rem;
}
.omni-onb-tpl-empty__title { font-weight: 600; font-size: 1rem; color: var(--text-primary); margin-top: .5rem; }
.omni-onb-tpl-empty__hint { font-size: .875rem; color: var(--text-tertiary); }
.omni-onb-tpl-empty .omni-btn { margin-top: .75rem; }

/* Modal (also used on show.php for reinvite) */
.omni-onb-modal {
    display: none;
    position: fixed;
    inset: 0;
    background: rgb(0 0 0 / .55);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    z-index: var(--z-modal, 1000);
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.omni-onb-modal--open { display: flex; }
.omni-onb-modal__dialog {
    min-width: 0;
    max-width: 480px;
    width: 100%;
    margin: 0;
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-xl);
    overflow: hidden;
}
.omni-onb-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-5) var(--space-6);
    border-bottom: 1px solid var(--border);
    font-weight: 700;
    font-size: var(--fs-lg);
    color: var(--text-primary);
}
.omni-onb-modal__body { padding: 1.25rem 1.5rem; }
.omni-onb-modal__label {
    display: block;
    margin-bottom: .375rem;
    font-size: .85rem;
    font-weight: 600;
}
.omni-onb-modal__input,
.omni-onb-modal__textarea {
    width: 100%;
    margin-bottom: .875rem;
}
.omni-onb-modal__hint {
    font-size: .8125rem;
    color: var(--text-muted);
    margin-bottom: .875rem;
}
.omni-onb-modal__actions {
    display: flex;
    gap: .5rem;
    justify-content: flex-end;
    flex-wrap: wrap;
}

/* --- Template editor (templates/edit.php) --- */
.omni-col-span-full { grid-column: 1 / -1; }
.omni-onb-meta-card { margin-bottom: 1.25rem; }
.omni-onb-meta-row { gap: 1.5rem; flex-wrap: wrap; }
.omni-onb-checkbox-label {
    display: flex;
    align-items: center;
    gap: .5rem;
    cursor: pointer;
    font-size: .875rem;
    min-height: 36px;
}
.omni-onb-step-card {
    margin-bottom: 1rem;
    overflow: hidden;
}
.omni-onb-step-header {
    padding: .875rem 1.25rem;
    background: var(--bg-elevated, var(--bg-base));
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: .75rem;
    cursor: pointer;
    flex-wrap: wrap;
}
.omni-onb-step-badge {
    width: 28px;
    height: 28px;
    background: var(--accent);
    color: #fff;
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: .875rem;
    flex-shrink: 0;
}
.omni-onb-step-badge--success { background: var(--success, #22c55e); }
.omni-onb-step-title {
    flex: 1;
    font-weight: 700;
    min-width: 0;
    word-break: break-word;
}
.omni-onb-step-title__sub {
    font-size: .75rem;
    color: var(--text-secondary);
    font-weight: 500;
}
.omni-onb-step-toggle-icon { transition: transform .2s; flex-shrink: 0; }
.omni-onb-step-toggle-icon--open { transform: rotate(180deg); }
.omni-onb-grid-actions { margin-bottom: 1rem; }
.omni-onb-field-row {
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: .875rem 1rem;
    margin-bottom: .625rem;
    background: var(--bg-elevated, var(--bg-base));
}
.omni-onb-field-row__head {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: .625rem;
    flex-wrap: wrap;
}
.omni-onb-field-row__label {
    flex: 1;
    font-weight: 600;
    font-size: .875rem;
    min-width: 0;
    word-break: break-word;
}
.omni-onb-field-actions {
    display: flex;
    gap: .375rem;
    flex-wrap: wrap;
}
.omni-onb-field-editor {
    display: none;
    padding-top: .625rem;
    border-top: 1px solid var(--border);
}
.omni-onb-field-editor--open { display: block; }
.omni-onb-field-label--sm { font-size: .78rem; }
.omni-onb-field-checkbox-row {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding-top: 1.25rem;
}
.omni-onb-options-editor { margin-top: .875rem; }
.omni-onb-options-editor--hidden { display: none; }
.omni-onb-guide-selector {
    margin-top: .875rem;
    padding: .875rem;
    background: color-mix(in srgb, var(--accent) 6%, transparent);
    border-radius: 8px;
    border: 1px solid color-mix(in srgb, var(--accent) 20%, transparent);
}
.omni-onb-guide-selector--hidden { display: none; }
.omni-onb-guide-selector__label {
    font-size: .78rem;
    margin-bottom: .5rem;
    display: block;
}
.omni-onb-guide-selector__hint {
    font-size: .75rem;
    color: var(--text-secondary);
    margin: .5rem 0 0;
}
.omni-onb-fields-block {
    border-top: 1px solid var(--border);
    padding-top: 1rem;
}
.omni-onb-fields-block__label { margin-bottom: .75rem; }
.omni-onb-add-btn-full {
    width: 100%;
    margin-top: .375rem;
}
.omni-onb-add-step-btn {
    width: 100%;
    margin-top: .5rem;
}
.omni-onb-completion-card {
    margin-top: 1.5rem;
    overflow: hidden;
}
.omni-onb-completion-header {
    padding: .875rem 1.25rem;
    background: color-mix(in srgb, var(--accent) 8%, transparent);
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: .75rem;
    cursor: pointer;
    flex-wrap: wrap;
}
.omni-onb-completion-body {
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.omni-onb-next-steps-list {
    display: flex;
    flex-direction: column;
    gap: .5rem;
    margin-bottom: .5rem;
}
.omni-onb-next-step-row {
    display: grid;
    grid-template-columns: 50px 1fr 1fr auto;
    gap: .5rem;
    align-items: center;
}
.omni-onb-cta-block {
    padding: .875rem;
    background: var(--bg-elevated, var(--bg-base));
    border-radius: 8px;
    border: 1px solid var(--border);
}
.omni-onb-cta-block__title {
    font-weight: 600;
    font-size: .875rem;
    margin-bottom: .75rem;
}
.omni-onb-cta-block .omni-field { margin: 0; }
.omni-onb-justify-end { justify-content: flex-end; }

/* --- Live preview pane (template editor right column) --- */
.omni-onb-preview-col {
    position: sticky;
    top: 1.5rem;
}
.omni-onb-preview-card {
    padding: 0;
    overflow: hidden;
}
.omni-onb-preview-header {
    padding: .875rem 1.25rem;
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    flex-wrap: wrap;
}
.omni-onb-preview-header__title {
    font-weight: 700;
    font-size: .9375rem;
    display: flex;
    align-items: center;
    gap: .5rem;
}
.omni-onb-preview-header__live {
    font-size: .75rem;
    color: var(--text-muted);
}
.omni-onb-preview-tabs {
    display: flex;
    gap: 0;
    border-bottom: 1px solid var(--border);
    overflow-x: auto;
}
.omni-onb-preview-tab {
    padding: .5rem .875rem;
    font-size: .78rem;
    font-weight: 600;
    border: none;
    background: none;
    cursor: pointer;
    white-space: nowrap;
    border-bottom: 2px solid transparent;
    color: var(--text-muted);
    transition: all .15s;
    display: flex;
    align-items: center;
    gap: .3rem;
}
.omni-onb-preview-tab--active {
    border-bottom-color: var(--accent);
    color: var(--accent);
}
.omni-onb-preview-tab--completion-active {
    border-bottom-color: var(--success, #22c55e);
    color: var(--success, #22c55e);
}
.omni-onb-preview-frame {
    padding: 1.25rem;
    background: #f3f4f6;
}
.omni-onb-preview-mockup {
    background: #fff;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 4px 24px rgba(0, 0, 0, .12);
    max-height: 520px;
    overflow-y: auto;
    position: relative;
}
.omni-onb-preview-browser {
    background: #1e293b;
    padding: .5rem .875rem;
    display: flex;
    align-items: center;
    gap: .5rem;
    position: sticky;
    top: 0;
    z-index: 10;
}
.omni-onb-preview-browser__dots {
    display: flex;
    gap: .3rem;
}
.omni-onb-preview-browser__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    opacity: .7;
}
.omni-onb-preview-browser__dot--red    { background: #ef4444; }
.omni-onb-preview-browser__dot--amber  { background: #f59e0b; }
.omni-onb-preview-browser__dot--green  { background: #10b981; }
.omni-onb-preview-browser__url {
    flex: 1;
    background: #334155;
    border-radius: 4px;
    padding: .2rem .625rem;
    font-size: .65rem;
    color: #94a3b8;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.omni-onb-preview-content {
    padding: 1.25rem;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;
}
.omni-onb-preview-empty {
    text-align: center;
    color: #9ca3af;
    font-size: .8125rem;
    margin: 2rem 0;
}
.omni-onb-preview-footer {
    padding: .625rem 1.25rem;
    border-top: 1px solid var(--border);
    font-size: .75rem;
    color: var(--text-muted);
    text-align: center;
}

/* --- Onboarding instance detail (show.php) --- */
.omni-onb-detail-grid {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 1.25rem;
    align-items: start;
}
.omni-onb-detail-card {
    padding: 1.25rem;
    margin-bottom: 1rem;
}
.omni-onb-detail-card--flush {
    padding: 0;
    margin-bottom: 1rem;
    overflow: hidden;
}
.omni-onb-stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 1rem;
}
.omni-onb-stat__label {
    font-size: .78rem;
    color: var(--text-muted);
    margin-bottom: .2rem;
}
.omni-onb-stat__value-strong { font-weight: 700; }
.omni-onb-progress-fill-success {
    height: 100%;
    background: var(--success);
    border-radius: 3px;
    transition: width .4s ease;
}
.omni-onb-card-header {
    padding: .875rem 1.25rem;
    border-bottom: 1px solid var(--border);
    font-weight: 700;
    font-size: .9375rem;
}
.omni-onb-details-row { border-bottom: 1px solid var(--border); }
.omni-onb-details-row:last-child { border-bottom: 0; }
.omni-onb-details-row__summary {
    padding: .875rem 1.25rem;
    cursor: pointer;
    font-weight: 600;
    font-size: .875rem;
    list-style: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    user-select: none;
}
.omni-onb-details-row__summary::-webkit-details-marker { display: none; }
.omni-onb-details-row__count {
    color: var(--text-muted);
    font-size: .78rem;
}
.omni-onb-details-row__body {
    padding: .875rem 1.25rem;
    background: var(--bg-elevated, var(--bg-base));
}
.omni-onb-resp-item {
    margin-bottom: .875rem;
    padding-bottom: .875rem;
    border-bottom: 1px solid var(--border);
}
.omni-onb-resp-item:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: 0;
}
.omni-onb-resp-item__label {
    font-size: .78rem;
    color: var(--text-muted);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: .25rem;
}
.omni-onb-resp-item__value {
    font-size: .9375rem;
    word-break: break-word;
}
.omni-onb-resp-item__empty {
    color: var(--text-muted);
    font-style: italic;
}
.omni-onb-empty-msg {
    padding: 1.5rem;
    text-align: center;
    color: var(--text-muted);
    margin-bottom: 1rem;
}
.omni-onb-files-body { padding: .875rem 1.25rem; }
.omni-onb-file-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .5rem 0;
    border-bottom: 1px solid var(--border);
    flex-wrap: wrap;
}
.omni-onb-file-row:last-child { border-bottom: 0; }
.omni-onb-file-row__name { font-weight: 600; font-size: .875rem; word-break: break-word; }
.omni-onb-file-row__meta { font-size: .78rem; color: var(--text-muted); }
.omni-onb-file-row__actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.omni-onb-link-display {
    background: var(--bg-elevated, var(--bg-base));
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: .625rem .875rem;
    font-size: .72rem;
    word-break: break-all;
    color: var(--text-muted);
    margin-bottom: .5rem;
    font-family: monospace;
    line-height: 1.4;
}
.omni-onb-link-meta {
    font-size: .78rem;
    color: var(--text-muted);
    margin-bottom: .75rem;
}
.omni-onb-link-meta__icon { vertical-align: middle; }
.omni-onb-action-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .375rem;
    margin-bottom: .375rem;
}
.omni-onb-action-grid:last-child { margin-bottom: 0; }
.omni-onb-no-link-text {
    font-size: .875rem;
    color: var(--text-muted);
    margin-bottom: .75rem;
}
.omni-onb-card-title {
    font-weight: 700;
    margin-bottom: .875rem;
    font-size: .9375rem;
}
.omni-onb-card-title--sm { margin-bottom: .5rem; }
.omni-onb-card-text {
    font-size: .8125rem;
    color: var(--text-muted);
    margin-bottom: .75rem;
    line-height: 1.5;
}
.omni-onb-status-select { width: 100%; margin-bottom: .625rem; }
.omni-onb-events-scroll { max-height: 400px; overflow-y: auto; }
.omni-onb-event-row {
    padding: .625rem 1.25rem;
    border-bottom: 1px solid var(--border);
    display: flex;
    gap: .625rem;
    align-items: flex-start;
}
.omni-onb-event-row:last-child { border-bottom: 0; }
.omni-onb-event-row__main { font-size: .875rem; flex: 1; min-width: 0; }
.omni-onb-event-row__sub {
    font-size: .78rem;
    color: var(--text-muted);
}
.omni-onb-event-row__date {
    font-size: .75rem;
    color: var(--text-muted);
    flex-shrink: 0;
    padding-top: .1rem;
}
.omni-onb-events-empty {
    padding: 1.25rem;
    color: var(--text-muted);
    font-size: .875rem;
    text-align: center;
}

/* Desktop responsive: collapse two-col detail grid earlier */
@media (max-width: 960px) {
    .omni-onb-detail-grid { grid-template-columns: 1fr; }
}

/* =========================================================================
   ONBOARDING — Mobile (≤ 767 px) overrides
   ========================================================================= */
@media (max-width: 767px) {
    /* Templates list */
    .omni-onb-tpl-grid {
        grid-template-columns: 1fr;
        gap: .75rem;
    }
    .omni-onb-tpl-card { padding: 1rem; }
    .omni-onb-tpl-card__head { flex-direction: column; align-items: flex-start; }
    .omni-onb-tpl-card__badges { flex-wrap: wrap; }
    .omni-onb-tpl-card__meta { gap: .75rem; flex-direction: column; }
    .omni-onb-tpl-card__actions { flex-wrap: wrap; }
    .omni-onb-tpl-card__edit-btn,
    .omni-onb-tpl-card__actions .btn { min-height: 44px; }
    .omni-onb-tpl-empty { padding: 2rem 1rem; }

    /* Modal */
    .omni-onb-modal { padding: .75rem; align-items: flex-end; }
    .omni-onb-modal__dialog { max-width: 100%; }
    .omni-onb-modal__header,
    .omni-onb-modal__body { padding: 1rem; }
    .omni-onb-modal__actions .btn { flex: 1 1 auto; min-height: 44px; }

    /* Editor — meta row checkboxes */
    .omni-onb-meta-row { flex-direction: column; align-items: stretch; gap: .75rem; }

    /* Step header — wrap nicely */
    .omni-onb-step-header {
        padding: .75rem .875rem;
        gap: .5rem;
    }
    .omni-onb-step-title { width: 100%; order: 0; flex: 1 1 100%; }
    .omni-onb-step-header .action-group {
        flex-wrap: wrap;
        gap: .375rem;
        width: 100%;
    }
    .omni-onb-step-header .action-group .btn { flex: 1 1 auto; min-height: 40px; justify-content: center; }
    .omni-onb-step-toggle-icon { margin-left: auto; }

    /* Field row */
    .omni-onb-field-row { padding: .75rem .875rem; }
    .omni-onb-field-row__head { gap: .5rem; }
    .omni-onb-field-row__label { flex: 1 1 100%; }
    .omni-onb-field-actions { width: 100%; }
    .omni-onb-field-actions .btn { flex: 1 1 auto; min-height: 40px; justify-content: center; }
    .omni-onb-field-checkbox-row { padding-top: .5rem; }

    /* Completion / next-steps row */
    .omni-onb-completion-header { padding: .75rem .875rem; gap: .5rem; }
    .omni-onb-next-step-row {
        grid-template-columns: 1fr;
        gap: .375rem;
    }
    .omni-onb-next-step-row .btn {
        justify-self: flex-end;
        min-height: 40px;
    }

    /* Live preview — unstick on mobile */
    .omni-onb-preview-col {
        position: static;
        top: auto;
        margin-top: 1rem;
    }
    .omni-onb-preview-frame { padding: .75rem; }
    .omni-onb-preview-mockup { max-height: 60vh; }
    .omni-onb-preview-tabs { padding: 0 .25rem; }

    /* Instance detail — single column */
    .omni-onb-detail-grid { grid-template-columns: 1fr; gap: 1rem; }
    .omni-onb-detail-card { padding: 1rem; }
    .omni-onb-stats-grid { grid-template-columns: 1fr 1fr; gap: .75rem; }
    .omni-onb-card-header { padding: .75rem .875rem; }
    .omni-onb-details-row__summary { padding: .75rem .875rem; }
    .omni-onb-details-row__body { padding: .75rem .875rem; }
    .omni-onb-files-body { padding: .75rem .875rem; }
    .omni-onb-file-row { flex-direction: column; align-items: flex-start; }
    .omni-onb-file-row__actions { width: 100%; }
    .omni-onb-file-row__actions .btn { flex: 1 1 auto; min-height: 40px; justify-content: center; }
    .omni-onb-action-grid { grid-template-columns: 1fr; }
    .omni-onb-action-grid .btn { min-height: 44px; }
    .omni-onb-event-row { padding: .625rem .875rem; flex-wrap: wrap; }
    .omni-onb-event-row__date { width: 100%; }
}

/* ==========================================================================
   Settings views - BEM classes (.omn-set-*)
   Used by: settings/index.php, users.php, user_form.php, niche_modules.php,
            phone_guide.php, automations.php and other settings views.
   Replaces inline style="" attributes; mobile rules live in mobile.css.
   ========================================================================== */

/* Generic flex/stack helpers used in settings */
.omn-set-row              { display:flex; align-items:center; gap:.625rem; flex-wrap:wrap; }
.omn-set-row--sm-gap      { gap:.5rem; }
.omn-set-row--xs-gap      { gap:.375rem; }
.omn-set-row--start       { align-items:flex-start; }
.omn-set-row--end         { align-items:flex-end; }
.omn-set-row--right       { justify-content:flex-end; }
.omn-set-row--between     { justify-content:space-between; }
.omn-set-row--no-wrap     { flex-wrap:nowrap; }

.omn-set-stack            { display:flex; flex-direction:column; gap:1rem; }
.omn-set-stack--sm        { gap:.5rem; }
.omn-set-stack--lg        { gap:1.5rem; }

/* Form layout container */
.omn-set-form             { max-width:680px; }
.omn-set-form--mail       { display:flex; flex-direction:column; gap:1.5rem; max-width:720px; }
.omn-set-form-actions     { display:flex; gap:.75rem; }
.omn-set-form-actions--right { display:flex; justify-content:flex-end; gap:.75rem; }

.omn-set-card             { max-width:800px; margin-bottom:1.25rem; }

/* Color-picker pair (color input + hex text input) */
.omn-set-colorpair        { display:flex; align-items:center; gap:.5rem; }
.omn-set-colorpair__swatch{ width:36px; height:32px; border:none; padding:0; cursor:pointer; border-radius:5px; flex-shrink:0; }
.omn-set-colorpair__swatch--md { width:36px; height:32px; border-radius:4px; }
.omn-set-colorpair__hex   { flex:1; font-family:monospace; font-size:.8rem; }

/* Color-scheme grid (Branding tab) */
.omn-set-scheme-grid      { display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:.75rem; }
.omn-set-scheme-card      { border:2px solid var(--border); border-radius:var(--radius-lg);
                            padding:.75rem; cursor:pointer; background:var(--bg-surface);
                            text-align:left; transition:border-color .15s, box-shadow .15s; position:relative; }
.omn-set-scheme-card:hover{ box-shadow:var(--shadow); border-color:var(--accent); }
.omn-set-scheme-card.scheme-active { box-shadow:var(--shadow-lg); }
.omn-set-scheme-card__swatches { display:flex; gap:4px; margin-bottom:.625rem; }
.omn-set-scheme-card__swatch   { width:28px; height:28px; border-radius:6px; }
.omn-set-scheme-card__swatch--bordered { border:1px solid var(--border); }
.omn-set-scheme-card__name     { font-weight:600; font-size:.8rem; color:var(--text-primary); }
.omn-set-scheme-card__check    { position:absolute; top:6px; right:8px; }

/* Logo grid (branding tab) */
.omn-set-logo-grid        { display:grid; grid-template-columns:1fr 1fr; gap:1.25rem; margin-bottom:1.25rem; }
.omn-set-logo-preview     { margin-bottom:.75rem; padding:.875rem 1rem; border-radius:var(--radius-md);
                            background:#0a0a18; display:flex; align-items:center; gap:.625rem; }
.omn-set-logo-preview__name{ font-size:.85rem; font-weight:800;
                            background:var(--brand-gradient, linear-gradient(135deg, var(--accent), var(--accent-2)));
                            -webkit-background-clip:text; -webkit-text-fill-color:transparent;
                            background-clip:text; white-space:nowrap; }
.omn-set-logo-preview--soft{ margin-bottom:.75rem; padding:.5rem; border-radius:var(--radius-md);
                             background:var(--bg-hover); display:inline-block; }
.omn-set-logo-preview-img--pdf { max-height:52px; max-width:180px; object-fit:contain; }
.omn-set-logo-range       { width:100%; accent-color:var(--accent); }

/* Brand gradient preview & contrast panel */
.omn-set-grad-preview     { height:36px; border-radius:8px; margin-bottom:.875rem; transition:background .2s; }
.omn-set-grad-fields      { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; margin-bottom:.875rem; }
.omn-set-contrast-panel   { margin-top:1rem; border-radius:10px; overflow:hidden; border:1px solid var(--border); }
.omn-set-contrast-grid    { display:grid; grid-template-columns:1fr 1fr; }
.omn-set-contrast-cell    { padding:.875rem 1rem; }
.omn-set-contrast-cell--light { background:#f8f9fa; border-right:1px solid var(--border); }
.omn-set-contrast-cell--dark  { background:#060e20; }
.omn-set-contrast-mode    { font-size:.72rem; font-weight:700; letter-spacing:.08em;
                            text-transform:uppercase; margin-bottom:.5rem; color:#888899; }
.omn-set-contrast-cell--dark .omn-set-contrast-mode { color:rgba(200,220,255,.55); }
.omn-set-contrast-btn     { display:inline-flex; align-items:center; padding:.45rem 1.1rem;
                            border-radius:8px; font-size:.8rem; font-weight:700; margin-bottom:.625rem; }
.omn-set-contrast-ratio-row { display:flex; align-items:center; gap:.5rem; }
.omn-set-contrast-badge   { font-size:.72rem; font-weight:800; padding:.15rem .5rem; border-radius:999px; white-space:nowrap; }
.omn-set-contrast-label   { font-size:.72rem; color:#888899; }
.omn-set-contrast-cell--dark .omn-set-contrast-label { color:rgba(200,220,255,.55); }

/* Light / Dark color-fields grid */
.omn-set-color-grid       { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:1rem; }
.omn-set-color-grid--scraper { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:.5rem; }
.omn-set-color-grid--niche   { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:.625rem; }

/* Theme live preview */
.omn-set-theme-preview    { font-size:.8rem; padding:1rem; }
.omn-set-theme-preview__row{ display:flex; gap:.75rem; flex-wrap:wrap; align-items:center; }
.omn-set-theme-tile--sidebar { width:120px; height:80px; border-radius:8px; display:flex; align-items:center;
                              justify-content:center; color:#fff; font-size:.75rem; font-weight:600; }
.omn-set-theme-tile--surface { width:160px; height:80px; border-radius:8px; border:1px solid var(--border); padding:.625rem; }
.omn-set-theme-tile--base    { width:80px; height:80px; border-radius:8px; border:1px solid var(--border);
                              display:flex; align-items:center; justify-content:center;
                              font-size:.75rem; color:var(--text-muted); }
.omn-set-theme-accent-bar { height:24px; border-radius:5px; margin-bottom:.375rem; }
.omn-set-theme-text-p     { font-size:.75rem; font-weight:600; margin-bottom:.2rem; }
.omn-set-theme-text-s     { font-size:.7rem; }

/* Favicon block */
.omn-set-favicon-row      { margin-bottom:.75rem; display:flex; align-items:center; gap:1rem; }
.omn-set-favicon-thumb    { padding:.625rem; border:1px solid var(--border); border-radius:var(--radius);
                            background:var(--bg-elevated); display:inline-flex; align-items:center; justify-content:center; }
.omn-set-favicon-thumb__img { width:48px; height:48px; object-fit:contain; border-radius:4px; }
.omn-set-favicon-empty    { margin-bottom:.75rem; padding:.75rem 1rem; background:var(--bg-elevated);
                            border-radius:var(--radius); font-size:.8125rem; color:var(--text-muted); }
.omn-set-favicon-meta__name { font-size:.8125rem; font-weight:600; color:var(--text-primary); }
.omn-set-favicon-meta__size { font-size:.75rem; color:var(--text-muted); }

/* Pipeline stage rows */
.omn-set-stage-color      { width:36px; height:36px; border:none; padding:0; cursor:pointer;
                            border-radius:var(--radius); flex-shrink:0; }
.omn-set-stage-checkbox   { display:flex; align-items:center; gap:.3rem; font-size:.8rem; white-space:nowrap; }
.omn-set-stage-autolabel  { width:140px; font-size:.75rem; padding:.25rem .5rem;
                            border:1px solid var(--border); border-radius:var(--radius);
                            background:var(--bg-base); color:inherit; }
.omn-set-stage-delete     { flex-shrink:0; padding:.3rem .45rem; border:1px solid rgba(239,68,68,.35);
                            border-radius:var(--radius); background:transparent; color:var(--error);
                            cursor:pointer; display:flex; align-items:center; line-height:1; }
.omn-set-stage-row-flex   { flex:1; }

/* Scraper-fields list */
.omn-set-scraper-item     { display:flex; align-items:flex-start; gap:.6rem; padding:.6rem .75rem;
                            border-radius:8px; background:var(--bg-hover); cursor:pointer;
                            transition:background var(--dur-fast); }
.omn-set-scraper-item:hover { background:var(--bg-active); }
.omn-set-scraper-item--locked { opacity:.6; cursor:not-allowed; }
.omn-set-scraper-item__cb { margin-top:.15rem; flex-shrink:0; }
.omn-set-scraper-item__title  { font-weight:600; font-size:.85rem; }
.omn-set-scraper-item__hint   { font-size:.75rem; color:var(--text-muted); }
.omn-set-scraper-api      { color:#7c3aed; font-size:.72rem; margin-left:.25rem; font-weight:700; }

/* Niche modules page */
.omn-set-niche-item       { display:flex; align-items:center; gap:.625rem; padding:.625rem .875rem;
                            border:1px solid var(--border); border-radius:var(--radius-sm,8px);
                            cursor:pointer; transition:background .15s; }
.omn-set-niche-item:hover { background:var(--bg-surface); }
.omn-set-niche-item__cb   { width:15px; height:15px; accent-color:var(--accent); }
.omn-set-niche-item__label{ font-size:.8125rem; color:var(--text-primary); }
.omn-set-niche-hint       { font-size:.8125rem; color:var(--text-muted); margin-bottom:1rem; }
.omn-set-niche-actions    { max-width:800px; display:flex; gap:.75rem; padding:.25rem 0 2rem; }

/* Permissions modal grid */
.omn-set-perms-body       { padding:1.25rem 1.5rem; }
.omn-set-perms-intro      { color:var(--text-muted); font-size:.875rem; margin-bottom:1.25rem; }
.omn-set-perms-grid       { display:grid; grid-template-columns:1fr 1fr; gap:.625rem; }
.omn-set-perms-item       { display:flex; align-items:center; gap:.625rem; padding:.5rem .75rem;
                            background:var(--bg-elevated); border-radius:var(--radius);
                            cursor:pointer; border:1px solid var(--border); }
.omn-set-perms-item__cb   { width:16px; height:16px; accent-color:var(--accent); }
.omn-set-perms-item__label{ font-size:.875rem; font-weight:600; }
.omn-set-perms-loading    { color:var(--text-muted); }

/* User-list cell with avatar + name */
.omn-set-user-cell        { display:flex; align-items:center; gap:.625rem; flex-wrap:wrap; }

/* User-form: tag preview / palette / status */
.omn-set-tag-meta         { font-size:.8rem; color:var(--text-muted); margin-left:.5rem; }
.omn-set-status-toggle    { display:flex; align-items:center; gap:.5rem; cursor:pointer; }
.omn-set-perm-cb          { width:16px; height:16px; }
.omn-set-perm-modlabel    { font-size:.875rem; }
.omn-set-perm-hint        { font-size:.72rem; color:var(--text-muted); margin-top:1px; }
.omn-set-perm-table       { margin:0; }
.omn-set-perm-table th    { width:50%; }
.omn-set-perm-table th + th  { width:25%; text-align:center; }
.omn-set-perm-cell        { text-align:center; }
.omn-set-perm-card-flush .omni-card__body { padding:0; }

/* SMTP fields wrapper */
.omn-set-smtp-group       { display:flex; flex-direction:column; gap:1rem; }
.omn-set-smtp-group--disabled { opacity:.5; pointer-events:none; }
.omn-set-smtp-toggle      { display:flex; align-items:center; gap:.6rem; cursor:pointer; font-weight:500; }
.omn-set-smtp-test        { border:1px solid var(--border); border-radius:var(--radius); padding:1rem; }
.omn-set-smtp-test__title { font-weight:600; font-size:.875rem; margin-bottom:.625rem; }
.omn-set-smtp-test__row   { display:flex; gap:.625rem; align-items:flex-end; }
.omn-set-smtp-test__result{ display:none; margin-top:.625rem; font-size:.85rem; padding:.5rem .75rem; border-radius:6px; }

/* Update tab */
.omn-set-update-wrap      { max-width:700px; }
.omn-set-update-header    { display:flex; align-items:center; justify-content:space-between; }
.omn-set-update-header__title { margin:0; font-size:1rem; font-weight:700; }
.omn-set-update-header__sub   { font-size:.82rem; color:var(--text-muted); margin-top:.2rem; }

.omn-set-status-pill      { display:inline-flex; align-items:center; gap:.4rem;
                            padding:.3rem .85rem; border-radius:var(--radius-sm); font-size:.78rem; font-weight:700;
                            background:var(--bg-elevated); color:var(--text-muted); }
.omn-set-status-pill--ok      { background:#dcfce7; color:#16a34a; }
.omn-set-status-pill--warn    { background:#fef9c3; color:#854d0e; }
.omn-set-status-pill--error   { background:#fef2f2; color:#b91c1c; }

.omn-set-update-warning   { background:var(--bg-elevated); border-radius:8px;
                            padding:.85rem 1rem; font-size:.85rem; color:var(--text-muted); margin-bottom:1rem; }
.omn-set-update-actions   { display:flex; gap:.75rem; flex-wrap:wrap; }
.omn-set-update-spinner   { display:none; align-items:center; gap:.5rem; font-size:.85rem; color:var(--text-muted); }
.omn-set-update-spinner__icon { animation:omn-set-spin 1s linear infinite; }
@keyframes omn-set-spin { to { transform:rotate(360deg); } }

.omn-set-update-card      { margin-top:1rem; background:color-mix(in oklch, var(--accent) 8%, transparent);
                            border:1px solid color-mix(in oklch, var(--accent) 20%, transparent); border-radius:12px; padding:1.25rem; }
.omn-set-update-card__head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:.75rem; }
.omn-set-update-card__eyebrow { font-size:.75rem; font-weight:700; text-transform:uppercase;
                                letter-spacing:.06em; color:var(--accent); margin-bottom:.2rem; }
.omn-set-update-card__version { font-size:1.2rem; font-weight:800; color:var(--text-primary); }
.omn-set-update-card__released{ font-size:.78rem; color:var(--text-muted); margin-top:.15rem; }
.omn-set-update-card__rightlbl{ font-size:.72rem; color:var(--text-muted); text-align:right; }
.omn-set-update-card__rightval{ font-size:.9rem; font-weight:600; color:var(--text-muted); text-align:right; }
.omn-set-update-changelog { margin-bottom:1rem; }
.omn-set-update-changelog__title { font-size:.75rem; font-weight:700; text-transform:uppercase;
                                   letter-spacing:.05em; color:var(--text-muted); margin-bottom:.4rem; }
.omn-set-update-changelog__list  { margin:0; padding-left:1.2rem; font-size:.85rem;
                                   color:var(--text-primary); display:flex; flex-direction:column; gap:.25rem; }
.omn-set-update-card__cta { display:flex; align-items:center; gap:.75rem; flex-wrap:wrap; }
.omn-set-update-card__note { font-size:.75rem; color:var(--text-muted); display:flex; align-items:center; gap:.35rem; }

.omn-set-update-toast     { margin-top:1rem; border-radius:10px; padding:.85rem 1rem; }
.omn-set-update-toast--ok    { background:var(--bg-elevated); }
.omn-set-update-toast--ok span { display:flex; align-items:center; gap:.5rem;
                                 font-size:.88rem; color:#16a34a; font-weight:600; }
.omn-set-update-toast--err   { background:#fef2f2; }
.omn-set-update-toast--err span { display:flex; align-items:center; gap:.5rem;
                                  font-size:.85rem; color:#b91c1c; }

.omn-set-mig-stats        { display:grid; grid-template-columns:1fr 1fr 1fr; gap:1rem; margin-bottom:1.25rem; }
.omn-set-mig-stat         { text-align:center; padding:1rem; background:var(--bg-elevated); border-radius:10px; }
.omn-set-mig-stat__num    { font-size:1.8rem; font-weight:800; color:var(--text-primary); }
.omn-set-mig-stat__num--ok   { color:#16a34a; }
.omn-set-mig-stat__num--warn { color:#d97706; }
.omn-set-mig-stat__num--idle { color:#94a3b8; }
.omn-set-mig-stat__label  { font-size:.78rem; color:var(--text-muted); }
.omn-set-mig-pending      { background:var(--bg-elevated); border-radius:8px; padding:.75rem 1rem; margin-bottom:1rem; }
.omn-set-mig-pending__title { font-size:.78rem; font-weight:700; color:var(--text-muted);
                              text-transform:uppercase; letter-spacing:.05em; margin-bottom:.5rem; }
.omn-set-mig-pending__row { display:flex; align-items:center; gap:.5rem; padding:.3rem 0;
                            font-size:.85rem; color:var(--text-primary); }
.omn-set-mig-result-row   { display:flex; align-items:flex-start; gap:.6rem; padding:.5rem .75rem;
                            border-radius:8px; margin-bottom:.4rem; font-size:.85rem; }
.omn-set-mig-result-row--ok    { background:#f0fdf4; color:#15803d; align-items:center; }
.omn-set-mig-result-row--err   { background:#fef2f2; color:#b91c1c; }
.omn-set-mig-result-row--err svg { flex-shrink:0; margin-top:1px; }
.omn-set-mig-history      { max-height:300px; overflow-y:auto; }
.omn-set-mig-history-name { font-size:.82rem; font-family:monospace; }
.omn-set-mig-history-meta { text-align:right; color:var(--text-muted); font-size:.82rem; }
.omn-set-mig-history-meta--nowrap { white-space:nowrap; }
.omn-set-mig-empty        { text-align:center; color:var(--text-muted); padding:2rem; }

/* Phone-guide */
.omn-set-pg-empty         { padding:3rem; }
.omn-set-pg-empty__lead   { margin-bottom:1rem; }
.omn-set-pg-row           { gap:.75rem; }
.omn-set-pg-row--icon     { display:inline-flex; align-items:center; }
.omn-set-pg-badge--inactive { margin-left:.5rem; }
.omn-set-pg-actions       { gap:.5rem; flex-shrink:0; }
.omn-set-pg-blocks-body   { padding:.75rem; display:flex; flex-direction:column; gap:.625rem; }
.omn-set-pg-blocks-empty  { text-align:center; padding:.75rem 0; }
.omn-set-pg-block         { border:1px solid var(--border); border-radius:var(--radius-lg);
                            overflow:hidden; background:var(--bg-surface); }
.omn-set-pg-block__head   { display:flex; align-items:center; gap:.625rem;
                            padding:.6rem .875rem; background:var(--bg-elevated); cursor:pointer; }
.omn-set-pg-block__badge  { font-size:.68rem; flex-shrink:0; }
.omn-set-pg-block__title  { font-size:.85rem; flex:1; overflow:hidden;
                            text-overflow:ellipsis; white-space:nowrap; font-weight:600; }
.omn-set-pg-block__actions{ display:flex; gap:.375rem; flex-shrink:0; }
.omn-set-pg-edit-pane     { border-top:1px solid var(--border); }
.omn-set-pg-add-pane      { border:1px dashed var(--accent); border-radius:var(--radius-lg);
                            overflow:hidden; background:var(--bg-surface); }
.omn-set-pg-add-btn       { width:100%; border-style:dashed; }
.omn-set-pg-grid-2        { display:grid; grid-template-columns:1fr 1fr; gap:.5rem; }
.omn-set-pg-grid-prices   { display:grid; grid-template-columns:1fr .8fr .9fr auto; gap:.3rem; align-items:center; }
.omn-set-pg-grid-kpi      { display:grid; grid-template-columns:1fr .6fr .7fr auto; gap:.3rem; align-items:center; }
.omn-set-pg-rows          { display:flex; flex-direction:column; gap:.375rem; }
.omn-set-pg-add-row       { margin-top:.5rem; width:100%; }
.omn-set-pg-actions-row   { display:flex; gap:.5rem; margin-top:.25rem; }
.omn-set-pg-toolbar       { background:var(--bg-elevated); border-bottom:1px solid var(--border);
                            padding:.3rem .5rem; display:flex; gap:.2rem; flex-wrap:wrap; }
.omn-set-pg-toolbar__sep  { color:var(--border); padding:0 .2rem; }
.omn-set-pg-toolbar__btn  { padding:.1rem .4rem; font-size:.72rem; }
.omn-set-pg-editor        { border:1.5px solid var(--input-border); border-radius:var(--radius); overflow:hidden; }
.omn-set-pg-editor__area  { min-height:140px; padding:.75rem; outline:none; font-size:.875rem;
                            line-height:1.65; background:var(--input-bg); color:var(--input-text);
                            font-family:inherit; }
.omn-set-pg-editor__area--sm { min-height:120px; }
.omn-set-pg-label-hint    { color:var(--text-muted); font-weight:400; }
.omn-set-pg-label--danger { color:var(--status-danger); }
.omn-set-pg-label--success{ color:var(--status-success); }
.omn-set-pg-label--accent { color:var(--accent); }
.omn-set-pg-modal-container { max-width:480px; }
.omn-set-pg-icon-input    { font-size:.8rem; }
.omn-set-pg-active-cb     { margin-right:.375rem; }

/* Hidden helper-form (logo clear forms) */
.omn-set-hidden-form      { display:none; }

/* Fixed-width helpers */
.omn-set-w-120            { width:120px; }
.omn-set-w-140            { width:140px; }
.omn-set-w-300            { width:300px; max-width:100%; }

/* Pipeline-stage row layout (moved from settings/index.php inline <style>) */
.stage-row { display:flex; align-items:center; gap:.75rem; padding:.625rem 0; border-bottom:1px solid var(--border); }
.stage-row:last-child { border-bottom:none; }
.stage-row-handle { cursor:grab; color:var(--text-muted); font-size:1.1rem; }

/* SMTP test result variants (toggled by JS) */
.omn-set-smtp-test__result.is-success { display:block; background:#d1fae5; color:#065f46; border:1px solid #6ee7b7; }
.omn-set-smtp-test__result.is-error   { display:block; background:#fee2e2; color:#991b1b; border:1px solid #fca5a5; }

/* ==========================================================================
   Settings views - MEDIUM priority additions
   Files: mail_templates.php, template_edit.php, tags.php,
          payment_conditions.php, payment_condition_fields.php,
          calendar.php, profile.php, license.php
   ========================================================================== */

/* mail_templates.php - placeholder info card */
.omn-set-placeholder-card    { margin-top:1.5rem; }
.omn-set-ph-card-body         { padding:.75rem 1.25rem; display:flex; align-items:flex-start; gap:1rem; flex-wrap:wrap; }
.omn-set-ph-card-label        { font-size:.8rem; font-weight:600; color:var(--text-secondary); white-space:nowrap; padding-top:.2rem; }
.omn-set-ph-pills-wrap        { display:flex; flex-wrap:wrap; gap:.375rem; }
.omn-set-ph-pill-btn          { cursor:pointer; border:none; font-size:.75rem; padding:.25rem .5rem; }
.omn-set-ph-bar-body          { padding:.6rem 1.25rem; display:flex; align-items:flex-start; gap:.75rem; flex-wrap:wrap; }
.omn-set-ph-bar-label         { font-size:.78rem; font-weight:600; color:var(--text-secondary); white-space:nowrap; padding-top:.2rem; }
.omn-set-ph-group-wrap        { display:flex; align-items:center; gap:.3rem; flex-wrap:wrap; }
.omn-set-ph-group-label       { font-size:.72rem; font-weight:700; color:var(--text-muted); text-transform:uppercase; letter-spacing:.07em; margin-right:.15rem; }
.omn-set-ph-group-btn         { cursor:pointer; border:none; font-size:.73rem; padding:.2rem .45rem; }
.omn-set-tpl-cell-trunc       { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.omn-set-tpl-actions-cell     { text-align:right; white-space:nowrap; }
.omn-set-card-overflow        { overflow:hidden; }

/* mail_templates.php - full-screen editor overlay */
.omn-set-editor-overlay       { display:none; position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:1000; align-items:flex-start; justify-content:center; padding:1rem; overflow-y:auto; }
.omn-set-editor-shell         { background:var(--bg-surface); border-radius:var(--radius-lg); width:100%; max-width:1300px; min-height:80vh; display:flex; flex-direction:column; box-shadow:var(--shadow-lg); margin:auto; }
.omn-set-editor-header        { display:flex; align-items:center; justify-content:space-between; padding:1rem 1.5rem; border-bottom:1px solid var(--border); }
.omn-set-editor-header__left  { display:flex; align-items:center; gap:1rem; }
.omn-set-editor-header__title { margin:0; font-size:1.1rem; font-weight:700; }
.omn-set-editor-toolbar       { display:flex; align-items:center; gap:.5rem; padding:.75rem 1.5rem; border-bottom:1px solid var(--border); flex-wrap:wrap; background:var(--bg-elevated); }
.omn-set-editor-toolbar__sep  { width:1px; height:20px; background:var(--border); margin:0 .25rem; }
.omn-set-editor-toolbar__select { height:30px; padding:0 .5rem; font-size:.8rem; width:auto; max-width:220px; }
.omn-set-editor-body          { flex:1; display:grid; grid-template-columns:1fr 1fr; min-height:480px; }
.omn-set-editor-form-col      { padding:1.25rem; border-right:1px solid var(--border); overflow-y:auto; display:flex; flex-direction:column; gap:1rem; }
.omn-set-editor-2col          { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; margin-bottom:.75rem; }
.omn-set-editor-body-label    { display:flex; align-items:center; justify-content:space-between; }
.omn-set-editor-html-toggle   { display:flex; align-items:center; gap:.375rem; font-weight:400; font-size:.8rem; cursor:pointer; }
.omn-set-editor-richtext      { min-height:260px; padding:.75rem; line-height:1.7; overflow-y:auto; font-size:.9rem; }
.omn-set-editor-html-src      { display:none; font-family:monospace; font-size:.8rem; line-height:1.5; }
.omn-set-editor-sender-hint   { font-size:.78rem; color:var(--text-muted); margin-top:-.5rem; margin-bottom:.75rem; }
.omn-set-editor-preview-col   { display:flex; flex-direction:column; background:var(--bg-elevated); }
.omn-set-editor-preview-header{ padding:.625rem 1rem; border-bottom:1px solid var(--border); display:flex; align-items:center; gap:.5rem; }
.omn-set-editor-preview-label { font-size:.8rem; font-weight:600; color:var(--text-secondary); }
.omn-set-editor-preview-sub   { font-size:.75rem; color:var(--text-muted); }
.omn-set-editor-preview-spinner { display:none; width:14px; height:14px; border:2px solid var(--border); border-top-color:var(--accent); border-radius:50%; animation:omn-set-spin .8s linear infinite; margin-left:auto; }
.omn-set-editor-preview-frame { flex:1; border:none; background:#f3f4f6; min-height:420px; }
.omn-set-editor-footer        { display:flex; align-items:center; justify-content:flex-end; gap:.75rem; padding:1rem 1.5rem; border-top:1px solid var(--border); }
.omn-set-editor-save-btn      { min-width:140px; }

/* fmt-btn toolbar */
.fmt-btn { background:var(--bg-surface); border:1px solid var(--border); border-radius:var(--radius); padding:.2rem .6rem; cursor:pointer; font-size:.85rem; color:var(--text-primary); line-height:1.6; transition:background .1s,border-color .1s; }
.fmt-btn:hover  { background:var(--bg-elevated); border-color:var(--accent); }
.fmt-btn:active { background:var(--accent); color:var(--text-on-accent); }
#tplBodyEditor:focus { outline:none; border-color:var(--accent); }

/* Silent Testimonial Harvester */
.omn-testimonial-section               { margin-top:2.5rem; }
.omn-testimonial-section__header       { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; padding:1.25rem 1.5rem; background:var(--bg-surface); border:1px solid var(--border); border-bottom:none; border-top-left-radius:var(--radius-lg); border-top-right-radius:var(--radius-lg); }
.omn-testimonial-section__header-left  { display:flex; align-items:flex-start; gap:.875rem; }
.omn-testimonial-section__icon         { display:flex; align-items:center; justify-content:center; width:40px; height:40px; min-width:40px; background:color-mix(in srgb,var(--accent) 12%,transparent); border-radius:var(--radius); color:var(--accent); }
.omn-testimonial-section__title        { margin:0 0 .2rem; font-size:1.05rem; font-weight:700; color:var(--text-primary); }
.omn-testimonial-section__subtitle     { margin:0; font-size:.83rem; color:var(--text-secondary); }
.omn-testimonial-section__header-actions { display:flex; align-items:center; gap:.5rem; flex-shrink:0; }
.omn-testimonial-status                { display:flex; align-items:stretch; gap:0; background:var(--bg-elevated); border:1px solid var(--border); border-bottom:none; overflow:hidden; }
.omn-testimonial-status__item          { display:flex; align-items:center; gap:.5rem; padding:.625rem 1.25rem; border-right:1px solid var(--border); font-size:.82rem; color:var(--text-secondary); flex:1; }
.omn-testimonial-status__item:last-child { border-right:none; }
.omn-testimonial-status__item--loading { justify-content:center; font-style:italic; color:var(--text-muted); }
.omn-testimonial-status__label         { font-weight:600; color:var(--text-muted); text-transform:uppercase; letter-spacing:.06em; font-size:.73rem; white-space:nowrap; }
.omn-testimonial-status__value         { font-size:1.1rem; font-weight:700; color:var(--text-primary); }
.omn-testimonial-status__value--accent { color:var(--accent); }
.omn-testimonial-status__value--sm     { font-size:.85rem; font-weight:600; }
.omn-testimonial-status__spinner       { display:inline-block; width:12px; height:12px; border:2px solid var(--border); border-top-color:var(--accent); border-radius:50%; animation:omn-set-spin .8s linear infinite; }
.omn-testimonial-grid                  { display:grid; grid-template-columns:1fr 300px; gap:1.25rem; padding:1.25rem; background:var(--bg-elevated); border:1px solid var(--border); border-bottom-left-radius:var(--radius-lg); border-bottom-right-radius:var(--radius-lg); }
.omn-testimonial-grid__form            { display:flex; flex-direction:column; gap:1.25rem; min-width:0; }
.omn-testimonial-card                  { margin:0; }
.omn-testimonial-card--sticky          { position:sticky; top:1rem; }
.omn-testimonial-label-hint            { font-weight:400; font-size:.78rem; color:var(--text-muted); margin-left:.25rem; }
.omn-testimonial-hint                  { font-size:.78rem; color:var(--text-muted); margin:.35rem 0 0; line-height:1.5; }
.omn-testimonial-hint code             { background:color-mix(in srgb,var(--accent) 10%,transparent); color:var(--accent); padding:.1em .35em; border-radius:.25em; font-size:.9em; }
.omn-testimonial-input-row             { display:flex; gap:.5rem; align-items:center; }
.omn-testimonial-input-row .omni-input { flex:1; min-width:0; }
.omn-testimonial-save-btn              { white-space:nowrap; flex-shrink:0; }
.omn-testimonial-textarea              { font-family:ui-monospace,Menlo,monospace; font-size:.82rem; line-height:1.6; resize:vertical; }
.omn-testimonial-form-footer           { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; margin-top:.5rem; padding-top:.75rem; border-top:1px solid var(--border); }
.omn-testimonial-default-label         { display:flex; align-items:center; gap:.5rem; font-size:.85rem; cursor:pointer; color:var(--text-secondary); }
.omn-testimonial-pill-list             { list-style:none; padding:0; margin:.5rem 0 0; display:flex; flex-direction:column; gap:.5rem; }
.omn-testimonial-pill-item             { display:flex; flex-direction:column; gap:.15rem; }
.omn-testimonial-pill                  { display:inline-flex; align-items:center; background:color-mix(in srgb,var(--accent) 10%,transparent); border:1px solid color-mix(in srgb,var(--accent) 30%,transparent); border-radius:var(--radius); padding:.3rem .6rem; cursor:pointer; transition:background .15s,border-color .15s,transform .1s; text-align:left; width:100%; }
.omn-testimonial-pill:hover            { background:color-mix(in srgb,var(--accent) 20%,transparent); border-color:var(--accent); }
.omn-testimonial-pill:active           { transform:scale(.97); }
.omn-testimonial-pill__code            { font-family:ui-monospace,Menlo,monospace; font-size:.78rem; color:var(--accent); background:none; padding:0; }
.omn-testimonial-pill__desc            { font-size:.73rem; color:var(--text-muted); padding:0 .1rem; }
.omn-testimonial-pill-feedback         { margin-top:.75rem; padding:.4rem .75rem; background:color-mix(in srgb,var(--success,#22c55e) 12%,transparent); border:1px solid color-mix(in srgb,var(--success,#22c55e) 30%,transparent); border-radius:var(--radius); font-size:.78rem; color:var(--success,#16a34a); }

/* template_edit.php */
.omn-set-tpl-editor-wrap      { border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }
.omn-set-tpl-toolbar          { background:var(--bg-elevated); border-bottom:1px solid var(--border); padding:.4rem .75rem; display:flex; gap:.25rem; flex-wrap:wrap; }
.omn-set-tpl-toolbar__sep     { color:var(--border); padding:0 .2rem; }
.omn-set-tpl-toolbar__btn     { padding:.1rem .35rem; font-size:.72rem; }
.omn-set-tpl-content-area     { min-height:420px; padding:1rem; outline:none; font-family:inherit; font-size:.9rem; line-height:1.75; background:var(--bg-surface); }
.omn-set-preview-modal        { display:none; position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:1000; align-items:center; justify-content:center; }
.omn-set-preview-content      { overflow-y:auto; padding:1.5rem; flex:1; line-height:1.75; font-size:.9rem; }

/* tags.php */
.omn-set-tag-row              { display:inline-flex; align-items:center; gap:.5rem; padding:.35rem .6rem; border:1px solid var(--border); border-radius:999px; background:var(--bg-elevated); }
.omn-set-tag-color-swatch     { width:28px; height:28px; padding:0; border:none; background:transparent; cursor:pointer; }
.omn-set-tag-hex-input        { width:90px; font-family:monospace; font-size:.8rem; padding:.2rem .4rem; border:1px solid var(--border); border-radius:6px; background:var(--bg); }
.omn-set-tag-name-input       { width:140px; font-size:.85rem; padding:.2rem .4rem; border:1px solid var(--border); border-radius:6px; background:var(--bg); }
.omn-set-tag-list             { display:flex; flex-wrap:wrap; gap:.5rem; }
.omn-set-tag-hint             { margin-top:.75rem; }
.omn-set-tag-add-wrap         { margin-top:.75rem; }
.omn-set-tag-default-row      { display:flex; flex-wrap:wrap; gap:.4rem; margin-bottom:1rem; }
.omn-set-tag-save-body        { display:flex; justify-content:flex-end; gap:.5rem; }

/* payment_conditions.php + payment_condition_fields.php */
.omn-set-cond-card            { margin-top:1.5rem; }
.omn-set-cond-desc            { font-size:.8rem; margin-top:.2rem; }
.omn-set-cond-empty           { padding:2rem; }
.omn-set-cond-modal           { max-width:640px; width:95%; }
.omn-set-cond-body            { display:grid; gap:1rem; }
.omn-set-cond-grid-2          { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.omn-set-cond-grid-3          { display:grid; grid-template-columns:1fr 1fr 1fr; gap:1rem; }
.omn-set-cond-field           { margin:0; }
.skonto-fields                { grid-template-columns:1fr 1fr; gap:1rem; }
.omn-set-ms-row               { display:grid; grid-template-columns:1fr 100px 32px; gap:.5rem; margin-bottom:.5rem; }
.omn-set-ms-add               { margin-top:.5rem; }

/* calendar.php */
.omn-set-cal-dot              { width:24px; height:24px; border-radius:50%; border:2px solid var(--border); }
.omn-set-cal-name             { font-weight:600; font-size:.875rem; }
.omn-set-cal-mono             { font-size:.8rem; font-family:monospace; }
.omn-set-cal-sm               { font-size:.875rem; }
.omn-set-cal-empty            { padding:2rem; text-align:center; color:var(--text-muted); font-size:.875rem; }
.omn-set-cal-row-actions      { display:flex; gap:.375rem; }
.omn-set-cal-del-form         { display:inline; }
.omn-set-cal-cron-card        { background:var(--accent-light); border:1px solid color-mix(in srgb,var(--accent) 13%,transparent); }
.omn-set-cal-cron-title       { color:var(--accent); margin:0 0 .75rem; font-size:.9rem; display:flex; align-items:center; gap:.375rem; }
.omn-set-cal-cron-desc        { font-size:.83rem; color:var(--text-secondary); margin:0 0 .75rem; }
.omn-set-cal-cron-code        { display:block; background:var(--bg-elevated); border:1px solid var(--border); border-radius:6px; padding:.625rem 1rem; font-size:.8rem; word-break:break-all; }
.omn-set-cal-cron-hint        { font-size:.78rem; color:var(--text-muted); margin:.5rem 0 0; }
.omn-set-cal-modal            { display:none; position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:500; align-items:center; justify-content:center; }
.omn-set-cal-modal-inner      { background:var(--bg-card); border-radius:14px; padding:1.75rem; width:480px; max-width:95vw; max-height:90vh; overflow-y:auto; }
.omn-set-cal-modal-header     { display:flex; align-items:center; justify-content:space-between; margin-bottom:1.25rem; }
.omn-set-cal-modal-title      { margin:0; color:var(--text-primary); }
.omn-set-cal-modal-2col       { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; margin-bottom:.75rem; }
.omn-set-cal-color-input      { height:38px; padding:.2rem .3rem; }
.omn-set-cal-active-row       { display:flex; align-items:flex-end; padding-bottom:.375rem; }
.omn-set-cal-active-label     { display:flex; align-items:center; gap:.5rem; cursor:pointer; font-size:.875rem; }
.omn-set-cal-modal-footer     { margin-top:1.25rem; }
.omn-set-cal-check-label      { display:flex; align-items:center; gap:.5rem; cursor:pointer; font-size:.875rem; }

/* profile.php */
.omn-set-profile-themes       { display:flex; gap:.75rem; flex-wrap:wrap; }

/* license.php */
.omn-set-lic-banner           { margin-bottom:1.5rem; }
.omn-set-lic-banner-body      { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.omn-set-lic-banner-left      { display:flex; align-items:center; gap:.9rem; }
.omn-set-lic-icon             { display:flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; }
.omn-set-lic-status-title     { font-weight:700; font-size:1rem; margin-bottom:.15rem; }
.omn-set-lic-last-check       { font-size:.82rem; color:var(--text-muted); }
.omn-set-lic-check-btn        { display:inline-flex; align-items:center; gap:.4rem; }
.omn-set-lic-kpis             { margin-bottom:1.5rem; }
.omn-set-lic-kpi-val--lg      { font-size:1.4rem; }
.omn-set-lic-kpi-val--md      { font-size:1.2rem; }
.omn-set-lic-kpi--grace       { border-color:var(--warning); }
.omn-set-lic-card             { max-width:640px; }
.omn-set-lic-card-title       { display:inline-flex; align-items:center; gap:.4rem; }
.omn-set-lic-result           { display:none; margin-bottom:1rem; }
.omn-set-lic-key-input        { font-family:monospace; font-size:1rem; letter-spacing:.1em; text-transform:uppercase; }
.omn-set-lic-key-hint         { font-size:.78rem; color:var(--text-muted); margin-top:.35rem; }
.omn-set-lic-save-row         { display:flex; gap:.75rem; }
.badge-success { background:rgba(16,185,129,.15); color:var(--success); padding:.2rem .65rem; border-radius:99px; font-size:.8rem; font-weight:600; }
.badge-warning { background:rgba(245,158,11,.15); color:#f59e0b; padding:.2rem .65rem; border-radius:99px; font-size:.8rem; font-weight:600; }
.badge-error   { background:rgba(239,68,68,.15); color:var(--error); padding:.2rem .65rem; border-radius:99px; font-size:.8rem; font-weight:600; }
.badge-neutral { background:var(--bg-elevated); color:var(--text-muted); padding:.2rem .65rem; border-radius:99px; font-size:.8rem; font-weight:600; }

/* ── Steuerberater duo-grid — layout class (grid, gap, margin via mb-6 utility) */
.omni-stb-duo-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-4, 1rem);
    margin-bottom: var(--space-6, 1.5rem);
}

/* conversation.php additions */
.omni-sidebar-panel-body--flush   { padding: 0; }
.omni-sidebar-row--padded         { padding: .35rem 1rem; }
.omni-sidebar-value--mono         { font-family: monospace; font-size: .78rem; }
.omni-sidebar-value--sm           { font-size: .75rem; }
.omni-sidebar-value--sentiment    { font-size: 1.1rem; }
.omni-contact-link-name           { font-size: .8125rem; margin-bottom: .375rem; }
.omni-contact-link-company        { font-size: .78rem; color: var(--text-muted); }
.omni-seq-name                    { font-size: .8375rem; font-weight: 600; color: var(--text-primary); margin-bottom: .25rem; }
.omni-seq-step-info               { font-size: .75rem; color: var(--text-muted); margin-bottom: .375rem; }
.omni-seq-stop-btn                { margin-top: .25rem; width: 100%; padding: .4rem .5rem; background: transparent; border: 1px solid var(--danger); border-radius: calc(var(--radius) - 2px); color: var(--danger); font-size: .8rem; font-weight: 600; cursor: pointer; transition: background .12s; }
.omni-seq-stop-btn:hover          { background: rgba(239,68,68,.08); }
.omni-seq-select                  { width: 100%; background: var(--bg-elevated); border: 1px solid var(--border); color: var(--text-primary); font-size: .8125rem; padding: .4rem .5rem; border-radius: calc(var(--radius) - 2px); outline: none; margin-bottom: .5rem; }
.omni-seq-select:focus            { border-color: var(--accent); }
.omni-seq-enroll-btn              { width: 100%; padding: .45rem .5rem; background: var(--grad); border: none; border-radius: calc(var(--radius) - 2px); color: #fff; font-size: .8125rem; font-weight: 600; cursor: pointer; transition: opacity .15s; }
.omni-seq-enroll-btn:hover        { opacity: .85; }
.omni-seq-enroll-confirm          { display: none; font-size: .75rem; color: var(--success); margin-top: .375rem; text-align: center; }
.omni-seq-start-btn               { width: 100%; padding: .375rem .5rem; background: var(--grad); border: none; border-radius: calc(var(--radius) - 2px); color: #fff; font-size: .8rem; font-weight: 600; cursor: pointer; }
.omni-compose-btns                { display: flex; flex-direction: column; gap: .375rem; flex-shrink: 0; }
.omni-conv-closed-bar             { padding: .75rem 1rem; text-align: center; font-size: .8125rem; color: var(--text-muted); border-top: 1px solid var(--border); background: var(--bg-surface); flex-shrink: 0; }
.omni-conv-reopen-btn             { margin-left: .5rem; background: none; border: none; color: var(--accent); cursor: pointer; font-size: .8125rem; font-weight: 600; text-decoration: underline; }
.omni-msg-checkmark               { opacity: .6; }
.omni-empty-messages              { flex: 1; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: .5rem; color: var(--text-muted); }
.omni-empty-messages__icon        { font-size: 2.5rem; }
.omni-empty-messages__text        { font-size: .875rem; }
.omni-audit-empty                 { font-size: .78rem; color: var(--text-muted); text-align: center; padding: .75rem 0; }
.omni-sidebar-panel-body--loose   { padding: .5rem 1rem; }
.omni-channel-badge               { background: var(--channel-color, var(--accent)); }
.omni-seq-inline-start-btn        { width: 100%; padding: .375rem .5rem; background: var(--grad); border: none; border-radius: calc(var(--radius) - 2px); color: #fff; font-size: .8rem; font-weight: 600; cursor: pointer; }

/* ── Portal action button groups ── */
.omni-portal__actions {
    display: flex;
    gap: 1rem;
    align-items: center;
    flex-wrap: wrap;
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--border);
}
@media (max-width: 640px) {
    .omni-portal__actions {
        flex-direction: column-reverse;
        align-items: stretch;
    }
    .omni-portal__actions .omni-btn {
        width: 100%;
        justify-content: center;
    }
}

/* Portal Card Spacing */
.portal-card { margin-bottom: 1.25rem; }
.portal-card:last-child { margin-bottom: 0; }

/* Signature method cards */
.sig-method-card {
    border: 2px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 1.25rem 1.5rem;
    cursor: pointer;
    transition: border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);
    margin-bottom: 1rem;
}
.sig-method-card:hover { border-color: var(--accent); background: var(--accent-soft); }
.sig-method-card.selected { border-color: var(--accent); background: var(--accent-soft); }

/* Legal checkbox area */
.portal-legal {
    margin-top: 1.75rem;
    padding: 1.25rem 1.5rem;
    background: var(--bg-elevated);
    border-radius: var(--radius-lg);
    border: 1px solid var(--border);
}

/* Signature canvas wrapper */
.sig-canvas-wrapper {
    margin-top: 1.5rem;
    margin-bottom: 1rem;
}

/* Portal body */
.omni-portal-body {
    background: var(--bg-body, #f4f4f5);
    min-height: 100vh;
}

/* Portal Status Banners */
.omni-portal-status {
    border-radius: var(--radius-lg);
    padding: 2rem;
    text-align: center;
    border: 1px solid var(--border);
}
.omni-portal-status--warning { background: var(--status-warning-soft); border-color: var(--status-warning); }
.omni-portal-status--success { background: var(--status-success-soft); border-color: var(--status-success); }
.omni-portal-status--danger  { background: var(--status-danger-soft);  border-color: var(--status-danger); }
.omni-portal-status__icon { margin-bottom: .75rem; color: inherit; opacity: .8; }
.omni-portal-status__title { font-size: 1.2rem; font-weight: var(--fw-semibold); margin-bottom: .5rem; }
.omni-portal-status__text  { font-size: .95rem; opacity: .85; }
.omni-portal-status__meta  { font-size: .8rem; margin-top: .5rem; opacity: .7; }

/* =========================================================================
   ZERO-INLINE UTILITIES — token-based replacements for ad-hoc style="..."
   Use these instead of inline styles in views.
   ========================================================================= */
.action-group--wrap { flex-wrap: wrap; gap: var(--space-2); }
.omni-text-pre      { white-space: pre-line; }
.omni-card--mt-md   { margin-top: var(--space-4); }
.omni-th--narrow    { width: 40px; }
.omni-badge--skonto { margin-bottom: .75rem; font-size: .85rem; padding: .4rem .75rem; }

/* =========================================================================
   EMAIL PREVIEW (dedicated tokens — emails always render light, theme-independent)
   The hex values below are the ONLY hex codes allowed in this file outside
   theme-specific overrides. They are intentionally hard-coded because email
   recipients see a light interface regardless of the CRM theme.
   ========================================================================= */
:root {
    --email-preview-bg:        #ffffff;
    --email-preview-fg:        #1a1a2e;
    --email-preview-fg-muted:  #6b7280;
    --email-preview-header:    #f6f7f9;
    --email-preview-border:    #e5e7eb;
}

.omni-email-preview {
    background:     var(--email-preview-bg);
    color:          var(--email-preview-fg);
    border:         1px solid var(--email-preview-border);
    border-radius:  var(--radius-md);
    overflow:       hidden;
    display:        flex;
    flex-direction: column;
    box-shadow:     var(--shadow-sm);
    font-family:    -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
.omni-email-preview__header {
    background:    var(--email-preview-header);
    border-bottom: 1px solid var(--email-preview-border);
    padding:       var(--space-3) var(--space-4);
    font-size:     var(--fs-sm);
    display:       flex;
    flex-direction: column;
    gap:           var(--space-1);
}
.omni-email-preview__header-row {
    display:     flex;
    align-items: baseline;
    gap:         var(--space-2);
    min-width:   0;
}
.omni-email-preview__header-label {
    color:       var(--email-preview-fg-muted);
    font-weight: 500;
    flex:        0 0 auto;
    min-width:   54px;
}
.omni-email-preview__header-value {
    color:         var(--email-preview-fg);
    font-weight:   600;
    overflow:      hidden;
    text-overflow: ellipsis;
    white-space:   nowrap;
}
.omni-email-preview__body {
    padding:     var(--space-5);
    font-size:   var(--fs-sm);
    line-height: 1.6;
    color:       var(--email-preview-fg);
    flex:        1 1 auto;
    word-wrap:   break-word;
}
.omni-email-preview__body p { margin: 0 0 var(--space-3); }
.omni-email-preview__body p:last-child { margin-bottom: 0; }
.omni-email-preview__body h1,
.omni-email-preview__body h2,
.omni-email-preview__body h3 { color: var(--email-preview-fg); margin: 0 0 var(--space-2); }
.omni-email-preview__body a { color: #5D33A2; }
.omni-email-preview__body ul,
.omni-email-preview__body ol { padding-left: 1.25rem; margin: 0 0 var(--space-3); }
.omni-email-preview__body--empty { color: var(--email-preview-fg-muted); font-style: italic; }
.omni-email-preview__signature {
    margin-top:  var(--space-4);
    padding-top: var(--space-4);
    border-top:  1px solid var(--email-preview-border);
    font-size:   var(--fs-xs);
    color:       var(--email-preview-fg-muted);
}

/* =========================================================================
   SEQUENCE STEP — Editor + Email-Preview grid
   ========================================================================= */
.omni-sequence-step {
    display:               grid;
    grid-template-columns: 1fr 380px;
    gap:                   var(--space-6);
    align-items:           start;
    padding-bottom:        var(--space-6);
    margin-bottom:         var(--space-6);
    border-bottom:         1px solid var(--border);
}
.omni-sequence-step:last-child { border-bottom: 0; margin-bottom: 0; padding-bottom: 0; }
.omni-sequence-step__editor {
    display:        flex;
    flex-direction: column;
    gap:            var(--space-3);
    min-width:      0;
}
.omni-sequence-step__head {
    display:         flex;
    align-items:     center;
    justify-content: space-between;
    gap:             var(--space-2);
    flex-wrap:       wrap;
    margin-bottom:   var(--space-2);
}
.omni-sequence-step__head-meta {
    display:     flex;
    align-items: center;
    gap:         var(--space-2);
    font-size:   var(--fs-sm);
    font-weight: var(--fw-bold);
    color:       var(--text-primary);
}
.omni-sequence-step__head-actions {
    display:     flex;
    align-items: center;
    gap:         var(--space-2);
    font-size:   var(--fs-sm);
    color:       var(--text-muted);
}
.omni-sequence-step__num-badge {
    background:    var(--accent);
    color:         var(--text-on-accent);
    padding:       2px var(--space-2);
    border-radius: var(--radius-pill);
    font-size:     var(--fs-xs);
    font-weight:   var(--fw-bold);
}
.omni-sequence-step__delay-input { width: 72px; }
.omni-sequence-step__preview-wrap {
    position: sticky;
    top:      var(--space-4);
    display:  flex;
    flex-direction: column;
    gap:      var(--space-2);
    min-width: 0;
}
.omni-sequence-step__preview-label {
    font-size:      var(--fs-xs);
    text-transform: uppercase;
    letter-spacing: var(--tracking-caps);
    color:          var(--text-muted);
    font-weight:    var(--fw-semibold);
}
@media (max-width: 1024px) {
    .omni-sequence-step { grid-template-columns: 1fr; gap: var(--space-4); }
    .omni-sequence-step__preview-wrap { position: static; }
}

/* ── Dojo Persona Voice Preview ──────────────────────────────────────── */
.omni-field__row-with-action {
    display: flex;
    gap: var(--space-2);
    align-items: stretch;
}
.omni-field__row-with-action .omni-input {
    flex: 1 1 auto;
}
.omni-field__row-with-action .omni-btn {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    white-space: nowrap;
}
#voicePreviewAudio {
    display: none;
}

/* ─── Email-Marketing Stat-Badges (Step-Cards in Sequenz-Editor) ───────────── */
.omni-sequence-step__stats {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin-top: var(--space-2);
}
.omni-stat-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    padding: var(--space-1) var(--space-2);
    background: var(--bg-elevated);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    font-size: var(--fs-xs);
    color: var(--text-secondary);
    line-height: 1.2;
}
.omni-stat-badge--sent   { color: var(--text-secondary); }
.omni-stat-badge--open   { color: var(--status-success, var(--accent)); }
.omni-stat-badge--click  { color: var(--accent); }
.omni-stat-badge--bounce { color: var(--status-danger, var(--accent)); }

/* ─── Audience-Mode Radio-Group (BEM, Theme-Token-only) ───────────────────── */
.omni-radio-group {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
    margin-top: var(--space-1);
}
.omni-radio-group label {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    cursor: pointer;
    color: var(--text-primary);
    font-size: var(--fs-sm);
}
.omni-radio-group input[type="radio"] {
    accent-color: var(--accent);
}
.omni-radio-group__item {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background .15s, border-color .15s;
    color: var(--text-primary);
    font-size: var(--fs-sm);
}
.omni-radio-group__item:hover { background: var(--bg-elevated); }
.omni-radio-group__item input:checked + span { color: var(--accent); font-weight: var(--fw-semibold); }
.omni-radio-group__item:has(input:checked) { border-color: var(--accent); background: var(--accent-soft); }

/* ── Outreach: Day-of-week picker (sequence schedule) ─────────────────── */
.omni-day-picker {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}
.omni-day-picker label {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: var(--fs-sm);
    transition: background .15s, border-color .15s, color .15s;
    user-select: none;
}
.omni-day-picker label:hover { background: var(--bg-elevated); }
.omni-day-picker label:has(input:checked) {
    background: var(--accent-soft);
    border-color: var(--accent);
    color: var(--accent);
    font-weight: var(--fw-semibold);
}
