/* Módulo Estoque: abas, gráficos e tabela de reposição. */

.inv-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--border-subtle);
}

/* Abas do módulo: canto de 10px (só aqui; a pílula continua sendo o padrão
   dos botões do sistema) e texto na cor normal; a ativa fica na cor de destaque. */
.inv-tab {
  padding: 10px 10px 3px 10px;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 10px;
  background: none;
  font-weight: 700;
  cursor: pointer;
}

.inv-tab:hover { color: var(--text-strong); }
.inv-tab.is-active { color: var(--accent); border-bottom-color: var(--accent); }

.inv-cards { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 16px; }
.inv-panel { margin-bottom: 16px; }
.inv-panel > summary,
.inv-quality > summary { padding: 1.1rem 1.4rem; font-weight: 700; cursor: pointer; }
.inv-quality ul { margin: 0; padding: 0 1.4rem 1.2rem 2.6rem; font-size: 0.85rem; line-height: 1.6; }
.inv-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.inv-footnote { padding: 0 1.4rem 1rem; color: var(--text-muted); font-size: 0.8rem; }

/* ---------- Gráficos ---------- */
.inv-chart { margin: 0; padding: 1.2rem 1.4rem; }
.inv-chart figcaption { margin-bottom: 0.6rem; color: var(--text-strong); font-weight: 700; }
.inv-chart-body { position: relative; }
.inv-chart svg { display: block; width: 100%; height: auto; }

.inv-s1 { fill: var(--chart-1); background: var(--chart-1); }
.inv-s2 { fill: var(--chart-2); background: var(--chart-2); }
.inv-s3 { fill: var(--chart-3); background: var(--chart-3); }
.inv-s4 { fill: var(--chart-4); background: var(--chart-4); }

/* Contorno na cor do cartão = respiro de 2px entre segmentos empilhados. */
.inv-seg { stroke: var(--surface-card); stroke-width: 2px; }
.inv-grid { stroke: var(--chart-grid); stroke-width: 1px; }
.inv-zero { stroke: var(--border-strong); }
.inv-axis { fill: var(--text-muted); font-size: 11px; }
.inv-hit { fill: transparent; cursor: default; outline: none; }
.inv-hit.is-active { fill: var(--accent-soft); }

.inv-legend { display: flex; flex-wrap: wrap; gap: 0.4rem 1.1rem; margin-bottom: 0.6rem; color: var(--text-body); font-size: 0.8rem; }
.inv-legend span,
.inv-tooltip span { display: inline-flex; align-items: center; gap: 0.4rem; }
.inv-legend i,
.inv-tooltip i { display: inline-block; width: 10px; height: 10px; border-radius: 3px; }

.inv-tooltip {
  position: absolute;
  z-index: 2;
  display: grid;
  gap: 0.3rem;
  min-width: 220px;
  padding: 0.7rem 0.8rem;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--surface-card);
  box-shadow: var(--shadow-md);
  color: var(--text-body);
  font-size: 0.8rem;
  pointer-events: none;
}
.inv-tooltip[hidden] { display: none; }
.inv-tooltip strong { color: var(--text-strong); }
.inv-tooltip b { margin-left: auto; padding-left: 1rem; color: var(--text-strong); font-variant-numeric: tabular-nums; }
.inv-tooltip-total { padding-top: 0.3rem; border-top: 1px solid var(--border-subtle); }

.inv-table-view { margin-top: 0.8rem; font-size: 0.85rem; }
.inv-table-view summary { color: var(--accent); cursor: pointer; }

.inv-hbars { display: grid; gap: 0.55rem; }
.inv-hbar { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr) auto; align-items: center; gap: 0.8rem; font-size: 0.82rem; }
.inv-hbar-label { overflow: hidden; color: var(--text-strong); text-overflow: ellipsis; white-space: nowrap; }
.inv-hbar-label small { display: block; color: var(--text-muted); font-size: 0.72rem; }
.inv-hbar-track { height: 12px; }
.inv-hbar-track i { display: block; height: 100%; min-width: 2px; border-radius: 0 4px 4px 0; }
.inv-hbar b { color: var(--text-strong); font-variant-numeric: tabular-nums; }

/* ---------- Reposição ---------- */
.inv-filters { display: grid; gap: 0.8rem; padding: 0 1.4rem 1rem; }
.inv-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.inv-chip {
  padding: 0.4rem 0.75rem;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-pill);
  background: var(--surface-card);
  color: var(--text-body);
  font-size: 0.78rem;
  font-weight: 700;
  cursor: pointer;
}
.inv-chip.is-active { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.inv-filter-row { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 0.8rem; }
.inv-filter-search { grid-template-columns: minmax(0, 1fr); }
.inv-filter-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.inv-filter-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.inv-filter-row select {
  width: 100%;
  min-width: 0;
  padding: 0.72rem 0.8rem;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--surface-card);
  color: var(--text-strong);
  font-size: 0.8rem;
}
.inv-filter-row select option { font-size: 0.8rem; }

.inv-repo td, .inv-num td { font-variant-numeric: tabular-nums; }
.inv-lead-input { width: 9rem; padding: 0.45rem 0.6rem; border: 1px solid var(--border-default); border-radius: var(--radius-sm); background: var(--surface-card); color: var(--text-strong); }
.inv-check { display: flex; align-items: center; gap: 0.5rem; margin: 0.4rem 0 0.8rem; }
.modal-card:has(.inv-modal-form) { width: min(680px, 100%); max-height: calc(100dvh - 3rem); overflow-y: auto; }
.inv-modal-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.8rem; }
.inv-modal-form > .field,
.inv-modal-form > .inv-check { margin: 0; }
.inv-modal-form > .footer { margin-top: 0.4rem; }
.inv-modal-form:not(.inv-modal-sections) > .field:nth-of-type(5),
.inv-modal-form > .inv-check,
.inv-modal-form > .footer { grid-column: 1 / -1; }

/* Janela em seções (parâmetros de reposição): resumo do cálculo no topo,
   blocos Consumo / Mínimo / Máximo e rodapé sempre visível ao rolar. */
.modal-card.inv-modal-wide { width: min(720px, 100%); padding: 0; display: flex; flex-direction: column; }
.inv-modal-head { padding: 1.5rem 1.6rem 0; }
.inv-modal-wide .inv-modal-summary { margin: 1rem 1.6rem 0; }
.inv-modal-summary { padding: 1rem 1.1rem; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--accent-soft); }
.inv-modal-summary h3 { margin: 0 0 0.6rem; color: var(--text-strong); font-size: 0.9rem; }
.inv-modal-summary dl { display: grid; gap: 0.45rem; margin: 0; }
.inv-modal-summary dl > div { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: 0.8rem; font-size: 0.82rem; line-height: 1.5; }
.inv-modal-summary dt { color: var(--text-strong); font-weight: 700; }
.inv-modal-summary dd { margin: 0; color: var(--text-body); }
.inv-modal-summary b { color: var(--text-strong); font-variant-numeric: tabular-nums; }
.inv-modal-sections { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; padding: 0 1.6rem; }
.inv-modal-section { margin: 0; padding: 1.1rem 0; border: 0; border-bottom: 1px solid var(--border-subtle); min-width: 0; }
.inv-modal-section legend { float: left; width: 100%; padding: 0; color: var(--text-strong); font-size: 0.92rem; font-weight: 700; }
.inv-modal-note { clear: both; margin: 0.2rem 0 0.8rem; color: var(--text-muted); font-size: 0.8rem; }
.inv-modal-grid { clear: both; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.9rem 1rem; align-items: start; }
.inv-modal-grid .field { margin: 0; }
.inv-modal-grid .inv-check { grid-column: 1 / -1; align-items: flex-start; margin: 0; }
.inv-modal-grid .inv-check input { margin-top: 0.2rem; }
.inv-modal-grid .inv-check small { display: block; margin-top: 0.15rem; }
.inv-input-unit { position: relative; display: flex; align-items: center; }
.inv-input-unit.has-unit input { padding-right: 4rem; font-variant-numeric: tabular-nums; }
.inv-input-unit span { position: absolute; right: 0.9rem; color: var(--text-muted); font-size: 0.8rem; pointer-events: none; }
.inv-modal-sections > .footer { position: sticky; bottom: 0; margin: 0 -1.6rem; padding: 1rem 1.6rem 1.3rem; background: var(--surface-card); border-top: 1px solid var(--border-subtle); }
.inv-modal-sections > .inv-modal-section:last-of-type { border-bottom: 0; }
.inv-modal-sections input:disabled { color: var(--text-strong); background: var(--surface-subtle); cursor: default; }
@media (max-width: 640px) {
  .inv-modal-grid { grid-template-columns: minmax(0, 1fr); }
  .inv-modal-summary dl > div { grid-template-columns: minmax(0, 1fr); gap: 0.1rem; }
  .inv-modal-head { padding: 1.2rem 1.1rem 0; }
  .inv-modal-wide .inv-modal-summary { margin: 0.9rem 1.1rem 0; }
  .inv-modal-sections { padding: 0 1.1rem; }
  .inv-modal-sections > .footer { margin: 0 -1.1rem; padding: 0.9rem 1.1rem 1.1rem; }
}

.inv-status-critical { color: var(--danger); background: var(--danger-soft); }
.inv-status-warning { color: var(--warning); background: var(--warning-soft); }
.inv-status-info { color: var(--badge-common-text); background: var(--badge-common-bg); }

@media (max-width: 960px) {
  .inv-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .inv-grid-2 { grid-template-columns: 1fr; }
  .inv-filter-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .inv-filter-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  .inv-cards { grid-template-columns: 1fr; }
  .inv-filter-row { grid-template-columns: 1fr; }
  .inv-filter-4 { grid-template-columns: 1fr; }
  .inv-filter-3 { grid-template-columns: 1fr; }
  .inv-hbar { grid-template-columns: 1fr auto; }
  .inv-hbar-track { grid-column: 1 / -1; }
  .inv-chart { padding: 1rem; }
}

/* Lista de reposição: a linha traz só o que decide a compra; o resto abre no
   detalhe do produto. A coluna Produto ocupa a largura que sobra e os números
   ficam alinhados à direita para comparar de relance. */
.inv-filter-row .search { max-width: none; }
.inv-repo { font-size: 0.84rem; }
.inv-repo th { white-space: nowrap; vertical-align: bottom; }
.inv-repo th small { display: block; margin-top: 0.15rem; color: var(--text-soft); font-size: 0.6rem; font-weight: 600; letter-spacing: 0.04em; text-transform: none; }
.dashboard .inv-repo th,
.dashboard .inv-repo td { padding: 0.75rem 0.7rem; }
.dashboard .inv-repo th:first-child,
.dashboard .inv-repo td:first-child { padding-left: 1.2rem; }
.dashboard .inv-repo th:last-child,
.dashboard .inv-repo td:last-child { padding-right: 1.2rem; }
.inv-repo td { white-space: nowrap; vertical-align: middle; }
.inv-repo .inv-n { text-align: right; }
.inv-repo th.inv-n .inv-sort { justify-content: flex-end; }
.inv-repo td.inv-n b { color: var(--text-strong); font-size: 0.95rem; }
.inv-sort { border: 0; background: none; padding: 0; font: inherit; font-weight: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; cursor: pointer; display: inline-flex; align-items: center; gap: 0.3rem; }
.inv-sort span { color: var(--text-muted); font-size: 0.75em; }
.inv-sort:hover, .inv-sort.is-active, .inv-sort.is-active span { color: var(--accent); }
.inv-sort:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.inv-col-select { width: 2.6rem; }
.inv-col-toggle { width: 3rem; text-align: right; }
.inv-repo td.inv-col-status { white-space: normal; min-width: 120px; }
.inv-col-status .badge { white-space: nowrap; }
.inv-repo .inv-col-status .badge { margin: 0 0.2rem 0.2rem 0; padding: 0.24rem 0.5rem; vertical-align: middle; }
.inv-repo td.inv-product { width: 100%; min-width: 260px; white-space: normal; }
.inv-product strong {
  display: -webkit-box;
  overflow: hidden;
  color: var(--text-strong);
  line-height: 1.35;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
}
/* width 0 + min-width 100%: a linha acompanha a coluna sem impor largura mínima à tabela. */
.inv-meta { display: block; width: 0; min-width: 100%; margin-top: 0.2rem; overflow: hidden; color: var(--text-muted); font-size: 0.74rem; white-space: nowrap; text-overflow: ellipsis; }
.inv-meta.inv-class { color: var(--accent); }
.inv-range-sep { margin: 0 0.2rem; color: var(--text-soft); }
.inv-muted { color: var(--text-soft); }
.inv-col-status .badge { white-space: nowrap; }
.inv-badge-sm { display: table; margin-top: 0.3rem; padding: 0.15rem 0.45rem; font-size: 0.66rem; }

