:root {
  color-scheme: light;
  --surface-canvas: #f4f6f3;
  --surface-1: #ffffff;
  --surface-2: #edf1ed;
  --surface-3: #e3e9e4;
  --text-1: #17201b;
  --text-2: #56615a;
  --outline: #aeb8b1;
  --outline-soft: #d4dbd5;
  --primary: #176b52;
  --primary-hover: #105b45;
  --primary-soft: #d7eee4;
  --on-primary: #ffffff;
  --warning: #725309;
  --warning-soft: #f5e7b8;
  --danger: #963732;
  --danger-soft: #f6dfdc;
  --info: #315d8c;
  --info-soft: #dbe6f2;
  --ink-panel: #21302a;
  --side-a: #256b51;
  --side-b: #946125;
  --side-c: #58658c;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --shadow-1: 0 1px 2px rgba(23, 32, 27, .06);
  --shadow-2: 0 8px 24px rgba(23, 32, 27, .12);
  --focus: #9a6600;
  --z-sticky: 20;
  --z-dialog: 100;
  --z-toast: 200;
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-synthesis: none;
}

* { box-sizing: border-box; }

html { min-width: 320px; background: var(--surface-canvas); }

body {
  min-width: 320px;
  min-height: 100dvh;
  margin: 0;
  background: var(--surface-canvas);
  color: var(--text-1);
  font-size: 14px;
  line-height: 1.5;
  text-rendering: optimizeLegibility;
}

button,
select,
input { font: inherit; }

button,
select,
input,
.dropzone { touch-action: manipulation; }

button { cursor: pointer; }

button:focus-visible,
select:focus-visible,
input:focus-visible,
.dropzone:focus-within,
a:focus-visible,
dialog:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 2px;
}

button:disabled,
.button:disabled {
  cursor: not-allowed;
  opacity: .48;
  transform: none !important;
  box-shadow: none;
}

h1,
h2,
h3,
p { margin-top: 0; }

h1,
h2,
h3 { text-wrap: balance; }

.hidden { display: none !important; }

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: fixed;
  top: 8px;
  left: 12px;
  z-index: 1000;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  background: var(--text-1);
  color: #fff;
  transform: translateY(-160%);
  transition: transform 150ms ease-out;
}

.skip-link:focus { transform: none; }

.topbar {
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
  border-bottom: 1px solid var(--outline-soft);
  background: rgba(255, 255, 255, .96);
  box-shadow: 0 1px 0 rgba(23, 32, 27, .04);
  backdrop-filter: blur(12px);
}

.topbar-inner {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px 16px;
  min-height: 64px;
  padding: 10px max(24px, calc((100vw - 1480px) / 2));
}

.topbar-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: max-content;
  /* Reset do <button>: o nome do sistema agora é um botão pra ser clicável e
     acessivel (foco de teclado, aria-label). Sem este reset, herdaria padding
     border e background de `button { ... }` lá em cima. */
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  border-radius: 12px;
}
.topbar-brand:hover { background: var(--surface-2); }
.topbar-brand:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }

.brand-text {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}

.brand-name {
  font-size: 18px;
  font-weight: 760;
  letter-spacing: -.02em;
  line-height: 1.1;
}

.brand {
  min-width: max-content;
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 18px;
  font-weight: 760;
  letter-spacing: -.02em;
}

.brand-mark {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  background: var(--primary);
  color: var(--on-primary);
  font-size: 16px;
}

.brand small {
  color: var(--text-2);
  font-size: 11px;
  font-weight: 550;
  letter-spacing: .01em;
  line-height: 1.2;
}

.topbar-scope {
  min-width: 0;
  display: flex;
  flex-wrap: nowrap;
  align-items: flex-end;
  gap: 8px 10px;
}

.topbar-actions {
  display: inline-flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  min-width: 0;
}

.topbar-analytic {
  flex: 0 0 auto;
  min-width: 0;
}

.top-select-label {
  display: block;
  line-height: 1.2;
}

.topbar-analytic-row {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.top-select {
  display: grid;
  gap: 3px;
  color: var(--text-2);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  min-width: 0;
}

.top-select--company {
  flex: 1 1 150px;
  max-width: 240px;
}
.top-select--analysis {
  flex: 0.9 1 120px;
  max-width: 200px;
}
.top-select--competency {
  flex: 0 0 132px;
}

/* Sessão implícita: empresa / análise / Nova análise ficam fora do caminho. */
body:not(.show-workspace-chrome) .workspace-chrome {
  display: none !important;
}

.top-select select {
  width: 100%;
  min-width: 0;
  max-width: none;
  margin: 0;
  text-transform: none;
  font-weight: 600;
  /* Native select already clips; keep label fully readable. */
  text-overflow: ellipsis;
}

.top-select {
  overflow: visible;
}

.topbar-actions .button,
.topbar-analytic-row .button {
  min-height: 40px;
  padding: 0 12px;
  font-size: 12px;
  white-space: nowrap;
}

.topbar-nature-btn {
  min-width: 52px;
  padding-inline: 14px;
  font-weight: 650;
}

/* Pressed = mesmo idioma visual dos filters/tabs (primary-soft). */
#toggleAnalyticOnly.button.secondary[aria-pressed="true"],
#toggleAnalyticOnly.button.secondary.is-active {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary);
}

.button.subtle {
  background: transparent;
  border-color: transparent;
  box-shadow: none;
  color: var(--text-2);
}

.button.subtle:hover:not(:disabled) {
  background: var(--surface-2);
  border-color: var(--outline-soft);
  color: var(--text-1);
}

/* Um primary dourado por viewport: Concluir nunca compete com o CTA da etapa. */
#closeWorkspace.button.secondary,
#reopenWorkspace.button.secondary {
  background: var(--surface-1);
  color: var(--text-1);
  border-color: var(--outline-soft);
  box-shadow: none;
}
#closeWorkspace.button.secondary:hover:not(:disabled),
#reopenWorkspace.button.secondary:hover:not(:disabled) {
  background: var(--surface-2);
  border-color: var(--outline);
}

/* Legado: chip-toggle ainda usado em popups / syncAnalyticOnlyButtons */
.chip-toggle {
  min-height: 40px;
  padding: 0 12px;
  border: 1px solid var(--outline-soft);
  border-radius: 999px;
  background: #fff;
  color: var(--text-2);
  font-size: 12px;
  font-weight: 650;
  cursor: pointer;
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease, box-shadow 150ms ease;
}

.chip-toggle:hover { border-color: #9aa89a; color: var(--text-1); }

.chip-toggle[aria-pressed="true"],
.chip-toggle.is-active {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--primary) 35%, transparent);
}

.chip-toggle:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.workspace-actions {
  min-width: max-content;
  flex: 0 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

@media (max-width: 1180px) {
  .topbar-inner {
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
    gap: 10px 12px;
  }
  .topbar-actions {
    grid-column: 1 / -1;
    justify-content: flex-start;
    flex-wrap: wrap;
    padding-top: 6px;
    border-top: 1px solid var(--outline-soft);
  }
  .topbar-scope {
    flex-wrap: wrap;
  }
  .top-select--company,
  .top-select--analysis,
  .top-select--competency {
    flex: 1 1 140px;
    max-width: none;
  }
}

main {
  width: 100%;
  max-width: 1480px;
  margin: 0 auto;
  padding: 24px 24px max(80px, env(safe-area-inset-bottom));
}

.workflow-nav-row {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 10px;
  min-width: 0;
}

.prep-entry {
  flex: 0 0 auto;
  align-self: center;
  width: auto;
  max-width: max-content;
  min-height: 44px;
  padding: 0 16px;
  border: 1px solid var(--outline);
  border-radius: 999px;
  background: var(--surface-1);
  color: var(--text-1);
  font-size: 12px;
  font-weight: 720;
  white-space: nowrap;
  box-shadow: var(--shadow-1);
}

.prep-entry:hover { border-color: var(--primary); color: var(--primary); }

.prep-entry[aria-pressed="true"],
.prep-entry.is-active {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary);
}

.workflow-nav-divider {
  flex: 0 0 auto;
  width: 1px;
  align-self: stretch;
  min-height: 36px;
  background: var(--outline-soft);
}

.workflow-tabs {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  gap: 4px;
  margin: 0;
  padding: 4px;
  overflow-x: auto;
  border: 1px solid var(--outline-soft);
  border-radius: 999px;
  background: var(--surface-2);
  scrollbar-width: thin;
}

.applied-scope-strip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 14px;
  row-gap: 6px;
  margin: 0 0 20px;
  padding: 0 2px;
  color: var(--text-2);
  font-size: 12.5px;
  line-height: 1.45;
}

/* Contrato de cabeçalho de etapa (mapa V2): título + lead curto, sem eco da barra. */
.stage-head .stage-lead,
.stage-lead {
  max-width: 68ch;
  margin: 0;
  color: var(--text-2);
  font-size: 14.5px;
  line-height: 1.45;
}
.stage-head .eyebrow {
  margin: 0 0 4px;
}

.applied-scope-strip #appliedScopeText {
  min-width: 0;
}

.applied-scope-strip .linkish,
.rules-summary-line .linkish {
  appearance: none;
  border: 0;
  padding: 0;
  background: none;
  color: var(--primary);
  font: inherit;
  font-weight: 650;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}

.rules-summary-line {
  margin: 8px 0 0;
  color: var(--text-2);
  font-size: 13px;
}

.prep-hero {
  align-items: start;
}

.prep-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}

/* Material (#prep): hierarquia leve como Fontes — sem mini-dashboard de painéis. */
.prep-main {
  display: grid;
  gap: 12px;
  margin: 0 0 22px;
  padding: 0 2px;
}

.prep-checklist {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.prep-checklist-compact {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.prep-check {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  padding: 10px 12px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-md);
  background: var(--surface-1);
}

.prep-check b {
  display: block;
  font-size: 13px;
}

.prep-check small {
  display: block;
  margin-top: 2px;
  color: var(--text-2);
  font-size: 12px;
  line-height: 1.35;
}

.prep-check-mark {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  font-weight: 780;
  font-size: 14px;
  background: var(--surface-2);
  color: var(--text-2);
}

.prep-check.is-ok .prep-check-mark {
  background: var(--primary-soft);
  color: var(--primary);
}

.prep-check.is-miss .prep-check-mark {
  background: var(--warning-soft);
  color: var(--warning);
}

.prep-files-title {
  margin: 6px 0 0;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -.01em;
}

.prep-file-list {
  display: grid;
  gap: 6px;
  max-height: min(240px, 36vh);
  overflow: auto;
}

.prep-file-row {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  padding: 8px 10px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-sm);
  background: var(--surface-1);
  font-size: 12.5px;
}

.prep-file-row.is-empty {
  grid-template-columns: 72px minmax(0, 1fr) auto;
  background: var(--surface-2);
}
.prep-empty-go { justify-self: end; white-space: nowrap; }
@media (max-width: 640px) {
  .prep-file-row.is-empty { grid-template-columns: 72px minmax(0, 1fr); }
  .prep-empty-go { grid-column: 2; justify-self: start; }
}

.prep-file-row b {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.prep-file-row small {
  display: block;
  margin-top: 2px;
  color: var(--text-2);
  font-size: 11px;
}

.prep-file-row .kind {
  justify-self: end;
  padding: 2px 7px;
  border-radius: 999px;
  background: var(--surface-2);
  color: var(--text-2);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
}

.prep-file-type {
  min-height: 28px;
  display: grid;
  place-items: center;
  padding: 4px 6px;
  border-radius: 8px;
  background: var(--primary-soft);
  color: var(--primary);
  font-weight: 750;
  font-size: 10px;
  letter-spacing: .02em;
  text-align: center;
  line-height: 1.2;
}

.prep-file-row[data-role="pendente"] .prep-file-type {
  background: var(--warning-soft);
  color: var(--warning);
}

.prep-file-row[data-role="taxas"] .prep-file-type {
  background: #e7eaf3;
  color: #315d8c;
}

#prepGoFontes:disabled {
  opacity: .55;
  cursor: not-allowed;
}

.prep-ready {
  margin: 0;
  padding: 10px 12px;
  border-radius: var(--radius-sm);
  background: var(--primary-soft);
  color: var(--primary);
  font-size: 13px;
  font-weight: 650;
}

.prep-ready.is-warn {
  background: var(--warning-soft);
  color: var(--warning);
}

.prep-meta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 16px;
  padding-top: 8px;
  border-top: 1px solid var(--outline-soft);
}

.prep-plan-line {
  margin: 0;
  color: var(--text-2);
  font-size: 13px;
}

