:root {
  color-scheme: light;
  font-family: "Segoe UI Variable", "Segoe UI", system-ui, sans-serif;
  font-size: 16px;
  line-height: 1.45;
  color: #15362f;
  background: #f2f5f3;
  --ink: #15362f;
  --ink-strong: #0d2721;
  --muted: #566b65;
  --faint: #859690;
  --surface: #ffffff;
  --surface-soft: #f6f8f7;
  --surface-sunken: #eef3f0;
  --surface-selected: #e5f2ed;
  --nav: #edf2f0;
  --line: #d8e1dd;
  --line-strong: #b9c9c3;
  --accent: #146b52;
  --accent-strong: #0b513d;
  --accent-soft: #d8eee5;
  --warning: #8f5a00;
  --warning-soft: #fff1d0;
  --warning-line: #e6c884;
  --danger: #a93434;
  --danger-soft: #fbe4e2;
  --danger-line: #e7b8b3;
  --info: #2f657d;
  --info-soft: #e1edf2;
  --focus: #77bca7;
  --radius: 12px;
  --radius-small: 8px;
}

* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; background: var(--surface-soft); }
button, input, select, textarea { font: inherit; }
button, select { cursor: pointer; }
button:disabled { cursor: not-allowed; opacity: .55; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible,
a:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 2px;
}
[hidden] { display: none !important; }
h1, h2, h3, h4, p { overflow-wrap: anywhere; }
h1 { margin: 0; color: var(--ink-strong); font-size: 1.5rem; line-height: 1.2; letter-spacing: -.02em; }
h2 { margin: 0; color: var(--ink-strong); font-size: 1.0625rem; line-height: 1.3; letter-spacing: -.01em; }
h3 { margin: 0; color: var(--ink-strong); font-size: .95rem; line-height: 1.35; }
h4 { margin: 0; color: var(--ink-strong); font-size: .875rem; }
a { color: var(--accent-strong); text-underline-offset: 3px; }

.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;
}