/* Situação do Manager na linha: só um ponto colorido e o rótulo, sem disputar com a situação do sistema. */
.inv-dot-status { display: inline-flex; align-items: center; gap: 0.3rem; color: var(--text-muted); font-weight: 700; }
.inv-dot-status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.inv-dot-status.is-warning { color: var(--warning); }
.inv-dot-status.is-ok { color: var(--success); }
.inv-dot-status.is-info { color: var(--accent); }

.inv-row { cursor: pointer; }
.inv-row td { transition: background var(--motion-fast) var(--ease); }
.inv-row:hover td { background: var(--surface-subtle); }
.inv-row.is-expanded td { background: var(--accent-soft); }
.inv-expand { display: inline-grid; place-items: center; width: 32px; height: 32px; padding: 0; border: 1px solid var(--border-subtle); border-radius: var(--radius-pill); background: var(--surface-card); color: var(--text-muted); cursor: pointer; }
.inv-expand svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform var(--motion-base) var(--ease); }
.inv-expand[aria-expanded="true"] svg { transform: rotate(180deg); }
.inv-expand:hover, .inv-expand[aria-expanded="true"] { border-color: var(--accent); color: var(--accent); }
.inv-expand:focus-visible { outline: 3px solid var(--accent-ring); outline-offset: 2px; }
.inv-sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Detalhe do produto. */
.dashboard .inv-repo tr.inv-detail > td { padding: 0; border-top: 0; background: var(--accent-soft); white-space: normal; }
.inv-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 0.4rem 1.2rem 1.2rem; }
.inv-detail-block { min-width: 0; padding: 0.95rem 1.05rem; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--surface-card); }
.inv-detail-block h4 { margin: 0 0 0.8rem; color: var(--text-muted); font-size: 0.66rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.inv-detail-block h4 small { font-weight: 400; letter-spacing: 0; text-transform: none; }
.inv-detail-wide { grid-column: 1 / -1; display: grid; gap: 0.6rem; align-content: start; }
.inv-detail-wide > * { min-width: 0; margin-top: 0; margin-bottom: 0; }
.inv-detail-wide .table-wrap { margin: 0 -1.05rem -0.95rem; }
.inv-periods { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.inv-period { display: grid; gap: 0.2rem; padding: 0.65rem 0.75rem; border-radius: var(--radius-sm); background: var(--surface-subtle); }
.inv-period span { color: var(--text-muted); font-size: 0.7rem; font-weight: 700; }
.inv-period b { color: var(--text-strong); font-size: 1.2rem; }
.inv-period b small { color: var(--text-muted); font-size: 0.72rem; font-weight: 400; }
.inv-period > small { color: var(--text-muted); font-size: 0.72rem; }
/* Barras mês a mês: uma coluna por mês; mouse ou foco mostra o consumo num balão. */
.inv-spark { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); align-items: end; padding-top: 2.2rem; }
.inv-spark-col { position: relative; display: grid; gap: 0.3rem; justify-items: center; border-radius: var(--radius-xs); outline: none; cursor: default; }
.inv-spark-col svg { display: block; width: 100%; height: 64px; }
.inv-spark-col rect { fill: var(--chart-1); transition: fill var(--motion-fast) var(--ease); }
.inv-spark-col.is-partial rect { opacity: 0.45; }
.inv-spark-label { color: var(--text-muted); font-size: 0.62rem; text-transform: capitalize; }
.inv-spark-col.is-partial .inv-spark-label { font-style: italic; }
.inv-spark-col:hover, .inv-spark-col:focus-visible { background: var(--surface-subtle); }
.inv-spark-col:hover rect, .inv-spark-col:focus-visible rect { fill: var(--accent-strong); opacity: 1; }
.inv-spark-col:hover .inv-spark-label, .inv-spark-col:focus-visible .inv-spark-label { color: var(--text-strong); font-weight: 700; }
.inv-spark-col:focus-visible { box-shadow: 0 0 0 2px var(--accent-ring); }
.inv-spark-tip {
  position: absolute;
  bottom: calc(100% + 0.25rem);
  left: 50%;
  z-index: 2;
  display: grid;
  justify-items: center;
  padding: 0.3rem 0.55rem;
  border-radius: var(--radius-sm);
  background: var(--surface-inverse);
  box-shadow: var(--shadow-md);
  color: var(--text-on-inverse-muted);
  font-size: 0.66rem;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transform: translate(-50%, 4px);
  transition: opacity var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);
}
.inv-spark-tip b { color: var(--text-on-inverse); font-size: 0.8rem; }
.inv-spark-col:first-child .inv-spark-tip { left: 0; transform: translate(0, 4px); }
.inv-spark-col:last-child .inv-spark-tip { left: auto; right: 0; transform: translate(0, 4px); }
.inv-spark-col:hover .inv-spark-tip, .inv-spark-col:focus-visible .inv-spark-tip { opacity: 1; transform: translate(-50%, 0); }
.inv-spark-col:first-child:hover .inv-spark-tip, .inv-spark-col:first-child:focus-visible .inv-spark-tip,
.inv-spark-col:last-child:hover .inv-spark-tip, .inv-spark-col:last-child:focus-visible .inv-spark-tip { transform: translate(0, 0); }
@media (prefers-reduced-motion: reduce) { .inv-spark-tip, .inv-spark-col rect { transition: none; } }
.inv-dl { display: grid; gap: 0.55rem; margin: 0; }
.inv-dl > div { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding-bottom: 0.45rem; border-bottom: 1px dashed var(--border-subtle); }
.inv-dl > div:last-child { padding-bottom: 0; border-bottom: 0; }
.inv-dl dt { flex-shrink: 0; color: var(--text-muted); font-size: 0.76rem; }
.inv-dl dd { margin: 0; color: var(--text-strong); font-weight: 600; text-align: right; }
.inv-dl dd small { display: block; font-weight: 400; }
.inv-detail-note { margin: 0.75rem 0 0; padding: 0.55rem 0.75rem; border-radius: var(--radius-sm); background: var(--surface-subtle); color: var(--text-body); font-size: 0.78rem; line-height: 1.5; }
.inv-detail-note.is-warning { background: var(--warning-soft); }
.inv-detail-empty { margin: 0; color: var(--text-muted); font-size: 0.8rem; }
.inv-detail-actions { margin-top: 0.9rem; }

@media (max-width: 1180px) {
  .inv-detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .inv-detail-grid { grid-template-columns: 1fr; }
  .inv-repo td.inv-product { min-width: 200px; }
}
@media (prefers-reduced-motion: reduce) {
  .inv-expand svg, .inv-row td { transition: none; }
}

/* Filtros de grupo, subgrupo e linha. */
.inv-filter-single { grid-template-columns: minmax(0, 360px); }
.inv-filters-top { padding: 0 0 12px; }
.inv-filter-row select:disabled { color: var(--text-muted); }
.inv-class { color: var(--accent); }
.inv-warn-text { color: var(--warning); font-weight: 700; }

/* Aviso de itens que parecem serviço/contador somando no estoque. */
.inv-suspicious { margin-bottom: 16px; color: var(--text-body); background: var(--warning-soft); line-height: 1.55; }
.inv-suspicious strong { color: var(--text-strong); }
.inv-suspicious ul { margin: 0.4rem 0 0.6rem; padding-left: 1.2rem; }

[data-refresh] { white-space: nowrap; flex-shrink: 0; }

/* Ativos x inativos. */
.inv-filter-search-active { grid-template-columns: minmax(0, 1fr) minmax(0, 240px); }
.inv-inactive { margin-left: 0.35rem; color: var(--text-muted); background: var(--surface-skeleton); vertical-align: middle; }
.inv-activity { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; padding: 0 1.4rem 1rem; }
.inv-activity > div { display: grid; gap: 0.25rem; padding: 0.9rem 1rem; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); }
.inv-activity > div.is-inactive { background: var(--surface-subtle); }
.inv-activity span { color: var(--text-muted); font-size: 0.76rem; font-weight: 700; }
.inv-activity b { color: var(--text-strong); font-size: 1.5rem; }
.inv-activity small { color: var(--text-muted); font-size: 0.78rem; }
.inv-activity-detail { border-top: 1px solid var(--border-subtle); }
.inv-activity-detail > summary { padding: 0.9rem 1.4rem; font-weight: 700; cursor: pointer; }
.inv-panel .panel-head select[data-active] { min-width: 200px; padding: 0.6rem 0.8rem; border: 1px solid var(--border-default); border-radius: var(--radius-sm); background: var(--surface-card); color: var(--text-strong); }
@media (max-width: 760px) { .inv-activity { grid-template-columns: 1fr; } .inv-filter-search-active { grid-template-columns: 1fr; } }

/* Linhas (evolução, comparativo de anos). */
.inv-line { fill: none; stroke-width: 2px; stroke-linejoin: round; stroke-linecap: round; }
.inv-line.inv-s1 { stroke: var(--chart-1); }
.inv-line.inv-s2 { stroke: var(--chart-2); }
.inv-line.inv-s3 { stroke: var(--chart-3); }
.inv-dot { stroke: var(--surface-card); stroke-width: 2px; }
.inv-chart-note { margin: 0.6rem 0 0; color: var(--text-muted); font-size: 0.78rem; }

/* Faixas de estoque morto. */
.inv-filter-search-active { grid-template-columns: minmax(0, 1fr) minmax(0, 200px) minmax(0, 260px); }
.inv-tiers { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; padding: 0 1.4rem 1rem; }
.inv-tier { display: grid; gap: 0.25rem; padding: 0.9rem 1rem; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--surface-card); color: var(--text-body); text-align: left; cursor: pointer; }
.inv-tier.is-active { border-color: var(--accent); background: var(--accent-soft); }
.inv-tier span { color: var(--text-muted); font-size: 0.76rem; font-weight: 700; }
.inv-tier b { color: var(--text-strong); font-size: 1.4rem; }
.inv-tier small { color: var(--text-muted); font-size: 0.78rem; }