.prep-rules {
  margin: 0 0 8px;
  padding: 16px 2px 4px;
  border-top: 1px solid var(--outline-soft);
  background: transparent;
  box-shadow: none;
}

.prep-rules-head {
  display: flex;
  flex-wrap: wrap;
  align-items: start;
  justify-content: space-between;
  gap: 12px 16px;
  margin-bottom: 10px;
}

.prep-rules-head h2 {
  margin: 0 0 4px;
  font-size: 1.05rem;
  letter-spacing: -.01em;
}

.prep-optional {
  color: var(--text-2);
  font-size: 0.85em;
  font-weight: 550;
}

.prep-rules-head .stage-lead {
  font-size: 13px;
}

.prep-rules .rule-form.hidden,
.prep-rules .rule-form[hidden] {
  display: none !important;
}

@media (max-width: 640px) {
  .prep-checklist-compact { grid-template-columns: 1fr; }
}

@media (max-width: 900px) {
  .workflow-nav-row { flex-wrap: wrap; }
  .workflow-nav-divider { display: none; }
  .prep-entry { width: auto; max-width: none; }
  .workflow-tabs { width: 100%; }
  .prep-file-row { grid-template-columns: 64px minmax(0, 1fr); }
  .prep-file-row .kind { display: none; }
}

.workflow-tab {
  min-width: max-content;
  min-height: 44px;
  flex: 1 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 8px 14px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--text-2);
  font-size: 12px;
  font-weight: 720;
  transition: background-color 150ms ease, color 150ms ease, box-shadow 150ms ease;
}

.workflow-tab:hover { background: rgba(255, 255, 255, .62); }

.workflow-tab > span {
  width: 24px;
  height: 24px;
  display: grid;
  place-items: center;
  border: 1px solid var(--outline);
  border-radius: 50%;
  font-size: 10px;
}

.workflow-tab b {
  min-width: 22px;
  padding: 3px 6px;
  border-radius: 999px;
  background: rgba(23, 32, 27, .08);
  font-size: 10px;
  font-variant-numeric: tabular-nums;
}

.workflow-tab b.is-pending {
  min-width: 18px;
  background: transparent;
  border: 1px dashed var(--outline);
  color: var(--text-2);
  font-weight: 650;
}

.workflow-tab b.is-clean {
  background: #d8efe0;
  color: #0b513c;
}

.workflow-tab b.is-findings {
  background: var(--warning-soft);
  color: #493500;
}

.workflow-tab.active,
.workflow-tab[aria-current="page"] {
  background: var(--surface-1);
  color: var(--primary);
  box-shadow: var(--shadow-1);
}

.workflow-tab.active > span,
.workflow-tab[aria-current="page"] > span {
  border-color: var(--primary);
  background: var(--primary-soft);
}

.workflow-tab.active b,
.workflow-tab[aria-current="page"] b { background: var(--primary-soft); }

.workflow-view { min-width: 0; }

.hero {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 32px;
  margin-bottom: 24px;
}

.hero > div:first-child { max-width: 760px; }

.hero h1 {
  margin: 4px 0 8px;
  font-size: clamp(30px, 3.2vw, 46px);
  font-weight: 680;
  letter-spacing: -.045em;
  line-height: 1.08;
}

.hero > div > p:last-child {
  max-width: 72ch;
  margin-bottom: 0;
  color: var(--text-2);
  font-size: 15px;
}

.eyebrow {
  margin: 0;
  color: var(--primary);
  font-size: 10px !important;
  font-weight: 800;
  letter-spacing: .14em;
}

.metrics { display: flex; gap: 10px; align-items: stretch; }

.metric {
  min-width: 96px;
  padding: 10px 12px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-md);
  background: var(--surface-1);
  box-shadow: var(--shadow-1);
}

.metric.metric-primary {
  border-color: color-mix(in srgb, var(--primary) 28%, var(--outline-soft));
  background: color-mix(in srgb, var(--primary-soft) 55%, var(--surface-1));
}

.metric b {
  display: block;
  color: var(--primary);
  font-size: 20px;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}

.metric.metric-primary b { font-size: 22px; }

.metric span { color: var(--text-2); font-size: 11px; font-weight: 600; }

.sides {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.side-card {
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-lg);
  background: var(--surface-1);
  box-shadow: var(--shadow-1);
  transition: opacity 150ms ease, border-color 150ms ease, box-shadow 150ms ease;
}

.side-card.active-pair {
  border-color: color-mix(in srgb, var(--side) 64%, var(--outline));
  box-shadow: 0 4px 14px color-mix(in srgb, var(--side) 12%, transparent);
}

.side-card.inactive-pair {
  border-style: dashed;
  background: #fafbfa;
}

.side-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 18px 10px;
}

.side-letter {
  width: 36px;
  height: 36px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 11px;
  background: var(--side-soft);
  color: var(--side);
  font-weight: 850;
}

.side-head h2 { margin: 0; font-size: 16px; }
.side-head p { margin: 2px 0 0; color: var(--text-2); font-size: 12px; }

.dropzone {
  position: relative;
  min-height: 82px;
  display: grid;
  place-content: center;
  margin: 0 18px 14px;
  padding: 14px;
  border: 1px dashed var(--outline);
  border-radius: var(--radius-md);
  background: var(--surface-2);
  text-align: center;
  cursor: pointer;
  transition: background-color 150ms ease, border-color 150ms ease;
}

.dropzone:hover,
.dropzone.drag,
.dropzone:focus-within {
  border-color: var(--side);
  background: var(--side-soft);
}

