/* ==========================================================================
   ERP Financeiro Sumaré — protótipo. Estilo denso (Bloomberg/Linear).
   Tokens em :root (claro); escuro via prefers-color-scheme e [data-theme].
   ========================================================================== */
:root {
  --bg: #f5f6f8;          /* fundo da página */
  --panel: #ffffff;        /* cartões, tabelas */
  --panel-2: #f0f2f5;      /* cabeçalhos de tabela, faixas */
  --line: #dfe3e8;
  --line-strong: #c4cad2;
  --text: #1a1f26;
  --text-2: #5b6470;
  --text-3: #8a929c;
  --accent: #0185FF;       /* azul do site da marca */
  --accent-bg: #e6f2ff;
  --navy: #0B2A4A;         /* azul-marinho da marca — sidebar nos dois temas */
  --sidebar: #0B2A4A;
  --sidebar-text: #bfd3ea;
  --sidebar-active: #143a62;
  --sidebar-w: 240px;
  --sidebar-w-mini: 60px;

  /* semânticos */
  --vencido: #c62828;      --vencido-bg: #fdecea;
  --avencer: #b26a00;      --avencer-bg: #fff3e0;
  --pago: #1b7f3b;         --pago-bg: #e6f4ea;
  --estimado: #8a6d00;     --estimado-bg: #FFF7C2;
  --realizado: #3d4650;    --realizado-bg: #eceff2;
  --previsto: #1f5fa8;     --previsto-bg: #e3f0fb;
  --orcado: #6a3fb5;       --orcado-bg: #efe8fb;
  --pendente: #6b7280;     --pendente-bg: #e5e7eb;
  --premissa: #8a6d00;     --premissa-bg: #FFF7C2;

  /* gráficos */
  --c1: #0185FF; --c2: #1b7f3b; --c3: #b26a00; --c4: #6a3fb5; --c5: #c62828; --c6: #0e8a8a; --c7: #8a929c;

  --font: Inter, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --radius: 4px;
  --row: 30px;
  --shadow: 0 4px 16px rgba(0,0,0,.12);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0f1218; --panel: #161a22; --panel-2: #1d222c; --line: #2a3140; --line-strong: #3a4354;
    --text: #e6e9ee; --text-2: #a4adba; --text-3: #6f7a89; --accent: #3d9cff; --accent-bg: #12365c;
    --sidebar: #0B2A4A; --sidebar-text: #bfd3ea; --sidebar-active: #164272;
    --vencido: #ff7b72; --vencido-bg: #3a1a1a; --avencer: #f0b35a; --avencer-bg: #3a2a10;
    --pago: #5fd38a; --pago-bg: #10301c; --estimado: #f5d76e; --estimado-bg: #3a3210;
    --realizado: #c9d1dc; --realizado-bg: #262c36; --previsto: #7fb3ff; --previsto-bg: #142640;
    --orcado: #c9a8ff; --orcado-bg: #2a1d45; --pendente: #9aa3ae; --pendente-bg: #262c36;
    --premissa: #f5d76e; --premissa-bg: #3a3210;
    --c1: #3d9cff; --c2: #5fd38a; --c3: #f0b35a; --c4: #c9a8ff; --c5: #ff7b72; --c6: #4fd1d1; --c7: #6f7a89;
    --shadow: 0 4px 16px rgba(0,0,0,.5);
  }
}
:root[data-theme="dark"] {
  --bg: #0f1218; --panel: #161a22; --panel-2: #1d222c; --line: #2a3140; --line-strong: #3a4354;
  --text: #e6e9ee; --text-2: #a4adba; --text-3: #6f7a89; --accent: #3d9cff; --accent-bg: #12365c;
  --sidebar: #0B2A4A; --sidebar-text: #bfd3ea; --sidebar-active: #164272;
  --vencido: #ff7b72; --vencido-bg: #3a1a1a; --avencer: #f0b35a; --avencer-bg: #3a2a10;
  --pago: #5fd38a; --pago-bg: #10301c; --estimado: #f5d76e; --estimado-bg: #3a3210;
  --realizado: #c9d1dc; --realizado-bg: #262c36; --previsto: #7fb3ff; --previsto-bg: #142640;
  --orcado: #c9a8ff; --orcado-bg: #2a1d45; --pendente: #9aa3ae; --pendente-bg: #262c36;
  --premissa: #f5d76e; --premissa-bg: #3a3210;
  --c1: #3d9cff; --c2: #5fd38a; --c3: #f0b35a; --c4: #c9a8ff; --c5: #ff7b72; --c6: #4fd1d1; --c7: #6f7a89;
  --shadow: 0 4px 16px rgba(0,0,0,.5);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { margin: 0; padding: 0; height: 100%; }
body { font: 13px/1.4 var(--font); color: var(--text); background: var(--bg); font-variant-numeric: tabular-nums; }
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 17px; font-weight: 600; margin: 0 0 4px; }
h2 { font-size: 13px; font-weight: 600; margin: 0 0 8px; text-transform: uppercase; letter-spacing: .04em; color: var(--text-2); }
h3 { font-size: 13px; font-weight: 600; margin: 0 0 6px; }
p { margin: 0 0 8px; }
kbd { font: 11px var(--mono); background: var(--panel-2); border: 1px solid var(--line); border-radius: 3px; padding: 0 4px; color: var(--text-2); }
code { font-family: var(--mono); font-size: 12px; }
.muted { color: var(--text-3); }
.small { font-size: 11px; }
.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.neg { color: var(--vencido); }
.pos { color: var(--pago); }
.nowrap { white-space: nowrap; }
.right { text-align: right; }
.center { text-align: center; }
.mt { margin-top: 12px; } .mb { margin-bottom: 12px; }
.row { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-start; }
.row > * { min-width: 0; }
.col { flex: 1 1 320px; }
.col-2 { flex: 2 1 480px; }
.grid-kpi { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; margin-bottom: 12px; }
.grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 12px; }
.grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }

/* layout */
.app { display: flex; min-height: 100vh; }
.sidebar { width: var(--sidebar-w); flex: 0 0 var(--sidebar-w); background: var(--sidebar); color: var(--sidebar-text); display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; z-index: 30; transition: width .15s, flex-basis .15s; overflow: hidden; }
.brand { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 12px 10px 6px 14px; }
.brand-link { display: block; line-height: 0; }
.brand-logo-full { width: 150px; height: auto; display: block; }
.brand-logo-mini { display: none; width: 24px; height: auto; }
.brand-sub { display: flex; flex-direction: column; padding: 0 14px 8px; font-size: 11px; color: #fff; line-height: 1.3; }
.brand-sub .muted { color: var(--sidebar-text); opacity: .8; }
.collapse-btn { flex: 0 0 auto; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.14); color: #fff; border-radius: var(--radius); width: 24px; height: 24px; display: grid; place-items: center; cursor: pointer; padding: 0; }
.collapse-btn:hover { background: rgba(255,255,255,.16); }
.collapse-btn svg { transition: transform .15s; }
.search-btn { margin: 4px 12px 10px; display: flex; align-items: center; gap: 8px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); color: var(--sidebar-text); border-radius: var(--radius); padding: 6px 8px; font: inherit; cursor: pointer; white-space: nowrap; }
.search-btn .lbl { flex: 1; text-align: left; }
.search-btn kbd { background: transparent; border-color: rgba(255,255,255,.2); color: inherit; }
.nav { display: flex; flex-direction: column; padding: 4px 8px 12px; gap: 3px; flex: 1; min-height: 0; overflow-y: auto; overflow-x: hidden; }
.nav a { display: flex; flex-shrink: 0; align-items: center; gap: 9px; padding: 9px 10px; border-radius: var(--radius); color: var(--sidebar-text); font-size: 13px; white-space: nowrap; overflow: hidden; }
.nav a:hover { background: rgba(255,255,255,.07); text-decoration: none; color: #fff; }
.nav a.active { background: var(--sidebar-active); color: #fff; box-shadow: inset 3px 0 0 var(--accent); }
.nav a .ico { flex: 0 0 20px; width: 20px; height: 20px; display: grid; place-items: center; }
.nav a .ico svg { width: 20px; height: 20px; stroke-width: 1.5; }
.nav a .lbl { overflow: hidden; text-overflow: ellipsis; flex: 1; }
.nav a .k { font-family: var(--mono); font-size: 10px; opacity: .45; }
.nav .nav-sep { flex-shrink: 0; margin: 14px 10px 4px; font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: var(--sidebar-text); opacity: .6; white-space: nowrap; overflow: hidden; }
.sidebar-foot { padding: 10px 14px; display: flex; justify-content: space-between; align-items: center; gap: 6px; font-size: 11px; border-top: 1px solid rgba(255,255,255,.08); white-space: nowrap; overflow: hidden; }
.sidebar-foot .btn-ghost { color: var(--sidebar-text); border-color: rgba(255,255,255,.2); display: inline-flex; align-items: center; gap: 2px; }
/* sidebar recolhida (60 px): só ícones + rótulo curto + title nativo */
.app.mini .sidebar { width: var(--sidebar-w-mini); flex-basis: var(--sidebar-w-mini); }
.app.mini .brand { flex-direction: column; padding: 10px 0 4px; gap: 6px; }
.app.mini .brand-logo-full { display: none; }
.app.mini .brand-logo-mini { display: block; }
.app.mini .brand-sub { display: none; }
.app.mini .collapse-btn svg { transform: rotate(180deg); }
.app.mini .search-btn { margin: 4px 8px 8px; padding: 6px 0; justify-content: center; }
.app.mini .search-btn .lbl, .app.mini .search-btn kbd { display: none; }
.app.mini .nav { padding: 4px 6px 12px; }
.app.mini .nav a { flex-direction: column; gap: 4px; padding: 8px 2px; font-size: 9px; }
.app.mini .nav a .lbl { display: block; flex: none; width: 100%; max-width: 100%; text-align: center; font-size: 9px; line-height: 1.1; }
.app.mini .nav a .lbl .full { display: none; }
.nav a .lbl .short { display: none; }
.app.mini .nav a .lbl .short { display: inline; }
.app.mini .nav a .k { display: none; }
.app.mini .nav .nav-sep { text-align: center; margin: 4px 0 0; font-size: 8px; }
.app.mini .sidebar-foot { padding: 8px 4px; justify-content: center; }
.app.mini .sidebar-foot .lbl { display: none; }
.main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.topbar { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; gap: 12px; padding: 8px 16px; background: var(--panel); border-bottom: 1px solid var(--line); min-height: 46px; flex-wrap: wrap; }
.menu-btn { display: none; }
.crumb { flex: 1; font-weight: 600; min-width: 120px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.crumb span.muted { font-weight: 400; }
.topbar-right { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.top-field { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-2); }
.perfil-box { display: inline-flex; align-items: center; gap: 6px; }
.perfil-chip { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--line-strong); border-radius: 14px; padding: 2px 8px 2px 3px; font-size: 12px; background: var(--panel); cursor: pointer; max-width: 260px; }
.perfil-chip .avatar { width: 20px; height: 20px; border-radius: 50%; background: var(--navy); color: #fff; display: grid; place-items: center; font-size: 10px; font-weight: 700; flex: 0 0 20px; }
.perfil-chip .nm { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.perfil-chip .role { color: var(--text-3); white-space: nowrap; font-size: 11px; }
.perfil-chip select { border: 0; background: transparent; font: inherit; font-size: 12px; color: inherit; max-width: 150px; }
.view { padding: 14px 16px 60px; }
@media (max-width: 900px) {
  .sidebar { position: fixed; left: calc(-1 * var(--sidebar-w) - 10px); transition: left .15s; width: var(--sidebar-w) !important; flex-basis: var(--sidebar-w) !important; }
  .sidebar.open { left: 0; }
  .app.mini .brand-logo-full { display: block; } .app.mini .brand-logo-mini { display: none; } .app.mini .brand { flex-direction: row; }
  .app.mini .nav a { flex-direction: row; font-size: 13px; } .app.mini .nav a .lbl .full { display: inline; } .app.mini .nav a .lbl .short { display: none; }
  .app.mini .search-btn .lbl { display: inline; }
  .collapse-btn { display: none; }
  .menu-btn { display: inline-block; }
  .view { padding: 10px 16px 60px; }
  .topbar-right { min-width: 0; max-width: 100%; }
  .perfil-box { flex-wrap: wrap; max-width: 100%; }
}

/* controles */
.btn { font: inherit; font-size: 12px; padding: 5px 10px; border-radius: var(--radius); border: 1px solid var(--line-strong); background: var(--panel); color: var(--text); cursor: pointer; white-space: nowrap; }
.btn:hover { background: var(--panel-2); }
.btn-primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.btn-primary:hover { filter: brightness(1.1); background: var(--accent); }
.btn-ghost { background: transparent; }
.btn-sm { padding: 3px 8px; font-size: 11px; }
.btn[disabled], .btn.blocked { opacity: .45; cursor: not-allowed; }
.btn .ico { width: 14px; height: 14px; vertical-align: -3px; margin-right: 4px; stroke-width: 1.75; }
.btn-sm .ico { width: 12px; height: 12px; vertical-align: -2px; }
.btn-danger { color: var(--vencido); border-color: var(--vencido); }
.btn-ok { color: var(--pago); border-color: var(--pago); }
select, input[type="text"], input[type="number"], input[type="date"], input[type="month"], textarea { font: inherit; font-size: 12px; padding: 4px 6px; border: 1px solid var(--line-strong); border-radius: var(--radius); background: var(--panel); color: var(--text); }
input[type="range"] { width: 100%; }
textarea { width: 100%; min-height: 60px; }
label.f { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: var(--text-2); }
label.f > input, label.f > select { width: 100%; }
label.inline { display: inline-flex; gap: 4px; align-items: center; font-size: 12px; }
.toggle { display: inline-flex; border: 1px solid var(--line-strong); border-radius: var(--radius); overflow: hidden; }
.toggle button { border: 0; background: var(--panel); color: var(--text-2); padding: 4px 10px; font: inherit; font-size: 12px; cursor: pointer; border-right: 1px solid var(--line); }
.toggle button:last-child { border-right: 0; }
.toggle button.on { background: var(--accent); color: #fff; }

/* chips */
.chip { display: inline-block; font-size: 10.5px; line-height: 16px; padding: 0 6px; border-radius: 9px; font-weight: 600; letter-spacing: .02em; white-space: nowrap; vertical-align: middle; }
.chip-vencido { color: var(--vencido); background: var(--vencido-bg); }
.chip-avencer { color: var(--avencer); background: var(--avencer-bg); }
.chip-pago { color: var(--pago); background: var(--pago-bg); }
.chip-estimado, .chip-premissa { color: var(--estimado); background: var(--estimado-bg); cursor: help; }
.chip-realizado { color: var(--realizado); background: var(--realizado-bg); }
.chip-previsto { color: var(--previsto); background: var(--previsto-bg); }
.chip-orcado { color: var(--orcado); background: var(--orcado-bg); }
.chip-pendente { color: var(--pendente); background: var(--pendente-bg); }
.chip-ok { color: var(--pago); background: var(--pago-bg); }
.chip-neutro { color: var(--text-2); background: var(--panel-2); }
.dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 5px; vertical-align: middle; }
.dot-verde { background: var(--pago); } .dot-ambar { background: var(--avencer); } .dot-vermelho { background: var(--vencido); } .dot-cinza { background: var(--pendente); }

/* cards / painéis */
.panel { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 12px; margin-bottom: 12px; }
.panel-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
.panel-head h2 { margin: 0; }
.grid-kpi { align-items: stretch; }
.kpi { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 9px 12px 8px; min-height: 96px; display: flex; flex-direction: column; min-width: 0; }
.kpi > a { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.kpi .k-label { font-size: 11px; color: var(--text-2); text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kpi .k-chip { display: flex; justify-content: flex-end; min-height: 16px; margin-top: 2px; }
.kpi .k-value { font-size: clamp(15px, 1.35vw, 20px); font-weight: 600; margin: 3px 0 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-variant-numeric: tabular-nums; }
.kpi .k-value .small { font-size: 11px; font-weight: 400; }
.kpi .k-sub { font-size: 11px; color: var(--text-3); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.3; margin-top: auto; }
.kpi.k-danger .k-value { color: var(--vencido); }
.kpi.k-warn .k-value { color: var(--avencer); }
.kpi.k-ok .k-value { color: var(--pago); }
.kpi.k-pend .k-value { color: var(--text-3); }
.kpi a { color: inherit; }

/* tabelas */
.tbl-wrap { border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); margin-bottom: 12px; }
.tbl-bar { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; padding: 6px 8px; border-bottom: 1px solid var(--line); background: var(--panel); font-size: 12px; }
.tbl-bar .spacer { flex: 1; }
.tbl-bar select, .tbl-bar input { font-size: 11px; padding: 2px 4px; max-width: 170px; }
.tbl-scroll { overflow: auto; max-height: 70vh; position: relative; }
table.tbl { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 12px; }
table.tbl th, table.tbl td { height: var(--row); padding: 0 8px; border-bottom: 1px solid var(--line); white-space: nowrap; text-align: left; vertical-align: middle; }
table.tbl thead th { position: sticky; top: 0; z-index: 2; background: var(--panel-2); font-weight: 600; color: var(--text-2); font-size: 11px; text-transform: uppercase; letter-spacing: .03em; cursor: pointer; user-select: none; }
table.tbl thead th.num { text-align: right; }
table.tbl thead th .sort { opacity: .5; font-size: 10px; margin-left: 3px; }
table.tbl tfoot td { position: sticky; bottom: 0; z-index: 2; background: var(--panel-2); font-weight: 600; border-top: 1px solid var(--line-strong); }
table.tbl tbody tr:hover td { background: var(--accent-bg); }
table.tbl tr.clickable { cursor: pointer; }
table.tbl td.wrap { white-space: normal; min-width: 220px; line-height: 1.3; }
table.tbl td.ell, table.tbl td .ell { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
table.tbl td .ell { display: block; }
table.tbl td.who { min-width: 160px; max-width: 280px; overflow: hidden; text-overflow: ellipsis; }
table.tbl td.who .sub { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-3); font-size: 11px; }
table.tbl td.who > a { display: block; overflow: hidden; text-overflow: ellipsis; }
table.tbl td .chip { white-space: nowrap; }
table.tbl td.est { background: var(--estimado-bg); }
table.tbl td.edit-cell { cursor: cell; }
table.tbl td.edit-cell:hover { outline: 1px dashed var(--estimado); outline-offset: -1px; }
table.tbl tr.total td { font-weight: 600; background: var(--panel-2); }
table.tbl tr.sub td { font-weight: 600; }
table.tbl tr.group td { background: var(--panel-2); font-weight: 600; color: var(--text-2); text-transform: uppercase; font-size: 11px; }
table.tbl tr.indent td:first-child { padding-left: 22px; }
table.tbl tr.expand td { white-space: normal; background: var(--panel-2); height: auto; padding: 8px 12px; }
.tbl-foot { padding: 5px 8px; font-size: 11px; color: var(--text-3); border-top: 1px solid var(--line); display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px; }
.colsel { position: relative; }
.colsel-menu { position: absolute; right: 0; top: 100%; z-index: 5; background: var(--panel); border: 1px solid var(--line-strong); border-radius: var(--radius); box-shadow: var(--shadow); padding: 6px 8px; min-width: 180px; max-height: 260px; overflow: auto; }
.contracts-table .tbl-scroll { max-height: none; }
.contracts-table .tbl-scroll:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.contracts-table thead th { padding: 5px 6px; cursor: default; }
.contracts-table th[data-column="nome"] { min-width: 160px; }
.contracts-table th[data-column="contato"] { min-width: 190px; }
.contracts-table td[data-column="contato"] { width: 190px; max-width: 190px; padding-top: 3px; padding-bottom: 3px; }
.contract-contact { display: block; max-width: 190px; color: var(--text); font-size: 11px; line-height: 1.3; }
.contract-contact b, .contract-contact span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.contract-contact span { color: var(--text-2); }
.contract-contact small { color: var(--accent); font-size: 10px; }
.contract-scroll-tools { display: flex; align-items: center; gap: 5px; padding: 2px 8px; border-bottom: 1px solid var(--line); font-size: 10px; color: var(--text-3); }
.contract-scroll-tools > span { flex-shrink: 0; }
.contract-scroll-tools .btn { min-height: 22px; padding: 0 5px; }
.contract-scroll-top { overflow-x: scroll; overflow-y: hidden; min-width: 30px; flex: 1; height: 13px; }
.contract-scroll-top > div { height: 1px; }
.contract-scroll-top::-webkit-scrollbar, .contracts-table .tbl-scroll::-webkit-scrollbar { height: 8px; }
.contract-scroll-top::-webkit-scrollbar-thumb, .contracts-table .tbl-scroll::-webkit-scrollbar-thumb { background: var(--line-strong); border-radius: 5px; }
.contract-scroll-top::-webkit-scrollbar-track { background: var(--panel-2); }
.contract-grabbing, .contract-grabbing * { cursor: grabbing !important; user-select: none !important; }
.contracts-table th[data-column="inicio"], .contracts-table th[data-column="fimIso"] { width: 112px; }
.supplier-contact-form { padding: 12px; background: var(--panel-2); border: 1px solid var(--line); border-radius: 4px; margin: 12px 0; }
.supplier-contact-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.softsy-references { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.softsy-references article { min-width: 0; padding: 10px 12px; border: 1px solid var(--line); border-radius: 4px; overflow-wrap: anywhere; }
.softsy-references article > b, .softsy-references article > span { display: block; margin-bottom: 4px; }
.softsy-references summary { cursor: pointer; font-size: 12px; margin-top: 8px; color: var(--text-3); }
.softsy-reference-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.contracts-table td[data-column="valor_relacao"] > .sub { display: block; margin-top: 3px; line-height: 1.4; }
@media (max-width: 700px) { .softsy-references { grid-template-columns: minmax(0, 1fr); } }
.supplier-contact-card { border: 1px solid var(--line); border-radius: 4px; padding: 10px 12px; min-width: 0; font-size: 12px; overflow-wrap: anywhere; }
.supplier-contact-card h3 { margin: 0; font-size: 13px; }
.supplier-contact-card p { margin: 5px 0; }
.supplier-contact-card dl { display: grid; grid-template-columns: 62px minmax(0, 1fr); gap: 4px 8px; }
.supplier-contact-card dt { color: var(--text-3); }
.supplier-contact-card dd { margin: 0; }
@media (max-width: 700px) { .supplier-contact-cards { grid-template-columns: minmax(0, 1fr); } }
.contracts-table th[data-column="valor_relacao"] { min-width: 106px; }
.contracts-table th[data-column="pagamentoDia"] { min-width: 124px; }
.contracts-table th[data-column="decisao"] { min-width: 120px; }
.contracts-table th[data-column="inicio"], .contracts-table th[data-column="fimIso"] { min-width: 94px; }
.contracts-table th[data-column="encerramentoPrevisto"] { min-width: 156px; }
.contracts-table th[data-column="acoes"] { min-width: 86px; }
.contracts-table .contract-select { width: 30px; min-width: 30px; text-align: center; padding: 0 6px; }
.contracts-table .contract-select input { width: 14px; height: 14px; accent-color: var(--accent); cursor: pointer; vertical-align: middle; }
.contract-head { display: flex; align-items: center; gap: 3px; }
.contract-sort, .contract-head-label { min-width: 0; flex: 1; }
.contract-sort { display: flex; align-items: center; border: 0; padding: 0; background: transparent; color: inherit; font: inherit; text-transform: inherit; letter-spacing: inherit; text-align: left; white-space: normal; cursor: pointer; line-height: 1.25; }
.contract-sort:hover, .contract-sort:focus-visible { color: var(--accent); }
.column-moves { display: inline-flex; flex-shrink: 0; }
.column-moves button { display: grid; place-items: center; width: 14px; height: 20px; padding: 0; border: 0; border-radius: 2px; background: transparent; color: var(--text-3); font: inherit; font-size: 17px; cursor: pointer; }
.column-moves button:hover, .column-moves button:focus-visible { background: var(--line); color: var(--accent); }
.column-moves button:disabled { opacity: .25; cursor: default; }
.contracts-table .contract-end-date { width: 132px; min-width: 120px; max-width: 100%; min-height: 26px; padding: 2px 4px; font-size: 11px; }
.contracts-table .contract-selected td { background: var(--accent-bg); }
.contract-selection { font-size: 11px; color: var(--accent); }
.contract-decision-button { display: inline-flex; align-items: center; gap: 5px; padding: 2px 0; border: 0; background: transparent; color: var(--text-3); cursor: pointer; font: inherit; }
.contract-decision-button:hover, .contract-decision-button:focus-visible { color: var(--accent); outline: 1px solid var(--accent); outline-offset: 2px; border-radius: 3px; }
.contract-decision-summary { display: block; color: var(--text-3); font-size: 10px; line-height: 1.15; }
.contract-decision-editor { max-width: 1000px; padding: 4px 0; }
.contract-decision-editor h3 { font-size: 13px; margin: 0 0 4px; }
.contract-decision-editor > p { margin: 0 0 8px; }
.decision-fields { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px 12px; }
.decision-fields label { display: flex; flex-direction: column; gap: 3px; font-size: 11px; color: var(--text-2); min-width: 0; }
.decision-fields input, .decision-fields select, .decision-fields textarea { width: 100%; min-width: 0; min-height: 28px; padding: 4px 6px; font-size: 12px; }
.decision-fields .decision-just { grid-column: 1 / -1; }
.decision-fields textarea { resize: vertical; }
.decision-siblings { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 11px; }
.decision-siblings input { flex: 0 0 auto; width: 14px; height: 14px; }
.decision-buttons { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.decision-buttons .note { margin: 0 0 0 6px; }
.decision-error { color: var(--danger, #b42318); font-size: 12px; }
.decision-error:empty { display: none; }
.contract-decision-history { margin-top: 12px; border-top: 1px solid var(--line); padding-top: 8px; font-size: 11px; }
.contract-decision-history summary { cursor: pointer; color: var(--text-2); }
.contract-decision-history ol { margin: 8px 0 0; padding-left: 20px; }
.contract-decision-history li { margin-bottom: 10px; overflow-wrap: anywhere; }
.contract-decision-history li span { display: block; }
@media (max-width: 700px) { .decision-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.contract-expanded { padding: 4px 0; }
.contract-expanded dl { display: grid; grid-template-columns: 110px minmax(0, 1fr) 110px minmax(0, 1fr); gap: 7px 12px; margin: 0; font-size: 11px; }
.contract-expanded dt { color: var(--text-2); }
.contract-expanded dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.contract-detail-links { display: flex; flex-wrap: wrap; gap: 8px 20px; margin-top: 12px; font-size: 11px; }
.contracts-table .colsel-menu { min-width: 245px; max-height: 360px; }
.contracts-table .colsel-menu > button { width: 100%; margin-top: 8px; }
@media (max-width: 700px) {
  .contract-expanded dl { grid-template-columns: 110px minmax(0, 1fr); }
}
.colsel-menu label { display: block; font-size: 12px; padding: 2px 0; white-space: nowrap; }
.bar-cell { display: flex; align-items: center; gap: 6px; }
.bar-cell .bar { height: 10px; background: var(--c1); border-radius: 2px; min-width: 1px; }

/* memória / detalhes */
.memo { font-size: 12px; margin: 0; padding: 0; list-style: none; }
.memo li { display: flex; justify-content: space-between; gap: 12px; padding: 3px 0; border-bottom: 1px dotted var(--line); }
.memo li .f { color: var(--text-3); font-size: 11px; display: block; }
.memo li .v { white-space: nowrap; font-variant-numeric: tabular-nums; }
.kv { display: grid; grid-template-columns: max-content 1fr; gap: 3px 14px; font-size: 12px; }
.kv dt { color: var(--text-2); }
.kv dd { margin: 0; }
.tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--line); margin-bottom: 10px; overflow-x: auto; }
.tabs button { border: 0; border-bottom: 2px solid transparent; background: transparent; font: inherit; font-size: 12px; padding: 6px 10px; cursor: pointer; color: var(--text-2); white-space: nowrap; }
.tabs button.on { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }
.timeline { list-style: none; margin: 0; padding: 0; font-size: 12px; }
.timeline li { padding: 4px 0 4px 16px; border-left: 2px solid var(--line-strong); position: relative; }
.timeline li::before { content: ""; position: absolute; left: -6px; top: 8px; width: 10px; height: 10px; border-radius: 50%; background: var(--line-strong); }
.timeline li.done::before { background: var(--pago); }
.timeline li.now::before { background: var(--accent); }
.alerts { list-style: none; margin: 0; padding: 0; }
.alerts li { padding: 5px 0; border-bottom: 1px dotted var(--line); display: flex; gap: 8px; align-items: baseline; font-size: 12px; }
.attach { display: flex; gap: 8px; flex-wrap: wrap; }
.attach .ph { border: 1px dashed var(--line-strong); border-radius: var(--radius); padding: 14px 10px; width: 130px; text-align: center; color: var(--text-3); font-size: 11px; }

/* calendário */
.cal { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
.cal .dow { font-size: 10px; text-transform: uppercase; color: var(--text-3); text-align: center; padding: 2px; }
.cal .day { min-height: 58px; border: 1px solid var(--line); border-radius: 3px; padding: 3px 4px; font-size: 11px; background: var(--panel); cursor: pointer; }
.cal .day.empty { background: transparent; border-color: transparent; cursor: default; }
.cal .day.hoje { border-color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); }
.cal .day.past { opacity: .75; }
.cal .day .d { color: var(--text-3); }
.cal .day .v { font-weight: 600; margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal .day .n { color: var(--text-3); font-size: 10px; }
.cal .day.sel { background: var(--accent-bg); }

/* gráficos */
.chart { width: 100%; overflow-x: auto; }
.chart svg { display: block; max-width: 100%; height: auto; font-family: var(--font); }
.chart text { fill: var(--text-2); font-size: 10px; }
.chart .axis { stroke: var(--line-strong); }
.chart .grid { stroke: var(--line); }
.legend { display: flex; gap: 12px; flex-wrap: wrap; font-size: 11px; color: var(--text-2); margin: 4px 0; }
.legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 4px; vertical-align: -1px; }

/* drawer / popover / modais */
.overlay { position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 40; }
.drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(560px, 100vw); background: var(--panel); border-left: 1px solid var(--line); z-index: 50; overflow: auto; padding: 14px 16px; box-shadow: var(--shadow); }
.drawer-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.popover { position: fixed; z-index: 60; background: var(--panel); border: 1px solid var(--line-strong); border-radius: var(--radius); box-shadow: var(--shadow); padding: 10px 12px; width: 320px; max-width: calc(100vw - 32px); }
.popover .grid { display: grid; gap: 6px; }
.search-modal { position: fixed; inset: 0; z-index: 70; background: rgba(0,0,0,.35); display: flex; justify-content: center; align-items: flex-start; padding: 12vh 16px 0; }
.search-box { width: 560px; max-width: 100%; background: var(--panel); border: 1px solid var(--line-strong); border-radius: 6px; box-shadow: var(--shadow); overflow: hidden; }
.search-box input { width: 100%; border: 0; border-bottom: 1px solid var(--line); padding: 10px 12px; font-size: 14px; border-radius: 0; }
.search-results { max-height: 50vh; overflow: auto; }
.search-results a { display: flex; justify-content: space-between; padding: 7px 12px; color: var(--text); border-bottom: 1px solid var(--line); }
.search-results a.sel, .search-results a:hover { background: var(--accent-bg); text-decoration: none; }
.search-results .t { color: var(--text-3); font-size: 11px; }
.toast { position: fixed; bottom: 16px; left: 50%; transform: translateX(-50%); background: var(--text); color: var(--bg); padding: 8px 14px; border-radius: 4px; z-index: 80; font-size: 12px; box-shadow: var(--shadow); max-width: 90vw; }
.note { font-size: 11px; color: var(--text-3); margin: 6px 0; }
.note.warn { color: var(--avencer); }
.pend { color: var(--text-3); }
.empty { padding: 20px; text-align: center; color: var(--text-3); }
.sliders { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px 16px; }
.sliders label { font-size: 11px; color: var(--text-2); display: block; }
.sliders label b { color: var(--text); float: right; font-variant-numeric: tabular-nums; }
.chk-list { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 12px; }
.scn-card { border: 1px solid var(--line); border-radius: var(--radius); padding: 8px 10px; cursor: pointer; background: var(--panel); }
.scn-card.on { border-color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); }
.scn-card h3 { margin-bottom: 4px; }
.scn-card ul { margin: 0; padding-left: 16px; font-size: 11px; color: var(--text-2); }
.int-card { border: 1px solid var(--line); border-radius: var(--radius); padding: 8px 10px; background: var(--panel); }
.int-card .n { font-weight: 600; }
@media print { .sidebar, .topbar { display: none; } .view { padding: 0; } }

/* barra de ações (topo da tela) */
.actbar { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: flex-start; margin: 0 0 12px; padding: 8px 10px; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); }
.actbar .grp { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.actbar .grp .gl { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); margin-right: 4px; white-space: nowrap; }
.actbar .btn { display: inline-flex; align-items: center; gap: 2px; }
.actbar .btn .ico { margin-right: 2px; }
/* Contratos: ações e filtros preenchem toda a largura de seus quadros. */
.actbar.contracts-actions { display: grid; gap: 4px; padding: 7px 10px; margin-bottom: 8px; }
.contracts-actions .grp { display: grid; gap: 6px; align-items: stretch; min-width: 0; }
.contracts-actions .grp:nth-child(1) { grid-template-columns: 80px repeat(3, minmax(0, 1fr)); }
.contracts-actions .grp:nth-child(2) { grid-template-columns: 80px repeat(4, minmax(0, 1fr)); }
.contracts-actions .grp:nth-child(3) { grid-template-columns: 80px repeat(2, minmax(0, 1fr)); }
.contract-detail-actions .grp:first-child { grid-template-columns: 80px repeat(2, minmax(0, 1fr)); }
/* Carteira: indicadores compactos e apenas ações sem contrato selecionado. */
.contract-list-heading { align-items:center; margin-bottom:8px; }
.contract-list-heading h1 { margin:0; }
.contract-portfolio { border:1px solid var(--line); border-radius:var(--radius); background:var(--panel); margin-bottom:8px; }
.contract-portfolio-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); margin:0; }
.contract-portfolio-metric { min-width:0; padding:5px 12px; border-right:1px solid var(--line); }
.contract-portfolio-metric:last-child { border-right:0; }
.contract-portfolio-metric dt { font-size:11px; color:var(--text-2); margin:0 0 3px; line-height:1.35; }
.contract-portfolio-metric dd { font-size:21px; font-weight:650; line-height:1.2; margin:0 0 3px; font-variant-numeric:tabular-nums; letter-spacing:-.025em; }
.contract-portfolio-metric > span { display:block; color:var(--text-3); font-size:10px; line-height:1.35; }
.contract-portfolio-note { padding:0; color:var(--text-3); font-size:10px; }
.contract-portfolio-note[open] { flex-basis:100%; order:2; }
.contract-portfolio-note summary { cursor:pointer; }
.contract-portfolio-note summary span { margin-left:4px; }
.contract-portfolio-note p { margin:6px 0; line-height:1.5; }
.actbar.contract-list-actions .grp { grid-template-columns:80px repeat(2,minmax(0,1fr)); }
@media (max-width:1100px) {
  .contract-portfolio-metric dd { font-size:18px; }
  .contract-portfolio-metric { padding:6px 10px; }
}
@media (max-width:700px) {
  .contract-list-heading { gap:4px; }
  .contract-portfolio-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .contract-portfolio-metric:nth-child(2) { border-right:0; }
  .contract-portfolio-metric:nth-child(-n+2) { border-bottom:1px solid var(--line); }
  .actbar.contract-list-actions .grp { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .actbar.contract-list-actions .grp .gl { display:none; }
  .actbar.contracts-actions.contract-list-actions .grp:first-child > .btn:last-child { grid-column:auto; }
}
.contracts-actions .grp .gl { align-self: center; margin: 0; }
.contracts-actions .btn { width: 100%; min-width: 0; min-height: 26px; padding: 3px 6px; justify-content: center; white-space: normal; }
.contracts-actions .btn-primary { background: var(--accent-bg); border-color: var(--line-strong); color: var(--accent); }
.contracts-actions .btn-primary:hover { background: var(--accent); color: #fff; }
.contracts-actions .btn .ico { flex-shrink: 0; }
.tbl-bar[data-filter-scope="contratos"] { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px 10px; padding: 8px 10px; align-items: center; }
.tbl-bar[data-filter-scope="contratos"] label.inline { display: grid; grid-template-columns: 90px minmax(0, 1fr); align-items: center; gap: 5px; min-width: 0; font-size: 11px; }
.tbl-bar[data-filter-scope="contratos"] input,
.tbl-bar[data-filter-scope="contratos"] select,
.tbl-bar[data-filter-scope="contratos"] > .btn { width: 100%; min-width: 0; max-width: none; min-height: 26px; padding: 3px 6px; font-size: 11px; }
@media (max-width: 1000px) {
  .tbl-bar[data-filter-scope="contratos"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .contracts-actions .grp:nth-child(n) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .contracts-actions .grp .gl { grid-column: 1 / -1; }
  .contracts-actions:not(.contract-detail-actions) .grp:first-child > .btn:last-child { grid-column: 1 / -1; }
}
@media (max-width: 500px) {
  .tbl-bar[data-filter-scope="contratos"] { align-items: end; }
  .tbl-bar[data-filter-scope="contratos"] label.inline { grid-template-columns: minmax(0, 1fr); gap: 2px; }
}
.h1row { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; flex-wrap: wrap; }
.h1row h1 { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
h1 span.muted { font-weight: 400; font-size: 13px; }
.seg { display: inline-flex; border: 1px solid var(--line-strong); border-radius: var(--radius); overflow: hidden; }
.seg button { border: 0; border-right: 1px solid var(--line); background: var(--panel); color: var(--text-2); padding: 4px 12px; font: inherit; font-size: 12px; cursor: pointer; }
.seg button:last-child { border-right: 0; }
.seg button.on { background: var(--accent); color: #fff; }
.pill-list { display: flex; flex-wrap: wrap; gap: 6px; }
.pill { border: 1px solid var(--line); border-radius: 12px; padding: 2px 8px; font-size: 11px; background: var(--panel-2); white-space: nowrap; }
.list-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 8px; }
.list-cards .lc { border: 1px solid var(--line); border-radius: var(--radius); padding: 8px 10px; background: var(--panel); min-width: 0; }
.list-cards .lc .t { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.list-cards .lc .d { font-size: 11px; color: var(--text-3); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.score { display: flex; align-items: center; gap: 12px; }
.score .ring { width: 64px; height: 64px; flex: 0 0 64px; }
.score .val { font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; }
.sev-alta { color: var(--vencido); } .sev-media { color: var(--avencer); } .sev-baixa { color: var(--previsto); } .sev-ok { color: var(--pago); }
.check-list { list-style: none; margin: 0; padding: 0; font-size: 12px; }
.check-list li { display: flex; gap: 8px; align-items: flex-start; padding: 5px 0; border-bottom: 1px dotted var(--line); }
.check-list li .st { flex: 0 0 18px; width: 18px; height: 18px; border-radius: 50%; display: grid; place-items: center; font-size: 11px; font-weight: 700; color: #fff; }
.check-list li .st.ok { background: var(--pago); } .check-list li .st.alta { background: var(--vencido); } .check-list li .st.media { background: var(--avencer); } .check-list li .st.baixa { background: var(--previsto); }
.check-list li .b { flex: 1; min-width: 0; }
.check-list li .b .t { font-weight: 600; }
.check-list li .b .i { color: var(--text-2); font-size: 11px; }
.check-list li .b .i a { margin-right: 6px; white-space: nowrap; }
.policy { font-size: 12px; }
.policy h3 { margin: 10px 0 2px; }
.policy p { margin: 0 0 4px; color: var(--text-2); }
.policy textarea { min-height: 120px; font-size: 12px; }
.blocked-note { font-size: 11px; color: var(--avencer); display: inline-flex; align-items: center; gap: 4px; }
.doclink { display: inline-flex; align-items: center; gap: 3px; white-space: nowrap; }
.doclink .ico { width: 14px; height: 14px; color: var(--vencido); }
.docs { list-style: none; margin: 0; padding: 0; }
.docs li { display: flex; gap: 8px; align-items: center; padding: 6px 0; border-bottom: 1px dotted var(--line); flex-wrap: wrap; }
.docs li .nm { flex: 1; min-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.docs li .ico { width: 18px; height: 18px; color: var(--vencido); flex: 0 0 18px; }
.flow { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; font-size: 11px; }
.flow .st { border: 1px solid var(--line); border-radius: 10px; padding: 1px 8px; color: var(--text-3); white-space: nowrap; }
.flow .st.done { color: var(--pago); border-color: var(--pago); background: var(--pago-bg); }
.flow .st.now { color: #fff; background: var(--accent); border-color: var(--accent); }
.flow .st.bad { color: var(--vencido); border-color: var(--vencido); background: var(--vencido-bg); }
.flow .arr { color: var(--text-3); }
/* modal */
.modal { position: fixed; inset: 0; z-index: 65; background: rgba(0,0,0,.4); display: flex; align-items: flex-start; justify-content: center; padding: 6vh 16px; overflow: auto; }
.modal-box { width: 720px; max-width: 100%; background: var(--panel); border: 1px solid var(--line-strong); border-radius: 6px; box-shadow: var(--shadow); padding: 14px 16px; }
.modal-box h2 { text-transform: none; letter-spacing: 0; font-size: 15px; color: var(--text); }
.modal-box .form { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px 12px; }
.modal-box .form .full { grid-column: 1 / -1; }
.modal-box .foot { display: flex; gap: 6px; justify-content: flex-end; margin-top: 12px; flex-wrap: wrap; }
.identity-dialog {width:420px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto;margin:auto;padding:20px;border:1px solid var(--line-strong);border-radius:8px;background:var(--panel);color:var(--text);box-shadow:var(--shadow);font:13px/1.5 var(--font)}
.identity-dialog::backdrop {background:rgba(0,0,0,.55)}
.identity-dialog h2 {margin:0 0 10px;font-size:17px;text-transform:none;letter-spacing:0;color:var(--text)}
.identity-dialog .f {display:flex;flex-direction:column;gap:5px;margin:12px 0}
.identity-dialog input {width:100%;min-width:0}
.identity-account {color:var(--text-2);overflow-wrap:anywhere}
.identity-error {min-height:1.5em;color:var(--vencido)}
.identity-actions {display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;margin-top:16px}
.modal-box pre.carta { white-space: pre-wrap; font: 12px/1.5 var(--font); background: var(--panel-2); padding: 10px 12px; border-radius: var(--radius); border: 1px solid var(--line); max-height: 50vh; overflow: auto; }
.req::after { content: " *"; color: var(--vencido); }
/* gráficos: rótulos sempre dentro do viewBox */
.chart svg { overflow: visible; }
.chart text { font-size: 10px; }
.chart text.axis-lbl { font-size: 9px; }
/* memo / lista: rótulos longos */
.memo li > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.kv dd { min-width: 0; overflow-wrap: anywhere; }
.alerts li span { min-width: 0; overflow-wrap: anywhere; }
.alerts li a { white-space: nowrap; }
.cal .day .v { font-size: 11px; }
h2 { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.panel-head h2 { min-width: 0; }
.tl-user { list-style: none; margin: 0; padding: 0; font-size: 12px; }
.tl-user li { padding: 4px 0 4px 16px; border-left: 2px solid var(--line-strong); position: relative; }
.tl-user li::before { content: ""; position: absolute; left: -6px; top: 8px; width: 10px; height: 10px; border-radius: 50%; background: var(--line-strong); }
.tl-user li.done::before { background: var(--pago); } .tl-user li.now::before { background: var(--accent); } .tl-user li.bad::before { background: var(--vencido); }
.tl-user li .w { color: var(--text-3); font-size: 11px; display: block; }
.rh-idx { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 8px; margin-bottom: 12px; }
.rh-idx a { border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 12px; background: var(--panel); color: var(--text); display: flex; gap: 10px; align-items: flex-start; min-width: 0; }
.rh-idx a:hover { border-color: var(--accent); text-decoration: none; }
.rh-idx a .ico { flex: 0 0 22px; color: var(--accent); }
.rh-idx a .ico svg { width: 22px; height: 22px; }
.rh-idx a b { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rh-idx a span { font-size: 11px; color: var(--text-3); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 1100px) { .grid-kpi { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); } }
/* tabelas "nuas" dentro de painéis: nunca estouram o card — rolagem própria e células de texto quebráveis */
.panel { overflow-x: auto; min-width: 0; }
.panel > table.tbl, .panel > .mt.tbl, .panel > .tbl { max-width: 100%; }
.panel > table.tbl td:not(.num), .panel > table.tbl th:not(.num) { white-space: normal; }
.panel > table.tbl td { height: auto; min-height: var(--row); padding-top: 4px; padding-bottom: 4px; line-height: 1.3; }
.grid-kpi .kpi { overflow: hidden; }
.h1row h1 span.muted { white-space: normal; }
.check-list li .b .i { white-space: normal; overflow-wrap: anywhere; }
.check-list li .b .i a { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; vertical-align: bottom; }
.app.mini .nav .nav-sep { display: none; }
/* ---- rodada 2: login, suporte, calendário ---- */
.app.login-mode .sidebar, .app.login-mode .topbar { display: none !important; }
.app.login-mode .view { padding: 0; min-height: 100vh; background: linear-gradient(160deg, #0B2A4A 0%, #10406e 60%, #0185FF 140%); display: flex; align-items: center; justify-content: center; }
.login-wrap { width: 100%; padding: 24px 16px; display: flex; justify-content: center; }
.login-card { width: 440px; max-width: 100%; background: var(--panel); border-radius: 10px; box-shadow: 0 20px 60px rgba(0,0,0,.35); padding: 22px 24px 16px; }
.login-brand { background: var(--navy); margin: -22px -24px 16px; padding: 18px 24px 12px; border-radius: 10px 10px 0 0; color: #bfd3ea; font-size: 12px; }
.login-brand img { display: block; width: 170px; height: auto; margin-bottom: 6px; }
.login-card h1 { font-size: 18px; margin-bottom: 10px; }
.login-card form { display: flex; flex-direction: column; gap: 10px; }
.login-card label.f > input { padding: 8px 10px; font-size: 14px; }
.lg-btn { width: 100%; padding: 9px 12px; font-size: 13px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.lg-google { background: var(--panel); }
.lg-links { display: flex; justify-content: space-between; font-size: 12px; }
.lg-sep { display: flex; align-items: center; gap: 8px; color: var(--text-3); font-size: 11px; }
.lg-sep::before, .lg-sep::after { content: ""; flex: 1; border-top: 1px solid var(--line); }
.lg-erro { color: var(--vencido); background: var(--vencido-bg); border-radius: var(--radius); padding: 6px 8px; font-size: 12px; margin: 0; }
.lg-demo { margin-top: 14px; font-size: 11px; color: var(--text-2); border-top: 1px dashed var(--line); padding-top: 8px; }
.lg-demo ul { margin: 4px 0 0; padding: 0; list-style: none; columns: 1; }
.lg-demo li { padding: 1px 0; white-space: normal; display: flex; justify-content: space-between; gap: 8px; }
.perfil-box .btn { margin-left: 4px; }
/* fluxograma */
.fluxo { width: 100%; height: auto; font-family: var(--font); }
.fx-lane { fill: var(--panel); stroke: var(--line); } .fx-lane.alt { fill: var(--panel-2); }
.fx-lane-t { font-size: 12px; font-weight: 600; fill: var(--text); } .fx-lane-s { font-size: 10px; fill: var(--text-3); }
.fx-box rect { fill: var(--accent-bg); stroke: var(--accent); stroke-width: 1.2; } .fx-box text { font-size: 11px; fill: var(--text); font-weight: 600; }
.fx-box:hover rect { fill: var(--accent); } .fx-box:hover text { fill: #fff; }
.fx-dia polygon { fill: var(--estimado-bg); stroke: var(--estimado); } .fx-dia text { font-size: 10px; fill: var(--text); }
.fx-arr { fill: none; stroke: var(--text-2); stroke-width: 1.4; } .fx-headp { fill: var(--text-2); } .fx-lbl { font-size: 10px; fill: var(--text-2); }
/* tutoriais */
.tut-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(420px, 1fr)); gap: 12px; }
.tut-card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 12px; min-width: 0; }
.tut-head { display: flex; gap: 10px; align-items: flex-start; margin-bottom: 8px; }
.tut-n { flex: 0 0 28px; width: 28px; height: 28px; border-radius: 50%; background: var(--navy); color: #fff; display: grid; place-items: center; font-weight: 700; }
.tut-shot { position: relative; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--panel-2); aspect-ratio: 1512 / 804; margin-bottom: 6px; }
.tut-shot img { display: block; width: 100%; height: 100%; object-fit: fill; }
.tut-shot .tut-mock { display: none; padding: 20px; color: var(--text-3); font-size: 12px; }
.tut-shot.noimg img { display: none; } .tut-shot.noimg .tut-mock { display: block; }
.tut-mark { position: absolute; transform: translate(-50%, -50%); display: flex; align-items: center; gap: 4px; pointer-events: none; }
.tut-mark b { width: 22px; height: 22px; border-radius: 50%; background: var(--vencido); color: #fff; display: grid; place-items: center; font-size: 12px; box-shadow: 0 0 0 3px rgba(198,40,40,.3), 0 2px 6px rgba(0,0,0,.4); }
.tut-mark i { font-style: normal; font-size: 10px; background: rgba(198,40,40,.92); color: #fff; padding: 1px 6px; border-radius: 8px; white-space: nowrap; }
.tut-steps { margin: 8px 0 0; padding-left: 20px; font-size: 12px; }
.tut-steps li { margin: 2px 0; }
.faq summary { cursor: pointer; font-weight: 600; padding: 6px 0; }
.faq p { margin: 0 0 8px 16px; color: var(--text-2); font-size: 12px; }
/* calendário */
.cal .day.past { opacity: 1; background: var(--panel-2); }
.cal .day.past .v, .cal .day.past .d { color: var(--text-3); }
.cal-foot { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 8px; font-size: 12px; }
/* Agenda de pagamentos: calendário e resumo em toda a largura do conteúdo. */
.payables-agenda { display: flex; flex-direction: column; width: 100%; min-width: 0; }
.payables-agenda > .panel { width: 100%; min-width: 0; }
.payables-agenda .panel-head { flex-wrap: wrap; gap: 8px; }
.payables-agenda .panel-head h2 { white-space: normal; }
.payables-calendar-scroll { width: 100%; overflow-x: auto; padding: 2px; }
.payables-calendar .cal { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; min-width: 770px; }
.payables-calendar .cal .dow { padding: 5px 2px; font-size: 11px; color: var(--text-2); }
.payables-calendar .cal .day { display: flex; flex-direction: column; gap: 4px; min-width: 0; min-height: 128px; padding: 7px; font-family: inherit; color: var(--text); text-align: left; line-height: 1.3; }
.payables-calendar .cal .day:not(.empty):hover { border-color: var(--accent); }
.payables-calendar .cal .day:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.payables-calendar .cal .day.sel { background: var(--accent-bg); border-color: var(--accent); }
.payables-calendar .cal-day-head { display: flex; align-items: center; justify-content: space-between; gap: 4px; }
.payables-calendar .cal .day .d { color: var(--text-2); font-size: 12px; font-weight: 600; }
.payables-calendar .cal .day.hoje .d { color: var(--accent); }
.payables-calendar .cal .day .v { display: block; margin: 0; color: var(--text); font-size: 12px; }
.payables-calendar .cal-payments { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.payables-calendar .cal-payment { display: flex; flex-direction: column; border-left: 2px solid var(--previsto); padding: 2px 5px; background: var(--previsto-bg); border-radius: 2px; font-size: 11px; }
.payables-calendar .cal-payment > span, .payables-calendar .cal-payment > b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.payables-calendar .cal-payment > b { font-size: 10px; font-weight: 500; color: var(--text-2); }
.payables-calendar .cal-payment-aprovado { border-color: var(--avencer); background: var(--avencer-bg); }
.payables-calendar .cal-payment-pago { border-color: var(--pago); background: var(--pago-bg); }
.payables-calendar .cal-more { color: var(--accent); font-size: 10px; margin-top: auto; }
.payables-calendar .cal-no-payments { color: var(--text-3); }
.payables-summary { scroll-margin-top: 60px; }
.payment-details { min-width: 0; scroll-margin-top: 60px; }
.payment-nav, .expense-steps { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 12px; }
.payment-nav a, .expense-steps a { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); color: var(--text-2); font-size: 12px; }
.payment-nav a.on, .expense-steps a.on { background: var(--accent-bg); border-color: var(--accent); color: var(--accent); font-weight: 600; }
.payment-nav a:hover, .expense-steps a:hover { border-color: var(--accent); text-decoration: none; }
.payment-nav .ico { width: 15px; height: 15px; }
.expense-steps { border-bottom: 1px solid var(--line); padding-bottom: 10px; }
.expense-steps a { padding: 5px 8px; }
.payment-pending { padding: 8px 10px; border-left: 3px solid var(--avencer); background: var(--avencer-bg); color: var(--text); }
.payment-pending a { margin-left: 6px; }
.expense-table { width: 100%; min-width: 0; }
.expense-table td.who { min-width: 230px; max-width: 280px; }
.expense-table td.workflow-actions { min-width: 205px; }
@media (min-width: 900px) {
  .expense-table th[data-sort="acoes"], .expense-table td.workflow-actions { position: sticky; right: 0; background: var(--panel); border-left: 1px solid var(--line); z-index: 2; }
  .expense-table th[data-sort="acoes"] { background: var(--panel-2); z-index: 4; }
}
.payables-summary .memo li { gap: 16px; }
.payables-summary .memo li > span:first-child { min-width: 0; overflow-wrap: anywhere; }
.payables-summary .memo .v { flex-shrink: 0; }
@media (max-width: 600px) {
  .payables-agenda .panel-head > .small { display: flex; flex-wrap: wrap; gap: 4px; }
  .payables-summary .memo li { gap: 8px; flex-wrap: wrap; }
}
table.tbl td .ico { width: 16px; height: 16px; vertical-align: -4px; margin-right: 4px; }
.perfil-chip select { max-width: 130px; }
.toggle { flex-wrap: wrap; } .toggle button { border-bottom: 1px solid var(--line); }
.tut-grid { grid-template-columns: repeat(auto-fit, minmax(min(420px, 100%), 1fr)); }
.tut-card, .tut-shot { max-width: 100%; }

/* autenticação real */
.pw-meter { height: 6px; background: var(--line); border-radius: 3px; overflow: hidden; margin: 2px 0 2px; }
.pw-meter i { display: block; height: 100%; background: var(--avencer); transition: width .15s; }
.pw-meter.ok i { background: var(--pago); } .pw-meter.bad i { background: var(--vencido); }
.lg-ok { color: var(--pago); background: var(--pago-bg); border-radius: var(--radius); padding: 6px 8px; font-size: 12px; margin: 0; }
.perfil-box .btn { white-space: nowrap; }

/* Resultado, balancete e caixa: mesmos relatórios, finalidades explícitas. */
.report-nav{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin:8px 0 16px}
.report-nav a{padding:9px 13px;color:var(--text-2);text-decoration:none;border-bottom:2px solid transparent;font-size:13px}
.report-nav a.on{border-bottom-color:var(--accent);color:var(--text);font-weight:600}
.report-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:12px}
.report-controls .f{flex:1 1 145px;min-width:0;margin:0}
.report-controls input,.report-controls select{width:100%;min-width:0;max-width:100%;font-size:12px}
.report-purpose{font-size:13px;color:var(--text-2);margin:8px 0}
.report-status{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.report-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:12px 0}
.report-toolbar>div{display:flex;gap:5px;flex-wrap:wrap}
.dre-scroll{max-height:72vh;max-width:100%;overflow:auto}
.dre-report{font-size:12px;min-width:960px}
.dre-report>thead>tr>th:first-child,.dre-report>tbody>tr>th{position:sticky;left:0;z-index:1;background:var(--panel);min-width:275px;width:310px;max-width:340px;white-space:normal;text-align:left;font-weight:400}
.dre-report>thead>tr>th:first-child{z-index:4;background:var(--panel-2)}
.dre-report>tbody>tr>th{padding-left:calc(10px + var(--dre-depth,0)*13px)}
.dre-report>tbody>tr.sub>th,.dre-report>tbody>tr.total>th{background:var(--panel-2);font-weight:600}
.dre-report td small{display:block;font-size:10px;color:var(--text-3);line-height:1.2;margin-top:2px;font-weight:400}
.dre-toggle,.dre-source-button{border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;text-align:left;padding:0;line-height:1.45}
.dre-toggle{width:20px;font-size:15px;vertical-align:middle}
.dre-source-button:hover{text-decoration:underline}
.dre-toggle:focus-visible,.dre-source-button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.dre-report .report-actual{background:color-mix(in srgb,var(--panel-2) 50%,transparent)}
.dre-source-row>td{padding:0!important;white-space:normal!important}
.dre-sources{padding:14px 18px;max-width:min(1000px,calc(100vw - 60px))}
.dre-sources .tbl{min-width:650px;font-size:12px}
.dre-sources .tbl td{white-space:normal!important}
.report-notes{font-size:12px;margin-top:12px}
.report-notes summary{cursor:pointer;font-weight:600;padding:4px 0}
.report-code-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:5px;margin:12px 0}
.report-preview{max-height:430px}
.report-preview select{max-width:340px}
.report-preview .sub{display:block;color:var(--text-3)}
@media(max-width:700px){.report-nav a{padding:8px 9px;font-size:12px}.report-controls .f{flex-basis:calc(50% - 10px)}.dre-report>tbody>tr>th,.dre-report>thead>tr>th:first-child{min-width:220px;max-width:230px}.dre-sources{max-width:calc(100vw - 48px);overflow:auto}.report-toolbar .btn{font-size:11px}}
table.dre-report td.num,.report-nav~.panel table.tbl td.num,.report-preview table.tbl td.num{text-align:right}
/* Fichas de RH: ações visíveis, conteúdo na página e formulários responsivos. */
.hr-people-page {display:flex;flex-direction:column;gap:8px;min-width:0}
.hr-people-heading {display:flex;align-items:center;justify-content:space-between;gap:8px 16px;flex-wrap:wrap}
.hr-people-heading h1 {margin:0;font-size:16px;line-height:1.5}
.hr-people-heading h1 span {font-size:12px;font-weight:400;margin-left:8px}
.hr-people-page > .tabs {flex-shrink:0;margin:0}
.hr-people-table {margin:0;min-width:0}
.hr-people-filters {flex:1 1 640px;min-width:0}
.hr-people-filters > .tbl-bar {border:0!important;margin:0!important;padding:0;gap:6px 10px}
.hr-people-filters .inline {gap:4px;font-size:11px}
.hr-people-filters input {width:110px}
.hr-people-filters select {max-width:130px}
.hr-people-table > .tbl-bar {flex-shrink:0;gap:6px 10px}
.hr-people-table > .tbl-bar > .spacer {display:none}
.hr-people-help {flex-shrink:0;font-size:11px;color:var(--text-2)}
.hr-people-help summary {cursor:pointer;padding:3px 0}
.hr-people-help > div {padding:4px 10px;border-left:2px solid var(--line)}
.hr-people-help p {margin:4px 0 8px;line-height:1.45}
@media(min-width:901px){
 .main:has(.hr-people-page) {height:100dvh}
 .view:has(> .hr-people-page) {flex:1;min-height:0;display:flex;flex-direction:column;padding-bottom:12px}
 .hr-people-page {flex:1;min-height:0}
 .hr-people-heading {flex-shrink:0}
 .hr-people-table {flex:1;min-height:180px;display:flex;flex-direction:column}
 .hr-people-table .tbl-scroll {flex:1;min-height:0;max-height:none}
}
@media(max-width:900px){
 .hr-people-heading h1 span {display:block;margin-left:0}
 .hr-people-filters {flex-basis:100%}
 .hr-people-help summary .muted {display:block;margin-left:14px}
}
.hr-people-table table.tbl th,.hr-people-table table.tbl td {padding:10px 14px;line-height:1.45}
.hr-people-table table.tbl td.hr-person-cell {min-width:300px;max-width:360px;white-space:normal}
.hr-person-summary {display:grid;gap:4px}
.hr-person-name,.hr-person-role {display:block;overflow-wrap:anywhere}
.hr-person-role {color:var(--text-3);font-size:11px}
.hr-person-actions {display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:3px;font-size:11px}
.hr-person-actions a {white-space:nowrap;text-underline-offset:3px}
.hr-people-table table.tbl td.hr-person-status {min-width:180px;max-width:240px;white-space:normal;overflow-wrap:anywhere}
.hr-toolbar {display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:12px 0 18px}
.hr-toolbar h1,.hr-toolbar h2,.hr-toolbar h3 {margin:0 0 6px}
.hr-toolbar p {margin:5px 0}
.hr-actions {display:flex;gap:8px;flex-wrap:wrap}
.hr-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.hr-three {grid-template-columns:repeat(3,minmax(0,1fr))}
.hr-tabs {display:flex;gap:8px;border-bottom:1px solid var(--line);overflow-x:auto;margin:12px 0 20px;padding-bottom:10px}
.hr-tabs a {padding:8px 12px;white-space:nowrap;border-radius:6px;color:var(--muted);text-decoration:none}
.hr-tabs a.on {background:var(--c1,#5b1833);color:white}
.hr-fields {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;border:0;padding:0;margin:12px 0 20px;min-width:0}
.hr-fields .f {min-width:0;margin:0}.hr-fields input,.hr-fields select,.hr-fields textarea {max-width:100%;width:100%;box-sizing:border-box}
.hr-fields input[type=checkbox] {width:auto}
.hr-fields textarea {resize:vertical}.hr-full {grid-column:1/-1}
.hr-facts {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:18px 0}
.hr-facts dt {font-size:12px;color:var(--muted);margin-bottom:4px}.hr-facts dd {margin:0;overflow-wrap:anywhere}
.hr-link,.hr-process {margin:16px 0}.hr-process .hr-status {background:var(--bg);border:1px solid var(--line);padding:3px 7px;border-radius:5px}
.hr-allocation {display:grid;grid-template-columns:2fr 1.5fr 1.2fr 1.2fr 90px auto;gap:10px;align-items:end;border:1px solid var(--line);padding:12px;margin:8px 0;border-radius:6px}
.hr-allocation input,.hr-allocation select {width:100%;min-width:0;box-sizing:border-box}
.hr-task {border-top:1px solid var(--line);padding:12px 0}.hr-task .hr-fields {grid-template-columns:2fr 1.5fr 1fr 1fr;margin-bottom:8px}
.hr-error {color:#a42435;font-size:13px;white-space:pre-wrap;min-height:1em}
.hr-pre {white-space:pre-wrap;overflow-wrap:anywhere}.hr-json {white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;background:var(--bg);padding:12px}
@media(max-width:1100px){.hr-fields,.hr-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.hr-allocation{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.hr-grid,.hr-three,.hr-fields,.hr-facts,.hr-task .hr-fields{grid-template-columns:1fr}.hr-allocation{grid-template-columns:repeat(2,minmax(0,1fr))}.hr-toolbar{align-items:flex-start}.hr-actions .btn{white-space:normal}.hr-process .tbl{min-width:550px}}

/* Ficha operacional: visão geral, saldos identificados e revisão do aditivo. */
.contract-overview-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.contract-overview-grid .panel { min-width:0; margin-bottom:0; }
.contract-overview-grid .kv { grid-template-columns:minmax(110px,30%) minmax(0,1fr); gap:7px 12px; }
.contract-overview-grid { margin-bottom:12px; }
.contract-balance-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.contract-balance-grid a { display:grid; gap:4px; padding:10px 12px; border:1px solid var(--line); border-radius:4px; text-decoration:none; color:var(--text); }
.contract-balance-grid strong { font-size:20px; font-variant-numeric:tabular-nums; }
.contract-balance-grid small { color:var(--text-3); }
.contract-balance-grid a:hover { border-color:var(--accent); }
.contract-pending ul { margin:8px 0; padding-left:20px; }
.contract-pending li { margin:6px 0; }
.contract-terms summary { cursor:pointer; font-weight:600; }
.contract-terms[open] summary { margin-bottom:12px; }
.contract-terms .kv { gap:7px 14px; }
.contract-payable-filters { display:flex; flex-wrap:wrap; gap:6px; margin:10px 0; }
.amendment-section { border-top:1px solid var(--line); padding-top:12px; margin-top:16px; }
.amendment-section h3 { display:flex; align-items:center; gap:8px; margin:0 0 12px; font-size:14px; }
.amendment-section h3 > span { display:inline-grid; place-items:center; width:24px; height:24px; border-radius:50%; background:var(--accent-bg); color:var(--accent); }
.modal-box:has(.amendment-form) { width:1040px; }
.amendment-impact th { white-space:normal; line-height:1.35; }
.amendment-form .f { min-width:0; }
.amendment-form .form { align-items:start; }
.amendment-form textarea { min-height:68px; }
.amendment-review { margin-top:12px; padding:12px; border:1px solid var(--line-strong); border-radius:4px; background:var(--panel-2); }
.amendment-review h4 { margin:0 0 12px; font-size:14px; }
.amendment-review .kv { grid-template-columns:minmax(110px,30%) minmax(0,1fr); gap:7px 12px; }
.amendment-review .document-hash { font-size:10px; overflow-wrap:anywhere; }
.amendment-impact { font-size:11px; }
.amendment-consent { display:flex; align-items:flex-start; gap:8px; margin-top:14px; }
@media(max-width:900px) { .contract-overview-grid { grid-template-columns:minmax(0,1fr); } }
@media(max-width:500px) {
 .contract-balance-grid { grid-template-columns:minmax(0,1fr); gap:6px; }
 .contract-balance-grid a { padding:8px 10px; }
 .contract-overview-grid .kv, .contract-terms .kv, .amendment-review .kv { grid-template-columns:minmax(0,1fr); gap:3px; }
 .contract-overview-grid .kv dd, .contract-terms .kv dd, .amendment-review .kv dd { margin-bottom:7px; }
 .amendment-review { padding:8px; }
}

/* Cadastro único e confirmação de alocação. */
.registry-details{display:grid;grid-template-columns:minmax(100px,180px) minmax(0,1fr);gap:8px 16px}.registry-details dd{margin:0;overflow-wrap:anywhere}.allocation-row,.supplier-attendant{border-bottom:1px solid var(--line,#ddd);padding:14px 0}#m-dre-output{display:block;padding:12px;background:var(--bg,#f5f7f8);border-radius:6px}#supplier-history article{padding:12px 0;border-top:1px solid var(--line,#ddd)}.form-error{color:var(--red,#b42318)}@media(max-width:600px){.registry-details{grid-template-columns:1fr}.registry-details dt{font-weight:600}.allocation-row,.supplier-attendant{display:flex;flex-direction:column;align-items:stretch}.allocation-row select,.supplier-attendant input{width:100%;max-width:100%}}

/* Treasury: compact summaries preserve table space. */
.treasury-toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin:16px 0}
.treasury-toolbar .f{margin:0;min-width:160px}
.treasury-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}
.treasury-stats>div{background:var(--surface,#fff);border:1px solid var(--line,#e2e8f0);border-radius:8px;padding:12px 16px;min-width:0}
.treasury-stats span{display:block;font-size:12px;color:var(--muted,#5d6674);margin-bottom:5px}
.treasury-stats strong{font-size:21px;line-height:1.3;overflow-wrap:anywhere}
[data-treasury-form] .form-error{color:var(--danger,#a12530)}
@media(max-width:760px){.treasury-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.treasury-stats>div{padding:10px}.treasury-stats strong{font-size:18px}.treasury-toolbar .f{flex:1;min-width:130px}}

.treasury-table .sub{display:block;margin-top:3px;line-height:1.4;color:var(--muted,#5d6674);font-size:12px;white-space:normal;max-width:360px}
.treasury-table td{vertical-align:top;padding-top:10px;padding-bottom:10px}
.treasury-table td .btn{margin:2px 4px 2px 0}

/* New contract intake keeps actions compact and the review next to its evidence. */
.intake-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}.intake-toolbar h2,.intake-toolbar p{margin:0;flex:1}.intake-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px;align-items:start}.intake-fields .full{grid-column:1/-1}.intake-fields .f{min-width:0}.intake-fields textarea{min-height:64px}.intake-fields input,.intake-fields select,.intake-fields textarea{width:100%;box-sizing:border-box}.intake-fields output{display:block;padding:9px 0;font-weight:600}.intake-check{display:flex;align-items:flex-start;gap:8px;grid-column:1/-1;margin:6px 0}.intake-check input{width:auto;margin-top:3px}.intake-supplier{justify-content:flex-end;align-items:flex-start}form[data-intake-form] fieldset{border:0;padding:0;margin:0;min-width:0}form[data-intake-form] details>summary{cursor:pointer;font-weight:600;margin-bottom:12px}.intake-review .tbl-scroll{max-height:340px}.intake-review form{margin-top:16px;max-width:680px}form[data-intake-form] input:disabled,form[data-intake-form] select:disabled,form[data-intake-form] textarea:disabled{opacity:1;color:var(--ink);background:transparent}form[data-intake-form] .form{min-width:0}form[data-intake-form] select{max-width:100%}@media(max-width:760px){.intake-fields{grid-template-columns:1fr}.intake-toolbar{align-items:stretch}.intake-toolbar h2,.intake-toolbar p{flex-basis:100%}.intake-supplier{margin-top:-8px}}
/* Monthly closing keeps controls compact and the evidence table visible. */
.closing-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}
.closing-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;border:1px solid var(--border,#dce2e8);border-radius:6px;padding:12px 16px;margin:12px 0}
.closing-summary span,.closing-summary strong{display:block}.closing-summary span{font-size:12px;color:var(--muted,#637084)}.closing-summary strong{font-size:17px;margin-top:4px}
.closing-table{max-height:none}.closing-table table.tbl{table-layout:fixed;min-width:960px}.closing-table table.tbl th{white-space:normal;cursor:default}.closing-table table.tbl th:first-child{width:35%}.closing-table table.tbl th:nth-child(2){width:15%}.closing-table table.tbl th:nth-child(3){width:17%}.closing-table table.tbl th:nth-child(4){width:18%}.closing-table table.tbl th:nth-child(5){width:15%}.closing-table table.tbl td{vertical-align:top;padding:12px;white-space:normal;overflow-wrap:anywhere}.closing-table table.tbl td .chip{white-space:normal}.closing-table small,.closing-details small{display:block;line-height:1.5;color:var(--muted,#637084);margin-top:5px}
.closing-actions{display:flex;flex-wrap:wrap;gap:6px;min-width:140px}.closing-details{margin-top:12px}.closing-details summary{cursor:pointer;font-weight:600}.closing-details table{margin-top:12px}.closing-check{display:flex;grid-column:1/-1;gap:8px;align-items:flex-start;line-height:1.5}.closing-check input{width:auto;flex:none;margin-top:4px}
@media(max-width:600px){.closing-summary{gap:8px;padding:10px;grid-template-columns:1fr 1fr}.closing-summary>div:last-child{grid-column:1/-1}.closing-summary strong{font-size:14px;overflow-wrap:anywhere}.closing-toolbar{gap:8px}.closing-table{max-width:100%;overflow:visible}.closing-table table.tbl{display:block;min-width:0}.closing-table thead{display:none}.closing-table tbody{display:grid;gap:12px}.closing-table tr{display:block;border:1px solid var(--line);border-radius:6px;background:var(--panel)}.closing-table table.tbl td{display:block;height:auto;border:0;padding:8px 12px}.closing-table table.tbl td:first-child{border-bottom:1px solid var(--line);padding:12px}.closing-table td[data-label]::before{content:attr(data-label);display:block;font-size:11px;font-weight:600;color:var(--text-2);margin-bottom:4px}.closing-table .closing-actions{min-width:0}}
/* Monthly operational budget: compact summary, readable rows and explicit proposal. */
.budget-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}
.budget-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0}
.budget-summary>div{border:1px solid var(--line,#e1e5eb);border-radius:8px;padding:12px 14px;background:var(--panel,#fff)}
.budget-summary span,.budget-summary strong{display:block}.budget-summary span{font-size:12px;color:var(--muted,#596477)}
.budget-summary strong{font-size:21px;margin-top:4px;overflow-wrap:anywhere}
.budget-table .tbl{min-width:960px;table-layout:fixed}.budget-table th:first-child{width:30%}
.budget-table td{vertical-align:top;padding:14px 10px;white-space:normal;overflow-wrap:anywhere}
.budget-table small,.budget-proposal small{display:block;line-height:1.5;margin-top:5px;color:var(--muted,#596477)}
.budget-horizon .tbl{min-width:1040px}.budget-horizon td{padding:11px 10px}.budget-horizon td:not(:first-child){font-variant-numeric:tabular-nums}
.budget-editor fieldset{border:1px solid var(--line,#e1e5eb);border-radius:8px;padding:16px;margin:12px 0}
.budget-editor legend{font-weight:600;padding:0 5px}.budget-editor .form{grid-template-columns:repeat(3,minmax(0,1fr))}
.budget-editor select,.budget-editor input,.budget-editor textarea{width:100%;min-width:0}
@media(max-width:900px){.budget-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.budget-editor .form{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:540px){.budget-summary strong{font-size:clamp(12px,4vw,16px);white-space:nowrap;overflow-wrap:normal}.budget-editor .form{grid-template-columns:1fr}.budget-toolbar .inline{flex-wrap:wrap}}