/* Tendência do consumo. */
.inv-trend { display: block; margin-top: 0.2rem; font-size: 0.72rem; font-weight: 700; }
.inv-trend-queda { color: var(--danger); }
.inv-trend-alta { color: var(--success); }
@media (max-width: 960px) { .inv-tiers { grid-template-columns: repeat(2, minmax(0, 1fr)); } .inv-filter-search-active { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .inv-tiers { grid-template-columns: 1fr; } .inv-filter-search-active { grid-template-columns: 1fr; } }

/* Comparação com a reposição do SmartManager (só referência; quem manda é o sistema). */
.inv-manager-summary { display: flex; flex-wrap: wrap; gap: 0.4rem 1rem; margin: 0; padding: 0 1.4rem 1rem; font-size: 0.8rem; color: var(--text-body); }
.inv-manager-summary b { color: var(--text-strong); }

/* Filtros fora do padrão (lista limpa = "Repor agora" sem recortes): borda e
   fundo de destaque no campo, e a faixa "Filtros ativos" acima da tabela. */
.inv-filters select.is-filtered,
.inv-filters .search.is-filtered {
  border-color: var(--accent);
  box-shadow: inset 0 0 0 1px var(--accent);
  background-color: var(--accent-soft);
  color: var(--accent-strong);
  font-weight: 700;
}
.inv-chip.is-filtered { box-shadow: inset 0 0 0 1px var(--accent); }
.inv-active-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin: 0 1.4rem 1rem;
  padding: 0.65rem 0.8rem;
  border: 1px dashed var(--accent);
  border-radius: var(--radius-md);
  background: var(--accent-soft);
}
.inv-active-filters-title { color: var(--accent-strong); font-size: 0.78rem; font-weight: 700; }
.inv-filter-tag {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  max-width: 100%;
  padding: 0.3rem 0.55rem 0.3rem 0.75rem;
  border: 1px solid var(--accent);
  border-radius: var(--radius-pill);
  background: var(--surface-card);
  color: var(--accent-strong);
  font: inherit;
  font-size: 0.76rem;
  font-weight: 700;
  cursor: pointer;
}
.inv-filter-tag svg { flex-shrink: 0; width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; }
.inv-filter-tag:hover { background: var(--accent); color: var(--text-on-brand); }
.inv-filter-tag:focus-visible, .inv-clear-filters:focus-visible { outline: 3px solid var(--accent-ring); outline-offset: 2px; }
.inv-clear-filters { margin-left: auto; min-height: 20px; padding: 8px 15px 7px 15px; font-size: 0.78rem; line-height: 15px; }

/* Facetas: opção ou situação que, somada aos outros filtros, não deixaria
   nenhum produto fica apagada e não pode ser escolhida. */
.inv-filters select option:disabled { color: var(--text-soft); }
.inv-chip.is-empty { opacity: 0.45; cursor: not-allowed; }

/* ---------- Painel de filtros da Reposição ----------
   Situação em botões (dois blocos), depois a barra principal (busca, saldo,
   cadastro e "Mais filtros") e, abaixo, os filtros agrupados com rótulo. */
