:root{
  --azul:#1d4e89; --azul-esc:#143a66; --azul-claro:#eaf1f9;
  --cinza:#555; --borda:#d7dce3; --fundo:#f5f6f8; --bg:#fff; --texto:#222; --topo-bg:#1d4e89;
}
[data-tema="escuro"]{
  --azul:#5b9bd5; --azul-esc:#3a7ab8; --azul-claro:#1a2940;
  --cinza:#aab; --borda:#3a4050; --fundo:#111111; --bg:#1a1a1a; --texto:#dde; --topo-bg:#0d0d0d;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:'Segoe UI',system-ui,sans-serif;font-size:14px;background:var(--fundo);color:var(--texto);display:flex;flex-direction:column;overflow:hidden}
a{color:var(--azul);text-decoration:none}
a:hover{text-decoration:underline}

/* ---------- topo ---------- */
.topo{background:var(--topo-bg);color:#fff;padding:0 20px;display:flex;align-items:center;gap:16px;min-height:50px;flex-shrink:0}
.topo-back{color:#fff;opacity:.85;font-size:13px;white-space:nowrap}
.topo-back:hover{opacity:1;text-decoration:underline}
.topo-logo{height:30px;width:auto}
.topo-titulo{flex:1;font-size:15px;font-weight:600;letter-spacing:.01em}
.topo-save-area{display:flex;gap:6px;margin-left:auto}
.btn-save,.topo-tema{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:6px;padding:5px 11px;cursor:pointer;font-size:12px;transition:background .2s;white-space:nowrap}
.btn-save:hover,.topo-tema:hover{background:rgba(255,255,255,.28)}
input#file-open{display:none}

/* ---------- ABAS ---------- */
.tabs-bar{display:flex;align-items:stretch;border-bottom:2px solid var(--azul);background:var(--fundo);overflow-x:auto;flex-shrink:0;min-height:36px}
.tab-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 11px 6px 13px;border:none;border-right:1px solid var(--borda);background:transparent;color:var(--cinza);cursor:pointer;font-size:12px;font-weight:500;white-space:nowrap;flex-shrink:0;transition:background .15s,color .15s;line-height:1.2}
.tab-btn:hover{background:var(--azul-claro);color:var(--texto)}
.tab-btn.ativo{background:var(--azul-claro);color:var(--azul);font-weight:700;box-shadow:inset 0 -3px 0 var(--azul)}
.tab-fechar{background:none;border:none;cursor:pointer;color:var(--cinza);font-size:15px;padding:0 1px;line-height:1;vertical-align:middle}
.tab-fechar:hover{color:#e74c3c}
.tab-add{padding:6px 12px;background:none;border:none;color:var(--azul);font-size:20px;cursor:pointer;flex-shrink:0;line-height:1}
.tab-add:hover{color:var(--azul-esc)}

/* ---------- FAIXA 1 — INSERÇÃO DE VALORES ---------- */
.inputs-grade{display:grid;grid-template-columns:repeat(5,1fr);flex-shrink:0;border-bottom:2px solid var(--azul);background:var(--fundo);max-height:34vh;overflow-y:auto}
.inp-col{border-right:1px solid var(--borda);padding:6px 10px;display:flex;flex-direction:column;gap:3px}
.inp-col:last-child{border-right:none}
.inp-titulo{font-weight:700;color:var(--azul);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;padding-bottom:4px;border-bottom:2px solid var(--azul);margin-bottom:2px}

.campo{margin-bottom:1px}
.campo label{display:block;font-size:10px;font-weight:600;color:var(--cinza);margin-bottom:2px;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.campo input,.campo select{width:100%;padding:3px 6px;border:1px solid var(--borda);border-radius:5px;background:var(--bg);color:var(--texto);font-size:12px;transition:border-color .2s}
.campo input:focus,.campo select:focus{outline:none;border-color:var(--azul)}
/* unidades dentro de rótulos/títulos mantêm a caixa correta do SI (não viram MAIÚSCULAS) */
.inp-titulo .u,.campo label .u{text-transform:none;letter-spacing:0}
.campo-inline{display:flex;gap:5px}
.campo-inline .campo{flex:1;min-width:0}
.hint{font-size:9.5px;color:var(--cinza);opacity:.85;margin-top:1px;line-height:1.3}

.faixa-titulo{font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding-bottom:4px;margin-bottom:6px;border-bottom:2px solid currentColor}
.faixa-titulo.img{color:var(--azul)}
.faixa-titulo.res{color:var(--azul)}

/* ---------- FAIXA 2 — IMAGENS DINÂMICAS (lado a lado, largura total) ---------- */
.imagens-band{flex-shrink:0;padding:5px 14px 6px;border-bottom:2px solid var(--borda);background:var(--fundo)}
.img-row{display:flex;gap:10px;align-items:stretch}
.img-row .svg-wrap{flex:1;min-width:0;display:flex;align-items:center;justify-content:center}
.svg-wrap{background:var(--bg);border:1px solid var(--borda);border-radius:8px;padding:6px;text-align:center}
.img-row svg{width:100%;height:auto;max-height:32vh}

/* ---------- FAIXA 3 — RESULTADOS (largura total, preenche o resto) ---------- */
.resultados-band{flex:1;min-height:0;overflow-y:auto;padding:10px 14px 14px}

/* ---------- MEMÓRIA DE CÁLCULO — painel sobreposto (oculto por padrão) ---------- */
.memoria-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:50;display:flex;align-items:center;justify-content:center;padding:24px}
.memoria-overlay[hidden]{display:none}
.memoria-box{background:var(--bg);border:1px solid var(--borda);border-radius:10px;width:min(900px,96vw);max-height:92vh;display:flex;flex-direction:column;box-shadow:0 8px 40px rgba(0,0,0,.4)}
.memoria-box-topo{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:2px solid var(--azul);flex-shrink:0}
.memoria-box-topo b{color:var(--azul);font-size:14px;text-transform:uppercase;letter-spacing:.05em}
.memoria-fechar{background:var(--azul);color:#fff;border:none;border-radius:6px;padding:5px 12px;cursor:pointer;font-size:13px}
.memoria-conteudo{overflow-y:auto;padding:16px}

/* ---------- componentes comuns ---------- */
.res-secao{margin-bottom:18px}
.res-secao-titulo{font-weight:700;color:var(--azul);font-size:12.5px;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--azul);padding-bottom:6px;margin-bottom:10px}
.passo{border-left:3px solid var(--azul);padding:7px 11px;margin-bottom:7px;background:var(--bg);border-radius:0 6px 6px 0}
.passo-label{font-size:12px;color:var(--cinza);margin-bottom:2px}
.passo-calc{font-family:'Courier New',monospace;font-size:11.5px;color:var(--texto);opacity:.8;word-break:break-word}
.passo-resultado{font-family:'Courier New',monospace;font-size:13.5px;font-weight:700;color:var(--azul)}
.passo.aviso{border-left-color:#e67e22;background:#fff8f0}
[data-tema="escuro"] .passo.aviso{background:#2a1f10}
.passo.erro{border-left-color:#e74c3c;background:#fff5f5}
[data-tema="escuro"] .passo.erro{background:#2a1015}
.passo.ok{border-left-color:#27ae60;background:#f0faf5}
[data-tema="escuro"] .passo.ok{background:#0f2a1a}

.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:700;letter-spacing:.03em}
.badge-ok{background:#d4edda;color:#155724}
.badge-nok{background:#f8d7da;color:#721c24}
.badge-atencao{background:#fff3cd;color:#856404}
[data-tema="escuro"] .badge-ok{background:#0f3320;color:#6fcf97}
[data-tema="escuro"] .badge-nok{background:#3a1015;color:#f4a3a8}
[data-tema="escuro"] .badge-atencao{background:#3a2800;color:#f6c23e}

.painel-rapido{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:6px;margin-bottom:0}
.pr-bloco{background:var(--bg);border:1px solid var(--borda);border-radius:6px;padding:7px 9px}
.pr-titulo{font-weight:700;color:var(--azul);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px;padding-bottom:4px;border-bottom:1px solid var(--borda)}
.summary-linha{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:2px 0;border-bottom:1px solid var(--borda);font-size:11.5px}
.summary-linha:last-child{border-bottom:none}

.veredito{display:flex;align-items:center;gap:12px;background:var(--bg);border:2px solid var(--borda);border-radius:8px;padding:8px 14px;margin-bottom:8px}
.veredito.ok{border-color:#27ae60}
.veredito.nok{border-color:#e74c3c}
.veredito-icone{font-size:26px;line-height:1}
.veredito-txt{font-size:14px;font-weight:700}
.veredito-sub{font-size:11.5px;color:var(--cinza);font-weight:400}

.tabela-sugestao{width:100%;border-collapse:collapse;font-size:11.5px;margin-top:6px}
.tabela-sugestao th{background:var(--azul);color:#fff;padding:5px 7px;text-align:center;font-weight:600}
.tabela-sugestao td{padding:4px 7px;text-align:center;border-bottom:1px solid var(--borda)}
.tabela-sugestao tr:nth-child(even) td{background:var(--azul-claro)}
.tabela-sugestao tr.recomendada td{background:#d4edda;font-weight:700}
[data-tema="escuro"] .tabela-sugestao tr.recomendada td{background:#0f3320}

.placeholder{color:var(--cinza);text-align:center;padding:30px 20px;font-size:13px;opacity:.7}
.aviso-resp{font-size:11.5px;color:var(--cinza);background:var(--azul-claro);border:1px solid var(--borda);border-radius:6px;padding:8px 12px;margin-top:8px;line-height:1.5}

/* resumo dos dados de entrada (topo da memória) */
.resumo-tab { border-collapse: collapse; margin: 4px 0 12px; font-size: 12.5px; width: 100%; max-width: 620px; }
.resumo-tab th, .resumo-tab td { border: 1px solid var(--borda, #d0d5dd); padding: 4px 9px; text-align: left; vertical-align: top; }
.resumo-tab .rt-grp { background: var(--fundo, #f5f7fa); color: var(--azul, #1d4e89); font-weight: 700; width: 90px; }
.resumo-tab .rt-cmp { color: var(--cinza, #667085); width: 150px; }
.rt-id { font-size: 12px; color: var(--cinza, #667085); margin: 0 0 6px; }
.resumo-fig { display: flex; gap: 14px; flex-wrap: wrap; margin: 4px 0 10px; }
.resumo-fig .fig { flex: 0 1 360px; }
.resumo-fig .fig svg, .resumo-fig .fig img { width: 100%; height: auto; border: 1px solid var(--borda, #d0d5dd); border-radius: 6px; background: #fff; }
.resumo-fig .fig-cap { font-size: 11.5px; color: var(--cinza, #667085); text-align: center; margin-top: 3px; }

/* ---------- responsivo ---------- */
@media(max-width:1100px){ .inputs-grade{grid-template-columns:repeat(3,1fr)} }
@media(max-width:820px){
  body{overflow:auto}
  .inputs-grade{grid-template-columns:repeat(2,1fr);max-height:none}
  .img-row{flex-direction:column}
  .img-row svg{max-height:none}
  .resultados-band{flex:none;overflow:visible}
}
@media(max-width:600px){
  .topo{flex-wrap:wrap;gap:8px 10px;padding:8px 14px;min-height:0}
  .topo-back{order:1}
  .topo-logo{order:2;height:26px}
  .topo-tema{order:3;margin-left:auto}
  .topo-titulo{order:4;flex:1 1 100%;font-size:14px;line-height:1.3}
  .topo-save-area{order:5;flex:1 1 100%;margin-left:0;flex-wrap:wrap}
  .topo-save-area .btn-save{flex:1 1 auto}
}
@media print{
  /* imprime a memória de cálculo sobreposta */
  body{overflow:visible;height:auto;display:block}
  .topo,.tabs-bar,.inputs-grade,.obs-projeto-area,.imagens-band,.resultados-band{display:none!important}
  .memoria-overlay{position:static;background:none;padding:0;display:block!important}
  .memoria-overlay[hidden]{display:block!important}
  .memoria-box{width:100%;max-height:none;box-shadow:none;border:none}
  .memoria-conteudo{overflow:visible}
  .memoria-fechar{display:none}
}