.dropzone b { display: block; color: var(--text-1); }
.dataset-list + .card-report-list { margin-top: 8px; }
.card-report-dataset { border-left: 3px solid var(--side, #58658c); }
.card-report-dataset .kind { color: #58658c; }
.dropzone span {
  display: block;
  margin-top: 4px;
  color: var(--text-2);
  font-size: 11px;
  line-height: 1.35;
}

.dropzone input {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.dataset-list {
  min-height: 66px;
  /* 132px cortava o bloco do vínculo OFX↔conta no meio (caixa "duplicada") */
  max-height: 240px;
  overflow: auto;
  padding: 0 18px;
}

.dataset {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 3px 8px;
  padding: 9px 0;
  border-top: 1px solid var(--outline-soft);
  align-items: center;
}

.dataset b {
  overflow: hidden;
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dataset span { color: var(--text-2); font-size: 10px; }

.dataset.is-external-source {
  background: linear-gradient(90deg, color-mix(in srgb, var(--info) 6%, transparent), transparent);
}

.kind {
  padding: 2px 7px;
  border-radius: 999px;
  background: var(--side-soft);
  color: var(--side) !important;
  font-weight: 750;
  text-transform: uppercase;
}

/* Selo de origem: Razão vs fontes externas (OFX, NF-e pack, taxas, tabela). */
.source-seal {
  display: inline-flex;
  align-items: center;
  justify-self: end;
  padding: 2px 8px;
  border-radius: 999px;
  border: 1px solid var(--outline-soft);
  background: var(--surface-2);
  color: var(--text-2);
  font-size: 10px;
  font-weight: 750;
  letter-spacing: .03em;
  text-transform: uppercase;
  white-space: nowrap;
  line-height: 1.2;
  vertical-align: middle;
}

.source-seal--razao {
  border-color: color-mix(in srgb, var(--primary) 35%, transparent);
  background: var(--primary-soft);
  color: var(--primary);
}

.source-seal.is-external,
.source-seal--ofx,
.source-seal--fiscal,
.source-seal--taxas,
.source-seal--tabela,
.source-seal--llama,
.source-seal--pendente,
.source-seal--outro {
  border-color: color-mix(in srgb, var(--info) 45%, transparent);
  background: #e8eef5;
  color: var(--info);
}

.source-seal--fiscal {
  border-color: #6b5b95;
  background: #ece8f4;
  color: #4a3d6e;
}

.source-seal--ofx {
  border-color: #946125;
  background: #f3e8d8;
  color: #946125;
}

.source-seal--taxas {
  border-color: #58658c;
  background: #e7eaf3;
  color: #58658c;
}

/* Guia do pacote (Fontes) — checklist por tipo importado */
.source-guide {
  margin: 0 0 18px;
  padding: 18px 20px;
  border: 1px solid var(--outline-soft);
  border-radius: 14px;
  background: color-mix(in srgb, var(--surface-2) 80%, transparent);
}
.source-guide-head .eyebrow {
  margin: 0 0 4px;
  font-size: 11px;
  letter-spacing: .08em;
  color: var(--text-2);
}
.source-guide-head h2 {
  margin: 0 0 4px;
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--text);
}
.source-guide-head .stage-lead {
  margin: 0 0 12px;
  max-width: 52rem;
}
.source-guide-list {
  list-style: none;
  margin: 0 0 12px;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
}
.source-guide-item {
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid var(--outline-soft);
  background: var(--surface);
}
.source-guide-item.is-empty {
  grid-column: 1 / -1;
}
.source-guide-item-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
}
.source-guide-item-head b {
  font-size: 0.95rem;
}
.source-guide-item small {
  display: block;
  color: var(--text-2);
  margin-bottom: 6px;
}
.source-guide-item p {
  margin: 0;
  font-size: 0.88rem;
  line-height: 1.35;
  color: var(--text-2);
}
.source-guide-steps {
  margin: 0 0 8px;
  padding-left: 1.25rem;
  color: var(--text);
  line-height: 1.45;
}
.source-guide-steps li { margin-bottom: 4px; }
.source-guide-note {
  margin: 0;
  font-size: 0.82rem;
  color: var(--text-2);
  line-height: 1.4;
}

.member b .source-seal,
.comparison-record-meta .source-seal,
.pending-record .source-seal {
  margin-left: 6px;
  vertical-align: 1px;
}

.comparison-record.has-external-source,
.pending-record.has-external-source {
  box-shadow: inset 3px 0 0 color-mix(in srgb, var(--info) 55%, transparent);
}

.filters {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 108px;
  gap: 8px;
  padding: 14px 16px 16px;
  border-top: 1px solid var(--outline-soft);
  background: var(--surface-2);
}

label { color: var(--text-2); font-size: 11px; font-weight: 600; }

/* Rótulo + controle em coluna — evita “FonteFontes do lado” colado na linha. */
.filters label,
.control-panel label,
.ledger-audit-panel label,
.rules-panel label,
.suggestion-tune-params label,
.suggestion-tune-same-file label {
  display: grid;
  gap: 5px;
  align-content: start;
}

select,
input {
  width: 100%;
  min-height: 42px;
  margin-top: 5px;
  padding: 8px 10px;
  border: 1px solid var(--outline);
  border-radius: var(--radius-sm);
  background: var(--surface-1);
  color: var(--text-1);
}

.filters label > :is(select, input),
.control-panel label > :is(select, input),
.ledger-audit-panel label > :is(select, input),
.rules-panel label > :is(select, input),
.suggestion-tune-params label > :is(select, input),
.suggestion-tune-same-file label > :is(select, input) {
  margin-top: 0;
}

.control-panel {
  position: sticky;
  top: 76px;
  z-index: 10;
  display: grid;
  grid-template-columns: minmax(220px, 1fr) 130px 150px 166px auto;
  align-items: end;
  gap: 16px;
  margin: 16px 0 28px;
  padding: 16px 18px;
  border-radius: var(--radius-lg);
  background: var(--ink-panel);
  color: #fff;
  box-shadow: var(--shadow-2);
}

.control-panel h2,
.results-head h2 {
  margin: 3px 0 0;
  font-size: 23px;
  font-weight: 680;
  letter-spacing: -.025em;
}

.control-panel label { position: relative; color: #c4ccc7; }
.control-panel label.checkbox-inline { display: flex; align-items: center; gap: 8px; padding: 8px 0; color: #e8ede9; }
.control-panel label.checkbox-inline input { width: auto; padding: 0; margin: 0; }
.control-panel select,
.control-panel input { border-color: #65736c; background: #2b3b34; color: #fff; }
.control-panel label span { position: absolute; right: 10px; bottom: 11px; font-size: 10px; }
.control-panel input { padding-right: 42px; }

.button {
  min-height: 44px;
  padding: 10px 18px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-weight: 750;
  line-height: 1.2;
  cursor: pointer;
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease, opacity 150ms ease, transform 120ms ease;
}

.button.primary { background: #f3d88e; color: #332600; }
.button.primary:hover:not(:disabled) { background: #ffe7a4; }
.button.primary:active:not(:disabled) { transform: translateY(1px); }
/* Motor escuro: primary dourado continua o único CTA forte; disabled não some. */
.control-panel .button.primary:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  background: #f3d88e;
  color: #332600;
}
.button.secondary { border-color: var(--outline-soft); background: var(--surface-1); color: var(--text-1); }
.button.secondary:hover:not(:disabled) { background: var(--surface-2); border-color: var(--outline); }
.button.secondary:active:not(:disabled) { transform: translateY(1px); }
.button.secondary.subtle {
  background: transparent;
  border-color: var(--outline-soft);
  color: var(--text-2);
  font-weight: 600;
  box-shadow: none;
}
.button.secondary.subtle:hover:not(:disabled) {
  background: var(--surface-2);
  border-color: var(--outline);
  color: var(--text-1);
}

.member-column-fee {
  border-left: 3px solid #58658c;
  padding-left: 10px;
  background: #e7eaf3;
  border-radius: 10px;
}
.fee-col-label {
  display: block;
  margin-bottom: 6px;
  color: #58658c;
  font-size: 10px;
  font-weight: 750;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.match.kind-fee_triplet .match-status b,
.match.kind-separate_fee .match-status b {
  background: #e7eaf3;
  color: #315d8c;
}
.button.confirm { background: var(--primary-soft); color: #0b513c; }
.button.confirm:hover:not(:disabled) { background: #c2e5d6; }
.button.reject { background: var(--danger-soft); color: var(--danger); }
.button.reject:hover:not(:disabled) { background: #efd0cc; }
.button.tiny { min-height: 36px; padding: 7px 11px; font-size: 11px; }
.button.pending { background: var(--warning-soft); color: var(--warning); }
.button.pending:hover:not(:disabled) { background: #efdba0; }

.ledger-audit-panel {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) auto;
  align-items: end;
  gap: 16px;
  /* 16px no topo: `.results-head` (cabeçalho da aba Auditoria) não tem
     margem inferior, então um margin-top 0 aqui colaria o painel no
     cabeçalho. Mesmo respiro que `.control-panel` já usava quando vinha
     logo depois de `.sides`, antes deste painel se mudar para a aba
     Auditoria (V2-018 pós-entrega, 2026-08-05). */
  margin: 16px 0 20px;
  padding: 18px 20px;
  border: 1px solid var(--outline-soft);
  border-left: 4px solid var(--primary);
  border-radius: var(--radius-lg);
  background: var(--surface-1);
  box-shadow: var(--shadow-1);
}

.ledger-audit-panel > div:first-child { grid-column: 1 / -1; max-width: 760px; }
.ledger-audit-panel h2 { margin: 3px 0 4px; font-size: 19px; letter-spacing: -.015em; }
.ledger-audit-title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px 16px;
}
.ledger-audit-title-row h2 { margin: 3px 0 0; }
.ledger-audit-setup-link {
  font-size: 12px;
  font-weight: 650;
  white-space: nowrap;
}
.ledger-audit-panel .audit-drop {
  --side: #256b51;
  --side-soft: #e1eee7;
  grid-column: 1 / -1;
  margin: 0;
}
.file-select-field {
  display: grid;
  gap: 6px;
  font-size: 12px;
  font-weight: 650;
  color: var(--text-2);
}
.file-select-field select {
  min-width: min(100%, 280px);
  min-height: 44px;
}
.ledger-audit-actions .button.primary {
  min-width: 168px;
  box-shadow: var(--shadow-1);
}
#sharedLedgerMessage { margin: 0; color: var(--text-2); font-size: 12px; }

.shared-source-badge {
  display: inline-flex;
  margin-top: 6px;
  padding: 6px 11px;
  border-radius: 999px;
  background: var(--info-soft);
  color: var(--info);
  font-size: 11px;
  font-weight: 700;
}

.ledger-audit-actions { display: flex; flex-wrap: wrap; gap: 10px; }

.audit-month-line {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--text-2);
  font-size: 12.5px;
  line-height: 1.45;
}

.audit-month-line b { color: var(--text-1); font-weight: 650; }

.suggestion-tune-analytic-hint {
  margin: 8px 0 0;
  color: var(--text-2);
  font-size: 12.5px;
  line-height: 1.4;
}

/* Regras da empresa (V2-018): mesmo card/acento que .ledger-audit-panel — a
   seção fica entre o painel de auditoria de Razão único e o motor de
   conciliação, então reaproveita a linguagem visual em vez de inventar uma. */
.rules-panel {
  display: grid;
  gap: 18px;
  /* 16px no topo: `.sides` (cards A/B/C) não tem margem inferior, então um
     margin-top 0 aqui colava o painel de regras nas caixas de seleção acima
     dele (mesmo bug já corrigido em `.ledger-audit-panel` nesta sessão,
     achado ao auditar o espaçamento das telas em 2026-08-05 — medido 0px de
     distância real via getBoundingClientRect antes deste fix). */
  margin: 16px 0 20px;
  padding: 18px 20px;
  border: 1px solid var(--outline-soft);
  border-left: 4px solid var(--primary);
  border-radius: var(--radius-lg);
  background: var(--surface-1);
  box-shadow: var(--shadow-1);
}

.rules-panel > div:first-child { max-width: 760px; }
.rules-panel h2 { margin: 3px 0 4px; font-size: 19px; letter-spacing: -.015em; }
.rules-panel > div:first-child p { margin: 0; color: var(--text-2); font-size: 12px; }

.rules-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }

.rules-empty {
  padding: 16px;
  border: 1px dashed var(--outline);
  border-radius: var(--radius-md);
  color: var(--text-2);
  font-size: 12px;
  text-align: center;
}

.rule-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-md);
  background: var(--surface-2);
}

.rule-row-main { min-width: 0; flex: 1 1 260px; display: grid; gap: 3px; }
.rule-row-head { display: flex; align-items: center; gap: 10px; }
.rule-row-head b { overflow-wrap: anywhere; font-size: 13px; }
.rule-row-filter,
.rule-row-action { margin: 0; overflow-wrap: anywhere; color: var(--text-2); font-size: 11px; }

.rule-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--text-2);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.rule-toggle input { width: 16px; min-height: 16px; margin: 0; }
.rule-row-actions { display: flex; flex-wrap: wrap; gap: 6px; }

.rule-form { display: grid; gap: 14px; padding-top: 16px; border-top: 1px solid var(--outline-soft); }

.rule-filters,
.rule-actions {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 10px;
}

.rule-preview { margin: 0; color: var(--text-2); font-size: 12px; }
.rule-form-actions { display: flex; gap: 10px; }

/* Selo de registro ajustado por regra: mesma família visual dos .chip-*
   (pílula pequena, cor de leitura, sem borda pesada); o original + a trilha
   de regras ficam no tooltip para não competir com o valor efetivo. */
.adjusted-badge {
  /* justify-self: start — quando o selo é filho direto de um container grid
     (ex.: .comparison-record-body), o padrão do grid é esticar o item; sem
     isso a pílula vira uma barra da largura da coluna inteira. */
  justify-self: start;
  display: inline-flex;
  align-items: center;
  width: fit-content;
  margin-top: 2px;
  padding: 1px 8px;
  border-radius: 999px;
  background: var(--info-soft);
  color: var(--info);
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  cursor: help;
}

/* Badge de ciclo de vida no cabeçalho: neutro enquanto aberta (some), destaque
   de alerta quando concluída — mesma paleta de aviso usada em .chip-warn. */
.workspace-status-badge {
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  border-radius: 999px;
  background: var(--surface-2);
  color: var(--text-2);
  font-size: 11px;
  font-weight: 700;
  white-space: nowrap;
}

.workspace-status-badge.closed { background: var(--warning-soft); color: var(--warning); }

/* Workspace concluído: desabilita visualmente as áreas que mutam dados sem
   tirar nada do DOM (o backend já barra com 409; isto evita o clique inútil).
   Nunca aplicado aos botões do próprio cabeçalho de ciclo de vida. */
.locked { opacity: .55; pointer-events: none; }

.audit-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 4px 0 16px;
}

.audit-warnings { display: grid; gap: 8px; margin: 0 0 4px; }

.audit-notice {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 11px 14px;
  border-radius: var(--radius-md);
  font-size: 12px;
}

.audit-notice.warning { border: 1px solid #d8be70; background: var(--warning-soft); color: #493500; }
.audit-notice.info { border: 1px solid color-mix(in srgb, var(--info) 30%, var(--outline-soft)); background: var(--info-soft); color: var(--info); }
/* Nota permanente (ex.: saldo não fornecido, verdadeiro para todo arquivo hoje):
   fica discreta para não competir com o resultado da auditoria. */
.audit-notice.muted { border: 1px dashed var(--outline-soft); background: transparent; color: var(--text-2); }

.audit-clean {
  display: grid;
  gap: 4px;
  padding: 16px 18px;
  border: 1px solid color-mix(in srgb, var(--primary) 28%, var(--outline-soft));
  border-radius: var(--radius-md);
  background: var(--primary-soft);
  color: #0b513c;
}

.audit-clean b { font-size: 15px; }
.audit-clean span { font-size: 12px; }

.audit-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 14px;
  margin: 4px 0 16px;
  padding: 12px 14px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-md);
  background: var(--surface-2);
}

.audit-findings { display: grid; gap: 10px; margin-top: 4px; }

/* Listagem de lançamentos do recorte (equilibrados E desequilibrados).
   Cards reutilizam a família visual de .audit-finding e .member; só a cor da
   borda esquerda distingue: verde primário (equilibrado), vermelho suspeito
   (desequilibrado) e azul indeterminado (sem número de lançamento). */
.audit-journals { margin-top: 20px; }
.audit-journals .suggestions-head { align-items: start; flex-wrap: wrap; }
.audit-journal-segments { margin-top: 0; max-width: min(100%, 34rem); justify-content: flex-end; }
.audit-journal-segments .results-segment { min-height: 40px; padding: 6px 12px; font-size: 11px; }
/* A linha de contagens é longa ("X equilibrado(s) · Y … — mostrando N de M");
   o nowrap herdado de .results-meta estourava a largura no mobile (375px). */
.audit-journals .results-meta { display: block; margin: 6px 0 0; white-space: normal; overflow-wrap: anywhere; }
.audit-journals-list { display: grid; gap: 10px; margin-top: 8px; }
.audit-journal.journal-balanced { border-left-color: var(--primary); }
.audit-journal.is-inconsistent {
  border-left-color: var(--danger);
  background: var(--danger-soft);
}
.audit-journal.is-inconsistent.journal-balanced { border-left-color: var(--danger); }
.audit-journal .member-column { margin-top: 2px; }

.audit-finding {
  content-visibility: auto;
  contain-intrinsic-size: 220px;
  display: grid;
  gap: 8px;
  padding: 14px 16px;
  border: 1px solid var(--outline-soft);
  border-left-width: 4px;
  border-radius: var(--radius-md);
  background: var(--surface-1);
  box-shadow: var(--shadow-1);
}

.audit-finding.classification-suspeito { border-left-color: var(--danger); }
.audit-finding.classification-indeterminado { border-left-color: var(--info); }

.audit-finding-head { display: flex; align-items: center; gap: 9px; }

.audit-finding-tag {
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.classification-suspeito .audit-finding-tag { background: var(--danger-soft); color: var(--danger); }
.classification-indeterminado .audit-finding-tag { background: var(--info-soft); color: var(--info); }
.audit-finding-kind { color: var(--text-2); font-size: 11px; }
.audit-finding h4 { margin: 0; overflow-wrap: anywhere; font-size: 14px; letter-spacing: -.01em; }
.audit-finding > p { margin: 0; overflow-wrap: anywhere; color: var(--text-2); font-size: 12px; }
.audit-finding-meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; overflow-wrap: anywhere; color: var(--text-2); font-size: 11px; }
.audit-finding-meta .audit-meta-sep { color: var(--text-2); opacity: .7; user-select: none; }
.audit-finding-meta .audit-finding-account { min-width: 0; }
.audit-finding-values { font-variant-numeric: tabular-nums; font-size: 12px; font-weight: 650; }

.audit-finding-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--outline-soft);
}

.audit-finding-actions .button { min-height: 44px; }
.audit-finding-actions-done { color: var(--text-2); }

.audit-decision-label {
  padding: 7px 11px;
  border-radius: 999px;
  background: var(--surface-2);
  color: var(--text-1);
  font-size: 11px;
  font-weight: 700;
}

.pair-fee-tip {
  margin: -4px 0 12px;
  padding: 10px 14px;
  border-radius: 10px;
  border: 1px solid #c5cee3;
  background: #e7eaf3;
  color: #2a3550;
  font-size: 13px;
  line-height: 1.45;
}
.pair-fee-tip[hidden] { display: none !important; }
.pair-fee-tip b { font-weight: 750; color: #315d8c; }
.pair-fee-tip em { font-style: normal; font-weight: 650; }
.match-total-label {
  display: block;
  margin-bottom: 2px;
  color: var(--text-2);
  font-size: 10px;
  font-weight: 750;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.control-panel-foot {
  display: grid;
  gap: 8px;
  margin: -16px 0 28px;
  padding: 0 4px;
  justify-items: start;
}

.start-hint {
  margin: 0;
  color: var(--text-2);
  font-size: 12px;
  max-width: 52rem;
}

.start-hint:empty { display: none; }

.start-hint::before { content: "Atenção: "; color: var(--danger); font-weight: 750; }
.start-hint.ready { color: var(--primary); }
.start-hint.ready::before { content: "Pronto: "; color: var(--primary); }

.match-progress {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: -12px 0 20px;
  padding: 13px 16px;
  border: 1px solid color-mix(in srgb, var(--info) 32%, var(--outline-soft));
  border-radius: var(--radius-md);
  background: #eaf1f8;
  color: #244768;
}

.match-progress div { display: grid; gap: 2px; }
.match-progress span { font-size: 12px; }
.progress-spinner { width: 22px; height: 22px; flex: 0 0 auto; border: 3px solid #bdcee0; border-top-color: var(--info); border-radius: 50%; animation: progress-spin 800ms linear infinite; }
@keyframes progress-spin { to { transform: rotate(360deg); } }

.results-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 4px 2px 12px;
  border-bottom: 1px solid var(--outline-soft);
}

.results-tools { display: flex; align-items: center; gap: 14px; }
.results-meta { color: var(--text-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
.compact-label { display: flex; align-items: center; gap: 8px; }
.compact-label select { width: 144px; margin: 0; }
.legend { color: var(--text-2); font-size: 11px; white-space: nowrap; }

.dot {
  width: 8px;
  height: 8px;
  display: inline-block;
  margin: 0 5px 0 10px;
  border-radius: 50%;
}

.dot.high { background: var(--primary); }
.dot.medium { background: var(--warning); }

.review-scope {
  margin: 12px 0;
  padding: 14px 16px;
  border: 1px solid color-mix(in srgb, var(--primary) 30%, transparent);
  border-radius: var(--radius-md);
  background: var(--primary-soft);
  color: #083b2c;
}

.match-diagnostics {
  display: grid;
  gap: 3px;
  margin: 0 0 12px;
  padding: 12px 14px;
  border: 1px solid #d8be70;
  border-radius: var(--radius-md);
  background: var(--warning-soft);
  color: #493500;
}

.match-diagnostics span { font-size: 12px; }

/* Um item por limite que o motor aplicou (deadline, pool, orçamento de combos). */
.match-limits { margin: 4px 0 0; padding-left: 18px; display: grid; gap: 2px; font-size: 12px; }

/* Aviso de lista truncada: Pendências (teto do backend) e colunas de comparação
   ao atingir o teto por coluna, onde o botão "Mostrar mais" não carrega mais. */
.list-truncated,
.column-capped {
  margin: 8px;
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
}

.list-truncated { margin: 0 0 10px; }

.manual-linker {
  margin: 12px 0 24px;
  padding: 16px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-lg);
  background: var(--surface-1);
  box-shadow: var(--shadow-1);
}

.manual-linker-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 14px;
}

.manual-linker-head h3,
.suggestions-head h3 { margin: 3px 0 2px; font-size: 18px; letter-spacing: -.015em; }
.manual-linker-head p:last-child { max-width: 82ch; margin: 0; color: var(--text-2); font-size: 12px; }

.manual-columns {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.comparison-column {
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-md);
  background: var(--surface-canvas);
}

.comparison-column > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 68px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--outline-soft);
  background: var(--surface-2);
}

.comparison-column > header > div { min-width: 0; display: flex; align-items: center; gap: 9px; }
.comparison-column h4 { margin: 0; overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.comparison-column header p { margin: 2px 0 0; overflow: hidden; color: var(--text-2); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.column-letter { width: 32px; height: 32px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 9px; background: var(--primary-soft); color: var(--primary); font-weight: 850; }
.column-count { flex: 0 0 auto; color: var(--text-2); font-size: 10px; font-variant-numeric: tabular-nums; }

.column-filters { display: grid; gap: 0; border-bottom: 1px solid var(--outline-soft); }
.column-account,
.column-search { display: block; padding: 9px 10px; font-size: 10px; }
.column-account { border-bottom: 1px solid var(--outline-soft); }
.column-account select,
.column-search input { width: 100%; min-height: 38px; margin-top: 3px; background: var(--surface-1); }
.side-card .filters label.is-account-hidden,
.side-card .filters label[hidden] { display: none; }

.comparison-records {
  max-height: min(54vh, 580px);
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 7px;
}

.comparison-record {
  min-width: 0;
  min-height: 64px;
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  padding: 8px 9px;
  border: 1px solid transparent;
  border-bottom-color: var(--outline-soft);
  border-radius: 7px;
  color: var(--text-1);
  cursor: pointer;
  transition: border-color 150ms ease, background-color 150ms ease;
}

.comparison-record:hover { background: var(--surface-2); }
.comparison-record.selected { border-color: var(--primary); background: var(--primary-soft); }
.comparison-record.is-linked { background: var(--surface-2); opacity: .92; cursor: default; }
.comparison-record.is-linked:hover { background: var(--surface-2); }
.comparison-record input,
.comparison-linked-mark { width: 18px; height: 18px; min-height: 18px; margin: 0; }
.comparison-linked-mark {
  display: grid;
  place-items: center;
  border-radius: 4px;
  background: var(--primary-soft);
  color: var(--primary);
  font-size: 11px;
  font-weight: 800;
}
.link-status-badge {
  display: inline-block;
  margin-left: 2px;
  padding: 1px 5px;
  border-radius: 999px;
  background: var(--primary-soft);
  color: var(--primary);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .02em;
  text-transform: uppercase;
  vertical-align: middle;
}
.link-status-badge.status-suggested { background: #f3e8d8; color: #946125; }
.link-status-badge.status-auto_matched { background: var(--primary-soft); color: var(--primary); }
.link-status-badge.status-confirmed { background: #e1eee7; color: #1f5c45; }
.comparison-record-body { min-width: 0; display: grid; gap: 1px; }
.comparison-record-body b { overflow-wrap: anywhere; font-size: 11px; }
.comparison-record-meta,
.comparison-record-account { overflow: hidden; color: var(--text-2); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.comparison-record > strong { padding-left: 8px; font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.column-more { width: calc(100% - 16px); margin: 8px; }
.column-empty { padding: 32px 18px; color: var(--text-2); text-align: center; }
.column-empty.wide { grid-column: 1 / -1; border: 1px dashed var(--outline); border-radius: var(--radius-md); }
.review-empty-cta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  min-height: 200px;
  justify-content: center;
  padding: 40px 24px;
}
.review-empty-cta p {
  margin: 0;
  max-width: 36rem;
  line-height: 1.45;
  color: var(--text-2);
}
.review-empty-cta .button.primary,
.pending-empty-cta .button.primary {
  min-height: 44px;
  min-width: 200px;
}
.pending-empty-cta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  grid-column: 1 / -1;
  padding: 40px 24px;
  text-align: center;
}
.pending-empty-cta p {
  margin: 0;
  max-width: 36rem;
  line-height: 1.45;
  color: var(--text-2);
}

.manual-link-summary {
  margin-top: 12px;
  padding: 12px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-md);
  background: var(--surface-2);
}

.selection-totals {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) minmax(130px, .55fr);
  align-items: center;
  gap: 10px;
}

.selection-totals > div { display: grid; gap: 2px; }
.selection-totals span { color: var(--text-2); font-size: 10px; }
.selection-totals b { font-size: 13px; font-variant-numeric: tabular-nums; }
.selection-arrow { color: var(--text-2); font-size: 18px !important; }
.selection-difference { padding: 8px 10px; border-radius: var(--radius-sm); }
.selection-difference.balanced { background: var(--primary-soft); color: var(--primary); }
.selection-difference.has-difference { background: var(--warning-soft); color: #493500; }
.manual-note { display: block; margin-top: 10px; }
.manual-note input { margin-top: 3px; }
.manual-link-action { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 10px; }
.manual-link-action p { margin: 0; color: var(--text-2); font-size: 11px; }
.manual-link-action .button { min-width: 170px; }

.active-links { margin-top: 10px; }
.active-links details { border: 1px solid var(--outline-soft); border-radius: var(--radius-md); background: var(--surface-1); }
.active-links summary { min-height: 44px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 12px; cursor: pointer; font-weight: 720; }
.active-links summary b { min-width: 24px; padding: 3px 7px; border-radius: 999px; background: var(--primary-soft); color: var(--primary); text-align: center; font-size: 10px; }
.active-link-list { display: grid; gap: 5px; padding: 0 8px 8px; }
.active-link-list > p { margin: 8px; color: var(--text-2); }
.active-link-row { display: grid; grid-template-columns: 130px 210px minmax(0, 1fr); gap: 10px; padding: 8px 10px; border-radius: 7px; background: var(--surface-2); font-size: 11px; }
.active-link-row span:nth-child(2) { font-variant-numeric: tabular-nums; }
.active-link-row small { color: var(--text-2); }

.suggestions-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 20px;
  padding: 16px 2px 10px;
  border-top: 1px solid var(--outline-soft);
}
.suggestion-tune-summary {
  margin: 4px 0 0;
  color: var(--text-2);
  font-size: 12px;
  line-height: 1.35;
  max-width: 42rem;
}
.motor-results-block { display: contents; }
.motor-results-block.hidden { display: none; }
.suggestion-tune-dialog { width: min(560px, calc(100vw - 32px)); }
.suggestion-tune-option {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  align-items: start;
  margin: 14px 0 10px;
  padding: 10px 12px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-md);
  background: var(--surface-2);
  cursor: pointer;
}
.suggestion-tune-option span { display: grid; gap: 3px; }
.suggestion-tune-option b { font-size: 13px; }
.suggestion-tune-option small { color: var(--text-2); font-size: 12px; line-height: 1.35; }
.suggestion-tune-same-file {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 0 0 12px;
  padding: 12px;
  border: 1px dashed var(--outline-soft);
  border-radius: var(--radius-md);
}
.suggestion-tune-same-file label {
  display: grid;
  gap: 4px;
  font-size: 12px;
  font-weight: 650;
  color: var(--text-2);
}
.suggestion-tune-same-file label:first-child { grid-column: 1 / -1; }
.suggestion-tune-same-file select {
  min-height: 40px;
  padding: 8px 10px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-sm);
  background: #fff;
  font: inherit;
}
.suggestion-tune-params {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin: 14px 0 12px;
}
.suggestion-tune-params label {
  display: grid;
  gap: 4px;
  font-size: 12px;
  font-weight: 650;
  color: var(--text-2);
}
.suggestion-tune-params input {
  min-height: 40px;
  padding: 8px 10px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-sm);
  background: #fff;
  font: inherit;
}
.suggestion-tune-accounts {
  margin: 0;
  padding: 12px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-md);
  background: var(--surface-2);
}
.suggestion-tune-accounts legend {
  padding: 0 6px;
  font-size: 11px;
  font-weight: 750;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--primary);
}
.suggestion-tune-account-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 8px 0 4px;
}
.suggestion-tune-account-actions .button { min-height: 34px; font-size: 12px; }
.suggestion-tune-account-actions .button[aria-pressed="true"] {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary);
}
.icon-info-btn {
  width: 44px;
  height: 44px;
  border: 1px solid var(--outline-soft);
  border-radius: 999px;
  background: #fff;
  color: var(--text-2);
  font-size: 16px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  flex: 0 0 auto;
}
.icon-info-btn:hover { border-color: #9aa89a; color: var(--text-1, #222); }
.icon-info-btn:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}
.account-nature-dialog {
  width: min(720px, calc(100vw - 24px));
  max-height: min(80vh, 720px);
  padding: 0;
  border: 1px solid var(--outline-soft);
  border-radius: 16px;
  background: var(--surface-1, #fff);
}
.account-nature-dialog::backdrop { background: rgba(20, 28, 24, .35); }
.account-nature-form { display: grid; gap: 12px; padding: 16px 18px 18px; }
.account-nature-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}
.account-nature-head h2 { margin: 4px 0 4px; font-size: 1.15rem; }
.account-nature-head p { margin: 0; color: var(--text-2); font-size: 13px; }
.account-nature-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 16px;
  align-items: center;
  justify-content: space-between;
  padding: 10px 12px;
  border: 1px solid var(--outline-soft);
  border-radius: 12px;
  background: var(--surface-2, #f6f7f5);
}
.account-nature-toggle-row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 600;
}
.account-nature-counts { margin: 0; color: var(--text-2); font-size: 12px; }
.account-nature-columns {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  min-height: 0;
}
.account-nature-columns h3 {
  margin: 0 0 8px;
  font-size: 13px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.account-nature-columns h3 b {
  font-size: 11px;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 999px;
  background: var(--surface-2, #eef1ee);
  color: var(--text-2);
}
.account-nature-list {
  list-style: none;
  margin: 0;
  padding: 0;
  max-height: min(42vh, 360px);
  overflow: auto;
  border: 1px solid var(--outline-soft);
  border-radius: 12px;
  background: #fff;
}
.account-nature-list li {
  display: grid;
  gap: 2px;
  padding: 8px 10px;
  border-bottom: 1px solid var(--outline-soft);
  font-size: 12.5px;
}
.account-nature-list li:last-child { border-bottom: 0; }
.account-nature-list b { font-weight: 650; }
.account-nature-list small { color: var(--text-2); font-size: 11px; }
.account-nature-list .empty { color: var(--text-2); padding: 14px 10px; }
@media (max-width: 820px) {
  .account-nature-columns { grid-template-columns: 1fr; }
}
.suggestion-tune-account-list {
  display: grid;
  gap: 6px;
  max-height: min(280px, 40vh);
  overflow: auto;
  margin-top: 6px;
}
.suggestion-tune-account.is-synthetic { border: 1px dashed #c4a574; }
.suggestion-tune-account {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  align-items: start;
  padding: 8px 10px;
  border-radius: var(--radius-sm);
  background: #fff;
  cursor: pointer;
}
.suggestion-tune-account span { display: grid; gap: 2px; min-width: 0; }
.suggestion-tune-account b { font-size: 13px; }
.suggestion-tune-account small { color: var(--text-2); font-size: 11px; overflow-wrap: anywhere; }
.suggestion-tune-empty { margin: 4px 0; color: var(--text-2); font-size: 13px; }
.suggestion-tune-cross-hint {
  margin: 10px 0 0;
  padding: 10px 12px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-sm);
  background: var(--surface-2);
  color: var(--text-2);
  font-size: 12px;
  line-height: 1.4;
}
.suggestion-tune-error {
  margin: 10px 0 0;
  padding: 10px 12px;
  border: 1px solid #e2b4b4;
  border-radius: var(--radius-sm);
  background: #fdf2f2;
  color: #7a1f1f;
  font-size: 12px;
  line-height: 1.4;
}
.suggestion-tune-rules-hint { margin: 12px 0 0; color: var(--text-2); font-size: 12px; }
button.linkish {
  display: inline;
  padding: 0;
  border: 0;
  background: none;
  color: var(--primary);
  font: inherit;
  font-weight: 750;
  text-decoration: underline;
  cursor: pointer;
}

.inline-error { grid-column: 1 / -1; display: grid; gap: 3px; padding: 16px; border: 1px solid var(--danger); border-radius: var(--radius-md); background: var(--danger-soft); color: var(--danger); }

.scope-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.scope-heading > div { min-width: 0; display: grid; gap: 2px; }
.scope-kicker { color: var(--primary); font-size: 9px; font-weight: 850; letter-spacing: .12em; }
.scope-heading strong { font-size: 16px; }
.scope-heading small { color: #355f50; }
.scope-current,
.scope-warning { padding: 7px 11px; border-radius: 999px; font-size: 11px; font-weight: 750; }
.scope-current { background: rgba(255, 255, 255, .7); color: var(--primary); white-space: nowrap; }
.scope-warning { max-width: 400px; display: flex; align-items: center; gap: 9px; background: var(--warning-soft); color: #493500; }
.scope-warning button { min-height: 34px; padding: 5px 10px; border: 1px solid #9c7e2d; border-radius: 999px; background: #fff9e7; color: #493500; font-size: 10px; font-weight: 750; white-space: nowrap; }
.scope-sides { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
.scope-side { min-width: 0; display: grid; gap: 2px; padding: 9px 11px; border-radius: var(--radius-sm); background: rgba(255, 255, 255, .58); }
.scope-side b { color: var(--primary); font-size: 11px; }
.scope-side span { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.scope-side.outside-pair { border: 1px dashed color-mix(in srgb, var(--primary) 30%, transparent); background: rgba(255, 255, 255, .32); }

.results { display: grid; gap: 8px; margin-top: 12px; }

.match {
  contain-intrinsic-size: 190px;
  content-visibility: auto;
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr) 150px;
  align-items: center;
  gap: 16px;
  padding: 14px 16px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-md);
  background: var(--surface-1);
  box-shadow: var(--shadow-1);
}

.match:hover { border-color: var(--outline); }
.match.is-inconsistent {
  border-color: color-mix(in srgb, var(--danger) 40%, var(--outline-soft));
  border-left: 4px solid var(--danger);
  background: var(--danger-soft);
}
.member.is-inconsistent {
  border-color: color-mix(in srgb, var(--danger) 35%, transparent);
  background: color-mix(in srgb, var(--danger-soft) 75%, var(--surface-2));
}
.comparison-record.is-inconsistent {
  border-color: color-mix(in srgb, var(--danger) 40%, var(--outline-soft));
  background: var(--danger-soft);
}
.comparison-record.is-inconsistent.selected {
  border-color: var(--danger);
  background: color-mix(in srgb, var(--danger-soft) 70%, var(--primary-soft));
}
.candidate-card.is-inconsistent,
.pending-record.is-inconsistent {
  border-color: color-mix(in srgb, var(--danger) 40%, var(--outline-soft));
  background: var(--danger-soft);
}
.match-status { color: var(--text-2); font-size: 11px; }
.match-status b { display: block; color: var(--text-1); font-size: 18px; line-height: 1.3; }
.members { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) 28px minmax(0, 1fr); align-items: center; gap: 8px; }
.member-column { min-width: 0; display: grid; gap: 5px; }
.member { overflow-wrap: anywhere; padding: 8px 10px; border: 1px solid transparent; border-radius: 7px; background: var(--surface-2); font-size: 11px; font-variant-numeric: tabular-nums; }
.member b { display: block; color: var(--text-1); }
.member-meta { display: block; color: var(--text-2); }
.member.is-ofx-mirror {
  background: #eef0ee;
  border-color: #d5dad5;
  color: var(--text-2);
  opacity: .78;
}
.member.is-ofx-mirror b { color: #5a635c; font-weight: 650; }
/* Item 7: deltas explícitos alvo × candidato no popup (Δ valor · Δ dias). */
.candidate-deltas {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

#candidatesShowMore { width: 100%; margin-top: 8px; }

/* D9: selo "doc N" — identificador lido do texto do histórico (NF/DOC.).
   Neutro e discreto; o batimento só o usa quando os dois lados coincidem. */
.docref-badge {
  display: inline-block;
  padding: 1px 7px;
  border-radius: 999px;
  border: 1px solid #c5ccc5;
  background: #f7f8f7;
  color: #4a5350;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .02em;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

/* Q1: selo "possível estorno" — sinal computado do histórico original; nunca
   reclassifica nem decide. Âmbar discreto, mesmo formato do .mirror-badge. */
.reversal-badge {
  display: inline-block;
  padding: 1px 7px;
  border-radius: 999px;
  border: 1px solid #d8be70;
  background: var(--warning-soft);
  color: #6b5200;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .02em;
  white-space: nowrap;
}

.mirror-badge {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: 999px;
  border: 1px solid #c5ccc5;
  background: #f7f8f7;
  color: #5a635c;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .02em;
  vertical-align: 1px;
}
/* Conta reduzida+nome e código completo na mesma linha. */
.account-line {
  display: block;
  margin-top: 2px;
  color: var(--text-2);
  font-size: 10px;
  line-height: 1.4;
  overflow-wrap: anywhere;
}
.account-line.is-inline { display: inline; margin-top: 0; }
.account-journal { color: var(--text-1); font-variant-numeric: tabular-nums; font-weight: 600; }
.account-sep { color: var(--text-2); }
.account-reduced { color: var(--text-2); }
.full-code {
  display: inline;
  color: var(--text-2);
  font: 10px/1.4 ui-monospace, "SFMono-Regular", Consolas, monospace;
}
.account-line .full-code::before { content: "· "; }
.equals { color: var(--text-2); text-align: center; font-size: 17px; }
.match-total { text-align: right; font-variant-numeric: tabular-nums; }
.match-total b { font-size: 17px; }
.match-total small { display: block; color: var(--text-2); }
.match-actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding-top: 10px; border-top: 1px solid var(--outline-soft); }
.match-actions p { margin: 0 auto 0 0; color: var(--text-2); font-size: 11px; }

/* Chips de leitura rápida da sugestão: valor, dias e confiança sem ler a frase. */
.match-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.match-criteria {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 8px;
}
.match-chip {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 2px 8px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--primary) 28%, var(--outline-soft));
  background: var(--primary-soft, #e8f0e8);
  color: var(--primary);
  font-size: 11px;
  font-weight: 650;
}
.dry-run-banner {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 12px;
  margin: 0 0 14px;
  padding: 10px 14px;
  border-radius: 12px;
  border: 1px solid #e0c37a;
  background: #fffaf0;
  color: #5c4a14;
  font-size: 13px;
}
.dry-run-banner strong { font-weight: 750; }
.chip {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 700;
  white-space: nowrap;
}
.chip-ok { background: var(--primary-soft); color: #0b513c; }
.chip-warn { background: var(--warning-soft); color: #493500; }
.chip-danger {
  background: color-mix(in srgb, var(--danger-soft) 70%, #fff);
  color: var(--danger);
  border: 1px solid color-mix(in srgb, var(--danger) 28%, transparent);
}
.chip-neutral { background: var(--surface-2); color: var(--text-2); border: 1px solid var(--outline-soft); }
.chip-high { background: var(--primary-soft); color: #0b513c; }
.chip-medium { background: var(--warning-soft); color: #493500; }

/* Registro sem conta contábil (extrato ainda não conciliado): rotulado, não omitido. */
.no-account { display: block; margin-top: 2px; color: var(--text-2); font-size: 10px; font-style: italic; }

.empty-state {
  margin-top: 12px;
  padding: 40px 24px;
  border: 1px dashed var(--outline);
  border-radius: var(--radius-md);
  background: var(--surface-1);
  color: var(--text-2);
  text-align: center;
}

.load-more-wrap { display: flex; justify-content: center; padding: 18px 0; }

.results-lead {
  max-width: 72ch;
  margin: 6px 0 0;
  color: var(--text-2);
  font-size: 13px;
  line-height: 1.45;
}
.results-segments {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 14px;
}
.results-segment {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border: 1px solid var(--outline-soft);
  border-radius: 999px;
  background: var(--surface-1);
  color: var(--text-2);
  font: inherit;
  font-size: 12px;
  font-weight: 650;
  cursor: pointer;
  transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}
.results-segment b {
  min-width: 1.4em;
  padding: 1px 6px;
  border-radius: 999px;
  background: var(--surface-2);
  color: var(--text-1);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.results-segment.active {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary);
}
.results-segment.active b { background: color-mix(in srgb, var(--primary) 18%, #fff); color: var(--primary); }
.results-segment:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.pending-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 4px 2px 18px;
  border-bottom: 1px solid var(--outline-soft);
}

.pending-head h2 { margin: 3px 0 4px; font-size: 25px; }
.pending-head p:last-child { max-width: 78ch; margin: 0; color: var(--text-2); }
.pending-total { min-width: 72px; min-height: 72px; display: grid; place-items: center; border-radius: 22px; background: var(--warning-soft); color: #493500; font-size: 23px; font-weight: 800; font-variant-numeric: tabular-nums; }
.pending-accounts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; margin: 16px 0; }
button.pending-account {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px 12px;
  padding: 13px 14px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-md);
  background: var(--surface-1);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
button.pending-account:hover {
  border-color: var(--primary);
  background: var(--primary-soft);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--primary) 35%, transparent);
}
button.pending-account:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}
.pending-account b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pending-account span { color: var(--text-2); font-size: 11px; }
.pending-account-count { color: var(--text-1); font-weight: 700; font-variant-numeric: tabular-nums; }
.pending-account-total { grid-row: 1 / 3; grid-column: 2; align-self: center; font-variant-numeric: tabular-nums; }
.pending-account-action {
  grid-column: 1 / -1;
  margin: 2px 0 0;
  color: var(--primary);
  font-size: 11px;
  font-style: normal;
  font-weight: 600;
}
#manualLinker.is-pending-focus {
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--primary) 45%, transparent);
  border-radius: var(--radius-md);
}
.pending-records { overflow: hidden; border: 1px solid var(--outline-soft); border-radius: var(--radius-md); background: var(--surface-1); }
.pending-record { content-visibility: auto; contain-intrinsic-size: 44px; display: grid; grid-template-columns: 92px minmax(180px, 1.5fr) minmax(160px, 1fr) 130px; align-items: center; gap: 12px; padding: 10px 13px; border-bottom: 1px solid var(--outline-soft); font-size: 12px; }
.pending-record:last-child { border-bottom: 0; }
.pending-record > span { overflow: hidden; color: var(--text-2); text-overflow: ellipsis; white-space: nowrap; }
.pending-record strong { text-align: right; font-variant-numeric: tabular-nums; }

.app-dialog {
  width: min(560px, calc(100vw - 32px));
  max-height: min(760px, calc(100dvh - 32px));
  padding: 0;
  overflow: auto;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-lg);
  background: var(--surface-1);
  color: var(--text-1);
  box-shadow: 0 24px 70px rgba(23, 32, 27, .28);
}

.app-dialog::backdrop { background: rgba(18, 27, 22, .55); backdrop-filter: blur(3px); }
.dialog-body { padding: 24px; }
.dialog-body h2 { margin-bottom: 6px; font-size: 22px; }
.dialog-body > p { color: var(--text-2); }
.dialog-options { display: grid; gap: 8px; margin: 18px 0 0; padding: 0; border: 0; }
.dialog-option { min-height: 50px; display: grid; grid-template-columns: 20px minmax(0, 1fr); align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--outline-soft); border-radius: var(--radius-sm); color: var(--text-1); cursor: pointer; }
.dialog-option:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); }
.dialog-option input { width: 18px; min-height: 18px; margin: 0; }
.dialog-option span { display: grid; }
.dialog-option small { color: var(--text-2); }
.dialog-actions { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 24px; border-top: 1px solid var(--outline-soft); background: var(--surface-2); }
.dialog-field { display: block; margin-top: 16px; }

/* Popup de candidatos de vínculo (V2-019 / V2-030): navegação na coluna,
   seleção + Salvar vínculo, fechar no backdrop. */
.candidates-dialog { width: min(720px, calc(100vw - 24px)); }
.candidates-nav {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.candidates-nav-meta { margin: 0; text-align: center; }
.candidates-nav .button.tiny { min-width: 42px; font-size: 16px; line-height: 1; }
.candidates-list { display: grid; gap: 8px; margin-top: 16px; max-height: min(48vh, 420px); overflow-y: auto; }
.candidate-card {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-sm);
  background: var(--surface-1);
  cursor: pointer;
}
.candidate-card.is-selected { border-color: var(--primary); background: var(--primary-soft); box-shadow: inset 0 0 0 1px var(--primary); }
.candidate-card.is-inconsistent.is-selected {
  border-color: var(--danger);
  background: color-mix(in srgb, var(--danger-soft) 70%, var(--primary-soft));
  box-shadow: inset 0 0 0 1px var(--danger);
}
.candidate-card-main { min-width: 0; display: grid; gap: 2px; }
.candidate-card-main b { overflow-wrap: anywhere; font-size: 12px; }
.candidate-card-meta,
.candidate-card-account { overflow: hidden; color: var(--text-2); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.candidate-rationale { margin: 2px 0 0; color: var(--text-2); font-size: 11px; }
.candidate-card-side { display: grid; gap: 6px; justify-items: end; align-content: start; }
.candidate-card-side strong { font-size: 13px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.candidate-card.is-combo .candidate-card-main { gap: 4px; }
.candidate-combo-legs {
  margin: 4px 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 6px;
}
.candidate-combo-legs li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  padding: 6px 8px;
  border: 1px solid var(--outline-soft);
  border-radius: var(--radius-sm);
  background: var(--surface-2, var(--surface-1));
}
.candidate-combo-leg-main { min-width: 0; display: grid; gap: 2px; }
.candidate-combo-legs li strong {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.candidates-empty { padding: 24px 16px; border: 1px dashed var(--outline); border-radius: var(--radius-sm); color: var(--text-2); text-align: center; }
#candidatesTargetSummary { overflow-wrap: anywhere; }

#toast {
  position: fixed;
  right: 22px;
  bottom: max(22px, env(safe-area-inset-bottom));
  z-index: var(--z-toast);
  max-width: min(420px, calc(100vw - 32px));
  padding: 11px 15px;
  border-radius: var(--radius-sm);
  background: #29312d;
  color: #fff;
  box-shadow: var(--shadow-2);
  opacity: 0;
  pointer-events: none;
  transform: translateY(8px);
  transition: opacity 160ms ease, transform 160ms ease;
}

#toast.show { opacity: 1; transform: none; }

@media (max-width: 1100px) {
  .filters { grid-template-columns: 1fr 1fr; }
  .filters label:first-child { grid-column: 1 / -1; }
  .control-panel { position: static; grid-template-columns: repeat(3, 1fr); }
  .control-panel > div { grid-column: 1 / -1; }
  .control-panel .button { grid-column: 1 / -1; }
  .side-card.inactive-pair { background: #fafbfa; }
  .ledger-audit-panel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ledger-audit-actions { grid-column: 1 / -1; }
}

@media (max-width: 950px) {
  .topbar-scope { width: 100%; flex-wrap: wrap; }
  .top-select,
  .top-select--company,
  .top-select--analysis,
  .top-select--competency {
    flex: 1 1 140px;
    max-width: none;
  }
  .top-select select {
    min-width: 0;
    max-width: none;
    width: 100%;
  }
  .hero { display: grid; }
  .sides { grid-template-columns: 1fr; }
  .side-card.inactive-pair { background: #fafbfa; }
  .pending-accounts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pending-record { grid-template-columns: 82px minmax(150px, 1fr) 120px; }
  .pending-record > span:nth-child(3) { display: none; }
  .active-link-row { grid-template-columns: 110px 180px minmax(0, 1fr); }
  .audit-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  body { font-size: 16px; }
  .topbar { position: static; }
  .topbar-inner { padding: 10px 12px; }
  .brand-name { font-size: 17px; }
  .brand small { display: none; }
  .topbar-scope {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px 10px;
  }
  #globalCompetencyField,
  .topbar-analytic,
  .workspace-status-badge { grid-column: 1 / -1; width: 100%; }
  .top-select select { font-size: 16px; }
  .topbar-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    width: 100%;
  }
  #continueLater,
  #closeWorkspace,
  #reopenWorkspace,
  #newWorkspace { grid-column: 1 / -1; }
  main { padding: 16px 12px 60px; }
  .workflow-tabs { margin-inline: 0; border-radius: var(--radius-md); }
  .workflow-tab { min-height: 48px; flex: 0 0 auto; padding-inline: 11px; }
  .hero { gap: 18px; }
  .hero h1 { font-size: 30px; }
  .hero > div > p:last-child { font-size: 15px; }
  .metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .metric { min-width: 0; padding: 10px; }
  .metric span { font-size: 10px; }
  .filters { grid-template-columns: 1fr; }
  .filters label:first-child { grid-column: auto; }
  select, input { min-height: 48px; font-size: 16px; }
  .control-panel { grid-template-columns: 1fr; padding: 16px; }
  .control-panel > div,
  .control-panel .button { grid-column: auto; }
  .control-panel .button { min-height: 48px; }
  .control-panel-foot { margin-top: -8px; }
  .results-head { align-items: stretch; flex-direction: column; gap: 12px; }
  .manual-linker { padding: 12px; }
  .manual-linker-head,
  .suggestions-head { align-items: stretch; flex-direction: column; }
  .manual-columns { grid-template-columns: 1fr; }
  .comparison-records { max-height: none; overflow: visible; }
  .selection-totals { grid-template-columns: 1fr auto 1fr; }
  .selection-difference { grid-column: 1 / -1; }
  .manual-link-action { align-items: stretch; flex-direction: column; }
  .manual-link-action .button { width: 100%; min-height: 48px; }
  .active-link-row { grid-template-columns: 1fr; }
  /* Uma coluna: com dois filtros (Status + Cardinalidade), o grid `1fr auto`
     estourava a largura de 375px — o select tem largura fixa e o rótulo não
     encolhe. Empilhado, cada filtro ocupa a linha inteira. */
  .results-tools { display: grid; grid-template-columns: 1fr; width: 100%; gap: 8px; }
  .results-tools .compact-label { display: grid; grid-template-columns: auto 1fr; }
  .results-tools .compact-label select { width: 100%; }
  .suggestion-tune-params { grid-template-columns: 1fr; }
  .suggestion-tune-same-file { grid-template-columns: 1fr; }
  .suggestion-tune-same-file label:first-child { grid-column: auto; }
  .compact-label select { font-size: 16px; }
  .legend { grid-column: 1 / -1; }
  .scope-heading { align-items: stretch; flex-direction: column; gap: 9px; }
  .scope-current,
  .scope-warning { border-radius: var(--radius-sm); white-space: normal; }
  .scope-warning { align-items: stretch; flex-direction: column; }
  .scope-sides { grid-template-columns: 1fr; }
  .match { grid-template-columns: 1fr; padding: 12px; }
  .match-total { display: flex; align-items: baseline; gap: 8px; text-align: left; }
  .match-actions { flex-wrap: wrap; }
  .match-actions p { flex-basis: 100%; }
  .match-actions .button { min-height: 44px; flex: 1; }
  .pending-head { align-items: flex-start; }
  .pending-total { min-width: 60px; min-height: 60px; border-radius: 18px; font-size: 20px; }
  .pending-accounts { grid-template-columns: 1fr; }
  .pending-record { grid-template-columns: 76px minmax(0, 1fr); font-size: 12px; }
  .pending-record > span:nth-child(3) { display: none; }
  .pending-record strong { grid-column: 2; color: var(--primary); text-align: left; }
  .dialog-actions { flex-direction: column-reverse; }
  .dialog-actions .button { width: 100%; min-height: 48px; }
  .ledger-audit-panel { grid-template-columns: 1fr; padding: 16px; }
  .ledger-audit-actions { flex-direction: column; }
  .ledger-audit-actions .button { width: 100%; min-height: 48px; }
  .audit-summary { grid-template-columns: 1fr; }
  .audit-filters { flex-direction: column; align-items: stretch; }
  .audit-filters .compact-label select { width: 100%; }
  .audit-finding-actions { flex-direction: column; align-items: stretch; }
  .audit-finding-actions .button { width: 100%; }
  .audit-finding-actions-done { flex-direction: column; align-items: stretch; }
  .rules-panel { padding: 16px; }
  .rule-filters,
  .rule-actions { grid-template-columns: 1fr; }
  .rule-row { flex-direction: column; align-items: stretch; }
  .rule-form-actions { flex-direction: column; }
  .rule-form-actions .button { width: 100%; min-height: 48px; }
}

@media (pointer: coarse) {
  button,
  select,
  input,
  .dropzone { min-height: 48px; }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}


.start-hint-action{margin:0.5rem 0 0;display:inline-flex}
.start-hint-action.hidden{display:none}

.audit-account-cards-wrap { margin: 16px 0 8px; }
.audit-account-cards-head { margin-bottom: 10px; }
.audit-account-cards-head h3 { margin: 0 0 4px; font-size: 1.05rem; }
.audit-account-cards-head p { margin: 0; color: var(--text-2); font-size: 0.92rem; max-width: 62ch; }
button.audit-account-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: auto auto auto;
  gap: 2px 10px;
  text-align: left;
  padding: 12px 12px 10px;
  border: 1px solid var(--line, #d7ddd6);
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  min-height: 92px;
}
button.audit-account-card:hover { border-color: #9aa89a; box-shadow: 0 1px 0 rgba(0,0,0,.04); }
button.audit-account-card.is-bank { border-color: #c5d4e8; background: #f7faff; }
button.audit-account-card.is-wallet { border-color: #b8c9b0; background: #f6faf4; }
button.audit-account-card.has-issue { cursor: pointer; }
button.audit-account-card.tone-ok { border-color: #8fbf9a; background: #f3faf4; }
button.audit-account-card.tone-warn { border-color: #e0c37a; background: #fffaf0; }
button.audit-account-card.tone-error { border-color: #e0a0a0; background: #fff5f5; }
button.audit-account-card.tone-muted { border-color: #d7ddd6; }
.audit-account-card b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.audit-account-card .audit-card-fullcode { grid-column: 1; color: var(--text-2); font-size: 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.audit-account-card .audit-card-meta { color: var(--text-2); font-size: 11px; }
.audit-account-card .audit-card-total {
  grid-row: 1 / 3;
  grid-column: 2;
  align-self: center;
  justify-self: end;
  display: grid;
  gap: 2px;
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: 760;
  font-size: 15px;
  line-height: 1.15;
}
.audit-account-card .audit-card-total small {
  color: var(--text-2);
  font-size: 10px;
  font-weight: 650;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.audit-account-card .audit-card-balances { grid-column: 1 / -1; font-size: 11px; color: var(--text-2); display: flex; flex-wrap: wrap; gap: 8px 14px; }
.audit-account-card .audit-card-msg {
  grid-column: 1 / -1;
  display: grid;
  gap: 6px;
  font-size: 12px;
  line-height: 1.45;
  margin-top: 2px;
  text-align: left;
}
.audit-account-card .audit-card-badge {
  display: inline-block;
  width: max-content;
  margin: 0 0 2px;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(23, 32, 27, .06);
  font-style: normal;
  font-weight: 750;
  font-size: 10px;
  letter-spacing: .02em;
}
.audit-account-card .audit-card-headline { display: block; margin: 0; font-weight: 600; }
.audit-account-card .audit-card-badge.cause-missing_data { color: #9a6b00; background: var(--warning-soft); }
.audit-account-card .audit-card-badge.cause-divergence { color: #963732; background: var(--danger-soft); }
.audit-account-card .audit-card-badge.cause-info { color: #176b52; background: var(--primary-soft); }
.audit-account-card .audit-card-details { grid-column: 1 / -1; margin: 4px 0 0; padding-left: 1.1em; color: var(--text-2); font-size: 11px; line-height: 1.35; }
.audit-account-card .audit-card-details li { margin: 2px 0; }
.audit-account-card .audit-card-next { grid-column: 1 / -1; font-size: 11px; line-height: 1.35; margin-top: 4px; color: var(--text-1, #222); }
.audit-account-card .audit-card-next em { font-style: normal; font-weight: 650; }
.audit-account-card .audit-card-action { grid-column: 1 / -1; font-size: 11px; font-style: normal; color: var(--primary); font-weight: 650; margin-top: 2px; }
.audit-account-card .audit-card-action.muted { color: var(--text-2); font-weight: 500; }
.audit-finding-actions-row { margin-top: 8px; }
.audit-journal-more { margin: 6px 0 0; color: var(--text-2); font-size: 12px; }
.audit-detail-dialog {
  width: min(720px, calc(100vw - 24px));
  max-height: min(86vh, 820px);
  padding: 0;
  border: 1px solid var(--outline-soft);
  border-radius: 16px;
  background: var(--surface-1);
}
.audit-detail-dialog::backdrop { background: rgba(20, 28, 24, .38); }
.audit-detail-form { display: grid; gap: 12px; padding: 16px 18px 18px; }
.audit-detail-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}
.audit-detail-head h2 { margin: 4px 0; font-size: 1.2rem; }
.audit-detail-body {
  display: grid;
  gap: 14px;
  min-height: 0;
  max-height: min(58vh, 520px);
  overflow: auto;
}
.audit-detail-section h3 {
  margin: 0 0 8px;
  font-size: 13px;
  font-weight: 750;
}
.audit-detail-section p { margin: 0 0 8px; color: var(--text-2); font-size: 13px; }
.audit-detail-totals,
.audit-detail-values {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin: 0 0 4px;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
.audit-detail-list {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 1px solid var(--outline-soft);
  border-radius: 12px;
  background: #fff;
}
.audit-detail-list li {
  display: grid;
  gap: 2px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--outline-soft);
  font-size: 13px;
}
.audit-detail-list li:last-child { border-bottom: 0; }
.audit-detail-list small { color: var(--text-2); font-size: 11.5px; }
.audit-detail-list p { margin: 4px 0 0; color: var(--text-2); font-size: 12.5px; }
/* Explicação genérica do achado recolhida — não repete o mesmo texto em cada linha. */
.audit-detail-more { margin-top: 2px; }
.audit-detail-more summary {
  cursor: pointer;
  color: var(--text-2);
  font-size: 11.5px;
  list-style: none;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  user-select: none;
}
.audit-detail-more summary::before { content: "▸"; font-size: 10px; }
.audit-detail-more[open] summary::before { content: "▾"; }
.audit-detail-more summary:hover { color: var(--text-1); }
.audit-detail-more p { margin: 4px 0 2px; }
.audit-detail-footer {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
  padding-top: 4px;
  border-top: 1px solid var(--outline-soft);
}

/* —— Importações (Dattos-style job history) —— */
.imports-panel { margin-top: 16px; }
.imports-table-wrap { overflow-x: auto; border: 1px solid var(--outline-soft); border-radius: 12px; background: var(--surface); }
.imports-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.imports-table th, .imports-table td { padding: 10px 12px; text-align: left; border-bottom: 1px solid var(--outline-soft); }
.imports-table th { font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--muted); }
.import-row.is-ok .import-status { color: var(--ok); }
.import-row.is-warn .import-status { color: var(--warn); }
.import-row.is-fail .import-status { color: var(--danger); }
.prep-file-row { display: grid; grid-template-columns: auto 1fr auto auto; gap: 8px; align-items: center; }
.prep-map-btn { justify-self: end; }

/* —— Pendências: filtros Dattos “Não encontrados” —— */
.pending-filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.chip-filter { border: 1px solid var(--outline-soft); background: var(--surface); color: var(--text); border-radius: 999px; padding: 6px 14px; font-size: 12px; cursor: pointer; }
.chip-filter.active { background: var(--accent-soft); border-color: var(--accent); color: var(--accent-strong); font-weight: 600; }

/* —— Field map dialog —— */
.field-map-slots { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 16px; margin: 12px 0 16px; }
.field-map-slot { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.field-map-slot span { font-weight: 600; }
.field-map-slot .req { font-weight: 500; color: var(--muted); font-size: 11px; }
.field-map-slot small { color: var(--muted); font-size: 11px; }
.field-map-slot select { min-height: 40px; }
.field-map-dataset { font-size: 13px; color: var(--muted); margin-bottom: 8px; }
.field-map-preview-wrap { margin: 8px 0 0; }
.field-map-preview-label { font-size: 12px; font-weight: 600; margin: 0 0 6px; }
.field-map-preview { width: 100%; border-collapse: collapse; font-size: 12px; }
.field-map-preview th, .field-map-preview td { border: 1px solid var(--outline-soft); padding: 6px 8px; text-align: left; }
.field-map-preview th { background: var(--surface-1, #f4f6f5); }
.workflow-tab span:first-child { opacity: 0.7; font-size: 11px; }

/* Lote 2: separador entre os grupos de filtro (motivo × idade) em Pendências. */
.pending-filter-divider { width: 1px; align-self: stretch; background: var(--outline-soft); margin: 0 4px; }

/* D2: bloco de tolerância no diálogo de regras da sugestão automática. */
.suggestion-tune-tolerance { border: 1px solid var(--outline-soft); border-radius: var(--radius-md); padding: 10px 12px; margin-top: 10px; }
.suggestion-tune-tolerance legend { font-size: 12px; font-weight: 700; padding: 0 4px; }
.suggestion-tune-tolerance > label { display: block; margin-top: 8px; font-size: 12px; }
.suggestion-tune-tolerance input[type="text"], .suggestion-tune-tolerance #tuneToleranceNote { width: 100%; }

/* Item 6: worksheet fechado + aberto = total (Conferência). */
.cleared-open { margin: 0 0 12px; padding: 10px 14px; border: 1px solid var(--outline-soft); border-radius: var(--radius-md); background: var(--surface-1); font-size: 13px; }

/* Q2: confronto bancário na Conferência (dados do bank_check da auditoria). */
.bank-check-panel { margin: 0 0 16px; padding: 14px 16px; border: 1px solid var(--outline-soft); border-radius: var(--radius-md); background: var(--surface-1); }
.bank-check-head h3 { margin: 2px 0 4px; font-size: 15px; }
.bank-check-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; margin-top: 10px; }
.bank-check-card { border: 1px solid var(--outline-soft); border-radius: var(--radius-md); padding: 10px 12px; font-size: 12px; }
.bank-check-card header { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 6px; }
.bank-check-card.tone-error { border-color: #d9a0a0; }
.bank-check-bound { font-size: 11px; color: var(--muted); background: var(--surface-2, #f2f4f3); border-radius: 999px; padding: 2px 8px; white-space: nowrap; max-width: 40%; overflow: hidden; text-overflow: ellipsis; }
.binding-hint { display: block; font-size: 11px; color: var(--muted); margin-top: 2px; }

/* Resumo de inconsistências por tipo (Auditoria) */
.audit-kind-summary { margin: 10px 0 4px; }
.audit-kind-title { margin: 0 0 8px; font-size: 13px; color: var(--text-2); text-transform: uppercase; letter-spacing: .04em; }
.audit-kind-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px; }
.audit-kind-card { text-align: left; border: 1px solid var(--outline-soft, #e2e6e4); border-radius: 12px; background: var(--surface, #fff); padding: 12px 14px; cursor: pointer; display: flex; flex-direction: column; gap: 2px; }
.audit-kind-card:hover { border-color: var(--text-2); }
.audit-kind-card > b { font-size: 20px; line-height: 1.1; }
.audit-kind-label { font-weight: 600; font-size: 13px; }
.audit-kind-card small { color: var(--text-2); font-size: 11px; }

/* HUB — tela inicial (2026-08-13) */
.hub-picker { display: flex; align-items: end; gap: 12px; margin: 8px 0 16px; flex-wrap: wrap; }
.hub-picker label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--text-2); }
.hub-picker select { min-width: 320px; max-width: 100%; font-size: 14px; padding: 8px 10px; }
.hub-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; }
.hub-card { border: 1px solid var(--outline-soft, #e2e6e4); border-radius: 14px; padding: 18px; background: var(--surface, #fff); display: flex; flex-direction: column; gap: 8px; }
.hub-card h2 { margin: 0; font-size: 17px; }
.hub-card p { margin: 0; color: var(--text-2); font-size: 13px; flex: 1; }
.hub-card .button { align-self: flex-start; }
.hub-continue { margin: 4px 0 12px; }
.hub-continue-btn { width: 100%; text-align: left; padding: 12px 16px; border-radius: 12px; border: 1px dashed var(--outline-soft, #cfd6d2); background: var(--surface-2, #f4f6f3); cursor: pointer; font-size: 14px; }
.hub-continue-btn:hover { background: var(--surface, #fff); }
.hub-how { margin-top: 22px; border-top: 1px solid var(--outline-soft, #e2e6e4); padding-top: 14px; }
.hub-how h3 { margin: 0 0 6px; font-size: 14px; }
.hub-how p { margin: 0; color: var(--text-2); font-size: 13px; max-width: 70ch; }

/* V2-055 — ciclo de vida do lançamento */
.lifecycle-flow { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.lifecycle-stage { display: flex; gap: 10px; align-items: flex-start; padding: 8px 10px; border: 1px solid var(--border, #e2e6e4); border-radius: 10px; background: var(--surface, #fff); }
.lifecycle-stage small { display: block; color: var(--muted); margin-top: 2px; }
.lifecycle-icon { font-size: 16px; line-height: 1.4; }
.lifecycle-boundary { border-style: dashed; background: var(--surface-2, #f7f8f7); }
.lifecycle-note { font-size: 12px; color: var(--muted); margin: 6px 0 0; }
.bank-check-diff { font-variant-numeric: tabular-nums; }
.bank-check-diff span { display: block; font-size: 10px; color: var(--muted); font-weight: 400; }
.bank-check-diff.is-error { color: #8f2f2f; }
.bank-check-empty { color: var(--muted); font-size: 12px; margin: 6px 0 0; }
.audit-detail-bank-cta { font-size: 12px; color: var(--muted); margin-top: 6px; }

/* V2-004: vínculo OFX ↔ conta contábil na linha do dataset (Fontes). */
/* Dentro do grid 2-colunas do .dataset, o vínculo ocupa a LINHA inteira —
   sem isso o select cai numa célula e sobrepõe o nome do arquivo. */
.ofx-binding { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; width: 100%; margin-top: 6px; font-size: 12px; }
.ofx-binding select { font-size: 12px; max-width: 320px; }
.ofx-binding-hint { color: var(--muted); font-style: normal; font-size: 11px; }

/* Auditoria de notas fiscais (hub → #nf-audit) */
.nf-audit-drop {
  --side: #256b51;
  --side-soft: #e1eee7;
  margin: 8px 0 16px;
}
.nf-audit-mix {
  margin: 12px 0 0;
  padding: 10px 12px;
  border: 1px solid var(--warn, #c9a227);
  border-radius: 8px;
  background: color-mix(in srgb, var(--warn, #c9a227) 12%, transparent);
  color: var(--text-1);
  font-size: 13px;
}
.nf-audit-mix p { margin: 0 0 6px; }
.nf-audit-mix p:last-child { margin: 0; }
.nf-audit-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.nf-audit-tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  background: var(--bg-2, #eee);
  color: var(--text-1);
}
.nf-audit-tag-nfse { background: #dbeafe; color: #1e3a8a; }
.nf-audit-tag-nfe_sale { background: #dcfce7; color: #14532d; }
.nf-audit-tag-nfe_return { background: #fee2e2; color: #7f1d1d; }
.nf-audit-tag-cte { background: #f3e8ff; color: #581c87; }
.nf-audit-tag-mixed_kind,
.nf-audit-tag-other_store { background: #fef3c7; color: #78350f; }
.nf-audit-status {
  margin: 0 0 12px;
  color: var(--text-2);
  font-size: 13px;
}
.nf-audit-list {
  display: grid;
  gap: 12px;
}
.nf-audit-card {
  border: 1px solid var(--outline-soft, #e2e6e4);
  border-radius: 14px;
  padding: 14px 16px;
  background: var(--surface, #fff);
}
.nf-audit-card-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: baseline;
}
.nf-audit-card-head b { font-size: 16px; }
.nf-audit-card-head span { display: block; margin-top: 2px; color: var(--text-2); font-size: 12px; }
.nf-audit-card-head strong { font-variant-numeric: tabular-nums; }
.nf-audit-facts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 8px 14px;
  margin: 12px 0 0;
}
.nf-audit-facts div { margin: 0; }
.nf-audit-facts dt {
  color: var(--text-2);
  font-size: 11px;
  font-weight: 650;
}
.nf-audit-facts dd {
  margin: 2px 0 0;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
.nf-audit-facts-more { margin-top: 10px; }
.nf-audit-chave { word-break: break-all; font-size: 12px; }
.nf-audit-more { margin-top: 12px; }
.nf-audit-more summary {
  cursor: pointer;
  font-size: 13px;
  font-weight: 650;
  color: var(--text-2);
}
.nf-audit-items {
  list-style: none;
  margin: 10px 0 0;
  padding: 0;
  display: grid;
  gap: 8px;
}
.nf-audit-items li { font-size: 13px; }
.nf-audit-items span { display: block; color: var(--text-2); font-size: 12px; }
.nf-audit-muted { margin: 10px 0 0; color: var(--text-2); font-size: 12px; }
.nf-audit-more-wrap { margin: 12px 0 0; }

/* Comparar Razões (2026-08-20): dropzones lado a lado, colunas de sobras e
   lista de conciliados abaixo — reusa a linguagem visual da Auditoria. */
.compare-drop-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.compare-drop-row.is-single{grid-template-columns:1fr}
.compare-slice-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.compare-slice{border:1px solid var(--line,#dcd6cb);border-radius:10px;padding:10px 12px;display:grid;gap:8px}
.compare-slice legend{font-weight:700;padding:0 4px}
.compare-slice label{display:grid;gap:4px;font-size:.85rem}
.compare-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.compare-col h4{margin:0 0 2px}
.compare-col .compare-col-total{font-size:.85rem;color:var(--text-2,#6b6357)}
.compare-col .pending-record{margin-top:8px}
.compare-issue-badge{display:inline-block;padding:1px 7px;border-radius:999px;font-size:.72rem;font-weight:700;background:#f3e8d8;color:#946125;margin-left:6px}
.compare-issue-badge.is-suspeito{background:#f7dcd7;color:#a0392a}
.compare-matched{margin-top:18px}
.compare-matched-list{display:grid;gap:10px}
@media (max-width:900px){.compare-drop-row,.compare-slice-row,.compare-columns{grid-template-columns:1fr}}

/* Sugestões de conciliação da comparação (2026-08-20). */
.candidates-target{padding:10px 12px;border:1px solid var(--line,#dcd6cb);border-radius:10px;margin-bottom:12px;display:grid;gap:2px}
.candidate-item{border:1px solid var(--line,#dcd6cb);border-radius:10px;padding:10px 12px;margin-bottom:10px}
.candidate-head{display:flex;justify-content:space-between;font-weight:700;margin-bottom:6px}
.candidate-rationale{margin:6px 0 0;font-size:.85rem;color:var(--text-2,#6b6357)}
#compareColumns .column-more{width:100%;margin-top:10px}
.compare-record-mark{width:18px;height:18px;min-height:18px;margin:0;display:flex;align-items:center;justify-content:center;color:var(--text-2,#6b6357);font-weight:700}
.comparison-record.is-inconsistent .compare-record-mark{color:#a0392a}
.candidate-item.is-target{border-color:var(--accent,#256b51);background:var(--surface-2,#f4f6f4)}
.compare-findings-wrap{margin:14px 0 6px}
.candidate-item.compare-finding{border-left:3px solid #a0392a}
.candidate-item.compare-finding.is-indeterminado{border-left-color:#946125}
.compare-finding-evidence{margin:8px 0 0;display:grid;gap:6px;font-size:.85rem}
.compare-finding-evidence div{display:grid;grid-template-columns:minmax(140px,auto) 1fr;gap:10px}
.compare-finding-evidence dt{color:var(--text-2,#6b6357)}
.compare-finding-evidence dd{margin:0}
.compare-same-file{margin:0;padding:6px 0 2px;font-size:.85rem;display:grid;gap:4px}
.compare-same-file-label{font-size:.85rem;color:var(--text-1,#17201b);font-weight:600}
.compare-same-file small{color:var(--text-2,#6b6357)}
.compare-fee-row{display:grid;gap:6px;margin-top:4px}
.compare-fee-list{display:flex;flex-wrap:wrap;gap:6px}
.compare-fee-chip{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:999px;background:#f3e8d8;color:#946125;font-size:.78rem;font-weight:600}
.compare-fee-chip .linkish{color:inherit}
.compare-fee-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0}
#compareFeeDialog label{display:grid;gap:4px;margin-bottom:8px;font-size:.9rem}
@media (max-width:700px){.compare-fee-grid{grid-template-columns:1fr}}
.compare-fee-combo{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center}
.compare-fee-combo select{max-width:230px}
/* Sugestões (esquerda) e explicação do achado (direita) como painéis
   independentes: fechar a explicação não fecha as sugestões. */
.compare-dialog-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,360px);gap:16px;align-items:start}
.compare-dialog-cols.is-solo{grid-template-columns:minmax(0,1fr)}
.compare-findings-panel{border:1px solid var(--line,#dcd6cb);border-radius:12px;padding:12px;background:var(--surface-2,#f7f8f7);position:sticky;top:0;max-height:70vh;overflow:auto}
.compare-findings-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.compare-fee-prazo{border:1px solid var(--line,#dcd6cb);border-radius:10px;padding:10px 12px;margin:10px 0}
.compare-fee-prazo legend{font-weight:700;padding:0 4px}
#compareCandidatesDialog{max-width:1100px;width:min(96vw,1100px)}
@media (max-width:900px){.compare-dialog-cols{grid-template-columns:1fr}.compare-findings-panel{position:static;max-height:none}}
.compare-fee-switch{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.compare-fee-chip.is-off{opacity:.55;background:var(--surface-2,#eee);color:var(--text-2,#6b6357)}
.compare-map-hint{margin:2px 0 6px;padding:8px 10px;border-radius:8px;background:#f3e8d8;color:#946125;font-size:.85rem;display:grid;gap:6px;justify-items:start}
.candidate-diff{margin:6px 0 0;font-size:.85rem;font-weight:600;color:#a0392a}

/* Popup de sugestões: aproveitar a largura. As sugestões viravam uma coluna
   estreita empilhada, sobrando faixa vazia à direita; agora fluem em grade e
   o diálogo usa a altura disponível, rolando por dentro. */
#compareCandidatesDialog{width:min(96vw,1280px);max-width:1280px;max-height:92vh}
#compareCandidatesDialog .audit-detail-form{max-height:92vh;display:flex;flex-direction:column}
#compareCandidatesDialog .compare-dialog-cols{overflow:auto;flex:1}
#compareCandidatesBody{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px;align-content:start}
#compareCandidatesBody .candidate-item.is-target,
#compareCandidatesBody > p{grid-column:1/-1}
.candidate-item{margin-bottom:0}
/* Card estreito da grade: a linha de pendências (4 colunas) + content-visibility
   de 44px faziam data, histórico e conta pintarem um em cima do outro.
   Aqui empilha data|valor → descrição → conta, sem contain de lista longa. */
.candidate-item .pending-record{
  content-visibility:visible;
  contain:none;
  contain-intrinsic-size:none;
  grid-template-columns:minmax(0,1fr) auto;
  gap:6px 8px;
  padding:4px 0;
  border-bottom:0;
  align-items:start;
}
.candidate-item .pending-record > span:first-child{grid-column:1;grid-row:1}
.candidate-item .pending-record > strong{
  grid-column:2;
  grid-row:1;
  text-align:right;
  color:inherit;
}
.candidate-item .pending-record > b{
  grid-column:1/-1;
  grid-row:2;
  min-width:0;
  overflow-wrap:anywhere;
  white-space:normal;
  line-height:1.35;
  color:var(--text-1,#17201b);
  font-size:12px;
}
.candidate-item .pending-record > .pending-record-account{
  grid-column:1/-1;
  grid-row:3;
  white-space:normal;
  overflow:visible;
  text-overflow:unset;
  line-height:1.35;
}
.compare-findings-panel{max-height:none}
/* Explicação precisa de espaço para ser lida: painel mais largo. */
.compare-dialog-cols{grid-template-columns:minmax(0,1fr) minmax(380px,460px)}
.compare-finding .candidate-rationale{color:var(--text-1,#17201b);margin:6px 0 0;line-height:1.45}

/* Comparar Razões é um fluxo pontual e por arquivo inteiro (2026-08-20):
   controles do ciclo de conciliação não agem sobre ele e só confundiam —
   Mês e "Só analíticas" nem sequer afetam o resultado da comparação; taxas
   e prazos são geridos pelo botão "＋ Taxa deste lado" de cada lado. */
body.compare-mode #openPrep,
body.compare-mode #continueLater,
body.compare-mode #closeWorkspace,
body.compare-mode #reopenWorkspace,
body.compare-mode #globalCompetencyField,
body.compare-mode #globalAnalyticControls{display:none !important}

/* Login V2 (Supabase). Sem bypass quando o servidor exige sessão. */
body.auth-locked{overflow:hidden}
#authOverlay{position:fixed;inset:0;z-index:10000}
.auth-overlay-backdrop{min-height:100%;display:grid;place-items:center;padding:1.5rem;background:radial-gradient(ellipse 80% 60% at 20% 0%,rgba(37,107,81,.18),transparent 55%),radial-gradient(ellipse 70% 50% at 90% 100%,rgba(88,101,140,.14),transparent 50%),rgba(15,22,18,.72);backdrop-filter:blur(4px)}
.auth-card{width:min(420px,100%);padding:1.75rem 1.5rem 1.5rem;border-radius:16px;background:#f7f9f6;border:1px solid #d5e0d8;box-shadow:0 18px 50px rgba(12,28,20,.28);color:#1a2a22}
.auth-brand{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}
.auth-brand h2{margin:0;font-size:1.25rem;font-weight:650;letter-spacing:-.02em}
.auth-sub{margin:0 0 1.25rem;font-size:.92rem;line-height:1.45;color:#4a5c52}
#authForm{display:grid;gap:.85rem}
#authForm label{display:grid;gap:.35rem;font-size:.82rem;font-weight:600;color:#2d4036}
#authForm input{font:inherit;padding:.65rem .75rem;border-radius:10px;border:1px solid #c5d2ca;background:#fff;color:#142019}
#authForm input:focus{outline:2px solid #256b51;outline-offset:1px}
#authForm .button{margin-top:.25rem;width:100%;justify-content:center}
.auth-error{padding:.55rem .7rem;border-radius:8px;background:#fdeceb;color:#8a1f1a;font-size:.85rem;line-height:1.35}
.auth-hint{margin:1rem 0 0;font-size:.78rem;line-height:1.4;color:#6a7a70}
.auth-user-chip{max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;color:#2d4036;padding:.25rem .55rem;border-radius:999px;background:#e1eee7;border:1px solid #c5d8cc}