.inv-heading-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0.6rem; }
.inv-heading-actions .btn { white-space: nowrap; }
.inv-filters { gap: 1rem; padding: 1.2rem 1.4rem 1.1rem; }
.inv-field { display: grid; gap: 0.35rem; min-width: 0; margin: 0; }
.inv-field-label { color: var(--text-muted); font-size: 0.64rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
.inv-filters select,
.inv-filters .search {
  width: 100%;
  min-width: 0;
  max-width: none;
  min-height: 42px;
  padding: 0.6rem 0.8rem;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background-color: var(--surface-card);
  color: var(--text-strong);
  font: inherit;
  font-size: 0.82rem;
  transition: border-color var(--motion-fast) var(--ease), box-shadow var(--motion-fast) var(--ease);
}
.inv-filters select:hover, .inv-filters .search:hover { border-color: var(--border-strong); }
.inv-filters select:focus-visible, .inv-filters .search:focus-visible { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
.inv-filters select option { font-size: 0.82rem; }

.inv-filter-status { display: grid; gap: 0.45rem; }
.inv-filters .inv-chips { align-items: center; gap: 0.35rem; }
.inv-filters .inv-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  min-height: 20px;
  padding: 4px 15px 4px 13px;
  line-height: 20px;
  white-space: nowrap;
}
.inv-chip-count {
  padding: 6px 10px 4px;
  margin-left: 2px;
  margin-right: -10px;
  border-radius: var(--radius-pill);
  background: var(--surface-subtle);
  color: var(--text-muted);
  font-size: 0.7rem;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.inv-chip.is-active .inv-chip-count { background: var(--surface-card); color: var(--accent); }
/* Mesmo contador dos chips, dentro de botões (Exportar Excel, Registrar pedido). */
.inv-btn-count { display: inline-block; margin-left: 0.45rem; padding: 5px 9px 4px; border-radius: var(--radius-pill); background: var(--surface-subtle); color: var(--text-muted); font-size: 0.7rem; line-height: 1; font-variant-numeric: tabular-nums; }
.btn.primary .inv-btn-count { background: color-mix(in srgb, var(--text-on-brand) 25%, transparent); color: var(--text-on-brand); }
.inv-chip-divider { width: 1px; height: 1.4rem; margin: 0 0.35rem; background: var(--border-default); }

.inv-filter-main { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 190px) minmax(0, 150px) minmax(0, 190px) minmax(0, 190px); gap: 0.8rem; align-items: end; padding-top: 1rem; border-top: 1px solid var(--border-subtle); }

.inv-filter-more { display: grid; gap: 0.9rem; padding: 1rem; border-radius: var(--radius-md); background: var(--surface-subtle); }
.inv-filter-more[hidden] { display: none; }
.inv-filter-group { min-width: 0; margin: 0; padding: 0; border: 0; }
.inv-filter-group legend { margin-bottom: 0.6rem; padding: 0; color: var(--text-strong); font-size: 0.78rem; font-weight: 700; }
.inv-filter-grid { display: grid; gap: 0.8rem; }
.inv-filter-grid-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.inv-filter-grid-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.inv-filter-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.inv-filter-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

@media (max-width: 1180px) {
  .inv-filter-grid-5, .inv-filter-grid-6, .inv-filter-grid-4 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .inv-filter-main { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .inv-field-search { grid-column: 1 / -1; }
  .inv-filter-grid-5, .inv-filter-grid-6, .inv-filter-grid-4, .inv-filter-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .inv-chip-divider { display: none; }
}
@media (max-width: 560px) {
  .inv-filter-main, .inv-filter-grid-5, .inv-filter-grid-6, .inv-filter-grid-4, .inv-filter-grid-3 { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) { .inv-filters select, .inv-filters .search { transition: none; } }

/* ---------- Janela "Registrar pedido" ----------
   Itens agrupados por fornecedor, quantidade e valor editáveis; o rodapé com
   o total fica fixo enquanto a tabela rola. */
.modal-card.inv-order-modal { display: flex; flex-direction: column; width: min(1040px, 100%); max-height: calc(100dvh - 3rem); padding: 0; overflow: hidden; }
.inv-order-modal .inv-modal-head { padding: 1.4rem 1.6rem 0.9rem; border-bottom: 1px solid var(--border-subtle); }
.inv-order-modal .inv-modal-head h2 { margin: 0 0 0.3rem; }
.inv-order-modal .inv-modal-head .lead { margin: 0; color: var(--text-muted); font-size: 0.84rem; }
.inv-order-form { display: flex; flex-direction: column; min-height: 0; flex: 1; }
.inv-order-wrap { flex: 1; min-height: 0; overflow: auto; }
.inv-order-table { font-size: 0.84rem; }
.inv-order-table thead th { position: sticky; top: 0; z-index: 1; }
.inv-order-table th, .inv-order-table td { padding: 0.65rem 0.7rem; vertical-align: middle; }
.inv-order-table th:first-child, .inv-order-table td:first-child { padding-left: 1.6rem; }
.inv-order-table th:last-child, .inv-order-table td:last-child { padding-right: 1.2rem; }
.inv-order-table .inv-n { text-align: right; white-space: nowrap; }
.inv-order-product { width: 100%; min-width: 220px; }
.inv-order-product strong { display: -webkit-box; overflow: hidden; color: var(--text-strong); line-height: 1.35; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
.inv-order-group th, .inv-order-group td { background: var(--surface-subtle); color: var(--text-strong); font-size: 0.78rem; font-weight: 700; letter-spacing: 0; text-transform: none; }
.inv-order-group small { color: var(--text-muted); font-weight: 400; }
.inv-order-group [data-group-total] { color: var(--text-body); }
.inv-order-input { width: 6.5rem; min-height: 36px; padding: 0.4rem 0.55rem; border: 1px solid var(--border-default); border-radius: var(--radius-sm); background: var(--surface-card); color: var(--text-strong); font: inherit; font-variant-numeric: tabular-nums; text-align: right; }
.inv-order-input:hover { border-color: var(--border-strong); }
.inv-order-input:focus-visible { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
.inv-money { display: inline-flex; align-items: center; gap: 0.35rem; color: var(--text-muted); font-size: 0.78rem; }
.inv-money .inv-order-input { width: 7.5rem; }
.inv-order-table td.inv-n small { display: block; margin-top: 0.2rem; }
.inv-order-remove { width: 2.6rem; }
.inv-icon-button { display: inline-grid; place-items: center; width: 32px; height: 32px; padding: 0; border: 1px solid transparent; border-radius: var(--radius-pill); background: none; color: var(--text-muted); cursor: pointer; }
.inv-icon-button svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.inv-icon-button:hover { border-color: var(--danger); background: var(--danger-soft); color: var(--danger); }
.inv-icon-button:focus-visible { outline: 3px solid var(--accent-ring); outline-offset: 2px; }
.inv-order-empty, .inv-order-error { margin: 0; padding: 0.8rem 1.6rem; font-size: 0.84rem; }
.inv-order-empty { color: var(--text-muted); }
.inv-order-error { background: var(--danger-soft); color: var(--danger); font-weight: 700; }
.inv-order-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.6rem 1.2rem; border-top: 1px solid var(--border-subtle); background: var(--surface-card); }
.inv-order-summary { display: grid; gap: 0.2rem; color: var(--text-muted); font-size: 0.8rem; }
.inv-order-total { color: var(--text-body); font-size: 0.9rem; }
.inv-order-total b { margin-left: 0.4rem; color: var(--text-strong); font-size: 1.35rem; }
.inv-order-actions { display: flex; gap: 0.6rem; }
@media (max-width: 760px) {
  .inv-order-table th:first-child, .inv-order-table td:first-child { padding-left: 1rem; }
  .inv-order-footer { padding: 1rem; }
  .inv-order-actions { width: 100%; justify-content: flex-end; }
}
.inv-reman-alert { display: block; margin-top: 0.4rem; color: var(--text-strong); font-size: 0.75rem; white-space: normal; }
.inv-nf-chart { display: flex; gap: 1rem; overflow-x: auto; padding: 1rem 0; }
.inv-nf-month { flex: 1; min-width: 68px; text-align: center; }
.inv-nf-month svg { width: 100%; height: 64px; }
.inv-nf-month b, .inv-nf-month small { display: block; margin-top: 0.25rem; }
.inv-nf-exit { fill: #5D76E1; }
.inv-nf-entry { fill: #B074DD; }

/* ---------- Aba Remanufatura ----------
   Cartões de resumo, triagem em destaque e a lista de máquinas com o mesmo
   padrão de filtros da Reposição (rótulo em cima, contagem nas opções,
   destaque do que está filtrado e faixa "Filtros ativos"). */
.inv-reman-summary { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1.3fr) minmax(0, 1fr); gap: 14px; margin-bottom: 16px; }
.inv-reman-card { display: grid; align-content: start; gap: 0.35rem; }
.inv-reman-card > span { color: var(--text-muted); font-size: 0.76rem; font-weight: 700; }
.inv-reman-card > b { color: var(--text-strong); font-size: 1.9rem; line-height: 1.1; }
.inv-state-bar { display: flex; height: 10px; margin-top: 0.5rem; overflow: hidden; border-radius: var(--radius-pill); background: var(--surface-subtle); }
.inv-state-bar i { display: block; height: 100%; }
.inv-state-bar i + i { box-shadow: inset 2px 0 0 var(--surface-card); }
.inv-state-legend { display: flex; flex-wrap: wrap; gap: 0.3rem 1rem; margin: 0.4rem 0 0; padding: 0; list-style: none; color: var(--text-body); font-size: 0.78rem; }
.inv-state-legend li { display: inline-flex; align-items: center; gap: 0.35rem; }
.inv-state-legend i { width: 9px; height: 9px; border-radius: 50%; }
.inv-reman-card .inv-state-legend b {
  display: inline;
  margin-top: 0;
  color: var(--text-strong);
  font-size: 0.86rem;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}
.inv-state-legend small { color: var(--text-muted); }
.inv-state-bar .is-good, .inv-state-legend .is-good { background: var(--success); }
.inv-state-bar .is-bad, .inv-state-legend .is-bad { background: var(--danger); }
.inv-state-bar .is-unknown, .inv-state-legend .is-unknown { background: var(--text-soft); }
.inv-reman-local-list { display: grid; gap: 0.45rem; margin: 0.2rem 0 0; padding: 0; list-style: none; font-size: 0.8rem; }
.inv-reman-local-list li { display: flex; justify-content: space-between; align-items: baseline; gap: 0.8rem; padding-bottom: 0.4rem; border-bottom: 1px dashed var(--border-subtle); }
.inv-reman-local-list li:last-child { padding-bottom: 0; border-bottom: 0; }
.inv-reman-local-list span { color: var(--text-body); }
.inv-reman-card .inv-reman-local-list b { color: var(--text-strong); font-size: 1rem; line-height: 1.2; font-variant-numeric: tabular-nums; }
.inv-reman-info { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 0.55rem 1.2rem; padding: 0.7rem 0.2rem 0; border-top: 1px solid var(--border-subtle); }
.inv-reman-info > span { color: var(--text-muted); font-size: 0.76rem; font-weight: 700; }
.inv-reman-sync { display: flex; flex-wrap: wrap; gap: 0.4rem 1.2rem; margin: 0; font-size: 0.8rem; }
.inv-reman-sync div { display: inline-flex; align-items: baseline; gap: 0.35rem; }
.inv-reman-sync dt { color: var(--text-muted); }
.inv-reman-sync dd { margin: 0; color: var(--text-strong); font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.inv-reman-info > .ai-table-note { margin-left: auto; }

/* Triagem prioritária. */
.inv-triage .panel-head p { max-width: 80ch; }
.inv-triage-total { flex-shrink: 0; padding: 0.6rem 0.9rem; border-radius: var(--radius-md); background: var(--accent-soft); color: var(--text-body); font-size: 0.8rem; line-height: 1.5; text-align: right; }
.inv-triage-total b { color: var(--accent-strong); font-size: 1rem; }
/* Triagem sem rolagem interna: a tabela fica aberta e a página rola. */
.inv-triage-wrap { max-height: none; }
.inv-triage-table thead th, .inv-machine-table thead th { position: sticky; top: 0; z-index: 1; white-space: nowrap; }
.inv-machine-table th, .inv-machine-table td { padding: 0.7rem 0.75rem; vertical-align: middle; font-size: 0.84rem; }
.inv-machine-table th:first-child, .inv-machine-table td:first-child { padding-left: 1.4rem; }
.inv-machine-table th:last-child, .inv-machine-table td:last-child { padding-right: 1.4rem; }
.inv-triage-table .inv-n, .inv-machine-table .inv-n { text-align: right; white-space: nowrap; }
.inv-triage-table th.inv-n .inv-sort, .inv-machine-table th.inv-n .inv-sort { justify-content: flex-end; }
.inv-triage-table td.inv-n b { color: var(--text-strong); }
.inv-machine-product { width: 100%; min-width: 240px; }
.inv-machine-product strong { display: -webkit-box; overflow: hidden; color: var(--text-strong); line-height: 1.35; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
.inv-product-link { display: block; width: 100%; padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.inv-product-link:hover strong { color: var(--accent); text-decoration: underline; }
.inv-product-link:focus-visible { outline: 3px solid var(--accent-ring); outline-offset: 2px; border-radius: var(--radius-xs); }
.inv-avoid { display: inline-block; padding: 0.2rem 0.55rem; border-radius: var(--radius-pill); background: var(--accent-soft); color: var(--accent-strong); font-weight: 700; }

/* Lista de máquinas. */
.inv-reman-filterbar { gap: 0.9rem; padding-top: 1.2rem; }
.inv-reman-filter-main { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)); gap: 0.8rem; align-items: end; }
.inv-reman-filter-more { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.5fr) minmax(0, 1.2fr) auto; gap: 0.8rem; align-items: end; padding: 0.9rem 1rem; border-radius: var(--radius-md); background: var(--surface-subtle); }
.inv-switch { position: relative; display: inline-flex; align-items: center; gap: 0.6rem; min-height: 42px; color: var(--text-strong); font-size: 0.82rem; font-weight: 700; white-space: nowrap; cursor: pointer; }
.inv-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.inv-switch-track { position: relative; width: 36px; height: 20px; border-radius: var(--radius-pill); background: var(--border-strong); transition: background var(--motion-fast) var(--ease); }
.inv-switch-track::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--surface-card); box-shadow: var(--shadow-sm); transition: transform var(--motion-fast) var(--ease); }
.inv-switch input:checked + .inv-switch-track { background: var(--accent); }
.inv-switch input:checked + .inv-switch-track::after { transform: translateX(16px); }
.inv-switch input:focus-visible + .inv-switch-track { box-shadow: 0 0 0 3px var(--accent-ring); }
.inv-reman-notice { margin: 0 1.4rem 1rem; padding: 0.6rem 0.8rem; border-radius: var(--radius-sm); background: var(--warning-soft); color: var(--text-body); font-size: 0.8rem; }
.inv-serial { color: var(--text-strong); font-weight: 700; font-variant-numeric: tabular-nums; }
.inv-machine-local { color: var(--text-body); white-space: nowrap; }
.inv-shelf { display: inline-block; padding: 0.15rem 0.5rem; border: 1px solid var(--border-default); border-radius: var(--radius-xs); color: var(--text-strong); font-weight: 700; font-variant-numeric: tabular-nums; }
.inv-state { display: inline-flex; align-items: center; gap: 0.35rem; color: var(--text-body); font-size: 0.78rem; font-weight: 700; white-space: nowrap; }
.inv-state::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--text-soft); }
.inv-state.is-good::before { background: var(--success); }
.inv-state.is-bad::before { background: var(--danger); }
.inv-class-tag { display: inline-grid; place-items: center; width: 1.4rem; height: 1.4rem; border-radius: var(--radius-xs); background: var(--accent-soft); color: var(--accent-strong); font-weight: 700; }
.inv-reman-group { border-top: 1px solid var(--border-subtle); }
.inv-reman-group-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 0.8rem; padding: 0.9rem 1.4rem; background: var(--surface-subtle); }
.inv-reman-group-head h4 { margin: 0; color: var(--text-strong); font-size: 0.92rem; }
.inv-reman-group-facts { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.inv-group-fact { padding: 0.2rem 0.6rem; border: 1px solid var(--border-default); border-radius: var(--radius-pill); background: var(--surface-card); color: var(--text-body); font-size: 0.76rem; font-weight: 700; }
.inv-btn-sm { min-height: 32px; padding: 0.3rem 0.85rem; font-size: 0.78rem; }

@media (max-width: 1180px) {
  .inv-reman-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .inv-reman-filter-main { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .inv-reman-filter-main .inv-field-search { grid-column: 1 / -1; }
  .inv-reman-filter-more { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .inv-reman-summary, .inv-reman-filter-main { grid-template-columns: 1fr; }
  .inv-triage-total { text-align: left; }
}
@media (prefers-reduced-motion: reduce) { .inv-switch-track, .inv-switch-track::after { transition: none; } }
.inv-reman-group .inv-machine-serial { width: 28%; }

/* Reposição: remanufatura na linha só como selos; os números ficam no quadro
   "Remanufatura" do detalhe do produto. */
.inv-flags { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.4rem; }
.inv-flag { display: inline-flex; align-items: center; padding: 0.12rem 0.5rem; border: 1px solid transparent; border-radius: var(--radius-pill); font-size: 0.68rem; font-weight: 700; line-height: 1.4; white-space: nowrap; }
.inv-flag-reman { border-color: var(--xia-purple); color: var(--xia-purple); background: var(--surface-card); }
.inv-flag-warning { background: var(--warning-soft); color: var(--warning); }
.inv-flag-info { background: var(--accent-soft); color: var(--accent-strong); }
.inv-detail-reman .inv-state-bar { margin: 0 0 0.4rem; }
.inv-detail-reman .inv-state-legend { margin: 0 0 0.8rem; }
.inv-detail-reman .inv-state-legend b { color: var(--text-strong); font-size: 0.84rem; }
.inv-detail-alerts { margin-top: 0.7rem; padding: 0.55rem 0.75rem; border-radius: var(--radius-sm); background: var(--warning-soft); }
.inv-detail-alerts .inv-reman-alert { margin: 0.15rem 0; }
.inv-detail-alerts .inv-reman-alert:first-child { margin-top: 0; }
@media (max-width: 1180px) {
  .inv-filter-main { grid-template-columns: minmax(0, 1fr) repeat(4, minmax(0, 160px)); }
}

/* Telas de notebook: a tabela da Reposição cabe sem rolagem lateral. */
@media (max-width: 1440px) {
  .inv-repo td.inv-product { min-width: 190px; }
  .inv-repo .inv-dot-status { white-space: normal; text-align: right; }
  .inv-repo td.inv-col-status { min-width: 0; }
  .inv-col-status .badge { white-space: normal; }
  .dashboard .inv-repo th, .dashboard .inv-repo td { padding-left: 0.5rem; padding-right: 0.5rem; }
}

@media (min-width: 1500px) {
  .inv-detail-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
/* Gráfico de consumo por NF: os meses dividem a largura do quadro. */
.inv-nf-chart { padding: 0.4rem 0; }
.inv-nf-month { min-width: 56px; padding: 0.3rem 0; border-radius: var(--radius-sm); }
.inv-nf-month:hover, .inv-nf-month:focus-visible { background: var(--surface-subtle); outline: none; }
.inv-nf-month b { color: var(--text-strong); }
.inv-nf-month small { color: var(--text-muted); font-size: 0.68rem; }
.inv-detail-reman .inv-detail-empty { margin-bottom: 0.8rem; }

/* ---------- Detalhe do produto (expansão) ----------
   Duas colunas que crescem cada uma por si: consumo e remanufatura à esquerda,
   as fichas (sistema, Manager, cadastro) à direita. Sem rolagem lateral. */
.inv-detail-layout { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 12px; padding: 0.4rem 1.2rem 1.2rem; }
.inv-detail-col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.inv-detail-layout .inv-detail-block { padding: 0.9rem 1rem; }
.inv-detail-head { display: flex; justify-content: space-between; align-items: center; gap: 0.8rem; margin-bottom: 0.35rem; }
.inv-detail-head h4 { margin: 0; }
.inv-detail-sub { margin: 0 0 0.7rem; color: var(--text-muted); font-size: 0.76rem; line-height: 1.5; }
.inv-detail-sub b { color: var(--text-strong); }
.inv-detail-layout .inv-dl { gap: 0.45rem; }
.inv-detail-layout .inv-dl > div { padding-bottom: 0.4rem; }
.inv-detail-layout .inv-dl dt { flex: 0 1 auto; font-size: 0.75rem; }
.inv-detail-layout .inv-dl dd { font-size: 0.84rem; }
.inv-detail-layout .inv-dl dd small { margin-top: 0.1rem; font-size: 0.7rem; }

/* Gráfico de consumo por NF. */
.inv-nf-legend { display: inline-flex; align-items: center; gap: 0.35rem; color: var(--text-muted); font-size: 0.72rem; }
.inv-nf-legend i { width: 9px; height: 9px; margin-left: 0.4rem; border-radius: 2px; }
.inv-nf-legend i.inv-nf-exit { background: var(--xia-blue); }
.inv-nf-legend i.inv-nf-entry { background: var(--xia-purple); }
.inv-detail-consumption .inv-nf-chart { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 0.3rem; overflow: visible; padding: 0; }
.inv-detail-consumption .inv-nf-month { min-width: 0; padding: 0.3rem 0.1rem; }
.inv-detail-consumption .inv-nf-month svg { display: block; width: 70%; max-width: 46px; height: 56px; margin: 0 auto; }
.inv-detail-consumption .inv-nf-month b { margin-top: 0.3rem; font-size: 0.86rem; }
.inv-detail-consumption .inv-nf-month small { margin-top: 0.05rem; }
.inv-detail-consumption .inv-reman-alert { margin-top: 0.6rem; }

/* Remanufatura: blocos de números, barra de estados, alertas e máquinas. */
.inv-minis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 0.4rem 0 0.8rem; }
.inv-mini { display: grid; gap: 0.15rem; align-content: start; padding: 0.55rem 0.65rem; border-radius: var(--radius-sm); background: var(--surface-subtle); }
.inv-mini span { color: var(--text-muted); font-size: 0.68rem; font-weight: 700; }
.inv-mini b { color: var(--text-strong); font-size: 1.05rem; }
.inv-mini small { color: var(--text-muted); font-size: 0.68rem; }
.inv-detail-reman.is-empty .inv-detail-sub { margin: 0; }
.inv-detail-reman .inv-state-legend { margin: 0.4rem 0 0.7rem; }
.inv-detail-alerts p { margin: 0; color: var(--text-strong); font-size: 0.76rem; }
.inv-detail-alerts p + p { margin-top: 0.25rem; }
.inv-detail-machines { margin-top: 0.9rem; padding-top: 0.8rem; border-top: 1px solid var(--border-subtle); }
.inv-detail-machines h5 { margin: 0 0 0.2rem; color: var(--text-strong); font-size: 0.8rem; }
.inv-detail-machines .table-wrap { max-height: 300px; margin: 0 -1rem -0.9rem; overflow-x: hidden; overflow-y: auto; border-top: 1px solid var(--border-subtle); }
.inv-detail-machines .inv-machine-table { table-layout: fixed; }
.inv-detail-machines .inv-machine-table th, .inv-detail-machines .inv-machine-table td { padding: 0.5rem 0.6rem; font-size: 0.78rem; white-space: normal; }
.inv-detail-machines .inv-machine-table th { font-size: 0.6rem; letter-spacing: 0.06em; white-space: nowrap; }
.inv-detail-machines .inv-serial { font-size: 0.74rem; overflow-wrap: anywhere; }
.inv-detail-machines .inv-machine-table th:first-child, .inv-detail-machines .inv-machine-table td:first-child { width: 30%; padding-left: 1rem; }
.inv-detail-machines .inv-machine-table th:nth-child(3), .inv-detail-machines .inv-machine-table td:nth-child(3) { width: 16%; }
.inv-detail-machines .inv-machine-table th:nth-child(4), .inv-detail-machines .inv-machine-table td:nth-child(4) { width: 14%; }
.inv-detail-machines .inv-machine-table th:last-child, .inv-detail-machines .inv-machine-table td:last-child { width: 15%; padding-right: 1rem; }
.inv-detail-machines .inv-machine-local { white-space: normal; }

@media (max-width: 1100px) {
  .inv-detail-layout { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .inv-minis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Balão do gráfico de consumo por NF: mês, saídas, entradas e líquido. */
.inv-nf-month { position: relative; }
.inv-nf-tip {
  position: absolute;
  bottom: calc(100% + 0.3rem);
  left: 50%;
  z-index: 3;
  display: grid;
  gap: 0.15rem;
  min-width: 128px;
  padding: 0.45rem 0.65rem;
  border-radius: var(--radius-sm);
  background: var(--surface-inverse);
  box-shadow: var(--shadow-md);
  color: var(--text-on-inverse-muted);
  font-size: 0.7rem;
  text-align: left;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transform: translate(-50%, 4px);
  transition: opacity var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);
}
.inv-nf-tip strong { color: var(--text-on-inverse); font-size: 0.74rem; text-transform: capitalize; }
.inv-nf-tip span { display: flex; align-items: center; gap: 0.35rem; }
.inv-nf-tip i { width: 8px; height: 8px; border-radius: 2px; }
.inv-nf-tip i.inv-nf-exit { background: var(--xia-blue); }
.inv-nf-tip i.inv-nf-entry { background: var(--xia-purple); }
.inv-nf-tip b { margin-left: auto; padding-left: 0.6rem; color: var(--text-on-inverse); font-size: 0.74rem; }
.inv-nf-tip-net { margin-top: 0.15rem; padding-top: 0.2rem; border-top: 1px solid var(--text-on-inverse-muted); }
.inv-nf-month:hover .inv-nf-tip, .inv-nf-month:focus-visible .inv-nf-tip { opacity: 1; transform: translate(-50%, 0); }
.inv-nf-month:first-child .inv-nf-tip { left: 0; transform: translate(0, 4px); }
.inv-nf-month:last-child .inv-nf-tip { left: auto; right: 0; transform: translate(0, 4px); }
.inv-nf-month:first-child:hover .inv-nf-tip, .inv-nf-month:first-child:focus-visible .inv-nf-tip,
.inv-nf-month:last-child:hover .inv-nf-tip, .inv-nf-month:last-child:focus-visible .inv-nf-tip { transform: translate(0, 0); }
.inv-nf-month:hover .inv-nf-exit, .inv-nf-month:focus-visible .inv-nf-exit { fill: var(--accent-strong); }
@media (prefers-reduced-motion: reduce) { .inv-nf-tip { transition: none; } }

/* Gráfico de 12 meses: meses fora da janela da média ficam mais claros. */
.inv-nf-month.is-outside svg { opacity: 0.38; }
.inv-nf-month.is-outside b { color: var(--text-muted); font-weight: 600; }
.inv-nf-month.is-outside:hover svg, .inv-nf-month.is-outside:focus-visible svg { opacity: 0.75; }
.inv-nf-tip em { margin-top: 0.15rem; color: var(--text-on-inverse-muted); font-size: 0.66rem; font-style: italic; }

/* Nome do produto como link para a Reposição (Giro e parados). */
.inv-product-link.is-inline { display: inline; width: auto; }
.inv-product-link.is-inline strong { color: var(--text-strong); }

/* Abas internas da Remanufatura (Triagem prioritária | Máquinas a remanufaturar). */
.inv-subtabs { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 14px; }
.inv-subtab { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 20px; padding: 6px 15px 5px; line-height: 22px; border: 1px solid var(--border-default); border-radius: var(--radius-pill); background: var(--surface-card); color: var(--text-body); font: inherit; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-size: 0.86rem; font-weight: 700; cursor: pointer; transition: border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease); }
.inv-subtab:hover { border-color: var(--border-strong); color: var(--text-strong); }
.inv-subtab.is-active { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.inv-subtab.is-active .inv-chip-count { background: var(--surface-card); color: var(--accent); }
.inv-subtab:focus-visible { outline: 3px solid var(--accent-ring); outline-offset: 2px; }
.inv-reman-panel[hidden] { display: none; }
@media (prefers-reduced-motion: reduce) { .inv-subtab { transition: none; } }

/* Balão de informação dos selos (mesmo modelo do gráfico de consumo):
   aparece ao passar o mouse ou focar pelo teclado. */
.inv-has-tip { position: relative; cursor: help; }
.inv-has-tip:focus-visible { outline: 3px solid var(--accent-ring); outline-offset: 2px; }
.inv-tip {
  position: absolute;
  bottom: calc(100% + 0.4rem);
  left: 0;
  z-index: 4;
  display: grid;
  gap: 0.2rem;
  width: max-content;
  max-width: 280px;
  padding: 0.5rem 0.7rem;
  border-radius: var(--radius-sm);
  background: var(--surface-inverse);
  box-shadow: var(--shadow-md);
  color: var(--text-on-inverse-muted);
  font-size: 0.72rem;
  font-weight: 400;
  line-height: 1.45;
  letter-spacing: 0;
  text-align: left;
  text-transform: none;
  white-space: normal;
  pointer-events: none;
  opacity: 0;
  transform: translateY(4px);
  transition: opacity var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);
}
.inv-tip strong { color: var(--text-on-inverse); font-size: 0.76rem; font-weight: 700; }
.inv-has-tip:hover .inv-tip, .inv-has-tip:focus-visible .inv-tip { opacity: 1; transform: translateY(0); }
.inv-col-status .inv-tip { left: auto; right: 0; }
@media (prefers-reduced-motion: reduce) { .inv-tip { transition: none; } }

/* ---------- Movimentações do produto (detalhe na aba Estoque) ----------
   Entradas para cima, saídas para baixo, empilhadas por tipo; balão por mês. */
.inv-mv-chart { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 0.3rem; padding: 0.2rem 0 0; }
.inv-mv-month { position: relative; display: grid; justify-items: center; gap: 0.15rem; min-width: 0; padding: 0.3rem 0.1rem; border-radius: var(--radius-sm); outline: none; cursor: default; }
.inv-mv-month:hover, .inv-mv-month:focus-visible { background: var(--surface-subtle); }
.inv-mv-month:focus-visible { box-shadow: 0 0 0 2px var(--accent-ring); }
.inv-mv-month svg { display: block; width: 70%; max-width: 46px; height: 92px; }
.inv-mv-month b { color: var(--text-strong); font-size: 0.82rem; font-variant-numeric: tabular-nums; }
.inv-mv-month b.is-negative { color: var(--text-body); }
.inv-mv-month small { color: var(--text-muted); font-size: 0.66rem; }
.inv-mv-month.is-outside svg { opacity: 0.4; }
.inv-mv-month.is-outside b { color: var(--text-muted); font-weight: 600; }
.inv-mv-month.is-outside:hover svg, .inv-mv-month.is-outside:focus-visible svg { opacity: 0.8; }
.inv-mv-axis { stroke: var(--border-strong); stroke-width: 0.6; }

/* Cores por tipo: barra (fill) e marcador da legenda/balão (background). */
rect.inv-mv-compras { fill: var(--chart-2); }
rect.inv-mv-retornos { fill: var(--xia-purple); }
rect.inv-mv-ajuste_entrada, rect.inv-mv-ajuste_saida { fill: var(--chart-4); }
rect.inv-mv-saida_nf { fill: var(--chart-1); }
rect.inv-mv-saida_os { fill: var(--chart-3); }
rect.inv-mv-devolucao { fill: var(--danger); }
i.inv-mv-compras { background: var(--chart-2); }
i.inv-mv-retornos { background: var(--xia-purple); }
i.inv-mv-ajuste_entrada, i.inv-mv-ajuste_saida { background: var(--chart-4); }
i.inv-mv-saida_nf { background: var(--chart-1); }
i.inv-mv-saida_os { background: var(--chart-3); }
i.inv-mv-devolucao { background: var(--danger); }

.inv-mv-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 1rem; margin-top: 0.7rem; padding-top: 0.6rem; border-top: 1px dashed var(--border-subtle); color: var(--text-body); font-size: 0.74rem; }
.inv-mv-legend span { display: inline-flex; align-items: center; gap: 0.35rem; }
.inv-mv-legend i { width: 9px; height: 9px; border-radius: 2px; }
.inv-mv-legend b { color: var(--text-strong); }
.inv-mv-legend-title { color: var(--text-muted); font-weight: 700; }
.inv-mv-legend .inv-mv-tip-muted { color: var(--text-muted); }

.inv-mv-tip {
  position: absolute;
  bottom: calc(100% + 0.3rem);
  left: 50%;
  z-index: 3;
  display: grid;
  gap: 0.15rem;
  min-width: 170px;
  padding: 0.5rem 0.7rem;
  border-radius: var(--radius-sm);
  background: var(--surface-inverse);
  box-shadow: var(--shadow-md);
  color: var(--text-on-inverse-muted);
  font-size: 0.7rem;
  text-align: left;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transform: translate(-50%, 4px);
  transition: opacity var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);
}
.inv-mv-tip strong { color: var(--text-on-inverse); font-size: 0.76rem; text-transform: capitalize; }
.inv-mv-tip span { display: flex; align-items: center; gap: 0.35rem; }
.inv-mv-tip i { width: 8px; height: 8px; border-radius: 2px; }
.inv-mv-tip b { margin-left: auto; padding-left: 0.8rem; color: var(--text-on-inverse); font-size: 0.74rem; }
.inv-mv-tip .inv-mv-tip-muted { color: var(--text-on-inverse-muted); font-style: italic; white-space: normal; }
.inv-mv-tip-net { margin-top: 0.15rem; padding-top: 0.2rem; border-top: 1px solid var(--text-on-inverse-muted); }
.inv-mv-tip em { color: var(--text-on-inverse-muted); font-size: 0.66rem; }
.inv-mv-month:hover .inv-mv-tip, .inv-mv-month:focus-visible .inv-mv-tip { opacity: 1; transform: translate(-50%, 0); }
.inv-mv-month.is-first .inv-mv-tip { left: 0; transform: translate(0, 4px); }
.inv-mv-month.is-last .inv-mv-tip { left: auto; right: 0; transform: translate(0, 4px); }
.inv-mv-month.is-first:hover .inv-mv-tip, .inv-mv-month.is-first:focus-visible .inv-mv-tip,
.inv-mv-month.is-last:hover .inv-mv-tip, .inv-mv-month.is-last:focus-visible .inv-mv-tip { transform: translate(0, 0); }
@media (prefers-reduced-motion: reduce) { .inv-mv-tip { transition: none; } }

/* Saldo no fim do mês (variação no mês) abaixo de cada coluna. */
.inv-mv-month b.inv-mv-balance { font-size: 0.82rem; white-space: nowrap; }
.inv-mv-change { color: var(--success); font-size: 0.68rem; font-weight: 600; }
.inv-mv-change.is-negative { color: var(--danger); }
.inv-mv-balance.is-invalid { color: var(--warning); }
.inv-mv-month.is-outside .inv-mv-change { opacity: 0.7; }
/* Gráfico estreito (notebook): a variação desce para a linha de baixo do saldo. */
.inv-detail-movements { container-type: inline-size; }
@container (max-width: 720px) {
  .inv-mv-month b.inv-mv-balance { display: grid; justify-items: center; line-height: 1.2; }
}
rect.inv-mv-reserva_saida, rect.inv-mv-reserva_entrada { fill: var(--warning); }
i.inv-mv-reserva_saida, i.inv-mv-reserva_entrada { background: var(--warning); }

/* ---------- Aba Ativos ---------- */
.inv-asset-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.6rem 1rem; margin-bottom: 14px; }
.inv-asset-top .inv-footnote { margin: 0; }
/* Submenu dos Ativos com uma nota à direita (sincronização do contador). */
.inv-subtabs-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 1rem; margin: 0 0 14px; }
.inv-subtabs-row .inv-subtabs { margin: 0; }
.inv-counter-sync { margin: 0 0 0 auto; }
.inv-asset-panel .inv-reman-filterbar { padding-top: 1.2rem; }
.inv-asset-kind { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.inv-asset-kind .inv-chip { min-height: 20px; padding: 6px 15px 5px 15px; font-size: 0.9rem; line-height: 20px; font-weight: 700; }
.inv-asset-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 0.7rem; margin-bottom: 16px; }
.inv-asset-card { display: flex; flex-direction: column; align-items: flex-start; gap: 0.2rem; min-width: 0; padding: 0.8rem 0.95rem; border: 1px solid var(--border-default); border-radius: var(--radius-md); background: var(--surface-card); color: var(--text-body); font: inherit; text-align: left; cursor: pointer; transition: border-color var(--motion-fast) var(--ease), background var(--motion-fast) var(--ease); }
.inv-asset-card span { color: var(--text-muted); font-size: 0.76rem; font-weight: 700; line-height: 1.3; }
.inv-asset-card b { color: var(--text-strong); font-size: 1.35rem; line-height: 1.2; }
.inv-asset-card small { color: var(--text-muted); font-size: 0.72rem; }
.inv-asset-card:hover { border-color: var(--border-strong); }
.inv-asset-card:focus-visible { outline: 3px solid var(--accent-ring); outline-offset: 2px; }
.inv-asset-card.is-active { border-color: var(--accent); background: var(--accent-soft); }
.inv-asset-card.is-active span, .inv-asset-card.is-active b { color: var(--accent); }
.inv-asset-card-main { border-left: 4px solid var(--xia-purple); }
/* Filtros dos Ativos em três linhas: busca e linha; equipamento; cliente e endereço. */
.inv-asset-panel .inv-reman-filter-main { grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)); }
.inv-asset-panel .inv-reman-filter-more { display: flex; flex-direction: column; align-items: stretch; }
.inv-asset-panel .inv-reman-filter-more[hidden] { display: none; }
@media (min-width: 641px) { .inv-asset-panel.inv-counter-panel .inv-reman-filter-main { grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)); } }
.inv-asset-filter-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 0.8rem; align-items: end; }
.inv-asset-table th, .inv-asset-table td, .inv-asset-groups th, .inv-asset-groups td { padding: 0.65rem 0.7rem; vertical-align: top; font-size: 0.82rem; }
.inv-asset-table th:first-child, .inv-asset-table td:first-child, .inv-asset-groups th:first-child, .inv-asset-groups td:first-child { padding-left: 1.2rem; }
.inv-asset-table th:last-child, .inv-asset-table td:last-child, .inv-asset-groups th:last-child, .inv-asset-groups td:last-child { padding-right: 1.2rem; }
.inv-asset-groups .inv-n { text-align: right; white-space: nowrap; }
.inv-asset-id { white-space: nowrap; }
.inv-asset-table .inv-machine-product { min-width: 200px; max-width: 280px; }
.inv-asset-client, .inv-asset-city { min-width: 150px; max-width: 240px; }
.inv-asset-line { font-weight: 700; color: var(--text-strong); white-space: nowrap; }
.inv-asset-address { margin-top: 0.3rem; }
.inv-asset-alert { min-width: 160px; max-width: 260px; }
.inv-asset-alert-text { display: block; color: var(--warning); font-size: 0.78rem; font-weight: 600; line-height: 1.35; }
.inv-asset-group-row th, .inv-asset-group-row td { background: var(--surface-subtle); color: var(--text-strong); font-weight: 700; }
.inv-asset-cities { min-width: 200px; max-width: 360px; }
.inv-asset-alert-group { margin-top: 0.7rem; border: 1px solid var(--border-default); border-radius: var(--radius-md); background: var(--surface-card); }
.inv-asset-alert-group > summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.8rem 1rem; cursor: pointer; }
.inv-asset-alert-group > summary:focus-visible { outline: 3px solid var(--accent-ring); outline-offset: 2px; }
.inv-asset-alert-group[open] > summary { border-bottom: 1px solid var(--border-default); }
@media (max-width: 1180px) {
  .inv-asset-panel .inv-reman-filter-main { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .inv-asset-panel .inv-reman-filter-main .inv-field-search { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  .inv-asset-panel .inv-reman-filter-main, .inv-asset-panel .inv-reman-filter-more { grid-template-columns: 1fr; }
  .inv-asset-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* Largura fixa por coluna: nomes longos quebram ou cortam em vez de alargar a tabela. */
.inv-asset-table { table-layout: fixed; width: 100%; }
.inv-asset-table > thead > tr > th:nth-child(1) { width: 9%; }
.inv-asset-table > thead > tr > th:nth-child(2) { width: 20%; }
.inv-asset-table > thead > tr > th:nth-child(3) { width: 7%; }
.inv-asset-table > thead > tr > th:nth-child(4) { width: 11%; }
.inv-asset-table > thead > tr > th:nth-child(5) { width: 16%; }
.inv-asset-table > thead > tr > th:nth-child(6) { width: 14%; }
.inv-asset-table > thead > tr > th:nth-child(7) { width: 10%; }
.inv-asset-table > thead > tr > th:nth-child(8) { width: 12%; }
.inv-asset-table > thead > tr > th:nth-child(9) { width: 56px; }
.inv-asset-table td { overflow-wrap: anywhere; }
.inv-asset-table .inv-machine-product, .inv-asset-client, .inv-asset-city, .inv-asset-alert { min-width: 0; max-width: none; }
.inv-asset-table .inv-machine-product strong { display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.inv-asset-table th { overflow-wrap: normal; }
.inv-asset-panel .panel-head .btn { white-space: nowrap; }
@media (max-width: 900px) { .inv-asset-table { min-width: 860px; } }
/* Série, data e endereço não podem sumir em "…": quebram na linha de baixo. */
.inv-asset-table .inv-meta, .inv-asset-groups .inv-meta { width: auto; min-width: 0; white-space: normal; overflow-wrap: anywhere; }
/* A regra geral deixa a última coluna sem quebra; aqui o alerta e o local precisam quebrar. */
.inv-asset-table td:last-child { white-space: normal; }
/* Remanufatura com o filtro Etapa: cinco campos na segunda linha. */
.inv-reman-machines .inv-reman-filter-more { grid-template-columns: repeat(4, minmax(0, 1fr)) auto; }
@media (max-width: 1180px) { .inv-reman-machines .inv-reman-filter-more { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .inv-reman-machines .inv-reman-filter-more { grid-template-columns: 1fr; } }
/* Histórico de contratos da máquina (expansão da linha na aba Ativos). */
.inv-asset-table .inv-col-toggle { width: 56px; padding-left: 0.4rem; text-align: right; }
.inv-asset-row.is-expanded td { background: var(--accent-soft); border-bottom-color: transparent; }
.inv-asset-detail-row > td { padding: 0 1.2rem 1.2rem; background: var(--accent-soft); white-space: normal; }
/* A célula da expansão é a última da linha: vence o ".table td:last-child { nowrap }"
   do dashboard.css, que fazia nomes longos e notas dos quadros vazarem ou cortarem. */
.table tr.inv-asset-detail-row > td:last-child { white-space: normal; }
.inv-asset-history { padding: 1rem; border: 1px solid var(--border-default); border-radius: var(--radius-md); background: var(--surface-card); }
.inv-asset-history .inv-footnote { margin: 0.7rem 0 0; }
.inv-asset-hist-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0.7rem; margin-bottom: 0.9rem; }
.inv-asset-hist-stat { display: flex; flex-direction: column; gap: 0.2rem; min-width: 0; padding: 0.7rem 0.85rem; border-radius: var(--radius-sm); background: var(--surface-subtle); }
.inv-asset-hist-stat span { color: var(--text-muted); font-size: 0.72rem; font-weight: 700; }
.inv-asset-hist-stat b { color: var(--text-strong); font-size: 1.05rem; line-height: 1.3; overflow-wrap: anywhere; }
.inv-asset-hist-stat small { color: var(--text-muted); font-size: 0.72rem; line-height: 1.35; }
.inv-asset-hist-stat b small { display: block; font-weight: 500; }
.inv-asset-hist-table { table-layout: fixed; width: 100%; }
.inv-asset-hist-table th:nth-child(1) { width: 26%; }
.inv-asset-hist-table th:nth-child(2) { width: 18%; }
.inv-asset-hist-table th:nth-child(3) { width: 22%; }
.inv-asset-hist-table th, .inv-asset-hist-table td { padding: 0.55rem 0.65rem; vertical-align: top; font-size: 0.8rem; white-space: normal; overflow-wrap: anywhere; }
.inv-asset-hist-table th small { display: block; font-weight: 500; text-transform: none; letter-spacing: 0; }
.inv-asset-hist-table .inv-meta { width: auto; white-space: normal; }
.inv-asset-hist-table tr.is-current td { background: var(--surface-subtle); }
.inv-asset-hist-bar svg { display: block; width: 100%; height: 14px; margin-top: 0.2rem; }
.inv-asset-hist-track { fill: var(--border-default); }
.inv-asset-hist-bar .is-past { fill: var(--xia-purple); }
.inv-asset-hist-bar .is-current { fill: var(--accent); }
.inv-asset-hist-links { margin: 0; padding-left: 1rem; color: var(--text-body); font-size: 0.76rem; line-height: 1.45; }
@media (max-width: 900px) { .inv-asset-hist-table { min-width: 720px; } }
.inv-asset-hist-stat.is-text b { font-size: 0.86rem; }

/* ---------- Contador (subaba dos Ativos) ---------- */
/* Selb, produto, onde está, atual (P&B e colorido embaixo), média, forma de coleta, última leitura, selos, expandir. */
.inv-counter-table > thead > tr > th:nth-child(1) { width: 7%; }
.inv-counter-table > thead > tr > th:nth-child(2) { width: 19%; }
.inv-counter-table > thead > tr > th:nth-child(3) { width: 19%; }
.inv-counter-table > thead > tr > th:nth-child(4) { width: 11%; }
.inv-counter-table > thead > tr > th:nth-child(5) { width: 10%; }
.inv-counter-table > thead > tr > th:nth-child(6) { width: 12%; }
.inv-counter-table > thead > tr > th:nth-child(7) { width: 11%; }
.inv-counter-table > thead > tr > th:nth-child(8) { width: 11%; }
.inv-counter-table > thead > tr > th:nth-child(9) { width: 56px; }
/* Números e datas não quebram no meio. */
.inv-counter-table td { overflow-wrap: break-word; }
.inv-counter-table .inv-n, .inv-counter-nowrap { white-space: nowrap; }
.inv-counter-table .inv-n { text-align: right; }
.inv-counter-estimate { color: var(--text-strong); font-size: 0.9rem; }
.inv-counter-badges .inv-flag { margin: 0 0.2rem 0.25rem 0; white-space: normal; }
/* Forma de coleta na linha: Automático (destaque) ou Manual, com a origem embaixo. */
.inv-counter-collect { font-weight: 700; color: var(--text-strong); }
.inv-counter-collect.is-auto { color: var(--success); }
.inv-counter-collect.is-manual { color: var(--warning); }
.inv-counter-pager { display: flex; align-items: center; justify-content: center; gap: 0.8rem; padding: 0.9rem; color: var(--text-muted); font-size: 0.84rem; }
.inv-counter-alert-bar { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 0.8rem; padding: 0 1.2rem 0.6rem; }
.inv-counter-alerts th, .inv-counter-alerts td { padding: 0.5rem 0.65rem; font-size: 0.8rem; vertical-align: top; white-space: normal; }
.inv-counter-alerts td:last-child { white-space: normal; }
.inv-counter-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin: 0.6rem 0 1rem; }
.inv-counter-detail-grid section, .inv-asset-history h5 { min-width: 0; }
.inv-asset-history h5 { margin: 0.4rem 0 0.4rem; color: var(--text-strong); font-size: 0.86rem; }
.inv-asset-hist-stat.is-strong { background: var(--accent-soft); }
.inv-asset-hist-stat.is-strong b { color: var(--accent); font-size: 1.25rem; }
.inv-counter-chart { display: block; width: 100%; height: auto; }
.inv-counter-axis { fill: var(--text-muted); font-size: 11px; }
.inv-counter-grid { stroke: var(--border-default); stroke-width: 1; }
.inv-counter-line { fill: none; stroke: var(--accent); stroke-width: 2; }
.inv-counter-dot.is-auto { fill: var(--accent); }
.inv-counter-dot.is-manual { fill: var(--xia-purple); }
.inv-counter-dot.is-discarded { fill: var(--surface-card); stroke: var(--danger); stroke-width: 2; }
.inv-counter-event { stroke-width: 1.5; stroke-dasharray: 4 3; }
.inv-counter-event.is-install { stroke: var(--success); }
.inv-counter-event.is-uninstall { stroke: var(--text-muted); }
.inv-counter-event.is-swap { stroke: var(--warning); }
.inv-counter-bar-pb { fill: var(--text-strong); }
.inv-counter-bar-color { fill: var(--xia-purple); }
.inv-counter-legend { display: flex; flex-wrap: wrap; gap: 0.4rem 1rem; margin: 0.4rem 0 0; color: var(--text-muted); font-size: 0.74rem; }
.inv-counter-legend span { display: inline-flex; align-items: center; gap: 0.35rem; }
.inv-counter-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 50%; }
.inv-counter-legend i.is-auto { background: var(--accent); }
.inv-counter-legend i.is-manual { background: var(--xia-purple); }
.inv-counter-legend i.is-discarded { border: 2px solid var(--danger); background: var(--surface-card); }
.inv-counter-legend i.is-install, .inv-counter-legend i.is-uninstall, .inv-counter-legend i.is-swap { width: 14px; height: 0; border-radius: 0; border-top: 2px dashed; }
.inv-counter-legend i.is-install { border-color: var(--success); }
.inv-counter-legend i.is-uninstall { border-color: var(--text-muted); }
.inv-counter-legend i.is-swap { border-color: var(--warning); }
.inv-counter-legend i.inv-counter-bar-pb { border-radius: 2px; background: var(--text-strong); }
.inv-counter-legend i.inv-counter-bar-color { border-radius: 2px; background: var(--xia-purple); }
.inv-counter-discarded { margin-top: 0.5rem; font-size: 0.78rem; }
.inv-counter-discarded summary { color: var(--danger); cursor: pointer; }
.inv-counter-discarded ul { margin: 0.4rem 0 0; padding-left: 1.1rem; }
@media (max-width: 900px) { .inv-counter-detail-grid { grid-template-columns: 1fr; } .inv-counter-table { min-width: 1000px; } }
/* Cabeçalho do Contador: rótulo quebra em duas linhas em vez de sobrepor. */
.inv-counter-table th .inv-sort { display: inline; white-space: normal; text-align: inherit; line-height: 1.35; }
.inv-counter-table th.inv-n { text-align: right; }
.inv-counter-badges .inv-flag { display: block; width: fit-content; max-width: 100%; margin: 0 0 0.25rem; padding: 0.15rem 0.45rem; border-radius: var(--radius-sm); white-space: normal; line-height: 1.3; }
.inv-counter-axis { font-size: 17px; }
.inv-counter-alert-bar.inv-filters { display: flex; padding: 0 1.2rem 0.8rem; border: 0; background: none; }
.inv-counter-alert-bar .inv-field { min-width: 200px; }
/* Média autorizada: estimativa lançada à mão (laranja da paleta de gráficos). */
.inv-counter-dot.is-media { fill: var(--chart-3); stroke: var(--surface-card); stroke-width: 1; }
.inv-counter-legend i.is-media { background: var(--chart-3); }
.inv-counter-bar-media { fill: var(--chart-3); opacity: 0.85; }
.inv-counter-legend i.inv-counter-bar-media { border-radius: 2px; background: var(--chart-3); }
.inv-counter-flag-media { border-color: var(--chart-3); background: var(--surface-card); color: var(--warning); }
.inv-counter-entry { color: var(--warning); }
/* Balão dos gráficos do Contador (mesmo visual do balão das movimentações). */
.inv-counter-chart-wrap { position: relative; }
.inv-counter-hit { fill: transparent; cursor: pointer; outline: none; }
.inv-counter-hit:focus-visible { stroke: var(--accent); stroke-width: 2.5; }
.inv-counter-hit-bar:hover, .inv-counter-hit-bar:focus-visible { fill: var(--accent-soft); fill-opacity: 0.45; }
.inv-counter-tip {
  position: absolute;
  z-index: 3;
  display: grid;
  gap: 0.15rem;
  min-width: 190px;
  max-width: 280px;
  padding: 0.5rem 0.7rem;
  border-radius: var(--radius-sm);
  background: var(--surface-inverse);
  box-shadow: var(--shadow-md);
  color: var(--text-on-inverse-muted);
  font-size: 0.72rem;
  pointer-events: none;
  transform: translate(-50%, calc(-100% - 6px));
}
.inv-counter-tip[hidden] { display: none; }
.inv-counter-tip strong { color: var(--text-on-inverse); font-size: 0.78rem; }
.inv-counter-tip span { display: flex; gap: 0.8rem; justify-content: space-between; }
.inv-counter-tip b { color: var(--text-on-inverse); white-space: nowrap; }
.inv-counter-tip em { margin-top: 0.15rem; color: var(--text-on-inverse-muted); font-style: italic; line-height: 1.35; }

/* ---------- Filtro com busca (combo-select.js) ----------
   Botão com a mesma cara dos selects; o painel abre por cima do conteúdo com
   busca e a lista com contagem. */
.combo { position: relative; }
.inv-filters .combo-trigger {
  display: flex; align-items: center; justify-content: space-between; gap: 0.5rem;
  width: 100%; min-width: 0; min-height: 42px; padding: 0.6rem 0.8rem;
  border: 1px solid var(--border-default); border-radius: var(--radius-sm);
  background: var(--surface-card); color: var(--text-strong); font: inherit; font-size: 0.82rem;
  text-align: left; cursor: pointer;
  transition: border-color var(--motion-fast) var(--ease), box-shadow var(--motion-fast) var(--ease);
}
.inv-filters .combo-trigger > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inv-filters .combo-trigger::after {
  content: ''; flex: none; width: 0.45rem; height: 0.45rem; margin-top: -0.2rem;
  border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); opacity: 0.6;
}
.inv-filters .combo-trigger:hover { border-color: var(--border-strong); }
.inv-filters .combo-trigger:focus-visible,
.inv-filters .combo-trigger[aria-expanded="true"] { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
.inv-filters .combo-trigger.is-filtered { border-color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); background: var(--accent-soft); color: var(--accent-strong); font-weight: 700; }
.combo-panel {
  position: absolute; top: calc(100% + 4px); left: 0; z-index: 40;
  width: max(100%, 320px); max-width: min(420px, calc(100vw - 32px));
  padding: 0.5rem; border: 1px solid var(--border-default); border-radius: var(--radius-sm);
  background: var(--surface-card); box-shadow: var(--shadow-overlay);
}
.combo-panel[hidden] { display: none; }
.combo-search {
  width: 100%; min-height: 36px; padding: 0.45rem 0.7rem; margin-bottom: 0.4rem;
  border: 1px solid var(--border-default); border-radius: var(--radius-sm);
  background: var(--surface-subtle); color: var(--text-strong); font-size: 0.82rem;
}
.combo-search:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
.combo-list { max-height: 280px; overflow-y: auto; margin: 0; padding: 0; list-style: none; }
.combo-option {
  display: flex; align-items: center; justify-content: space-between; gap: 0.75rem;
  padding: 0.45rem 0.6rem; border-radius: 6px; color: var(--text-body); font-size: 0.82rem; cursor: pointer;
}
.combo-option[hidden] { display: none; }
.combo-option small { flex: none; color: var(--text-soft); font-size: 0.74rem; font-variant-numeric: tabular-nums; }
.combo-option.is-active { background: var(--surface-sunken); color: var(--text-strong); }
.combo-option.is-selected { color: var(--accent-strong); font-weight: 700; }
.combo-option.is-selected small { color: var(--accent); }
.combo-option[aria-disabled="true"] { color: var(--text-soft); cursor: not-allowed; }
.combo-empty { margin: 0; padding: 0.6rem; color: var(--text-muted); font-size: 0.8rem; text-align: center; }

/* "Ver como é calculado": mínimo e máximo por grupo em dias. */
.inv-group-days td { vertical-align: middle; }
.inv-group-days .inv-lead-input { width: 100%; max-width: 130px; }
.inv-group-days-note { color: var(--text-muted); font-size: 0.78rem; white-space: nowrap; }

/* Compra por tecnologia (Estoque → Compra por tecnologia). Linha enxuta (estoque e
   o que comprar) em colunas de largura fixa, sem rolagem lateral; regra, modelos,
   a caminho, as duas compras e a tabela dos modelos ficam na expansão. */
.inv-tech-filters { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 0.8rem; align-items: end; padding-top: 1rem; }
.inv-tech-table, .inv-tech-models { table-layout: fixed; width: 100%; }
.inv-tech-table th, .inv-tech-table td, .inv-tech-models th, .inv-tech-models td { padding: 0.6rem 0.55rem; vertical-align: top; font-size: 0.82rem; }
.inv-tech-table .inv-n, .inv-tech-models .inv-n { text-align: right; white-space: nowrap; }
/* Títulos em até duas linhas, sem encostar no vizinho ("Consumo/mês", "Mín. a máx."). */
/* Mesmo tamanho e espaçamento do cabeçalho de Produtos (.table th: 0,65rem). */
.inv-tech-table > thead > tr > th, .inv-tech-models > thead > tr > th { font-size: 0.65rem; letter-spacing: 0.1em; white-space: normal; line-height: 1.25; vertical-align: bottom; overflow-wrap: break-word; }
/* Nome do modelo quebra em várias linhas dentro da própria coluna. */
.inv-tech-models td.inv-tech-model-name { white-space: normal; }
.inv-tech-detail .inv-asset-hist-stat small { white-space: normal; }
.inv-tech-table > thead > tr > th:nth-child(1) { width: 26%; }
.inv-tech-table > thead > tr > th:nth-child(n+2):nth-child(-n+9) { width: 9%; }
.inv-tech-table > thead > tr > th:nth-child(10) { width: 48px; }
.inv-tech-table tr[data-tech-row] { cursor: pointer; }
.inv-tech-name strong, .inv-tech-model-name strong { display: block; overflow-wrap: anywhere; }
.inv-tech-models > thead > tr > th:nth-child(1) { width: 28%; }
.inv-tech-models > thead > tr > th:nth-child(n+2) { width: 8%; }
.inv-tech-detail .inv-asset-hist-stats { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.inv-tech-rule { white-space: nowrap; font-size: 0.86rem; }
.inv-tech-warn { color: var(--warning); font-weight: 700; }
.inv-tech-avoided { color: var(--success); font-weight: 700; }
.inv-tech-missing { margin-top: 0.8rem; font-size: 0.82rem; }
.inv-tech-missing summary { cursor: pointer; color: var(--text-muted); }
@media (max-width: 1100px) { .inv-tech-table, .inv-tech-models { min-width: 900px; } }
@media (max-width: 640px) { .inv-tech-filters { grid-template-columns: 1fr; } }

/* ---------- Cabeçalhos das tabelas do Estoque ----------
   Todos com o tamanho do cabeçalho de Produtos (.table th: 0,65rem e 0,1em),
   vencendo os tamanhos próprios de Ativos, Contador, Remanufatura, histórico e
   alertas. Presos no topo ao rolar: sticky-headers.js desloca as células até o
   topo visível; aqui elas ficam por cima das linhas, com fundo e uma sombra. */
.inv-module .table > thead > tr > th,
.inv-group-days > thead > tr > th { font-size: 0.65rem; letter-spacing: 0.1em; }
.inv-module .table > thead > tr > th { position: relative; z-index: 2; background: var(--surface-subtle); }
.inv-module .table.is-stuck > thead > tr > th { box-shadow: 0 1px 0 var(--border-default), 0 6px 10px -8px rgba(52, 59, 69, 0.35); }
@media (prefers-reduced-motion: no-preference) { .inv-module .table > thead > tr > th { will-change: transform; } }
/* Máquinas do modelo (expansão do produto): caixa própria de 300 px com rolagem;
   o cabeçalho continua preso dentro dela. */
.inv-module .inv-detail-machines .inv-machine-table > thead > tr > th { position: sticky; top: 0; z-index: 1; }
/* Expansão da tecnologia: até 5 modelos à vista; acima disso a tabela rola por
   dentro (altura das 5 primeiras linhas, medida em inventory.js) com o cabeçalho preso. */
.inv-tech-models-wrap.is-long { overflow-y: auto; border-bottom: 1px solid var(--border-subtle); }
.inv-module .inv-tech-models-wrap.is-long .inv-tech-models > thead > tr > th { position: sticky; top: 0; z-index: 1; }
/* Ordenação no cabeçalho da Compra por tecnologia: seta junto do título, à direita nas colunas numéricas. */
.inv-tech-table th.inv-n .inv-sort { justify-content: flex-end; text-align: right; }
.inv-tech-table .inv-sort { white-space: normal; }

/* ---------- Pedidos (Estoque → Pedidos) ---------- */
.inv-purchase-table > thead > tr > th:nth-child(1) { width: 11%; }
.inv-purchase-table > thead > tr > th:nth-child(2) { width: 22%; }
.inv-purchase-table > thead > tr > th:nth-child(3) { width: 10%; }
.inv-purchase-table > thead > tr > th:nth-child(4) { width: 10%; }
.inv-purchase-table > thead > tr > th:nth-child(5) { width: 8%; }
.inv-purchase-table > thead > tr > th:nth-child(6) { width: 13%; }
.inv-purchase-table > thead > tr > th:nth-child(7) { width: 11%; }
.inv-purchase-table > thead > tr > th:nth-child(8) { width: 11%; }
.inv-purchase-table > thead > tr > th:nth-child(9) { width: 48px; }
.inv-purchase-table td { overflow-wrap: anywhere; }
.inv-purchase-table .inv-n { text-align: right; white-space: nowrap; }
.inv-purchase-supplier strong { display: block; }
.inv-purchase-items > thead > tr > th:nth-child(1) { width: 40%; }
.inv-purchase-items > thead > tr > th:nth-child(n+2) { width: 10%; }
.inv-purchase-lists { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem; margin-top: 0.9rem; }
.inv-purchase-lists ul { margin: 0.4rem 0 0; padding-left: 1.1rem; font-size: 0.82rem; line-height: 1.6; }
.inv-purchase-detail h5 { margin: 0.9rem 0 0.3rem; }
.inv-purchase-obs { margin: 0; padding: 0.7rem 0.85rem; border-radius: var(--radius-sm); background: var(--surface-subtle); font-size: 0.82rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.inv-purchase-filters .inv-reman-filter-main { grid-template-columns: minmax(0, 1.6fr) repeat(2, minmax(0, 1fr)); }
@media (max-width: 1100px) { .inv-purchase-table { min-width: 900px; } }
/* Contador: colorido em destaque discreto embaixo do contador atual. */
.inv-counter-color { color: var(--xia-purple); }

/* Filtro com seleção múltipla (tecnologia, marca e modelo): caixa de marcar em
   cada opção, "Todos" sem caixa, e Limpar e Aplicar no rodapé do painel. */
.combo.is-multiple .combo-option:not([data-value=""]) > span { display: flex; align-items: center; gap: 0.55rem; }
.combo.is-multiple .combo-option:not([data-value=""]) > span::before { content: ''; flex: none; width: 15px; height: 15px; border: 1.5px solid var(--border-strong); border-radius: 4px; background: var(--surface-card); }
.combo.is-multiple .combo-option.is-selected:not([data-value=""]) > span::before { border-color: var(--accent); background: var(--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.5 4.5' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat; }
.combo.is-multiple .combo-option.is-selected { font-weight: 600; }
.combo-actions { display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 0.5rem; padding-top: 0.5rem; border-top: 1px solid var(--border-subtle); }

/* Contratos (screens/contracts.js) */
.inv-contract-table td { vertical-align: top; }
.inv-contract-table tr[data-contract-row] { cursor: pointer; }
.inv-contract-notes { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; max-height: 16rem; overflow-y: auto; }
.inv-contract-notes li { font-size: 0.8rem; border-left: 3px solid var(--border-subtle); padding-left: 0.6rem; }
.inv-contract-notes p { margin: 0.2rem 0 0; white-space: pre-wrap; }
.inv-contract-detail h5 { margin: 1.1rem 0 0.4rem; font-size: 0.8rem; }
.inv-contract-detail h5 .inv-muted { font-weight: 400; }
.inv-contract-scroll { max-height: 24rem; overflow: auto; border: 1px solid var(--border-subtle); border-radius: 8px; background: var(--surface-card); }
.inv-contract-scroll.is-short { max-height: 17rem; }
.inv-contract-sub { table-layout: fixed; width: 100%; min-width: 760px; }
.inv-contract-sub th, .inv-contract-sub td { padding: 0.45rem 0.7rem; font-size: 0.8rem; line-height: 1.3; vertical-align: middle; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.inv-contract-sub > thead > tr > th { position: sticky; top: 0; z-index: 1; font-size: 0.65rem; letter-spacing: 0.08em; white-space: nowrap; }
.inv-contract-sub .inv-n { text-align: right; font-variant-numeric: tabular-nums; }
.inv-contract-sub .inv-contract-line { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inv-contract-sub small.inv-contract-line { margin-top: 0.1rem; }
.inv-contract-sub .badge { margin-left: 0.35rem; font-size: 0.65rem; padding: 0.05rem 0.45rem; }
.inv-contract-current td { background: var(--surface-subtle); }
.inv-contract-current td:first-child { box-shadow: inset 3px 0 0 var(--success); }
.inv-contract-machines > thead > tr > th:nth-child(1) { width: 15%; }
.inv-contract-machines > thead > tr > th:nth-child(2) { width: 33%; }
.inv-contract-machines > thead > tr > th:nth-child(3) { width: 12%; }
.inv-contract-machines > thead > tr > th:nth-child(4) { width: 20%; }
.inv-contract-machines > thead > tr > th:nth-child(5) { width: 9%; }
.inv-contract-machines > thead > tr > th:nth-child(6) { width: 11%; }
.inv-contract-closings > thead > tr > th:nth-child(1), .inv-contract-closings > thead > tr > th:nth-child(9) { width: 14%; }
.inv-contract-closings > thead > tr > th:nth-child(n+2):nth-child(-n+8) { width: 10.3%; }
.inv-contract-franchises > thead > tr > th:nth-child(1) { width: 18%; }
.inv-contract-franchises > thead > tr > th:nth-child(n+2) { width: 13.66%; }
/* Lista de contratos: larguras próprias (a tabela herda .inv-asset-table, feita para os Ativos). */
.inv-asset-table.inv-contract-table > thead > tr > th:nth-child(1) { width: 19%; }
.inv-asset-table.inv-contract-table > thead > tr > th:nth-child(2) { width: 20%; }
.inv-asset-table.inv-contract-table > thead > tr > th:nth-child(3) { width: 8%; }
.inv-asset-table.inv-contract-table > thead > tr > th:nth-child(4) { width: 13%; }
.inv-asset-table.inv-contract-table > thead > tr > th:nth-child(5) { width: 10%; }
.inv-asset-table.inv-contract-table > thead > tr > th:nth-child(6) { width: 10%; }
.inv-asset-table.inv-contract-table > thead > tr > th:nth-child(7) { width: 11%; }
.inv-asset-table.inv-contract-table > thead > tr > th:nth-child(8) { width: 9%; }
.inv-asset-table.inv-contract-table > thead > tr > th:nth-child(9) { width: 56px; }
.inv-contract-table td { overflow: hidden; }
.inv-contract-table .inv-contract-name .inv-meta { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inv-contract-flags { display: flex; flex-wrap: wrap; gap: 0.25rem; margin-top: 0.35rem; max-width: 100%; }
.inv-contract-flags .inv-flag { max-width: 100%; white-space: normal; text-align: left; }
@media (max-width: 1100px) { .inv-asset-table.inv-contract-table { min-width: 1000px; } }
