/* Cenários compartilhados: superfícies de trabalho seguem o tema do sistema. */
.cs-app { --cs-border:var(--line,#d8dcd7); --cs-bg:var(--bg,#fff); --cs-muted:var(--fg-muted,#4a544f); color:var(--fg,#131a18); max-width:1680px; margin:auto; padding:24px clamp(12px,2vw,28px) 40px; font-size:14px; }
.cs-app *, .cs-dialog * { box-sizing:border-box; }
.cs-app [hidden],.cs-dialog [hidden] { display:none!important; }
.cs-app button,.cs-dialog button { cursor:pointer; font:inherit; }
.cs-app button:disabled,.cs-dialog button:disabled { cursor:default; opacity:.5; }
.cs-app :is(button,input,select):focus-visible,.cs-dialog :is(button,input,select):focus-visible { outline:3px solid var(--accent,#17564d); outline-offset:3px; }
.cs-head { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:20px; }
.cs-head h2 { margin:3px 0 4px; font-size:25px; border:0; padding:0; }
.cs-app p,.cs-dialog p { line-height:1.5; margin:6px 0 12px; }
.cs-muted { color:var(--cs-muted,var(--fg-muted,#4a544f)); font-size:13px; }
.cs-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.cs-btn { display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:9px 13px; min-height:38px; border:1px solid var(--line,#d8dcd7); border-radius:5px; background:var(--bg,#fff); color:var(--fg,#131a18); text-decoration:none; }
.cs-btn:hover { background:var(--accent-weak,#e9f2ef); border-color:var(--accent,#17564d); }
.cs-btn.primary { color:var(--fg-on-inverse,#fff); background:var(--accent,#17564d); border-color:var(--accent,#17564d); }
.cs-btn.primary:hover { background:var(--accent-hover,#0f3d36); }
.cs-link { padding:0; border:0; background:none; color:var(--accent,#17564d); text-decoration:underline; text-underline-offset:3px; }
.cs-icon { width:18px; height:18px; flex:none; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.cs-alert { background:var(--est-weak,#fdf6e6); color:var(--est,#8a5a00); border:1px solid var(--est-line,#e6d9b4); padding:12px 15px; border-radius:6px; margin:12px 0 18px; line-height:1.5; }
.cs-status { min-height:24px; margin:8px 0; }
.cs-status.error { color:var(--rev,#9c3328); }
.cs-layout { display:grid; grid-template-columns:245px minmax(0,1fr); gap:22px; align-items:start; }
.cs-panel { position:sticky; top:16px; display:grid; gap:18px; padding:18px; background:var(--cs-bg); border:1px solid var(--cs-border); border-radius:7px; min-width:0; }
.cs-panel section + section { border-top:1px solid var(--cs-border); padding-top:16px; }
.cs-panel h3,.cs-surface h3 { font-size:17px; margin:0 0 10px; padding:0; border:0; }
.cs-panel label,.cs-field { display:grid; gap:5px; font-size:13px; min-width:0; margin-bottom:12px; }
.cs-app input,.cs-app select,.cs-dialog input { width:100%; min-width:0; height:39px; padding:7px 9px; border:1px solid var(--cs-border,var(--line,#d8dcd7)); border-radius:4px; color:var(--fg,#131a18); background:var(--bg,#fff); font:inherit; }
.cs-app label.cs-check { display:flex; align-items:flex-start; gap:8px; line-height:1.4; }
.cs-check input { height:16px; width:16px; margin:2px 0 0; flex:none; accent-color:var(--accent,#17564d); }
.cs-panel .cs-actions { display:grid; }
.cs-body { min-width:0; }
.cs-tabs { display:flex; gap:5px; flex-wrap:wrap; border-bottom:1px solid var(--cs-border); padding:0 0 12px; margin-bottom:18px; }
.cs-tabs button { border:0; background:transparent; color:var(--cs-muted); border-radius:5px; padding:9px 13px; }
.cs-tabs button[aria-selected="true"] { color:var(--accent,#17564d); background:var(--accent-weak,#e9f2ef); font-weight:600; }
.cs-tabs button:hover { background:var(--bg-sunken,#f7f8f6); }
.cs-surface { background:var(--cs-bg,var(--bg,#fff)); border:1px solid var(--cs-border,var(--line,#d8dcd7)); border-radius:7px; padding:20px; margin-bottom:17px; }
.cs-comparison { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-top:16px; }
.cs-comparison > div { min-width:0; border-bottom:4px solid var(--accent-weak,#e9f2ef); padding-bottom:14px; }
.cs-comparison > div:last-child { border-bottom-color:var(--accent,#17564d); }
.cs-eyebrow { display:block; color:var(--cs-muted); font-size:11px; letter-spacing:.055em; text-transform:uppercase; margin-bottom:6px; }
.cs-value { font-size:clamp(22px,2.25vw,33px); font-weight:600; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.cs-delta { display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-top:15px; }
.cs-counts { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; margin-bottom:18px; }
.cs-count { text-align:left; color:var(--fg,#131a18); background:var(--cs-bg); padding:15px; border:1px solid var(--cs-border); border-radius:6px; }
.cs-count:hover,.cs-count[aria-pressed="true"] { box-shadow:inset 0 0 0 1px var(--accent,#17564d); border-color:var(--accent,#17564d); background:var(--accent-weak,#e9f2ef); }
.cs-count b { display:block; font-size:27px; line-height:1.25; margin:4px 0; }
.cs-movements { margin-bottom:18px; }
.cs-movements h3 { font-size:18px; margin:0 0 8px; }
.cs-movements .cs-counts { margin:12px 0 8px; }
.cs-count-share { display:block; color:var(--cs-muted); font-size:12px; }
.cs-count-track { display:block; height:6px; border-radius:3px; margin-top:12px; background:var(--line-soft,#eef0ed); overflow:hidden; }
.cs-count-track > span { display:block; height:100%; background:var(--cs-movement-color); border-radius:3px; }
.cs-movement-aumentou { --cs-movement-color:var(--est,#8a5a00); --cs-movement-bg:var(--est-weak,#fdf6e6); }
.cs-movement-reduziu { --cs-movement-color:var(--accent,#17564d); --cs-movement-bg:var(--accent-weak,#e9f2ef); }
.cs-movement-igual { --cs-movement-color:var(--cs-muted,#4a544f); --cs-movement-bg:var(--bg-sunken,#f7f8f6); }
.cs-movement-pendente { --cs-movement-color:var(--rev,#9c3328); --cs-movement-bg:var(--rev-weak,#fbeeea); }
.cs-movement-badge { display:inline-block; color:var(--cs-movement-color); background:var(--cs-movement-bg); border:1px solid currentColor; border-radius:4px; padding:4px 7px; font-size:12px; white-space:nowrap; }
.cs-scenario-rates { display:flex; gap:10px 22px; flex-wrap:wrap; color:var(--cs-muted); font-size:13px; }
.cs-scenario-rates strong { color:var(--fg,#131a18); margin-left:3px; }
.cs-app .cs-comparison-note { margin:15px 0 0; padding-top:12px; border-top:1px solid var(--cs-border); }
.cs-filters { display:flex; flex-wrap:wrap; gap:10px; align-items:end; margin:14px 0; }
.cs-filters label { flex:1 1 140px; margin:0; }
.cs-filters label.cs-search { flex:3 1 220px; }
.cs-scroll { overflow:auto; overscroll-behavior-x:contain; }
.cs-table { width:100%; border-collapse:collapse; margin:0; font-size:13px; }
.cs-table th { padding:10px 12px; text-align:left; font-size:11px; font-weight:500; color:var(--cs-muted); background:var(--bg-sunken,#f7f8f6); letter-spacing:.025em; text-transform:uppercase; white-space:nowrap; }
.cs-table td { padding:12px; border-bottom:1px solid var(--line-soft,#eef0ed); vertical-align:middle; }
.cs-table tbody tr:hover { background:var(--bg-sunken,#f7f8f6); }
.cs-table small { display:block; margin-top:4px; color:var(--cs-muted); }
.cs-table .cs-num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.cs-table .cs-btn { font-size:12px; white-space:nowrap; padding:6px 9px; }
.cs-table input { max-width:160px; }
.cs-table select { min-width:190px; }
.cs-price-note { color:var(--est,#8a5a00); }
.cs-pagination { display:flex; gap:10px; justify-content:space-between; align-items:center; flex-wrap:wrap; margin-top:15px; }
.cs-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.cs-tag { font-size:12px; padding:4px 8px; color:var(--accent,#17564d); background:var(--accent-weak,#e9f2ef); border-radius:4px; }
.cs-empty { padding:26px 16px; text-align:center; color:var(--cs-muted); line-height:1.5; }
.cs-dialog { width:min(790px,calc(100vw - 28px)); max-height:calc(100dvh - 40px); overflow:auto; padding:24px; color:var(--fg,#131a18); background:var(--bg,#fff); border:1px solid var(--line,#d8dcd7); border-radius:9px; }
.cs-dialog::backdrop { background:#0b1713a0; }
.cs-dialog .cs-head { position:sticky; top:-24px; background:var(--bg,#fff); z-index:1; padding:15px 0; }
.cs-dialog h2 { font-size:22px; margin:0; }
.cs-dialog dl { display:grid; grid-template-columns:1fr auto; gap:9px 20px; }
.cs-dialog dd { text-align:right; margin:0; font-variant-numeric:tabular-nums; }
.cs-dialog dl.cs-memoria { grid-template-columns:minmax(0,2fr) minmax(0,3fr); }
.cs-dialog .cs-memoria dd { text-align:left; overflow-wrap:break-word; }
.cs-dialog .cs-taxa { margin-top:14px; }
.cs-dialog li { line-height:1.5; margin-bottom:8px; }
.cs-history { list-style:none; padding:0; }
.cs-history > li { border-left:2px solid var(--accent-line,#bcd6d0); padding:0 0 15px 16px; }
.cs-history small { display:block; }
.cs-legacy { margin:0 clamp(12px,2vw,28px) 28px; padding:18px; background:var(--bg,#fff); border:1px solid var(--line,#d8dcd7); border-radius:7px; }
.cs-legacy > summary { font-size:17px; font-weight:600; cursor:pointer; }
.cs-legacy .tr-page { padding:20px 0 0; max-width:none; }
@media(max-width:950px) { .cs-layout { grid-template-columns:210px minmax(0,1fr); gap:16px; } .cs-panel { padding:14px; } .cs-counts { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:720px) { .cs-layout { display:block; } .cs-panel { position:static; grid-template-columns:repeat(2,minmax(0,1fr)); margin-bottom:16px; } .cs-panel section + section { border-top:0; padding-top:0; } .cs-panel section:last-child { grid-column:1/-1; } .cs-panel .cs-actions { display:flex; } .cs-value { font-size:25px; } .cs-surface { padding:16px; } }
@media(max-width:440px) { .cs-panel,.cs-grid,.cs-comparison { grid-template-columns:1fr; } .cs-panel section + section { border-top:1px solid var(--cs-border); padding-top:15px; } .cs-app { padding:16px 10px 28px; } .cs-head { align-items:flex-start; } .cs-tabs button { padding:8px; } .cs-dialog { padding:16px; } .cs-dialog .cs-head { top:-16px; } }

@media(max-width:600px) {
  .cs-edit-table,.cs-edit-table tbody,.cs-edit-table tr,.cs-edit-table td { display:block; width:100%; }
  .cs-edit-table thead { display:none; }
  .cs-edit-table tr { border:1px solid var(--line,#d8dcd7); border-radius:5px; margin:12px 0; padding:10px; }
  .cs-edit-table td { border:0; padding:6px; }
  .cs-edit-table td:first-child { font-size:15px; font-weight:600; }
  .cs-edit-table td::before { display:block; font-size:12px; color:var(--fg-muted,#4a544f); margin-bottom:5px; }
  .cs-edit-table input,.cs-edit-table select { max-width:none; min-width:0; }
  .cs-terreno td:nth-child(2)::before { content:'Referência da minuta'; }
  .cs-terreno td:nth-child(3)::before,.cs-construcoes td:nth-child(3)::before { content:'Valor adotado (R$/m²)'; }
  .cs-construcoes td:nth-child(2)::before { content:'Preço da minuta (R$/m²)'; }
}

.cs-source-areas dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:16px 0 0; }
.cs-source-areas dl > div { min-width:0; border-top:1px solid var(--line-soft,#eef0ed); padding-top:9px; }
.cs-source-areas dt { color:var(--cs-muted,var(--fg-muted,#4a544f)); font-size:13px; margin-bottom:4px; }
.cs-source-areas dd { text-align:left; margin:0; font-variant-numeric:tabular-nums; }
.cs-source-areas dd strong { display:block; font-size:18px; font-weight:600; }
.cs-source-areas dd small { display:block; color:var(--cs-muted,var(--fg-muted,#4a544f)); margin-top:4px; font-size:12px; }
@media(max-width:440px) { .cs-source-areas dl { grid-template-columns:1fr; } }

.cs-type-suggestion { padding:12px 14px; margin:0 0 16px; border:1px solid var(--line,#d8dcd7); border-radius:5px; background:var(--bg-sunken,#f7f8f6); }
.cs-type-suggestion p { margin:0 0 8px; }
.cs-type-suggestion p:last-child { margin-bottom:0; }
.cs-classification-note { color:var(--accent,#17564d); }
.cs-dialog textarea { width:100%; min-width:0; padding:9px; resize:vertical; color:var(--fg,#131a18); background:var(--bg,#fff); border:1px solid var(--line,#d8dcd7); border-radius:4px; font:inherit; }
.cs-dialog textarea:focus-visible { outline:3px solid var(--accent,#17564d); outline-offset:3px; }

.cs-conference-summary { border-left:4px solid var(--est,#8a5a00); }
.cs-conference-summary .cs-btn[aria-pressed="true"] { background:var(--accent-weak,#e9f2ef); border-color:var(--accent,#17564d); box-shadow:inset 0 0 0 1px var(--accent,#17564d); }
.cs-conference-alert h3 { font-size:17px; margin:0 0 10px; }
.cs-table small.cs-conference-pending { color:var(--est,#8a5a00); }
.cs-table small.cs-conference-adjusted { color:var(--accent,#17564d); }
.cs-conference-fields { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:12px 0 18px; }
.cs-conference-fields fieldset { min-width:0; padding:12px; border:1px solid var(--line,#d8dcd7); border-radius:5px; }
.cs-conference-fields legend { font-size:13px; line-height:1.4; padding:0 4px; }
.cs-conference-fields .cs-confirm-check { display:flex; gap:8px; align-items:flex-start; font-size:12px; line-height:1.4; margin:6px 0 15px; }
.cs-conference-fields .cs-confirm-check input { width:16px; height:16px; flex:none; margin:0; accent-color:var(--accent,#17564d); }
.cs-conference-fields .cs-field { margin-bottom:0; }
.cs-conference-fields :is(input,select):disabled { opacity:.65; }
@media(max-width:600px) { .cs-conference-fields { grid-template-columns:1fr; } }
/* Versão antiga somente leitura: separa as ações das seções da janela. */
.cs-versao-acoes { margin-bottom:17px; }
/* Perfil de consulta: abre e lê os cenários; as ações que gravam ou exportam não aparecem.
   O servidor recusa as mesmas ações (403) a cada pedido. */
[data-cs-perfil="consulta"] :is([data-cs="novo"],[data-cs="duplicar"],[data-cs="create"],[data-cs="renomear"],[data-cs="aplicar-nome"],
  [data-cs="salvar"],[data-cs="calcular"],[data-cs="calcular-salvar"],[data-cs="atualizar-base"],[data-cs="restaurar"],[data-cs="exportar"],
  [data-cs="conferencia-salvar"],[data-cs="conferencia-restaurar"],[data-cs="classificacao-salvar"],[data-cs="classificacao-restaurar"],
  [data-cs="classificacao-territorial"],[data-cs="classificacao-tipo-sugerido"],[data-cs="setor-salvar"],[data-cs="setor-restaurar"],
  [data-cs="setor-ir-salvar"],[data-cs="versao-criar"],[data-cs="versao-confirmar"],[data-cs="preco-minuta"],[data-cs="construcao-minuta"],
  [data-cs="juntar"],[data-cs="juntar-comparar"],[data-cs="juntar-aplicar"]) { display:none !important; }
.cs-aviso-perfil { margin:6px 0 0; }
/* 0.6: erro ao lado do campo, sem a mensagem do navegador. 11.1 e 11.2: última edição e origem da cópia. */
.cs-campo-erro { display:block; color:var(--rev,#9c3328); font-size:12px; line-height:1.4; }
.cs-app input[aria-invalid="true"],.cs-dialog input[aria-invalid="true"] { border-color:var(--rev,#9c3328); box-shadow:0 0 0 1px var(--rev,#9c3328); }
.cs-app .cs-origem { display:block; margin:2px 0 0; font-size:13px; color:var(--fg,#131a18); }
.cs-app .cs-cobertura { margin:2px 0 0; font-size:13px; color:var(--cs-muted); }
.cs-table .cs-ultima-edicao { white-space:nowrap; }
/* 0.6: último cálculo à vista enquanto a proposta é editada, marcado como anterior. */
.cs-anterior { opacity:.55; }
#csAvisoAnterior .cs-actions { display:inline-flex; margin-left:6px; vertical-align:middle; }
/* Trazer alterações de outro cenário: texto livre (observações, nomes) quebra em qualquer ponto;
   cada conflito é um grupo com legenda e escolha explícita. */
.cs-juntar,#csJuntarResultado { overflow-wrap:anywhere; }
.cs-juntar-lista { padding-left:18px; }
.cs-juntar-conflito { min-width:0; margin:0 0 12px; padding:12px 14px; border:1px solid var(--line,#d8dcd7); border-radius:5px; }
.cs-juntar-conflito legend { padding:0 4px; font-family:inherit; font-size:14px; font-weight:600; line-height:1.4; letter-spacing:normal; text-transform:none; color:var(--fg,#131a18); }
.cs-juntar-conflito ul { padding-left:18px; margin:6px 0 10px; }
.cs-dialog .cs-juntar-conflito dl { grid-template-columns:minmax(0,1fr) minmax(0,2fr); margin:6px 0 10px; }
.cs-dialog .cs-juntar-conflito dd { text-align:left; }
.cs-app .cs-juntar-conflito label.cs-check { margin:6px 0; color:var(--fg,#131a18); font-size:14px; }
/* Resumo de três colunas: cabe no celular sem a largura mínima geral das tabelas. */
#csJuntarResultado .cs-table { min-width:0; }
#csJuntarResultado .cs-table td:first-child { white-space:normal; }
@media(max-width:440px) { .cs-dialog .cs-juntar-conflito dl { grid-template-columns:1fr; gap:2px; } .cs-dialog .cs-juntar-conflito dd { margin-bottom:8px; } }
