/* css/jarvis.css — Jarvis (ERP interno NFA) shell + sidebar 3 grupos (Opção A)
 * Tokens herdam de scout.css. CSS-only, sem dependências runtime.
 * Lazy-loaded por js/components/jarvis/router.js (1x por sessão).
 */

#jarvisView{padding:0;background:var(--surface,#F9FAFB)}

.jv-layout{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 60px)}

/* ─── Sidebar ─────────────────────────────────────────────────────── */
.jv-sidebar{background:var(--surface,#F9FAFB);border-right:1px solid var(--border,#E5E7EB);padding:18px 0;font-family:var(--sans,'Inter',sans-serif);font-size:13px;position:sticky;top:60px;height:calc(100vh - 60px);overflow-y:auto}
.jv-sidebar-group{padding:0 16px 14px}
.jv-sidebar-label{font-family:var(--mono,'IBM Plex Mono',monospace);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:var(--text-muted,#6B7280);padding:8px 12px 6px}
.jv-sidebar-item{display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:6px;color:var(--text,#1F2937);cursor:pointer;text-decoration:none;font-size:13px;line-height:1.4}
.jv-sidebar-item:hover{background:var(--surface-hover,#F3F4F6)}
.jv-sidebar-item.is-active{background:var(--gold-light,rgba(10,158,94,0.08));color:var(--gold,#0A9E5E);font-weight:600}
.jv-sidebar-item .jv-ico{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;opacity:.7;flex-shrink:0;font-size:14px}
.jv-sidebar-item.is-active .jv-ico{opacity:1}
.jv-sidebar-item .jv-count{margin-left:auto;font-family:var(--mono,'IBM Plex Mono',monospace);font-size:10px;color:var(--text-muted,#6B7280);background:var(--border,#E5E7EB);padding:1px 6px;border-radius:9999px;font-weight:500}
.jv-sidebar-item.is-active .jv-count{background:rgba(10,158,94,0.18);color:var(--gold,#0A9E5E)}

/* ─── Content ─────────────────────────────────────────────────────── */
.jv-content{padding:24px;background:var(--bg,#FFFFFF);min-width:0}
.jv-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.jv-page-title h2{font-size:22px;font-weight:700;letter-spacing:-0.02em;margin-bottom:6px;color:var(--text,#1F2937)}
.jv-page-meta{font-family:var(--mono,'IBM Plex Mono',monospace);font-size:11px;color:var(--text-muted,#6B7280);display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.jv-page-meta .jv-sep{opacity:.5}
.jv-page-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* Chips/pills */
.jv-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;background:var(--surface,#F9FAFB);border:1px solid var(--border,#E5E7EB);border-radius:9999px;font-family:var(--mono,'IBM Plex Mono',monospace);font-size:11px;font-weight:500}
.jv-chip-gold{background:var(--gold-light,rgba(10,158,94,0.08));color:var(--gold,#0A9E5E);border-color:rgba(10,158,94,0.3)}
.jv-chip-warn{background:rgba(245,158,11,0.08);color:#A16207;border-color:rgba(245,158,11,0.35)}

/* KPI grid */
.jv-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:18px}
.jv-kpi{background:var(--surface,#F9FAFB);border:1px solid var(--border,#E5E7EB);border-radius:8px;padding:14px}
.jv-kpi-label{font-family:var(--mono,'IBM Plex Mono',monospace);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted,#6B7280);margin-bottom:6px}
.jv-kpi-value{font-family:var(--mono,'IBM Plex Mono',monospace);font-size:20px;font-weight:600;color:var(--text,#1F2937);line-height:1.1;word-break:break-word}
.jv-kpi-foot{font-size:11px;color:var(--text-muted,#6B7280);margin-top:6px}

/* Sub-tabs (sub-nav interna de cada seção) */
.jv-tabs{display:flex;border-bottom:1px solid var(--border,#E5E7EB);overflow-x:auto;margin-bottom:16px;gap:2px}
.jv-tabs::-webkit-scrollbar{display:none}
.jv-tab{font-family:var(--mono,'IBM Plex Mono',monospace);font-size:11px;padding:12px 16px;color:var(--text-muted,#6B7280);cursor:pointer;text-transform:uppercase;letter-spacing:0.05em;border:none;border-bottom:2px solid transparent;white-space:nowrap;background:transparent;text-decoration:none}
.jv-tab.is-active{color:var(--text,#1F2937);border-bottom-color:var(--gold,#0A9E5E);font-weight:600}
.jv-tab:hover{color:var(--text,#1F2937)}

/* Cards */
.jv-card{background:var(--bg,#FFFFFF);border:1px solid var(--border,#E5E7EB);border-radius:8px;padding:18px;margin-bottom:14px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.jv-card-title{font-size:14px;font-weight:600;margin-bottom:12px;color:var(--text,#1F2937)}
.jv-card-sub{font-size:12px;color:var(--text-muted,#6B7280);margin-top:-8px;margin-bottom:12px}

/* Definition list pra mostrar dados read-only */
.jv-dl{display:grid;grid-template-columns:160px 1fr;gap:8px 16px;font-size:13px}
.jv-dl dt{font-family:var(--mono,'IBM Plex Mono',monospace);font-size:10.5px;text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted,#6B7280);padding-top:2px}
.jv-dl dd{color:var(--text,#1F2937);word-break:break-word}
.jv-dl dd.jv-mono{font-family:var(--mono,'IBM Plex Mono',monospace);font-size:12px}
.jv-dl dd .jv-muted{color:var(--text-muted,#6B7280);font-size:11px;margin-left:8px}

/* Placeholders (em breve) */
.jv-placeholder{padding:60px 24px;text-align:center;color:var(--text-muted,#6B7280);background:var(--surface,#F9FAFB);border:1px dashed var(--border,#E5E7EB);border-radius:8px}
.jv-placeholder-icon{font-size:32px;margin-bottom:10px;opacity:.5}
.jv-placeholder h3{font-size:16px;font-weight:600;color:var(--text,#1F2937);margin-bottom:6px}
.jv-placeholder p{font-size:13px;max-width:480px;margin:0 auto;line-height:1.5}
.jv-placeholder .jv-tag{display:inline-block;margin-top:12px;font-family:var(--mono,'IBM Plex Mono',monospace);font-size:10px;text-transform:uppercase;letter-spacing:0.05em;padding:4px 10px;background:var(--bg,#FFFFFF);border:1px solid var(--border,#E5E7EB);border-radius:9999px}

/* Tabelas */
.jv-table{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--bg,#FFFFFF);border-radius:6px;overflow:hidden}
.jv-table th{font-family:var(--mono,'IBM Plex Mono',monospace);font-size:10px;text-transform:uppercase;color:var(--text-muted,#6B7280);font-weight:600;text-align:left;padding:10px 12px;letter-spacing:0.05em;background:var(--surface,#F9FAFB);border-bottom:1px solid var(--border,#E5E7EB)}
.jv-table td{padding:10px 12px;border-top:1px solid var(--border,#E5E7EB);vertical-align:top}
.jv-table tr:first-child td{border-top:none}
.jv-table .jv-mono{font-family:var(--mono,'IBM Plex Mono',monospace);font-size:11.5px}
.jv-table .jv-muted{color:var(--text-muted,#6B7280)}

/* Links */
.jv-link{color:var(--gold,#0A9E5E);text-decoration:none;font-size:12px;font-weight:500}
.jv-link:hover{text-decoration:underline}

/* Chip variants extras */
.jv-chip-danger{background:rgba(239,68,68,0.06);color:#EF4444;border-color:rgba(239,68,68,0.3)}

/* Banner info */
.jv-banner-info{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:6px;font-size:12.5px;margin-bottom:14px;background:rgba(59,130,246,0.06);border-left:3px solid #3B82F6;color:#1E40AF;line-height:1.5}
.jv-banner-info code{background:rgba(255,255,255,0.6);padding:1px 5px;border-radius:3px;font-family:var(--mono,'IBM Plex Mono',monospace);font-size:11px}

/* Loading state */
.jv-loading{padding:60px 24px;text-align:center;color:var(--text-muted,#6B7280);font-size:13px}
.jv-loading-spinner{display:inline-block;width:18px;height:18px;border:2px solid var(--border,#E5E7EB);border-top-color:var(--gold,#0A9E5E);border-radius:50%;animation:jv-spin 0.7s linear infinite;vertical-align:middle;margin-right:8px}
@keyframes jv-spin{to{transform:rotate(360deg)}}

/* Error state */
.jv-error{padding:20px 24px;background:rgba(239,68,68,0.06);border-left:3px solid #EF4444;color:#991B1B;font-size:13px;border-radius:6px;margin-bottom:14px}
.jv-error strong{font-weight:600}

/* Botões */
.jv-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;font-family:var(--sans,'Inter',sans-serif);font-size:12.5px;font-weight:500;border:1px solid var(--border,#E5E7EB);background:var(--bg,#FFFFFF);color:var(--text,#1F2937);border-radius:6px;cursor:pointer;text-decoration:none;line-height:1}
.jv-btn:hover:not(:disabled){background:var(--surface-hover,#F3F4F6)}
.jv-btn:disabled{opacity:.5;cursor:not-allowed}
.jv-btn-primary{background:var(--gold,#0A9E5E);color:white;border-color:var(--gold,#0A9E5E)}
.jv-btn-primary:hover:not(:disabled){background:#089451;border-color:#089451}

/* Card title agora suporta botões à direita */
.jv-card-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* Banner-info agora suporta botão */
.jv-banner-info{align-items:center}
.jv-banner-info > .jv-btn{flex-shrink:0}

/* Accordion (details/summary) */
.jv-accordion{background:var(--surface,#F9FAFB);border:1px solid var(--border,#E5E7EB);border-radius:8px;margin-bottom:14px;overflow:hidden}
.jv-accordion[open]{background:var(--bg,#FFFFFF)}
.jv-accordion-summary{padding:14px 18px;cursor:pointer;font-weight:600;font-size:13px;list-style:none;display:flex;align-items:center;gap:8px;user-select:none}
.jv-accordion-summary::-webkit-details-marker{display:none}
.jv-accordion-summary::before{content:'+';font-family:var(--mono,'IBM Plex Mono',monospace);font-size:16px;color:var(--gold,#0A9E5E);width:16px;display:inline-block}
.jv-accordion[open] .jv-accordion-summary::before{content:'−'}
.jv-accordion-summary:hover{background:var(--surface-hover,#F3F4F6)}

/* Form */
.jv-form{padding:6px 18px 18px;display:flex;flex-direction:column;gap:12px}
.jv-form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.jv-form-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.jv-form-field.jv-form-full{grid-column:1/-1}
.jv-form-field > span{font-family:var(--mono,'IBM Plex Mono',monospace);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:var(--text-muted,#6B7280)}
.jv-form-field input, .jv-form-field select, .jv-form-field textarea{padding:9px 12px;font-family:var(--sans,'Inter',sans-serif);font-size:13px;border:1px solid var(--border,#E5E7EB);border-radius:6px;background:var(--bg,#FFFFFF);color:var(--text,#1F2937);width:100%;min-height:38px}
.jv-form-field textarea{resize:vertical;min-height:80px;line-height:1.45}
.jv-form-field input:focus, .jv-form-field select:focus, .jv-form-field textarea:focus{outline:none;border-color:var(--gold,#0A9E5E);box-shadow:0 0 0 3px rgba(10,158,94,0.1)}

/* Link toggle (convite vinculo party/subset) */
.jv-link-toggle{display:flex;gap:8px;padding:6px 0}
.jv-link-radio{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border,#E5E7EB);border-radius:6px;cursor:pointer;font-size:13px;background:var(--bg,#FFFFFF);transition:border-color 0.15s}
.jv-link-radio:hover{border-color:var(--gold,#0A9E5E)}
.jv-link-radio input{margin:0;cursor:pointer}
.jv-link-radio input:checked + span{font-weight:600;color:var(--gold,#0A9E5E)}

/* Resultados busca Orbit (dropdown) */
.jv-orbit-results{position:relative;border:1px solid var(--border,#E5E7EB);border-radius:6px;background:var(--bg,#FFFFFF);max-height:240px;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,0.06);margin-top:4px}
.jv-orbit-row{padding:8px 12px;cursor:pointer;border-bottom:1px solid var(--border,#E5E7EB)}
.jv-orbit-row:last-child{border-bottom:none}
.jv-orbit-row:hover{background:var(--surface-hover,#F3F4F6)}
.jv-orbit-empty{padding:12px;color:var(--text-muted,#6B7280);font-style:italic;font-size:13px;text-align:center}
.jv-form-checkbox{flex-direction:row;align-items:center;gap:8px}
.jv-form-checkbox input{width:auto;min-height:0;margin:0}
.jv-form-checkbox > span{text-transform:none;font-size:13px;font-weight:400;color:var(--text,#1F2937);font-family:var(--sans,'Inter',sans-serif);letter-spacing:0}

/* Menu "..." (kebab) */
.jv-menu-trigger{background:transparent;border:none;color:var(--text-muted,#6B7280);font-size:18px;font-weight:600;cursor:pointer;padding:4px 8px;border-radius:4px;line-height:1}
.jv-menu-trigger:hover{background:var(--surface-hover,#F3F4F6);color:var(--text,#1F2937)}
.jv-menu{position:absolute;right:8px;top:100%;background:var(--bg,#FFFFFF);border:1px solid var(--border,#E5E7EB);border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,0.08);min-width:180px;z-index:50;padding:4px 0}
.jv-menu[hidden]{display:none}
.jv-menu-item{display:block;width:100%;padding:8px 14px;background:none;border:none;text-align:left;font-family:var(--sans,'Inter',sans-serif);font-size:13px;color:var(--text,#1F2937);cursor:pointer}
.jv-menu-item:hover{background:var(--surface-hover,#F3F4F6)}

/* Lista compacta de cartões inline (embaixo da linha do banco) */
.jv-cards-row td{border-top:none !important}
.jv-card-line{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:13px;background:var(--bg,#FFFFFF);border:1px solid var(--border,#E5E7EB);border-radius:6px;margin-bottom:4px}
.jv-card-line:last-child{margin-bottom:0}
.jv-card-line strong{font-weight:600;color:var(--text,#1F2937)}
.jv-card-line .jv-chip{margin-left:auto}

/* Modal — consolidação 2026-05-21: .jv-modal = overlay (linha ~731 BEM)
   .jv-modal-card = card visível (usado por todos módulos Jarvis).
   Rule legacy de `.jv-modal{background:white;max-width:720px...}` removida
   pra não conflitar com a overlay BEM. .jv-modal-backdrop continua válido
   pro padrão antigo (empresa-interna._openCardModal usa diretamente). */
.jv-modal-backdrop{position:fixed;inset:0;background:rgba(31,41,55,0.5);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}
.jv-modal-backdrop[hidden]{display:none}
.jv-modal-card{background:var(--bg,#FFFFFF);border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,0.2);max-width:720px;width:100%;max-height:90vh;overflow:auto;display:flex;flex-direction:column}
.jv-modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--border,#E5E7EB);position:sticky;top:0;background:var(--bg,#FFFFFF);z-index:1}
.jv-modal-header h3{font-size:16px;font-weight:600;color:var(--text,#1F2937)}
.jv-modal-close{background:transparent;border:none;font-size:24px;font-weight:300;color:var(--text-muted,#6B7280);cursor:pointer;padding:0 4px;line-height:1}
.jv-modal-close:hover{color:var(--text,#1F2937)}
.jv-modal-body{padding:20px 24px}
.jv-modal-body .jv-form{padding:0}

/* File input */
.jv-form-file input[type=file]{padding:18px 12px;border:2px dashed var(--border,#E5E7EB);background:var(--surface,#F9FAFB);cursor:pointer;font-family:var(--sans,'Inter',sans-serif);font-size:12.5px;color:var(--text-muted,#6B7280);min-height:auto}
.jv-form-file input[type=file]:hover{border-color:var(--gold,#0A9E5E);background:var(--gold-light,rgba(10,158,94,0.08))}
.jv-form-file input[type=file]::file-selector-button{margin-right:12px;padding:6px 12px;border:1px solid var(--border,#E5E7EB);background:var(--bg,#FFFFFF);border-radius:6px;font-family:var(--sans,'Inter',sans-serif);font-size:12px;font-weight:500;color:var(--text,#1F2937);cursor:pointer}
.jv-form-file input[type=file]::file-selector-button:hover{background:var(--surface-hover,#F3F4F6)}

.jv-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}
.jv-form-feedback{padding:8px 12px;border-radius:6px;font-size:12.5px;display:none}
.jv-form-feedback.jv-form-info{display:block;background:rgba(59,130,246,0.08);color:#1E40AF}
.jv-form-feedback.jv-form-success{display:block;background:var(--gold-light,rgba(10,158,94,0.08));color:var(--gold,#0A9E5E)}
.jv-form-feedback.jv-form-error{display:block;background:rgba(239,68,68,0.08);color:#991B1B}

/* Page-actions também aceita botão */
.jv-page-actions .jv-btn{padding:6px 12px;font-size:11.5px}

/* Mobile responsivo */
@media (max-width:880px){
  .jv-layout{grid-template-columns:1fr}
  .jv-sidebar{position:static;height:auto;border-right:none;border-bottom:1px solid var(--border,#E5E7EB);padding:12px 0}
  .jv-content{padding:16px}
  .jv-dl{grid-template-columns:1fr}
  .jv-dl dt{padding-top:6px}
}

/* ═══════════════════════════════════════════════════════════════════
   Parceiros F1 (merge outro Prax 2026-05-20 noite)
   Overlay full-screen + list + drawer + role pills + status dot + toast
   ═══════════════════════════════════════════════════════════════════ */
.jv-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: var(--bg, #fff);
  z-index: 9500;
  overflow: hidden;
  flex-direction: column;
}
.jv-overlay.is-open { display: flex; }
.jv-body-lock { overflow: hidden; }

/* ─── Page layout ──────────────────────────────────────────────────── */
.jv-page {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
}

.jv-body {
  display: flex;
  flex: 1;
  overflow: hidden;
}

/* Drawer agora é overlay fixed (slide-in à direita) — não comprime mais a lista.
   v25.6.85: pre-fix tinha max-width:460px forçando 3 colunas (sidebar+lista+drawer)
   o que estourava em viewports < 1280px. Anna pediu nova abordagem. */
.jv-body--with-drawer .jv-list-panel {
  flex: 1;
  min-width: 0;
}
.jv-body--with-drawer { /* hint visual que drawer tá aberto */ }

/* ─── Subnav ───────────────────────────────────────────────────────── */
.jv-subnav {
  border-bottom: 1px solid var(--border, #E5E7EB);
  background: var(--surface, #F9FAFB);
  flex-shrink: 0;
}
.jv-subnav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 24px;
  gap: 12px;
}
.jv-subnav-tabs {
  display: flex;
  gap: 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.jv-subnav-tabs::-webkit-scrollbar { display: none; }

.jv-subnav-tab {
  font-family: var(--mono, 'IBM Plex Mono', monospace);
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 12px 14px;
  color: var(--text-muted, #6B7280);
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  white-space: nowrap;
  display: flex;
  align-items: center;
  gap: 6px;
}
.jv-subnav-tab:hover { color: var(--text, #1F2937); }
.jv-subnav-tab.active {
  color: var(--text, #1F2937);
  border-bottom-color: var(--gold, #0A9E5E);
  font-weight: 600;
}

.jv-count {
  background: var(--border, #E5E7EB);
  padding: 1px 6px;
  border-radius: 10px;
  font-size: 9px;
  color: var(--text-muted, #6B7280);
  font-weight: 500;
}

/* ─── List panel ──────────────────────────────────────────────────── */
.jv-list-panel {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/* ─── Filters ─────────────────────────────────────────────────────── */
.jv-filters {
  padding: 10px 16px;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  border-bottom: 1px solid var(--border, #E5E7EB);
  flex-shrink: 0;
  flex-wrap: nowrap;
}
.jv-filters .jv-search-wrap { flex: 1; min-width: 0; }
.jv-search-wrap { position: relative; }
.jv-search-input {
  width: 100%;
  padding: 9px 12px;
  font-family: var(--sans, 'Inter', sans-serif);
  font-size: 13px;
  border: 1px solid var(--border, #E5E7EB);
  border-radius: 6px;
  background: var(--bg, #fff);
  color: var(--text, #1F2937);
  outline: none;
}
.jv-search-input:focus { border-color: var(--gold, #0A9E5E); box-shadow: 0 0 0 2px rgba(10,158,94,0.08); }

.jv-filter-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.jv-select-role {
  padding: 5px 10px;
  font-family: var(--mono, monospace);
  font-size: 10px;
  border: 1px solid var(--border, #E5E7EB);
  border-radius: 6px;
  background: var(--bg, #fff);
  color: var(--text-muted, #6B7280);
  cursor: pointer;
  outline: none;
}
.jv-select-role:focus { border-color: var(--gold, #0A9E5E); }

/* ─── List ────────────────────────────────────────────────────────── */
.jv-list {
  flex: 1;
  overflow-y: auto;
  padding: 4px 0;
}
.jv-empty {
  padding: 32px 16px;
  text-align: center;
  font-size: 13px;
  color: var(--text-muted, #6B7280);
}

/* ─── Row ─────────────────────────────────────────────────────────── */
.jv-row {
  display: flex;
  align-items: center;
  padding: 10px 16px;
  cursor: pointer;
  border-bottom: 1px solid var(--border, #E5E7EB);
  gap: 8px;
  transition: background 0.1s ease;
}
.jv-row:hover { background: var(--surface, #F9FAFB); }
.jv-row:focus { outline: 2px solid var(--gold, #0A9E5E); outline-offset: -2px; }
.jv-row--active { background: rgba(10,158,94,0.06); border-left: 3px solid var(--gold, #0A9E5E); }
.jv-row--active:hover { background: rgba(10,158,94,0.08); }

.jv-row-main { flex: 1; min-width: 0; }
.jv-row-head {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 2px;
}
.jv-row-name {
  font-weight: 600;
  font-size: 13px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
}
.jv-row-kind {
  font-family: var(--mono, monospace);
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--text-muted, #6B7280);
  background: var(--surface, #F9FAFB);
  border: 1px solid var(--border, #E5E7EB);
  padding: 1px 5px;
  border-radius: 4px;
  flex-shrink: 0;
}
.jv-row-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  color: var(--text-muted, #6B7280);
  margin-bottom: 4px;
}
.jv-row-cnae {
  font-family: var(--mono, monospace);
  font-size: 10px;
}
.jv-row-roles {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.jv-row-arrow {
  color: var(--text-muted, #6B7280);
  font-size: 16px;
  flex-shrink: 0;
}

/* ─── Status dot ──────────────────────────────────────────────────── */
.jv-status-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--border, #E5E7EB);
  flex-shrink: 0;
  display: inline-block;
}
.jv-status-dot--active  { background: var(--gold, #0A9E5E); }
.jv-status-dot--archived { background: var(--text-muted, #6B7280); }

/* ─── Pills ───────────────────────────────────────────────────────── */
.jv-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 9999px;
  font-family: var(--mono, monospace);
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border: 1px solid transparent;
  white-space: nowrap;
}
.jv-pill--client      { background: rgba(10,158,94,0.08);   color: var(--gold,#0A9E5E);    border-color: rgba(10,158,94,0.3); }
.jv-pill--vendor      { background: rgba(245,158,11,0.08);  color: #A16207;                border-color: rgba(245,158,11,0.3); }
.jv-pill--prospect    { background: rgba(59,130,246,0.06);  color: #2563EB;                border-color: rgba(59,130,246,0.3); }
.jv-pill--partner     { background: rgba(139,92,246,0.06);  color: #7C3AED;                border-color: rgba(139,92,246,0.3); }
.jv-pill--accounting  { background: rgba(234,179,8,0.08);   color: #854D0E;                border-color: rgba(234,179,8,0.3); }
.jv-pill--clt         { background: rgba(59,130,246,0.06);  color: #2563EB;                border-color: rgba(59,130,246,0.3); }
.jv-pill--pjpt        { background: rgba(245,158,11,0.08);  color: #A16207;                border-color: rgba(245,158,11,0.3); }
.jv-pill--default     { background: var(--surface,#F9FAFB); color: var(--text-muted,#6B7280); border-color: var(--border,#E5E7EB); }
.jv-pill--more        { background: var(--surface,#F9FAFB); color: var(--text-muted,#6B7280); border-color: var(--border,#E5E7EB); }

/* Toggle (form) */
.jv-pill-toggle {
  cursor: pointer;
  min-height: 28px;
  transition: all 0.1s ease;
}
.jv-pill-toggle.active { font-weight: 700; }

/* ─── Drawer (overlay slide-in à direita · v25.6.85) ─────────────── */
.jv-drawer-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.32);
  backdrop-filter: blur(2px);
  z-index: 8999;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease;
}
.jv-drawer-backdrop.is-open {
  opacity: 1;
  pointer-events: auto;
}
.jv-drawer {
  position: fixed;
  top: 60px;
  right: 0;
  bottom: 0;
  width: min(560px, 92vw);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--bg, #FFFFFF);
  border-left: 1px solid var(--border, #E5E7EB);
  box-shadow: -8px 0 32px rgba(0,0,0,0.10);
  z-index: 9000;
  transform: translateX(100%);
  transition: transform 0.22s cubic-bezier(0.4, 0, 0.2, 1);
}
.jv-drawer.is-open { transform: translateX(0); }

.jv-drawer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border, #E5E7EB);
  flex-shrink: 0;
  gap: 8px;
  flex-wrap: wrap;
}
.jv-drawer-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 600;
  font-size: 14px;
  min-width: 0;
  flex: 1;
}
.jv-drawer-bp {
  font-size: 11px;
  color: var(--text-muted, #6B7280);
  font-weight: 500;
}
.jv-drawer-actions { display: flex; gap: 6px; align-items: center; flex-shrink: 0; }

.jv-drawer-body {
  flex: 1;
  overflow-y: auto;
  padding: 0 16px 24px;
}

.jv-drawer-section {
  padding: 14px 0;
  border-bottom: 1px solid var(--border, #E5E7EB);
}
.jv-drawer-section:last-child { border-bottom: none; }

/* Tabs internas do drawer (Propostas / Contratos) */
.jv-drawer-tabs {
  display: flex;
  gap: 0;
  padding: 0 16px;
  border-bottom: 1px solid var(--border, #E5E7EB);
  flex-shrink: 0;
  background: var(--bg, #FFFFFF);
}
.jv-drawer-tab {
  font-family: var(--mono, 'IBM Plex Mono', monospace);
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 10px 12px;
  color: var(--text-muted, #6B7280);
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  white-space: nowrap;
}
.jv-drawer-tab:hover { color: var(--text, #1F2937); }
.jv-drawer-tab.is-active {
  color: var(--text, #1F2937);
  border-bottom-color: var(--gold, #0A9E5E);
  font-weight: 600;
}

/* Footer do drawer (ações fixas no rodapé) */
.jv-drawer-footer {
  padding: 12px 16px;
  border-top: 1px solid var(--border, #E5E7EB);
  background: var(--surface, #F9FAFB);
  flex-shrink: 0;
}
.jv-drawer-actions-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

/* Timeline (Propostas/Contratos drawer) */
.jv-timeline {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 4px 0;
}
.jv-timeline-item {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.jv-timeline-dot {
  width: 10px; height: 10px;
  border-radius: 50%;
  background: var(--border, #E5E7EB);
  margin-top: 4px;
  flex-shrink: 0;
}
.jv-timeline-item.is-done .jv-timeline-dot {
  background: var(--gold, #0A9E5E);
  box-shadow: 0 0 0 3px rgba(10,158,94,0.18);
}
.jv-timeline-body { flex: 1; min-width: 0; }
.jv-timeline-label { font-weight: 600; font-size: 13px; }
.jv-timeline-date { font-size: 12px; color: var(--text-muted, #6B7280); }
.jv-timeline-item.is-pending .jv-timeline-label,
.jv-timeline-item.is-pending .jv-timeline-date { opacity: 0.5; }

/* Linha clicável genérica (lista propostas/contratos) */
.jv-row-clickable {
  cursor: pointer;
  transition: background 0.12s;
}
.jv-row-clickable:hover { background: var(--surface-hover, #F3F4F6); }
.jv-row-clickable.jv-row--active {
  background: rgba(10,158,94,0.06);
  box-shadow: inset 3px 0 0 var(--gold, #0A9E5E);
}

/* ─── Detail grid ─────────────────────────────────────────────────── */
.jv-detail-grid {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.jv-detail-item {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-size: 12px;
  line-height: 1.4;
}
.jv-detail-key {
  font-family: var(--mono, monospace);
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted, #6B7280);
  min-width: 80px;
  flex-shrink: 0;
}

/* ─── Section label ───────────────────────────────────────────────── */
.jv-section-label {
  font-family: var(--mono, monospace);
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-muted, #6B7280);
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  gap: 8px;
}

/* ─── PII tag ─────────────────────────────────────────────────────── */
.jv-pii-tag {
  display: inline-flex;
  align-items: center;
  padding: 1px 5px;
  background: rgba(239,68,68,0.06);
  color: #EF4444;
  border-radius: 3px;
  font-family: var(--mono, monospace);
  font-size: 8px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* ─── Identifiers ─────────────────────────────────────────────────── */
.jv-ident-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 5px 0;
  font-size: 12px;
}
.jv-ident-type {
  font-size: 10px;
  font-weight: 600;
  color: var(--text-muted, #6B7280);
  min-width: 38px;
  text-transform: uppercase;
}
.jv-ident-val { flex: 1; }
.jv-ident-ok { color: var(--gold, #0A9E5E); font-weight: 700; }

/* ─── Address card ────────────────────────────────────────────────── */
.jv-address-card {
  padding: 8px 10px;
  background: var(--surface, #F9FAFB);
  border: 1px solid var(--border, #E5E7EB);
  border-radius: 6px;
  font-size: 12px;
  margin-bottom: 6px;
}
.jv-address-type {
  font-family: var(--mono, monospace);
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--text-muted, #6B7280);
  margin-bottom: 3px;
}
.jv-address-line { line-height: 1.5; }

/* ─── Contact card ────────────────────────────────────────────────── */
.jv-contact-card {
  padding: 8px 10px;
  background: var(--surface, #F9FAFB);
  border: 1px solid var(--border, #E5E7EB);
  border-radius: 6px;
  margin-bottom: 6px;
}
.jv-contact-card--primary {
  border-color: var(--gold, #0A9E5E);
  background: rgba(10,158,94,0.04);
}
.jv-contact-head {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 5px;
}
.jv-contact-name { font-weight: 600; font-size: 13px; }
.jv-contact-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 11px;
  color: var(--text-muted, #6B7280);
}

.jv-badge-primary {
  display: inline-flex;
  align-items: center;
  padding: 1px 6px;
  background: var(--gold, #0A9E5E);
  color: white;
  border-radius: 9999px;
  font-family: var(--mono, monospace);
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
}
.jv-badge-nfe {
  display: inline-flex;
  align-items: center;
  padding: 1px 6px;
  background: #EF4444;
  color: white;
  border-radius: 3px;
  font-family: var(--mono, monospace);
  font-size: 9px;
  font-weight: 600;
}
.jv-subrole {
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--text-muted, #6B7280);
}

/* ─── Bank card ───────────────────────────────────────────────────── */
.jv-bank-card {
  padding: 8px 10px;
  background: var(--surface, #F9FAFB);
  border: 1px solid var(--border, #E5E7EB);
  border-radius: 6px;
  margin-bottom: 6px;
}
.jv-bank-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-weight: 600;
  font-size: 12px;
  margin-bottom: 4px;
}
.jv-bank-row {
  display: flex;
  gap: 12px;
  font-size: 11px;
  color: var(--text-muted, #6B7280);
}
.jv-bank-pix {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 4px;
  font-size: 11px;
}
.jv-badge-pix {
  padding: 1px 6px;
  background: var(--gold, #0A9E5E);
  color: white;
  border-radius: 3px;
  font-family: var(--mono, monospace);
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
}
.jv-bank-status {
  font-family: var(--mono, monospace);
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  padding: 1px 6px;
  border-radius: 3px;
}
.jv-bank-status--approved  { background: rgba(10,158,94,0.1); color: var(--gold, #0A9E5E); }
.jv-bank-status--pending   { background: rgba(245,158,11,0.1); color: #A16207; }
.jv-bank-status--rejected  { background: rgba(239,68,68,0.06); color: #EF4444; }
.jv-bank-status--archived  { background: var(--surface-hover, #F3F4F6); color: var(--text-muted, #6B7280); }

/* ─── Pill group ──────────────────────────────────────────────────── */
.jv-pill-group { display: flex; flex-wrap: wrap; gap: 6px; }
.jv-muted { font-size: 12px; color: var(--text-muted, #6B7280); }
.jv-mono { font-family: var(--mono, 'IBM Plex Mono', monospace); }

/* ─── Buttons ─────────────────────────────────────────────────────── */
.jv-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 14px;
  font-family: var(--sans, 'Inter', sans-serif);
  font-size: 13px;
  font-weight: 500;
  border: 1px solid var(--border, #E5E7EB);
  background: var(--bg, #fff);
  color: var(--text, #1F2937);
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.12s ease;
  min-height: 36px;
  white-space: nowrap;
}
.jv-btn:hover { background: var(--surface-hover, #F3F4F6); }
.jv-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.jv-btn--primary { background: var(--gold, #0A9E5E); border-color: var(--gold, #0A9E5E); color: white; }
.jv-btn--primary:hover { background: #089151; }
.jv-btn--ghost { border-color: transparent; background: transparent; color: var(--text-muted, #6B7280); }
.jv-btn--ghost:hover { background: var(--surface-hover, #F3F4F6); color: var(--text, #1F2937); }
.jv-btn--sm { padding: 5px 10px; font-size: 12px; min-height: 30px; }

/* ─── Modal ───────────────────────────────────────────────────────── */
.jv-modal {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.35);
  z-index: 10100;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.jv-modal.is-open { display: flex; }
/* .jv-modal-card definido linha ~149 (consolidação 2026-05-21) — todos
   módulos Jarvis usam class hyphen-single, showModal não adiciona wrapper. */

.jv-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px 12px;
  border-bottom: 1px solid var(--border, #E5E7EB);
  gap: 8px;
  flex-shrink: 0;
}
.jv-modal-title { font-size: 15px; font-weight: 700; flex: 1; }
/* .jv-modal-body block normal (display:flex causa quirks com forms internos
   que tb são flex column). Padding canônico definido linha ~154. */
.jv-modal-footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 12px 20px 16px;
  border-top: 1px solid var(--border, #E5E7EB);
  flex-shrink: 0;
  margin-top: 12px;
}

/* ─── Form ────────────────────────────────────────────────────────── */
.jv-form-row {
  display: flex;
  gap: 12px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.jv-form-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
  min-width: 140px;
}
.jv-label {
  font-family: var(--mono, monospace);
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted, #6B7280);
  display: flex;
  align-items: center;
  gap: 5px;
}
.jv-req { color: #EF4444; }
.jv-input {
  padding: 8px 10px;
  font-family: var(--sans, 'Inter', sans-serif);
  font-size: 13px;
  border: 1px solid var(--border, #E5E7EB);
  border-radius: 6px;
  background: var(--bg, #fff);
  color: var(--text, #1F2937);
  outline: none;
  width: 100%;
  min-height: 36px;
}
.jv-input:focus { border-color: var(--gold, #0A9E5E); box-shadow: 0 0 0 2px rgba(10,158,94,0.08); }

.jv-kind-toggle {
  display: inline-flex;
  gap: 0;
  border: 1px solid var(--border, #E5E7EB);
  border-radius: 9999px;
  padding: 3px;
  background: var(--surface, #F9FAFB);
}
.jv-kind-toggle label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  font-size: 12px;
  font-weight: 500;
  color: var(--text-muted, #6B7280);
  cursor: pointer;
  border-radius: 9999px;
  user-select: none;
  transition: all 0.12s ease;
}
.jv-kind-toggle label input { display: none; }
.jv-kind-toggle label.checked {
  background: var(--gold, #0A9E5E);
  color: white;
  font-weight: 600;
}
.jv-kind-toggle label:hover:not(.checked) { color: var(--text, #1F2937); }

.jv-form-error {
  margin-top: 8px;
  padding: 8px 12px;
  background: rgba(239,68,68,0.06);
  border: 1px solid rgba(239,68,68,0.3);
  border-radius: 6px;
  font-size: 12px;
  color: #EF4444;
}

/* ─── Toast ───────────────────────────────────────────────────────── */
.jv-toast {
  position: fixed;
  bottom: 20px;
  right: 20px;
  padding: 10px 16px;
  background: var(--text, #1F2937);
  color: white;
  border-radius: 6px;
  font-size: 13px;
  z-index: 10200;
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
  max-width: 360px;
}
.jv-toast--ok  { background: var(--gold, #0A9E5E); }
.jv-toast--err { background: #EF4444; }

/* ─── Responsive overlay ─────────────────────────────────────────── */
@media (max-width: 768px) {
  .jv-body--with-drawer .jv-list-panel {
    display: none;
  }
  .jv-drawer {
    width: 100%;
    border-left: none;
  }
  .jv-subnav-inner { padding: 0 12px; }
  .jv-filters { padding: 10px 12px; }
  .jv-row { padding: 10px 12px; }
}
@media (max-width: 480px) {
  .jv-modal-card { margin: 0; border-radius: 0; max-height: 100vh; }
  .jv-form-row { flex-direction: column; }
}

/* ═══════════════════════════════════════════════════════════════════
   Primitivo drawer lateral padronizado (sessão Anna 21/05 manhã)
   - .jv-drawer já tinha 400px → agora 520px
   - .jv-side-tabs: 3 modos de entrada (Scout / CNPJ / Manual)
   - .jv-cnpj-input: input grande com botão buscar
   - .jv-scout-result-row: linha empresa do Scout
   ═══════════════════════════════════════════════════════════════════ */
.jv-side-tabs { display:flex; gap:2px; border-bottom:1px solid var(--border,#E5E7EB); margin-bottom:14px }
.jv-side-tab { flex:1; padding:10px 12px; font-family:var(--mono,'IBM Plex Mono',monospace); font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--text-muted,#6B7280); cursor:pointer; background:transparent; border:none; border-bottom:2px solid transparent; text-align:center }
.jv-side-tab.is-active { color:var(--text,#1F2937); border-bottom-color:var(--gold,#0A9E5E); font-weight:600 }
.jv-side-tab:hover { color:var(--text,#1F2937) }

.jv-cnpj-input { display:flex; gap:8px; margin-bottom:12px }
.jv-cnpj-input input { flex:1; padding:10px 12px; font-family:var(--mono,'IBM Plex Mono',monospace); font-size:14px; border:1px solid var(--border,#E5E7EB); border-radius:6px }
.jv-cnpj-input input:focus { outline:none; border-color:var(--gold,#0A9E5E); box-shadow:0 0 0 3px rgba(10,158,94,0.1) }

.jv-scout-result-row { padding:10px 12px; border:1px solid var(--border,#E5E7EB); border-radius:6px; cursor:pointer; margin-bottom:6px; font-size:13px }
.jv-scout-result-row:hover { background:var(--surface,#F9FAFB); border-color:var(--gold,#0A9E5E) }
.jv-scout-result-row .jv-mono { font-size:11px; color:var(--text-muted,#6B7280) }

/* Section roles (papel primário + secundários) */
.jv-roles-section { margin-top:14px; padding-top:14px; border-top:1px solid var(--border,#E5E7EB) }
.jv-roles-section h4 { font-family:var(--mono,'IBM Plex Mono',monospace); font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--text-muted,#6B7280); margin-bottom:8px; font-weight:600 }
.jv-roles-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:6px }
.jv-role-option { padding:8px 12px; border:1px solid var(--border,#E5E7EB); border-radius:6px; cursor:pointer; font-size:12.5px; display:flex; align-items:center; gap:6px; background:var(--bg,#FFFFFF) }
.jv-role-option:hover { background:var(--surface,#F9FAFB) }
.jv-role-option.is-primary { background:var(--gold-light,rgba(10,158,94,0.08)); border-color:var(--gold,#0A9E5E); color:var(--gold,#0A9E5E); font-weight:600 }
.jv-role-option.is-secondary { background:rgba(59,130,246,0.06); border-color:#3B82F6; color:#1E40AF }
.jv-role-option input { margin-right:4px }