/* Moldura: navegação por tarefas à esquerda, conteúdo à direita. */
.app-shell { min-height: 100dvh; display: grid; grid-template-columns: 232px minmax(0, 1fr); }
.side-nav {
  position: sticky; top: 0; height: 100dvh; overflow-y: auto;
  display: flex; flex-direction: column; gap: 22px;
  padding: 22px 14px 18px; background: var(--nav); border-right: 1px solid var(--line);
}
.brand { display: flex; align-items: center; gap: 11px; padding: 0 6px; }
.brand-mark {
  width: 36px; height: 36px; display: grid; place-items: center; flex: none;
  border-radius: 10px; color: #fff; background: var(--accent-strong); font-weight: 750; letter-spacing: -.02em;
}
.brand strong, .brand small { display: block; }
.brand strong { color: var(--ink-strong); font-size: .95rem; }
.brand small { margin-top: 1px; color: var(--muted); font-size: .76rem; }
.side-nav nav { flex: 1; display: flex; flex-direction: column; gap: 4px; }
.side-nav ul { margin: 0 0 10px; padding: 0; list-style: none; display: grid; gap: 2px; }
.nav-group { margin: 6px 10px 4px; color: var(--muted); font-size: .74rem; font-weight: 650; }
.nav-item {
  width: 100%; min-height: 40px; padding: 0 12px; border: 0; border-radius: var(--radius-small);
  background: transparent; color: var(--ink); text-align: left; font-size: .9rem; font-weight: 560;
  transition: background-color 160ms ease-out, color 160ms ease-out;
}
.nav-item:hover { background: #e2eae6; }
.nav-item.is-active { color: var(--accent-strong); background: var(--accent-soft); font-weight: 680; }
.nav-bottom { margin-top: auto; padding-top: 10px; border-top: 1px solid var(--line-strong); }

main { min-width: 0; padding: 0 32px 48px; }
.topbar {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 24px;
  padding: 26px 0 20px; border-bottom: 1px solid var(--line);
}
.topbar-title p { margin: 6px 0 0; max-width: 72ch; color: var(--muted); font-size: .92rem; }
.topbar-actions { display: flex; align-items: center; gap: 10px; flex: none; }
.environment-badge {
  display: inline-flex; align-items: center; min-height: 32px; padding: 0 12px; border-radius: 999px;
  color: var(--info); background: var(--info-soft); font-size: .8rem; font-weight: 680; white-space: nowrap;
}
.global-error {
  margin: 18px 0 0; padding: 12px 16px; border: 1px solid var(--danger-line); border-radius: var(--radius-small);
  color: var(--danger); background: var(--danger-soft); font-weight: 600;
}
.view { max-width: 1440px; }

/* Controlos */
.button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 42px; padding: 9px 16px; border: 1px solid transparent; border-radius: var(--radius-small);
  font-weight: 650; text-decoration: none; white-space: nowrap;
  transition: background-color 160ms ease-out, border-color 160ms ease-out, color 160ms ease-out;
}
.button-primary { color: #fff; background: var(--accent); border-color: var(--accent); }
.button-primary:hover:not(:disabled) { background: var(--accent-strong); border-color: var(--accent-strong); }
.button-secondary { color: var(--ink); background: var(--surface); border-color: var(--line-strong); }
.button-secondary:hover:not(:disabled) { background: var(--surface-sunken); border-color: #95aaa2; }
.button-danger { color: #fff; background: var(--danger); border-color: var(--danger); }
.button-danger:hover:not(:disabled) { background: #8e2929; border-color: #8e2929; }
.text-button {
  min-height: 36px; padding: 6px 4px; border: 0; background: transparent;
  color: var(--accent-strong); font-weight: 650; text-decoration: underline; text-underline-offset: 3px;
}
.text-button:hover { color: var(--ink-strong); }
input, select, textarea {
  min-height: 42px; padding: 8px 11px; border: 1px solid var(--line-strong); border-radius: var(--radius-small);
  color: var(--ink); background: var(--surface);
}
input::placeholder, textarea::placeholder { color: #6c8079; }
textarea { width: 100%; resize: vertical; line-height: 1.45; }
input[type="checkbox"], input[type="radio"] { min-height: 0; accent-color: var(--accent); }
.form-feedback { margin: 10px 0 0; min-height: 1.2em; color: var(--accent-strong); font-size: .86rem; font-weight: 600; }
.form-feedback:empty { margin: 0; min-height: 0; }
.form-feedback.is-error { color: var(--danger); }
.form-help { margin: 0; color: var(--muted); font-size: .84rem; }
.form-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }

/* Barra de ação: o que a secção faz, no topo de cada tarefa. */
.action-bar {
  margin-top: 22px; display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px 14px;
  padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface);
}
.action-bar .button-primary { margin-left: auto; }
.action-status { margin: 0 auto 0 0; align-self: center; color: var(--muted); font-size: .9rem; }
.action-status strong { color: var(--ink-strong); }
.action-help { margin: 10px 2px 0; color: var(--muted); font-size: .84rem; max-width: 90ch; }
.action-help .connection-state { margin-left: 6px; }
.inline-field { display: grid; gap: 5px; color: var(--muted); font-size: .8rem; font-weight: 620; }
.inline-field input, .inline-field select { min-width: 160px; color: var(--ink); font-size: .9rem; font-weight: 450; }
.inline-field.grow { flex: 1 1 260px; }
.inline-field.grow input { width: 100%; }
.check-field { display: flex; align-items: center; gap: 9px; min-height: 42px; color: var(--ink); font-size: .9rem; }
.check-field input { width: 18px; height: 18px; flex: none; }
.connection-state {
  display: inline-flex; align-items: center; min-height: 30px; padding: 0 11px; border: 1px solid var(--line-strong);
  border-radius: 999px; color: var(--muted); background: var(--surface); font-size: .78rem; font-weight: 650; white-space: nowrap;
}
.action-bar .connection-state { align-self: center; margin-left: auto; }
.action-bar .connection-state + .button-primary { margin-left: 0; }
.connection-state.is-connected { color: var(--accent-strong); border-color: #a9d2c3; background: var(--accent-soft); }
.connection-state.is-closed { color: var(--warning); border-color: var(--warning-line); background: var(--warning-soft); }
.warning-note {
  margin: 14px 0 0; padding: 12px 16px; border: 1px solid var(--danger-line); border-radius: var(--radius-small);
  color: var(--danger); background: var(--danger-soft); font-size: .9rem; font-weight: 600;
}

/* Estado com ícone: a cor acompanha sempre um ícone e um texto. */
.st {
  display: inline-flex; align-items: center; gap: 7px; min-width: 0;
  color: var(--muted); font-size: .86rem; font-weight: 650; line-height: 1.3;
}
.st::before {
  content: ""; flex: none; width: 18px; height: 18px; background-color: currentColor;
  -webkit-mask: var(--icone, url(/icones/traco.svg)) center / contain no-repeat;
  mask: var(--icone, url(/icones/traco.svg)) center / contain no-repeat;
}
.st-ok { color: var(--accent-strong); --icone: url(/icones/ok.svg); }
.st-alerta { color: var(--warning); --icone: url(/icones/alerta.svg); }
.st-erro { color: var(--danger); --icone: url(/icones/erro.svg); }
.st-incerto { color: var(--danger); --icone: url(/icones/incerto.svg); }
.st-seguir { color: var(--info); --icone: url(/icones/seguir.svg); }
.st-neutro { color: var(--muted); --icone: url(/icones/traco.svg); }
.st-curso { color: var(--info); --icone: url(/icones/relogio.svg); }

/* Quem resolve */
.owner {
  display: inline-flex; align-items: center; min-height: 24px; padding: 2px 9px; border-radius: 999px;
  color: #3f5650; background: var(--surface-sunken); font-size: .74rem; font-weight: 650; white-space: nowrap;
}
.owner-cliente { color: var(--warning); background: var(--warning-soft); }

/* Barra de resultado: contagens por estado, também usadas como filtro. */
.result-bar {
  margin-top: 16px; display: flex; flex-wrap: wrap; gap: 0;
  border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); overflow: hidden;
}
.result-bar:empty { display: none; }
.result-item {
  flex: 1 1 118px; display: grid; gap: 2px; justify-items: start; align-content: start; min-width: 0;
  padding: 13px 16px; border: 0; border-right: 1px solid var(--line); background: transparent; color: var(--ink); text-align: left;
}
.result-item:last-child { border-right: 0; }
button.result-item { transition: background-color 160ms ease-out; }
button.result-item:hover:not(:disabled) { background: var(--surface-soft); }
button.result-item[aria-pressed="true"] { background: var(--surface-selected); box-shadow: inset 0 -3px 0 var(--accent); }
.result-item:disabled { opacity: 1; cursor: default; }
.result-item .result-value { color: var(--ink-strong); font-size: 1.35rem; font-weight: 720; line-height: 1.15; font-variant-numeric: tabular-nums; }
.result-item .st { font-size: .82rem; }
.result-item .result-caption { color: var(--muted); font-size: .76rem; font-weight: 500; }

/* Separadores */
.tabs { margin-top: 26px; display: flex; gap: 4px; overflow-x: auto; overflow-y: hidden; box-shadow: inset 0 -1px 0 var(--line); scrollbar-width: none; }
.tabs [role="tab"] {
  display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 14px;
  border: 0; border-bottom: 3px solid transparent; background: transparent; color: var(--muted);
  font-size: .95rem; font-weight: 650; white-space: nowrap;
}
.tabs [role="tab"]:hover { color: var(--ink-strong); }
.tabs [role="tab"][aria-selected="true"] { color: var(--accent-strong); border-bottom-color: var(--accent); }
.tab-count {
  min-width: 24px; padding: 1px 8px; border-radius: 999px; background: var(--surface-sunken);
  color: var(--ink); font-size: .76rem; font-weight: 700; font-variant-numeric: tabular-nums; text-align: center;
}
.tab-count:empty { display: none; }
[aria-selected="true"] .tab-count { background: var(--accent-soft); color: var(--accent-strong); }
.tab-panel { padding-top: 18px; }

.list-toolbar { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px 16px; }
.result-bar + .list-toolbar, .list-note + .list-toolbar { margin-top: 16px; }
.list-toolbar .head-links { margin-left: auto; align-self: center; }
.list-note { margin: 12px 2px 0; color: var(--muted); font-size: .84rem; }
.list-count { align-self: center; color: var(--muted); font-size: .84rem; }
.segmented { display: inline-flex; padding: 3px; gap: 3px; border: 1px solid var(--line-strong); border-radius: 10px; background: var(--surface); }
.segmented button {
  min-height: 36px; padding: 0 14px; border: 0; border-radius: 7px; background: transparent;
  color: var(--muted); font-size: .88rem; font-weight: 650;
}
.segmented button:hover { color: var(--ink-strong); background: var(--surface-soft); }
.segmented button[aria-pressed="true"] { color: var(--accent-strong); background: var(--accent-soft); }
.list-more { margin-top: 14px; }

/* Nova execução */
.new-run {
  margin-top: 12px; display: grid; gap: 16px; padding: 20px; border: 1px solid var(--line);
  border-radius: var(--radius); background: var(--surface);
}
.new-run-title { font-size: 1rem; }
.choice-group { margin: 0; padding: 0; border: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.choice-group legend { margin-bottom: 8px; padding: 0; color: var(--muted); font-size: .8rem; font-weight: 620; }
.choice {
  display: flex; align-items: flex-start; gap: 10px; padding: 12px 14px; border: 1px solid var(--line-strong);
  border-radius: var(--radius-small); background: var(--surface); cursor: pointer;
}
.choice:has(input:checked) { border-color: var(--accent); background: var(--surface-selected); }
.choice:has(input:disabled) { cursor: not-allowed; opacity: .6; }
.choice input { margin-top: 3px; width: 17px; height: 17px; flex: none; }
.choice strong, .choice small { display: block; }
.choice strong { color: var(--ink-strong); font-size: .92rem; }
.choice small { margin-top: 2px; color: var(--muted); font-size: .8rem; }
.new-run-fields { display: flex; flex-wrap: wrap; gap: 12px 16px; }
.new-run-fields label { display: grid; gap: 5px; color: var(--muted); font-size: .8rem; font-weight: 620; }
.new-run-fields input, .new-run-fields select { min-width: 190px; color: var(--ink); font-size: .9rem; font-weight: 450; }

/* Execuções agrupadas por dia */
.run-list { margin-top: 18px; display: grid; gap: 22px; }
.run-day h2 { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin: 0 2px 8px; font-size: .95rem; }
.run-day h2 span { color: var(--muted); font-size: .82rem; font-weight: 500; }
.run-day-list { margin: 0; padding: 0; list-style: none; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); overflow: hidden; }
.run + .run { border-top: 1px solid var(--line); }
.run-toggle {
  width: 100%; display: grid; grid-template-columns: 58px minmax(96px, 150px) minmax(92px, 130px) minmax(0, 1fr) 20px;
  align-items: center; gap: 14px; padding: 13px 16px; border: 0; background: transparent; color: var(--ink); text-align: left;
  transition: background-color 160ms ease-out;
}
.run-toggle:hover { background: var(--surface-soft); }
.run-toggle[aria-expanded="true"] { background: var(--surface-soft); }
.run-time { color: var(--ink-strong); font-weight: 680; font-variant-numeric: tabular-nums; }
.run-store { color: var(--ink); font-weight: 600; }
.run-kind { color: var(--muted); font-size: .86rem; }
.run-outcome { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; min-width: 0; }
.run-outcome .st { font-size: .85rem; }
.run-chevron {
  width: 18px; height: 18px; background-color: var(--muted); transition: transform 180ms ease-out;
  -webkit-mask: url(/icones/seta.svg) center / contain no-repeat; mask: url(/icones/seta.svg) center / contain no-repeat;
}
.run-toggle[aria-expanded="true"] .run-chevron { transform: rotate(90deg); }
.run-panel { padding: 4px 16px 16px; background: var(--surface-soft); }
.run-message { margin: 8px 0 0; color: var(--ink); font-size: .9rem; }
.invoice-rows { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; }
.invoice-row {
  display: grid; grid-template-columns: minmax(150px, 190px) minmax(0, 1.1fr) minmax(0, 1.6fr) auto;
  gap: 8px 18px; align-items: start; padding: 12px 14px; border: 1px solid var(--line);
  border-radius: var(--radius-small); background: var(--surface);
}
.invoice-status { display: grid; gap: 4px; align-content: start; min-width: 0; }
.invoice-id { min-width: 0; }
.invoice-id strong { display: block; color: var(--ink-strong); font-size: .9rem; overflow-wrap: anywhere; }
.invoice-id span { display: block; margin-top: 2px; color: var(--muted); font-size: .8rem; overflow-wrap: anywhere; }
.invoice-why p { margin: 0; color: var(--ink); font-size: .88rem; }
.invoice-why .invoice-todo { margin-top: 3px; color: var(--muted); font-size: .84rem; }
.invoice-why .invoice-todo strong { color: var(--ink); font-weight: 650; }
.invoice-meta { color: var(--muted); font-size: .78rem; }
.invoice-row > .owner { justify-self: start; }
.invoice-why .report-open { display: inline-flex; align-items: center; margin-top: 5px; }
.invoice-report {
  width: min(680px, calc(100vw - 32px)); max-height: min(88dvh, 820px); margin: auto;
  padding: 0; overflow: auto; border: 1px solid var(--line-strong);
  border-radius: var(--radius); background: var(--surface); color: var(--ink);
}
.invoice-report::backdrop { background: rgb(13 39 33 / 54%); }
.report-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
  padding: 20px 24px; border-bottom: 1px solid var(--line); background: var(--surface-soft);
}
.report-head h2 { margin: 0; font-size: 1.15rem; color: var(--ink-strong); }
.report-head p { margin: 5px 0 0; color: var(--muted); font-size: .86rem; overflow-wrap: anywhere; }
.report-content { display: grid; justify-items: start; gap: 16px; padding: 22px 24px 26px; }
#ronda-diaria-dialog > .form-help, #ronda-diaria-dialog > .form-actions,
#ronda-diaria-dialog > .form-feedback, #ronda-diaria-dialog > .list-note { margin: 16px 24px; }
#ronda-diaria-dialog .form-actions { display: flex; flex-wrap: wrap; align-items: end; gap: 12px; }
#ronda-diaria-dialog .ronda-autorizacao { flex-basis: 100%; display: grid; gap: 8px; max-width: 640px; }
#ronda-diaria-dialog .ronda-autorizacao .form-help { margin: 0; }
#ronda-diaria-dialog table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: .84rem; }
#ronda-diaria-dialog th, #ronda-diaria-dialog td { text-align: left; padding: 10px 8px; border-bottom: 1px solid var(--line); vertical-align: top; overflow-wrap: anywhere; }
#ronda-diaria-dialog th:nth-child(2) { width: 28%; }
.report-section { width: 100%; padding-top: 15px; border-top: 1px solid var(--line); }
.report-section h3 { margin: 0 0 6px; color: var(--ink-strong); font-size: .91rem; }
.report-section p { margin: 0; line-height: 1.5; overflow-wrap: anywhere; }
.report-points { display: grid; gap: 12px; margin: 9px 0 0; padding-left: 20px; }
.report-points li { padding-left: 3px; }
.report-points strong { display: block; color: var(--ink-strong); font-size: .9rem; }
.report-points p { margin-top: 2px; font-size: .88rem; }
.report-points .report-value, .report-value { color: var(--muted); font-size: .84rem; }
.report-safety { margin: 0; padding: 12px 14px; border-radius: var(--radius-small);
  background: var(--warning-soft); color: var(--ink-strong); font-size: .88rem; }
.tech-details { margin-top: 10px; color: var(--muted); font-size: .8rem; }
.tech-details summary { cursor: pointer; width: max-content; padding: 4px 0; }
.tech-details p { margin: 4px 0 0; font-family: ui-monospace, "Cascadia Code", Consolas, monospace; font-size: .74rem; overflow-wrap: anywhere; }

/* Espaço de trabalho: lista e detalhe lado a lado. */
.workspace { margin-top: 16px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(330px, 400px); gap: 20px; align-items: start; }
.workspace > * { min-width: 0; }
.detail {
  position: sticky; top: 16px; max-height: calc(100dvh - 32px); overflow: auto;
  padding: 20px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface);
}
.detail-empty { min-height: 180px; display: grid; align-content: center; gap: 6px; }
.detail-empty p { margin: 0; color: var(--muted); font-size: .9rem; }
.detail-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.detail-head p { margin: 4px 0 0; color: var(--muted); font-size: .84rem; }
.detail-section { padding-top: 14px; margin-top: 14px; border-top: 1px solid var(--line); }
.detail-section:first-of-type { border-top: 0; margin-top: 0; }
.detail-section h3 { margin-bottom: 6px; font-size: .84rem; color: var(--muted); font-weight: 650; }
.detail-section p { margin: 0; font-size: .9rem; }
.detail-section ul { margin: 4px 0 0; padding-left: 18px; font-size: .88rem; }
.detail-status { margin-top: 12px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.detail .row-links { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 6px; font-size: .88rem; }

/* Por resolver: grupos simples de faturas. */
.case-groups { display: grid; gap: 22px; }
.case-group-title { display: flex; align-items: baseline; gap: 10px; margin: 0 2px 8px; font-size: .95rem; }
.case-group-title .count { color: var(--muted); font-size: .84rem; font-weight: 600; }
.case-group-empty { margin: 0 2px; color: var(--muted); font-size: .86rem; }
.case-list { margin: 0; padding: 0; list-style: none; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); overflow: hidden; }
.case-list:empty { display: none; }
.case-list li + li { border-top: 1px solid var(--line); }
.case-item {
  width: 100%; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 14px; align-items: center;
  padding: 12px 16px; border: 0; background: transparent; color: var(--ink); text-align: left;
  transition: background-color 160ms ease-out;
}
.case-item:hover { background: var(--surface-soft); }
.case-item.is-selected, .case-item[aria-current="true"] { background: var(--surface-selected); }
.case-main { min-width: 0; display: grid; gap: 3px; }
.case-main strong { color: var(--ink-strong); font-size: .92rem; overflow-wrap: anywhere; }
.case-main .case-sub { color: var(--muted); font-size: .8rem; }
.case-main .st { font-size: .86rem; font-weight: 600; }
.case-side { display: flex; align-items: center; gap: 10px; }

/* Estados vazios */
.empty { margin-top: 16px; padding: 36px 24px; border: 1px dashed var(--line-strong); border-radius: var(--radius); background: var(--surface); text-align: center; }
.empty h2, .empty h3 { font-size: 1rem; }
.empty p { margin: 6px auto 0; max-width: 52ch; color: var(--muted); font-size: .9rem; }
.table-wrap .empty { margin: 0; border: 0; border-top: 1px solid var(--line); border-radius: 0; }
.table-wrap:has(> .empty:not([hidden])) > table { display: none; }

/* Blocos e secções */
.block { margin-top: 28px; }
.section-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 6px 20px; margin-bottom: 12px; }
.section-head > h2 { flex: 1 1 auto; }
.section-head > p { flex-basis: 100%; order: 3; margin: 0; color: var(--muted); font-size: .86rem; }
.head-links { display: flex; flex-wrap: wrap; gap: 8px 16px; font-size: .86rem; }
.head-links a { cursor: pointer; }
.more { margin-top: 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.more > summary { padding: 13px 18px; cursor: pointer; color: var(--accent-strong); font-weight: 620; font-size: .9rem; }
.more > :not(summary) { padding: 0 18px; }
.more > :last-child:not(summary) { padding-bottom: 16px; }
.plain-list { margin: 0; padding: 0; list-style: none; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.plain-list li { padding: 12px 16px; font-size: .88rem; }
.plain-list li + li { border-top: 1px solid var(--line); }
.plain-list strong { display: block; color: var(--ink-strong); }
.plain-list p { margin: 3px 0 0; color: var(--muted); }
.plain-steps { margin: 0; padding: 0 18px 16px 38px; color: var(--ink); font-size: .9rem; }
.plain-steps li { padding: 3px 0; }

/* Histórico e notas */
.history-block { margin-bottom: 30px; }
.history-block > .inline-field { margin-top: 4px; }
.history-list { display: grid; gap: 6px; max-height: 620px; overflow-y: auto; padding-right: 2px; }
.history-item {
  display: grid; gap: 3px; width: 100%; padding: 11px 14px; border: 1px solid var(--line); border-radius: var(--radius-small);
  background: var(--surface); color: var(--ink); text-align: left;
}
.history-item:hover { background: var(--surface-soft); }
.history-item.is-selected { border-color: var(--accent); background: var(--surface-selected); }
.history-item strong { color: var(--ink-strong); font-size: .88rem; overflow-wrap: anywhere; }
.history-item span { color: var(--muted); font-size: .8rem; }
.learning-form { display: grid; gap: 12px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.learning-form h3 { font-size: .92rem; }
.learning-form .field { display: grid; gap: 5px; color: var(--muted); font-size: .8rem; font-weight: 620; }
.learning-form input, .learning-form textarea, .learning-form select { width: 100%; min-width: 0; color: var(--ink); font-size: .9rem; font-weight: 450; }
.learning-form .field-hint { margin: 0; color: var(--muted); font-size: .8rem; }
.learning-form details { border-top: 1px solid var(--line); padding-top: 10px; }
.learning-form details summary { cursor: pointer; color: var(--accent-strong); font-size: .86rem; font-weight: 620; }
.learning-form details[open] { display: grid; gap: 12px; }
.learning-form .button { justify-self: start; }
.learning-record { padding: 12px 0; border-top: 1px solid var(--line); font-size: .88rem; overflow-wrap: anywhere; }
.learning-record p { margin: 5px 0 0; white-space: pre-wrap; }
.learning-record .muted { color: var(--muted); font-size: .82rem; }
.learning-register { display: grid; gap: 12px; }
.learning-register section { padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.learning-register section > h3 { font-size: .9rem; }
.muted { color: var(--muted); }
.notice { padding: 10px 12px; border-radius: var(--radius-small); background: var(--warning-soft); color: var(--warning); font-size: .86rem; }

/* Etiquetas usadas pelas secções operacionais */
.badge {
  display: inline-flex; align-items: center; min-height: 24px; padding: 2px 9px; border-radius: 999px;
  color: var(--info); background: var(--info-soft); font-size: .74rem; font-weight: 680; white-space: nowrap;
}
.badge-success { color: var(--accent-strong); background: var(--accent-soft); }
.badge-warning { color: var(--warning); background: var(--warning-soft); }
.badge-danger { color: var(--danger); background: var(--danger-soft); }
.badge-neutral { color: #475d57; background: var(--surface-sunken); }

/* Tabelas e consultas */
.table-wrap, .table-scroll { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: .875rem; }
th, td { padding: 11px 13px; border-top: 1px solid var(--line); text-align: left; vertical-align: middle; }
th { color: var(--muted); background: #f3f6f5; font-size: .76rem; font-weight: 680; white-space: nowrap; }
td { color: #2c463f; }
tbody tr { transition: background-color 160ms ease-out; }
tbody tr:hover { background: #f4f8f6; }
tbody tr.is-selected { background: var(--surface-selected); }
.row-button {
  min-width: 44px; min-height: 34px; padding: 0 10px; border: 1px solid var(--line-strong); border-radius: var(--radius-small);
  color: var(--accent-strong); background: var(--surface); font-size: .8rem; font-weight: 680;
}
.row-button:hover { background: var(--accent-soft); }
.data-panel { overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.data-toolbar { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; padding: 16px 18px 14px; }
.data-toolbar p { margin: 4px 0 0; color: var(--muted); font-size: .86rem; }
.search-label input { width: min(300px, 34vw); }
.data-panel td { max-width: 330px; }
.masterway-table { min-width: 820px; }
.dropbox-table { min-width: 620px; }
.masterway-table td:first-child, .masterway-table td:nth-child(4), .masterway-table td:nth-child(5),
.dropbox-table td:nth-child(3) { white-space: nowrap; }
.masterway-table td:nth-child(2), .dropbox-table td:first-child { color: var(--ink-strong); font-weight: 600; overflow-wrap: anywhere; }
.masterway-table th:last-child, .masterway-table td:last-child,
.dropbox-table th:last-child, .dropbox-table td:last-child { width: 1%; white-space: nowrap; }
.document-inspector.has-detail { scroll-margin-top: 16px; }
.document-detail-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.document-detail-title { min-width: 0; }
.document-detail-title p { margin: 4px 0 0; color: var(--muted); font-size: .84rem; }
.detail-close { flex: none; }
.detail-grid { margin: 16px 0 0; display: grid; grid-template-columns: 1fr 1fr; gap: 12px 18px; }
.detail-grid dt { color: var(--muted); font-size: .76rem; }
.detail-grid dd { margin: 3px 0 0; color: var(--ink-strong); font-size: .88rem; font-weight: 620; overflow-wrap: anywhere; }
.document-totals { margin-top: 16px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-block: 1px solid var(--line); }
.document-totals div { min-width: 0; padding: 12px 8px; text-align: center; }
.document-totals div + div { border-inline-start: 1px solid var(--line); }
.document-totals span { display: block; color: var(--muted); font-size: .76rem; }
.document-totals strong { display: block; margin-top: 3px; color: var(--ink-strong); font-size: .95rem; font-variant-numeric: tabular-nums; }
.detail-loading, .detail-error { min-height: 180px; display: grid; align-content: center; gap: 10px; }
.detail-loading { color: var(--muted); }
.detail-error p { margin: 0; color: var(--danger); }
.detail-error .button { justify-self: start; }
.detail-lines { min-width: 0; }
.detail-lines-wrap { margin-top: 8px; border: 1px solid var(--line); border-radius: var(--radius-small); }
.detail-lines-table { min-width: 560px; font-size: .8rem; }
.detail-lines-table th, .detail-lines-table td { padding: 8px 10px; }
.detail-lines-table strong, .detail-lines-table small { display: block; max-width: 30ch; overflow-wrap: anywhere; }
.detail-lines-table small { margin-top: 2px; color: var(--muted); }
.preview-open { margin-top: 10px; }
.document-preview { display: block; width: 100%; margin-top: 12px; border: 1px solid var(--line); border-radius: var(--radius-small); background: var(--surface-soft); }
.pdf-preview, .image-preview { height: min(560px, 62vh); }
.image-preview { object-fit: contain; }
.preview-unavailable { padding: 12px; border: 1px solid var(--line); border-radius: var(--radius-small); background: var(--surface-soft); color: var(--muted); }

/* Regras: grelha da folha e editor */
.knowledge-grid { grid-template-columns: minmax(0, 1fr) minmax(300px, 340px); }
.knowledge-table-wrap { max-height: 67vh; }
.knowledge-table { width: max-content; min-width: 100%; table-layout: fixed; }
.knowledge-table th, .knowledge-table td { padding: 0; height: 36px; }
.knowledge-table thead { position: sticky; top: 0; z-index: 3; }
.knowledge-table thead th { width: 150px; min-width: 150px; padding: 8px; text-align: center; border-left: 1px solid var(--line); }
.knowledge-table .knowledge-corner, .knowledge-table .knowledge-row-number { width: 48px; min-width: 48px; text-align: center; }
.knowledge-row-number { position: sticky; left: 0; z-index: 2; color: var(--muted); background: #f3f6f5; border-right: 1px solid var(--line); }
.knowledge-cell {
  width: 150px; height: 36px; overflow: hidden; padding: 6px 9px; border: 0; border-left: 1px solid var(--line);
  background: transparent; color: #2c463f; text-align: left; text-overflow: ellipsis; white-space: nowrap;
}
.knowledge-cell:hover { position: relative; z-index: 1; background: var(--accent-soft); box-shadow: inset 0 0 0 1px #9dc9b9; }
.knowledge-cell.is-selected { background: var(--surface-selected); box-shadow: inset 0 0 0 2px var(--accent); }
.knowledge-cell.is-formula { color: var(--info); font-style: italic; }
.knowledge-editor { display: grid; gap: 10px; }
.knowledge-editor label { color: var(--muted); font-size: .8rem; font-weight: 620; }
.editor-meta { margin: 0; color: var(--muted); font-size: .82rem; }
.knowledge-editor .button { justify-self: start; }

/* Ligações */
.capability-list { border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.capability-row { display: grid; grid-template-columns: minmax(150px, 220px) minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 13px 18px; }
.capability-row + .capability-row { border-top: 1px solid var(--line); }
.capability-row strong { color: var(--ink-strong); font-size: .9rem; }
.capability-row span:not(.st) { color: var(--muted); font-size: .86rem; }
.connection-grid { margin-top: 20px; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.connection-card { padding: 20px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.connection-card > p { margin: 6px 0 0; color: var(--muted); font-size: .86rem; }
.token-form { margin-top: 16px; display: grid; gap: 8px; }
.token-form label { color: var(--muted); font-size: .8rem; font-weight: 620; }
.token-form input { width: 100%; }

/* Cotações do pescado */
.pescado-table-wrap { border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.pescado-table { min-width: 620px; }
.pescado-table th, .pescado-table td { padding: 14px 16px; vertical-align: top; }
.pescado-table thead th { border-top: 0; }
.pescado-table tbody th { background: transparent; font-size: .9rem; white-space: normal; }
.pescado-table tbody th strong { color: var(--ink-strong); }
.pescado-table td .st, .pescado-table td .badge { margin-top: 5px; }
.pescado-price { display: block; color: var(--ink-strong); font-size: 1.05rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.pescado-subtext { display: block; margin-top: 4px; color: var(--muted); font-size: .8rem; line-height: 1.4; font-weight: 450; }
.pescado-pending { color: var(--muted); }
.status-groups { display: grid; gap: 18px; }
.status-group h3 { display: flex; align-items: baseline; gap: 10px; margin: 0 2px 8px; font-size: .92rem; }
.status-group h3 .count { color: var(--muted); font-size: .82rem; font-weight: 600; }
.status-group > p { margin: 0 2px; color: var(--muted); font-size: .84rem; }
.status-group details > summary { cursor: pointer; margin: 0 2px 8px; color: var(--accent-strong); font-size: .88rem; font-weight: 620; }
.pescado-item { grid-template-columns: minmax(0, 1fr) auto; }
.pescado-item .case-side { flex-direction: column; align-items: flex-end; gap: 4px; }
.pescado-item-price { color: var(--ink-strong); font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.pescado-evidence { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.pescado-evidence-thumb {
  display: inline-flex; align-items: center; gap: 6px; padding: 3px 8px 3px 3px; border: 1px solid var(--line);
  border-radius: 7px; background: var(--surface-soft); color: var(--muted); font-size: .72rem;
}
.pescado-evidence-thumb img, .pescado-document-icon { width: 30px; height: 26px; border-radius: 4px; object-fit: cover; background: var(--surface); }
.pescado-document-icon { display: grid; place-items: center; color: var(--accent-strong); font-size: .56rem; font-weight: 750; letter-spacing: .04em; }
.pescado-inspector h3 { margin: 16px 0 6px; }
.pescado-inspector p, .pescado-inspector li { font-size: .88rem; line-height: 1.5; }
.pescado-evidence-title { margin: 18px 0 6px; font-size: .86rem; }
.pescado-evidence-link { display: block; margin: 8px 0 14px; font-size: .84rem; }
.pescado-original { display: block; width: 100%; max-height: 420px; object-fit: contain; margin: 0 0 6px; border: 1px solid var(--line); border-radius: var(--radius-small); background: var(--surface-soft); }
.pescado-source-text { margin: 16px 0; }
.pescado-source-text summary { cursor: pointer; padding: 6px 0; font-weight: 620; }
.pescado-source-text pre { max-height: 320px; overflow-y: auto; padding: 12px; white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; font-size: .84rem; background: var(--surface-soft); }
.pescado-observacoes { padding-left: 19px; color: var(--muted); }
.pescado-review-form { display: grid; gap: 12px; margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line); }
.pescado-review-form label { display: grid; gap: 5px; color: var(--muted); font-size: .8rem; font-weight: 620; }
.pescado-review-form select, .pescado-review-form input, .pescado-review-form textarea { width: 100%; min-width: 0; color: var(--ink); font-size: .9rem; font-weight: 450; }
.pescado-review-form .button { justify-self: start; }
.pescado-review-receipt { padding: 10px 12px; border-radius: var(--radius-small); background: var(--accent-soft); color: var(--accent-strong); }
#pescado-cloud p, #pescado-canais p, #pescado-historico p { font-size: .88rem; }

/* Larguras intermédias */
@media (max-width: 1180px) {
  .app-shell { grid-template-columns: 204px minmax(0, 1fr); }
  main { padding-inline: 22px; }
  .workspace, .knowledge-grid { grid-template-columns: 1fr; }
  .detail { position: static; max-height: none; }
  .workspace > .detail.has-detail { order: -1; scroll-margin-top: 16px; }
  .masterway-table th:nth-child(5), .masterway-table td:nth-child(5) { display: none; }
  .invoice-row { grid-template-columns: minmax(140px, 170px) minmax(0, 1fr) auto; }
  .invoice-row .invoice-why { grid-column: 2 / -1; }
}

@media (max-width: 900px) {
  .app-shell { display: block; }
  .side-nav {
    position: static; height: auto; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 10px 18px;
    padding: 12px 16px; border-right: 0; border-bottom: 1px solid var(--line);
  }
  .side-nav nav { display: flex; min-width: 0; flex: 1 1 100%; gap: 6px; overflow-x: auto; padding-bottom: 2px; }
  .side-nav ul { display: flex; margin: 0; gap: 4px; }
  .nav-group { display: none; }
  .nav-item { width: auto; flex: none; min-height: 40px; white-space: nowrap; }
  .side-nav nav { flex-direction: row; scrollbar-width: thin; }
  .nav-bottom { margin: 0; padding: 0; border: 0; }
  .brand { flex: 1 1 auto; }
  .choice-group { grid-template-columns: 1fr; }
  .connection-grid { grid-template-columns: 1fr; }
  .run-toggle { grid-template-columns: 52px minmax(0, 1fr) 20px; }
  .run-kind { grid-column: 2; grid-row: 2; }
  .run-store { grid-column: 2; }
  .run-outcome { grid-column: 1 / -1; grid-row: 3; }
  .run-chevron { grid-column: 3; grid-row: 1; }
}

@media (max-width: 680px) {
  .report-head { flex-direction: column; padding: 18px; }
  .report-head form, .report-head button { width: 100%; }
  .report-content { padding: 18px; }
  main { padding: 0 16px 32px; }
  .topbar { flex-direction: column; align-items: stretch; gap: 12px; padding: 18px 0 16px; }
  .topbar-actions { justify-content: space-between; }
  h1 { font-size: 1.3rem; }
  .action-bar { flex-direction: column; align-items: stretch; padding: 14px; }
  .action-bar .button-primary { margin-left: 0; }
  .action-status { margin: 0; }
  .inline-field input, .inline-field select, .new-run-fields input, .new-run-fields select { width: 100%; min-width: 0; font-size: 16px; }
  .new-run-fields label { flex: 1 1 100%; }
  .list-toolbar { flex-direction: column; align-items: stretch; }
  .list-toolbar .head-links { margin-left: 0; }
  .segmented { align-self: flex-start; }
  .result-item { flex: 1 1 50%; border-bottom: 1px solid var(--line); }
  .invoice-row { grid-template-columns: 1fr; gap: 6px; }
  .invoice-row .invoice-why { grid-column: auto; }
  .case-item { grid-template-columns: 1fr; }
  .case-side { justify-content: flex-start; }
  .data-toolbar { flex-direction: column; align-items: stretch; }
  .search-label input { width: 100%; }
  .masterway-table, .dropbox-table { min-width: 100%; }
  .masterway-table th:nth-child(1), .masterway-table td:nth-child(1),
  .masterway-table th:nth-child(3), .masterway-table td:nth-child(3),
  .masterway-table th:nth-child(6), .masterway-table td:nth-child(6),
  .dropbox-table th:nth-child(2), .dropbox-table td:nth-child(2),
  .dropbox-table th:nth-child(3), .dropbox-table td:nth-child(3) { display: none; }
  .capability-row { grid-template-columns: 1fr auto; }
  .capability-row span:not(.st) { grid-column: 1 / -1; }
  .detail { padding: 16px; }
  .pescado-table th, .pescado-table td { padding: 12px; }
}

.inventory-coverage { margin: 16px 0; padding: 12px 16px; border: 1px solid var(--line); border-radius: 10px; font-size: .875rem; }
.inventory-coverage p { margin: 0; }
.inventory-coverage-warning { border-color: var(--warning-line); background: var(--warning-soft); }
.inventory-coverage details { margin-top: 8px; }
.inventory-coverage summary { cursor: pointer; font-weight: 600; }
.inventory-coverage ul { margin: 10px 0 0; padding-left: 20px; }
.inventory-coverage li + li { margin-top: 8px; }
.app-version { margin: 0 0 12px; font-size: .8rem; color: var(--muted); }
.app-version p { overflow-wrap: anywhere; }
.invoice-workspace { width: 100%; }
.invoice-inspector { width: min(760px, calc(100vw - 32px)); max-height: calc(100dvh - 32px); }
.invoice-inspector-body { padding: 0 24px 24px; overflow-wrap: anywhere; }
.invoice-inspector-body .detail-head { padding-top: 16px; }
#view-pipeline > .tabs { overflow-x: auto; flex-wrap: nowrap; margin-top: 20px; }
#view-pipeline > .tabs [role="tab"] { flex-shrink: 0; white-space: nowrap; }
#view-pipeline > .tab-panel { padding-top: 18px; }
@media (max-width: 680px) {
  .invoice-inspector { width: calc(100vw - 16px); max-height: calc(100dvh - 16px); }
  .invoice-inspector-body { padding: 0 16px 16px; }
}
.prepared-live-section > summary { padding: 12px 16px; cursor: pointer; font-weight: 600; }
.prepared-live-section > .form-help, .prepared-live-section > .form-feedback { margin: 8px 16px; }

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