/* Guarani Solar · Cadastro — estilos (mobile first)
   Cores da marca (design system 1.0): azul #092D93 · laranja #FF7900 · verde #09AF3E.
   Laranja e verde 500 só em preenchimentos (barras, ícones, faixas): como texto sobre branco não atingem 4,5:1. */

@font-face { font-family: "Inter"; font-style: normal; font-weight: 400; font-display: swap; src: url("fontes/inter-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 500; font-display: swap; src: url("fontes/inter-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 600; font-display: swap; src: url("fontes/inter-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 700; font-display: swap; src: url("fontes/inter-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 700; font-display: swap; src: url("fontes/manrope-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 800; font-display: swap; src: url("fontes/manrope-latin-800-normal.woff2") format("woff2"); }

:root {
  /* primitivos da marca */
  --azul-50: #eaf0ff; --azul-100: #c7d5ff; --azul-300: #7798ed; --azul-500: #2453c4; --azul-700: #092d93; --azul-900: #061d60;
  --laranja-50: #fff2e5; --laranja-100: #ffdbba; --laranja-300: #ffb36b; --laranja-500: #ff7900; --laranja-700: #cb5900; --laranja-900: #923c00;
  --verde-50: #e6f9eb; --verde-100: #b8f0c8; --verde-300: #65d986; --verde-500: #09af3e; --verde-700: #087e32; --verde-900: #075824;

  /* semânticos (tema claro) */
  --fundo: #f4f7fc;
  --superficie: #ffffff;
  --texto: #12213b;
  --texto-2: #556377;          /* 5,4:1 sobre o fundo */
  --borda: #dce4ef;
  --primaria: #092d93;         /* links, textos de destaque, selos */
  --primaria-hover: #061d60;
  --botao: #092d93;            /* fundo do botão principal (texto branco 11,6:1) */
  --botao-hover: #061d60;
  --primaria-txt: #ffffff;
  --acento: #ff7900;           /* só preenchimento */
  --acento-suave: #fff2e5;
  --ok: #087e32;
  --ok-suave: #e6f9eb;
  --aviso: #a14a06;
  --aviso-suave: #fff2e5;
  --erro: #c62828;
  --erro-suave: #fdecec;
  --info-suave: #eaf0ff;
  --foco: #527eef;
  --topo-fundo: #ffffff;
  --topo-txt: #092d93;
  --topo-ativo: #eaf0ff;
  /* cores fixas das grandezas (gráficos) */
  --c-geracao: #ff7900;
  --c-consumo: #2453c4;
  --c-injecao: #09af3e;
  --c-autoconsumo: #ffb36b;
  --c-baixa: #c62828;
  --c-esperado: #12213b;
  --c-falha: #c62828;

  --raio: 12px;
  --raio-ctrl: 8px;
  --sombra: 0 1px 2px rgba(9, 45, 147, .05), 0 4px 20px rgba(9, 45, 147, .06);
  --fonte: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --fonte-titulo: "Manrope", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  color-scheme: light;
}
/* tema escuro: escolhido pelo usuário ou automático (do aparelho) */
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="claro"]) {
    --fundo: #0b1424; --superficie: #162338; --texto: #f4f7fc; --texto-2: #a8b7cb; --borda: #34445e;
    --primaria: #afc5ff; --primaria-hover: #d3e0ff; --botao: #3d6be0; --botao-hover: #2f5bcc; --primaria-txt: #ffffff;
    --acento: #ff8a1f; --acento-suave: #3a2410; --ok: #5ee49a; --ok-suave: #12301f; --aviso: #fdc47a; --aviso-suave: #3a2a10;
    --erro: #ff8a8a; --erro-suave: #3a1c1e; --info-suave: #1c2b43; --foco: #afc5ff;
    --topo-fundo: #101c30; --topo-txt: #f4f7fc; --topo-ativo: #1c2b43;
    --c-geracao: #ff8a1f; --c-consumo: #7798ed; --c-injecao: #3ccf6a; --c-esperado: #f4f7fc; --c-falha: #ff8a8a; --c-baixa: #ff6b6b;
    --sombra: none; color-scheme: dark;
  }
}
:root[data-tema="escuro"] {
  --fundo: #0b1424; --superficie: #162338; --texto: #f4f7fc; --texto-2: #a8b7cb; --borda: #34445e;
  --primaria: #afc5ff; --primaria-hover: #d3e0ff; --botao: #3d6be0; --botao-hover: #2f5bcc; --primaria-txt: #ffffff;
  --acento: #ff8a1f; --acento-suave: #3a2410; --ok: #5ee49a; --ok-suave: #12301f; --aviso: #fdc47a; --aviso-suave: #3a2a10;
  --erro: #ff8a8a; --erro-suave: #3a1c1e; --info-suave: #1c2b43; --foco: #afc5ff;
  --topo-fundo: #101c30; --topo-txt: #f4f7fc; --topo-ativo: #1c2b43;
  --c-geracao: #ff8a1f; --c-consumo: #7798ed; --c-injecao: #3ccf6a; --c-esperado: #f4f7fc; --c-falha: #ff8a8a; --c-baixa: #ff6b6b;
  --sombra: none; color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--fundo); color: var(--texto); font: 16px/1.5 var(--fonte); -webkit-font-smoothing: antialiased; }
a { color: var(--primaria); text-underline-offset: 2px; }
a:hover { color: var(--primaria-hover); }
h1, h2, h3, legend { font-family: var(--fonte-titulo); letter-spacing: -.01em; }
h1 { font-size: 1.65rem; line-height: 1.25; margin: 0 0 .5rem; font-weight: 800; }
h2 { font-size: 1.15rem; line-height: 1.3; margin: 0 0 .75rem; font-weight: 700; }
h3 { font-size: 1rem; margin: 0; font-weight: 700; }
@media (min-width: 720px) { h1 { font-size: 1.9rem; } h2 { font-size: 1.2rem; } }
p { margin: 0 0 .75rem; }
code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .92em; background: var(--fundo); padding: .1em .35em; border-radius: 4px; }
:focus-visible { outline: 3px solid var(--foco); outline-offset: 2px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.muted { color: var(--texto-2); }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }

/* ---------- Topo ---------- */
.topo { background: var(--topo-fundo); color: var(--topo-txt); position: sticky; top: 0; z-index: 10; border-bottom: 1px solid var(--borda); box-shadow: 0 2px 12px rgba(9, 45, 147, .06); }
.topo-in { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .5rem 16px; max-width: 1200px; margin: 0 auto; }
.marca { display: flex; align-items: center; gap: .65rem; color: inherit; text-decoration: none; }
.marca:hover { color: inherit; }
.marca .logo { height: 48px; width: auto; display: block; }
.logo-escuro { display: none !important; }
@media (prefers-color-scheme: dark) { :root:not([data-tema="claro"]) .logo-padrao { display: none !important; } :root:not([data-tema="claro"]) .logo-escuro { display: block !important; } }
:root[data-tema="escuro"] .logo-padrao { display: none !important; }
:root[data-tema="escuro"] .logo-escuro { display: block !important; }
.marca-sistema { font: 600 .78rem/1 var(--fonte); text-transform: uppercase; letter-spacing: .08em; color: var(--texto-2); padding-left: .65rem; border-left: 1px solid var(--borda); }
.nav { display: flex; gap: .25rem; overflow-x: auto; padding: 0 12px .5rem; max-width: 1200px; margin: 0 auto; scrollbar-width: none; }
.nav a { color: inherit; text-decoration: none; padding: .45rem .8rem; border-radius: 999px; white-space: nowrap; font-size: .95rem; font-weight: 500; min-height: 36px; display: inline-flex; align-items: center; }
.nav a:hover { background: var(--topo-ativo); color: inherit; }
.nav a[aria-current="page"] { background: var(--topo-ativo); font-weight: 700; box-shadow: inset 0 -2px 0 var(--acento); }
.menu-usuario { position: relative; }
.menu-usuario summary { cursor: pointer; list-style: none; padding: .4rem .85rem; border-radius: 999px; background: var(--topo-ativo); font-weight: 600; min-height: 36px; display: inline-flex; align-items: center; }
.menu-usuario summary::-webkit-details-marker { display: none; }
.menu-pop { position: absolute; right: 0; top: calc(100% + 6px); background: var(--superficie); color: var(--texto); border: 1px solid var(--borda); border-radius: var(--raio); box-shadow: 0 8px 28px rgba(9, 45, 147, .14); padding: .85rem; min-width: 250px; display: grid; gap: .6rem; font-size: .95rem; }
.menu-pop .muted { font-size: .85rem; }
.form-tema { display: grid; gap: .25rem; padding: .5rem 0; border-top: 1px solid var(--borda); border-bottom: 1px solid var(--borda); }
.form-tema label { font-size: .82rem; font-weight: 600; color: var(--texto-2); }
.form-tema select { min-height: 40px; }

/* ---------- Estrutura ---------- */
.conteudo { max-width: 1200px; margin: 0 auto; padding: 16px; display: grid; gap: 16px; }
.rodape { text-align: center; color: var(--texto-2); font-size: .8rem; padding: 1.5rem 16px; }
.card { background: var(--superficie); border: 1px solid var(--borda); border-radius: var(--raio); padding: 16px; box-shadow: var(--sombra); min-width: 0; }
.card.sem-pad { padding: 0; }
.card.estreito { max-width: 520px; width: 100%; margin: 0 auto; }
.card.destaque { border-color: var(--acento); background: var(--acento-suave); }
.card.vazio { text-align: center; color: var(--texto-2); padding: 1.5rem; }
.grade-2 { display: grid; gap: 16px; }
@media (min-width: 860px) { .grade-2 { grid-template-columns: 1fr 1fr; } }
.cabecalho-pagina { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.cabecalho-card { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .75rem; }
.cabecalho-card h2 { margin: 0; }
.acoes { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.acoes > form, .acoes form.inline { display: inline-flex; align-items: center; gap: .5rem; margin: 0; }
.trilha { margin: 0; font-size: .95rem; }
.trilha a { text-decoration: none; }
.login { display: grid; place-items: center; min-height: 60vh; }
.login .card { width: 100%; max-width: 400px; }

/* ---------- Indicadores ---------- */
.indicadores { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
@media (min-width: 720px) { .indicadores { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.indicador { background: var(--superficie); border: 1px solid var(--borda); border-left: 4px solid var(--acento); border-radius: var(--raio); padding: 14px 16px; display: grid; box-shadow: var(--sombra); }
.indicador .num { font-size: 1.7rem; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; line-height: 1.2; }
.indicador .num-peq { font-size: 1.25rem; }
.indicador span:last-child { color: var(--texto-2); font-size: .85rem; }

/* ---------- Botões ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; min-height: 44px; padding: .5rem 1.1rem; border-radius: var(--raio-ctrl); border: 1px solid var(--botao); background: var(--botao); color: var(--primaria-txt); transition: background-color .15s, border-color .15s; font: inherit; font-weight: 600; text-decoration: none; cursor: pointer; white-space: nowrap; }
.btn:hover { background: var(--botao-hover); border-color: var(--botao-hover); color: var(--primaria-txt); }
.btn:disabled { opacity: .6; cursor: progress; }
.btn-sec { background: var(--superficie); color: var(--primaria); border-color: var(--borda); }
.btn-sec:hover { background: var(--info-suave); border-color: var(--azul-300); color: var(--primaria); }
.btn-perigo { background: var(--superficie); color: var(--erro); border-color: var(--erro); }
.btn-perigo:hover { background: var(--erro-suave); color: var(--erro); }
.btn-peq { min-height: 36px; padding: .25rem .65rem; font-size: .88rem; }
.btn-largo { width: 100%; }
button.link { background: none; border: 0; padding: 0; color: var(--primaria); font: inherit; cursor: pointer; text-align: left; text-decoration: underline; }
form.inline { display: inline; }

/* ---------- Alertas e selos ---------- */
.alerta { padding: .75rem 1rem; border-radius: var(--raio); border: 1px solid transparent; border-left-width: 4px; }
.alerta-ok { background: var(--ok-suave); color: var(--ok); border-color: currentColor; }
.alerta-aviso { background: var(--aviso-suave); color: var(--aviso); border-color: currentColor; }
.alerta-erro { background: var(--erro-suave); color: var(--erro); border-color: currentColor; }
.selo { display: inline-block; padding: .12rem .6rem; border-radius: 999px; font-size: .8rem; font-weight: 600; white-space: nowrap; background: var(--info-suave); color: var(--primaria); }
.selo-ativo { background: var(--ok-suave); color: var(--ok); }
.selo-em_instalacao { background: var(--acento-suave); color: var(--aviso); }
.selo-em_homologacao { background: var(--info-suave); color: var(--primaria); }
.selo-inativo { background: var(--fundo); color: var(--texto-2); }
.selo-atraso { background: var(--erro-suave); color: var(--erro); }
.codigo { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .85rem; color: var(--texto-2); }

/* ---------- Formulários ---------- */
.formulario { display: grid; gap: 16px; }
fieldset.card { margin: 0; }
legend { font-weight: 700; padding: 0 .35rem; margin-left: -.35rem; }
.grade-campos { display: grid; gap: 12px 16px; grid-template-columns: 1fr; }
.grade-campos + .grade-campos { margin-top: 12px; }
@media (min-width: 640px) { .grade-campos { grid-template-columns: repeat(2, minmax(0, 1fr)); } .campo.largo { grid-column: 1 / -1; } }
@media (min-width: 1000px) { .grade-campos { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.pilha { display: grid; gap: 12px; }
.campo { display: grid; gap: .25rem; min-width: 0; }
.campo label { font-weight: 600; font-size: .92rem; }
.obrig { color: var(--erro); }
input, select, textarea { width: 100%; min-height: 44px; padding: .55rem .75rem; border: 1px solid var(--borda); border-radius: var(--raio-ctrl); background: var(--superficie); color: var(--texto); font: inherit; }
textarea { min-height: 80px; resize: vertical; }
input[type="checkbox"], input[type="radio"] { width: 1.15rem; min-height: 1.15rem; height: 1.15rem; padding: 0; flex: none; accent-color: var(--primaria); }
input:focus, select:focus, textarea:focus { border-color: var(--foco); outline: 3px solid color-mix(in srgb, var(--foco) 30%, transparent); outline-offset: 0; }
[aria-invalid="true"] { border-color: var(--erro); }
.erro { color: var(--erro); font-size: .85rem; }
.ajuda { color: var(--texto-2); font-size: .82rem; }
.campo-botao { align-content: end; }
.campo-check { align-content: end; }
.campo-check label, .check { display: flex; align-items: center; gap: .5rem; font-weight: 400; }
.barra-acoes { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .5rem; position: sticky; bottom: 0; padding: 12px 0; background: linear-gradient(transparent, var(--fundo) 30%); }
.filtros { display: grid; gap: 12px; }
@media (min-width: 720px) { .filtros { grid-template-columns: 2fr 1fr auto; align-items: end; } .filtros .campo.largo { grid-column: auto; } }
.filtros .campo-botao { display: flex; gap: .5rem; }
.busca { display: flex; gap: .5rem; width: 100%; max-width: 480px; }
.caixa-retirar { margin-top: 1rem; padding: 12px; border: 1px dashed var(--borda); border-radius: var(--raio); display: grid; gap: .5rem; }

/* ---------- Dados (definições) ---------- */
.dados { margin: 0; display: grid; gap: .5rem; }
.dado { display: grid; grid-template-columns: 1fr; gap: 0; border-bottom: 1px solid var(--borda); padding-bottom: .45rem; }
.dado:last-child { border-bottom: 0; }
@media (min-width: 480px) { .dado { grid-template-columns: 11rem 1fr; gap: .75rem; } }
.dado dt { color: var(--texto-2); font-size: .88rem; }
.dado dd { margin: 0; overflow-wrap: anywhere; }
.dados-linha { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin-bottom: .75rem; }
.dados-linha .dado { grid-template-columns: 1fr; gap: 0; border: 0; }
.nota { background: var(--fundo); border-radius: 8px; padding: .5rem .75rem; font-size: .95rem; }
.senha { font-size: 1.1rem; padding: .25rem .5rem; user-select: all; }

/* ---------- Listas ---------- */
.lista { list-style: none; margin: 0; padding: 0; display: grid; }
.lista li { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .6rem; padding: .55rem 0; border-bottom: 1px solid var(--borda); }
.lista li:last-child { border-bottom: 0; }

/* ---------- Tabelas (viram cartões no celular) ---------- */
.tabela-wrap { overflow-x: auto; }
.tabela { width: 100%; border-collapse: collapse; font-size: .95rem; }
.tabela th { text-align: left; font-size: .76rem; text-transform: uppercase; letter-spacing: .04em; color: var(--texto-2); background: var(--fundo); font-weight: 600; }
.tabela tbody tr:hover td { background: color-mix(in srgb, var(--info-suave) 45%, transparent); }
.tabela th, .tabela td { padding: .6rem .75rem; border-bottom: 1px solid var(--borda); vertical-align: top; }
.tabela .num, .indicador .num, .dado dd { font-variant-numeric: tabular-nums; }
.tabela .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.tabela th.num { white-space: normal; }          /* título da coluna pode quebrar; o número não */
.tabela tr.desativado td { color: var(--texto-2); }
.tabela tr.desativado td:not(:last-child) { text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--texto-2) 50%, transparent); }
.acoes-linha { white-space: nowrap; text-align: right; }
.acoes-linha > * + * { margin-left: .25rem; }
.detalhes { font-size: .85rem; color: var(--texto-2); }
@media (max-width: 719px) {
  .tabela thead { display: none; }
  .tabela, .tabela tbody, .tabela tr, .tabela td { display: block; width: 100%; }
  .tabela tr { padding: .6rem .75rem; border-bottom: 1px solid var(--borda); }
  .tabela td { border: 0; padding: .15rem 0; display: grid; grid-template-columns: 7.5rem 1fr; gap: .5rem; text-align: left; }
  .tabela td.num { text-align: left; white-space: normal; }
  .tabela td::before { content: attr(data-rot); color: var(--texto-2); font-size: .82rem; }
  .tabela td.acoes-linha { display: flex; gap: .5rem; padding-top: .4rem; }
  .tabela td.acoes-linha::before { content: none; }
}

.etapa { border-top: 4px solid var(--acento); }
.paginacao { display: flex; justify-content: center; align-items: center; gap: .75rem; }
.zona-perigo { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .75rem; padding-top: 1rem; border-top: 1px solid var(--borda); }
.nota-papeis p { margin: 0 0 .35rem; font-size: .95rem; }

/* ---------- CEP e mapa ---------- */
[data-cep-status][data-tipo="ok"] { color: var(--ok); }
[data-cep-status][data-tipo="aviso"] { color: var(--aviso); }
[data-cep-status][data-tipo="erro"] { color: var(--erro); }
select:disabled { opacity: .6; }
.mapa-painel { margin-top: 12px; display: grid; gap: 8px; }
.mapa-painel[hidden] { display: none; }
.mapa-barra { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }
.mapa-aviso { background: rgba(255,255,255,.92); color: #5b4300; border-radius: 4px; padding: 4px 8px; font-size: .8rem; max-width: 260px; box-shadow: 0 1px 3px rgba(0,0,0,.25); }
.mapa-aviso[hidden] { display: none; }
.mapa { height: 380px; width: 100%; border-radius: var(--raio); border: 1px solid var(--borda); background: var(--fundo); }
@media (min-width: 900px) { .mapa { height: 460px; } }
.leaflet-container { font: inherit; }
.leaflet-container a { color: var(--primaria); }

/* ---------- Mapa geral de clientes ---------- */
.mapa-geral { height: 65vh; min-height: 380px; border: 0; border-radius: var(--raio) var(--raio) 0 0; }
.legenda { list-style: none; margin: 0; padding: .6rem 1rem; display: flex; flex-wrap: wrap; gap: .4rem 1.2rem; font-size: .88rem; color: var(--texto-2); border-top: 1px solid var(--borda); }
.legenda li { display: flex; align-items: center; gap: .4rem; }
.pin-cor { width: 12px; height: 12px; border-radius: 50%; display: inline-block; border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.3); }
.pin { background: none; border: 0; }
.pin span { display: block; width: 22px; height: 22px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.45); }
.pin-ativo span, .pin-cor.pin-ativo { background: #087e32; }
.pin-em_instalacao span, .pin-cor.pin-em_instalacao { background: #ff7900; }
.pin-em_homologacao span, .pin-cor.pin-em_homologacao { background: #2453c4; }
.pin-inativo span, .pin-cor.pin-inativo { background: #8a96a3; }
.popup { display: grid; gap: .2rem; min-width: 180px; font-size: .92rem; }
.popup-links { display: flex; gap: .9rem; margin-top: .3rem; }
.popup-links a { font-weight: 600; }

/* ---------- Rateio e enquadramento ---------- */
.selo-gd { background: var(--acento-suave); color: var(--aviso); }
.texto-ok { color: var(--ok); }
.texto-aviso { color: var(--aviso); }
.texto-erro { color: var(--erro); }
.tabela-rateio input { min-height: 38px; padding: .35rem .5rem; }
.tabela-rateio .col-ordem { width: 4.5rem; white-space: nowrap; }
.tabela-rateio .col-pct { width: 7rem; }
.tabela-rateio .col-exc { width: 7rem; text-align: center; }
.tabela-rateio td.col-exc input { margin: .6rem auto; }
.tabela-rateio tfoot td { border-bottom: 0; background: var(--fundo); }
[data-rateio][data-modo="prioridade"] .col-pct, [data-rateio][data-modo="prioridade"] .col-pct-total { display: none; }
[data-rateio]:not([data-modo="prioridade"]) .col-ordem, [data-rateio]:not([data-modo="prioridade"]) [data-rateio-subir], [data-rateio]:not([data-modo="prioridade"]) [data-rateio-descer] { display: none; }
[data-rateio][data-modo=""] .tabela-wrap, [data-rateio][data-modo=""] [data-rateio-add], [data-rateio][data-modo=""] [data-rateio-geradora], [data-rateio][data-modo=""] [data-rateio-ajuda] { display: none; }
@media (max-width: 719px) {
  .tabela-rateio td.col-exc { text-align: left; }
  .tabela-rateio td.col-exc input { margin: .4rem 0; }
  [data-rateio][data-modo="prioridade"] td.col-pct { display: none; }
}

/* ---------- Alinhamento dos campos em grade ----------
   Cada campo ocupa 3 linhas da grade (rótulo | caixa | ajuda/erro) compartilhadas com os vizinhos,
   então rótulos longos ou textos de ajuda não desalinham as caixas da mesma linha. */
.campo-extra { display: grid; gap: .15rem; }
.campo-extra:empty { display: none; }
@supports (grid-template-rows: subgrid) {
  @media (min-width: 640px) {
    .grade-campos > .campo { grid-row: span 3; grid-template-rows: subgrid; row-gap: .3rem; align-items: start; }
    .grade-campos > .campo > label { align-self: end; }
    .grade-campos > .campo-extra:empty, .grade-campos > .campo > .campo-extra:empty { display: block; }
    .grade-campos > .campo-botao, .grade-campos > .campo-check { grid-template-rows: subgrid; }
    .grade-campos > .campo-botao > *, .grade-campos > .campo-check > * { grid-row: 2; align-self: center; }
  }
}
.grade-checks { display: grid; gap: .4rem 1.2rem; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); margin: .5rem 0; }
.rotulo-grupo { margin: .75rem 0 0; }
.mudancas[hidden] { display: none; }

/* ---------- Linha do tempo (histórico do sistema) ---------- */
.linha-tempo { list-style: none; margin: 0; padding: 0 0 0 1.1rem; border-left: 3px solid var(--borda); display: grid; gap: 1rem; }
.evento { position: relative; }
.evento::before { content: ""; position: absolute; left: calc(-1.1rem - 8px); top: .35rem; width: 13px; height: 13px; border-radius: 50%; background: var(--acento); border: 2px solid var(--superficie); }
.evento-original::before { background: var(--ok); }
.evento-substituicao::before, .evento-alteracao::before { background: var(--primaria); }
.evento-cab { display: flex; flex-wrap: wrap; align-items: baseline; gap: .3rem .6rem; }
.evento-data { font-variant-numeric: tabular-nums; color: var(--texto-2); font-size: .9rem; }
.evento p { margin: .25rem 0; }
.evento-itens { list-style: none; margin: .3rem 0; padding: 0; display: grid; gap: .15rem; font-size: .95rem; }
.evento-itens .entrou span { color: var(--ok); font-weight: 700; }
.evento-itens .saiu { color: var(--texto-2); }
.evento-itens .saiu span { color: var(--erro); font-weight: 700; }
.evento-pot { font-size: .92rem; }
.selo-tipo { background: var(--fundo); color: var(--texto-2); }

/* ---------- Lançamento de módulos e inversores ---------- */
.bloco-equip { display: grid; gap: .5rem; margin-top: .75rem; }
.bloco-equip h3 { font-size: .98rem; margin: .25rem 0 0; }
.bloco-equip > .btn { justify-self: start; }
.tabela-equip input, .tabela-equip select { min-height: 38px; padding: .35rem .5rem; }
.tabela-equip .col-qtd { width: 5.5rem; }
.tabela-equip .col-pot { width: 8rem; }

.evento-rateio::before { background: #8e5bd6; }
[data-rateio][data-modo=""] [data-rateio-registro] { display: none; }
.evento-titular::before { background: var(--laranja-700); }

/* ---------- Monitoramento (1.6) ---------- */
.selo-sit-normal { background: var(--ok-suave); color: var(--ok); }
.selo-sit-espera { background: var(--fundo); color: var(--texto-2); }
.selo-sit-falha { background: var(--erro-suave); color: var(--erro); }
.selo-sit-offline { background: var(--aviso-suave); color: var(--aviso); }
.selo-sit-sem_dados { background: var(--fundo); color: var(--texto-2); }
.selo-grav-alta { background: var(--erro-suave); color: var(--erro); text-decoration: none; }
.selo-grav-media { background: var(--aviso-suave); color: var(--aviso); }
.selo-grav-baixa { background: var(--info-suave); color: var(--primaria); }
.contador { display: inline-block; min-width: 1.35em; padding: 0 .35em; margin-left: .2rem; border-radius: 999px; background: var(--acento); color: #2b1300; font-size: .75rem; font-weight: 700; text-align: center; line-height: 1.35em; }
.indicador.ind-normal { border-left-color: var(--ok); }
.indicador.ind-espera { border-left-color: var(--borda); }
.indicador.ind-falha { border-left-color: var(--erro); }
.indicador.ind-offline { border-left-color: var(--aviso); }
.abas { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 1rem; }
.abas a { padding: .35rem .8rem; border-radius: 999px; border: 1px solid var(--borda); background: var(--superficie); text-decoration: none; color: var(--texto); font-size: .92rem; }
.abas a[aria-current="page"] { background: var(--botao); border-color: var(--botao); color: var(--primaria-txt); font-weight: 600; }
.grafico { width: 100%; height: auto; display: block; }
.grafico .g-grade { stroke: var(--borda); stroke-width: 1; }
.grafico .g-txt { fill: var(--texto-2); font-size: 11px; font-family: var(--fonte); }
.grafico .g-linha { fill: none; stroke: var(--c-geracao); stroke-width: 2.2; stroke-linejoin: round; }
.grafico .g-area { fill: var(--c-geracao); fill-opacity: .18; stroke: none; }
.grafico .g-barra { fill: var(--c-geracao); fill-opacity: .85; }
.grafico .g-barra:hover { fill-opacity: 1; }
.codigo-bloco { background: var(--fundo); border: 1px solid var(--borda); border-radius: 8px; padding: .75rem; overflow-x: auto; font: .85rem/1.45 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; white-space: pre-wrap; word-break: break-all; }
.codigo-bloco.json { max-height: 480px; overflow-y: auto; white-space: pre; word-break: normal; }
.tabela.compacta th, .tabela.compacta td { padding: .4rem .6rem; }
.tabela tr.linha-alerta td { background: var(--erro-suave); }
.tabela tr.apagado td { color: var(--texto-2); }
.card.destaque-erro { border-color: var(--erro); background: var(--erro-suave); }
form.vincular { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; margin-top: .35rem; }
form.vincular select { max-width: 260px; min-height: 34px; }
form.form-linha { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
form.form-linha input { flex: 1 1 260px; min-height: 36px; height: 36px; padding-top: 0; padding-bottom: 0; }
form.form-linha input[type=checkbox], form.form-linha input[type=radio] { flex: 0 0 auto; width: auto; min-height: 0; height: auto; margin: 0; }
.form-modulos .check { flex: 1 1 260px; }
.form-modulos input[inputmode=numeric] { flex: 0 1 8rem; }
form.form-linha { align-items: center; }
.lista-alertas { display: grid; gap: 12px; }
.alerta-item { border-left: 4px solid var(--borda); }
.alerta-item.grav-alta { border-left-color: var(--erro); }
.alerta-item.grav-media { border-left-color: var(--acento); }
.alerta-item.visto { opacity: .85; }
.alerta-item h2 { font-size: 1.05rem; margin: .35rem 0 .15rem; }
.alerta-item p { margin: .35rem 0 0; }
details.card > summary { cursor: pointer; font-weight: 600; }
@media (max-width: 719px) {
  .tabela.compacta { display: table; }
  .tabela.compacta thead { display: table-header-group; }
  .tabela.compacta tbody { display: table-row-group; }
  .tabela.compacta tr { display: table-row; padding: 0; }
  .tabela.compacta td { display: table-cell; }
  .tabela.compacta td::before { content: none; }
}
.cabecalho-card nav.acoes { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.cabecalho-card nav.acoes form.inline { display: inline-flex; gap: .4rem; align-items: center; }
.cabecalho-card nav.acoes input[type=date] { min-height: 34px; padding: .2rem .5rem; }
.texto-aviso { color: var(--aviso); }
input.campo-dia { width: 4.5rem; min-height: 36px; height: 36px; padding-top: 0; padding-bottom: 0; }
#ciclos .form-linha label { font-size: .9rem; color: var(--texto-2); }
form.form-linha input.campo-dia { flex: 0 0 4.5rem; }
.nowrap { white-space: nowrap; }
#ciclos td.acoes-linha { white-space: nowrap; }
.check-inline { display: inline-flex; align-items: center; gap: .3rem; margin: 0 .9rem .4rem 0; white-space: nowrap; }

/* ---------- Painéis (1.8) ---------- */
.indicadores-auto { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); margin-bottom: 16px; }
@media (min-width: 720px) { .indicadores-auto { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); } }
.indicador .num small { font-size: .55em; font-weight: 600; color: var(--texto-2); }
.indicador.ind-bom { border-left-color: var(--ok); }
.indicador.ind-medio { border-left-color: var(--acento); }
.indicador.ind-ruim { border-left-color: var(--erro); }
.indicador.ind-nd { border-left-color: var(--borda); }
.subtitulo { font-size: 1rem; margin: 1rem 0 .5rem; }
.grafico-bloco { margin: .5rem 0 1.25rem; }
.legenda-graf { list-style: none; margin: 0 0 .4rem; padding: 0; display: flex; flex-wrap: wrap; gap: .3rem 1.1rem; font-size: .85rem; color: var(--texto-2); }
.legenda-graf li { display: inline-flex; align-items: center; gap: .4rem; }
.lg { display: inline-block; width: 12px; height: 12px; border-radius: 3px; }
.lg-barra { background: var(--c-geracao); opacity: .85; }
.lg-parcial { background: color-mix(in srgb, var(--c-geracao) 30%, transparent); border: 1.5px dashed var(--c-geracao); }
.lg-auto { background: var(--c-autoconsumo); }
.lg-inj { background: var(--c-injecao); }
.lg-baixa { background: var(--c-baixa); }
.lg-alta { background: var(--erro); }
.lg-media { background: var(--acento); }
.lg-esperado { width: 16px; height: 0; border-radius: 0; border-top: 2px dashed var(--c-esperado); }
.grafico .g-auto { fill: var(--c-autoconsumo); }
.grafico .g-inj { fill: var(--c-injecao); }
.grafico .g-baixa { fill: var(--c-baixa); fill-opacity: .9; }
.grafico .g-parcial { fill-opacity: .3; stroke: var(--c-geracao); stroke-width: 1.5; stroke-dasharray: 4 3; }
.grafico .g-esperado { stroke: var(--c-esperado); stroke-width: 2; stroke-dasharray: 5 4; fill: none; }
.grafico .g-trilho { fill: var(--fundo); }
.grafico .g-alta { fill: var(--erro); fill-opacity: .85; }
.grafico .g-media { fill: var(--acento); }
.grafico .g-txt-m { font-size: 13px; fill: var(--texto); }
.grafico a:hover .g-txt-m { text-decoration: underline; }
.mapa-topo { padding: 12px 16px; }
.mapa-operacao { height: 52vh; border-radius: 0; }
.pin-sit-normal span, .pin-cor.pin-sit-normal { background: #087e32; }
.pin-sit-espera span, .pin-cor.pin-sit-espera { background: #8a96a3; }
.pin-sit-falha span, .pin-cor.pin-sit-falha { background: #c62828; }
.pin-sit-offline span, .pin-cor.pin-sit-offline { background: #f2a900; }
.pin-sit-sem_dados span, .pin-cor.pin-sit-sem_dados { background: #5b6775; }
.grade-meses { display: grid; grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); gap: 8px; margin: .5rem 0 1rem; }
.grade-meses input { width: 100%; }
details > summary { cursor: pointer; }
.acoes-form { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: flex-end; }
.grafico-rolagem { overflow-x: auto; -webkit-overflow-scrolling: touch; }
@media (max-width: 719px) { .grafico-rolagem .grafico { min-width: 600px; } }
.form-apelido { margin-top: .5rem; max-width: 560px; }
.form-apelido label { font-size: .9rem; color: var(--texto-2); }
details.identificar { margin: .25rem 0 .75rem; }
details.identificar summary { color: var(--primaria); font-weight: 600; }
.grade-ident { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px 12px; margin: .5rem 0 .75rem; }
.grade-ident label { font-size: .85rem; }
.grade-ident input { width: 100%; }
form.form-numero { display: inline-flex; vertical-align: middle; margin-right: .35rem; }
form.form-numero select { min-height: 32px; padding: 2px 4px; font: inherit; font-size: .9rem; border: 1px solid var(--borda); border-radius: 6px; background: var(--superficie); color: var(--texto); }
#monitoramento, #ciclos, #conferencia, #fio-b { scroll-margin-top: 130px; }
#rateio { scroll-margin-top: 130px; }
details.hist-rateio { margin-top: .75rem; }
details.hist-rateio summary { color: var(--primaria); font-weight: 600; }
.lista-hist { margin: .5rem 0 0; padding-left: 1.1rem; display: grid; gap: .6rem; }
.lista-codigos { list-style: none; margin: 0 0 .75rem; padding: 0; display: grid; gap: .5rem; }
.lista-codigos li { padding: .5rem .75rem; border-radius: 8px; border-left: 4px solid var(--borda); background: var(--fundo); }
.lista-codigos li.cod-falha { border-left-color: var(--erro); }
.lista-codigos li.cod-aviso { border-left-color: var(--acento); }

/* ---------- Campo com botão (mostrar senha) ---------- */
.com-botao { display: flex; gap: .4rem; align-items: center; }
.com-botao input { flex: 1 1 auto; min-width: 0; }
.com-botao .btn { flex: 0 0 auto; }

/* ---------- Comparação entre anos ---------- */
.grafico .g-ano-0, .lg-ano-0 { fill: var(--c-geracao); background: var(--c-geracao); }
.grafico .g-ano-1, .lg-ano-1 { fill: var(--c-consumo); background: var(--c-consumo); }
.grafico .g-ano-2, .lg-ano-2 { fill: var(--azul-300); background: var(--azul-300); }
.grafico .g-ano-3, .lg-ano-3 { fill: #a8b7cb; background: #a8b7cb; }
.grafico .g-parcial-ano { fill-opacity: .35; }
.lg-parcial-ano { background: color-mix(in srgb, var(--texto-2) 35%, transparent); }
fieldset.degradacao { border: 1px solid var(--borda); border-radius: var(--raio-ctrl); padding: .75rem 1rem; margin: 1rem 0 0; }

/* ---------- Horários da leitura de e-mails ---------- */
fieldset.horarios-email { border: 1px solid var(--borda); border-radius: var(--raio-ctrl); padding: .75rem 1rem; margin: 0; }
.grade-horas { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: .35rem .75rem; margin-top: .5rem; }
.grade-horas .check { font-variant-numeric: tabular-nums; }

/* ---------- Fatura com senha ---------- */
.faturas-email { margin-top: 1rem; padding-top: .75rem; border-top: 1px solid var(--borda); }
.faturas-email h3 { font-size: .95rem; margin-bottom: .35rem; }
.faturas-email p { margin: 0 0 .5rem; overflow-wrap: anywhere; }
.senha-pdf { margin-top: .5rem; }
.senha-pdf label { font-size: .9rem; font-weight: 600; }
.senha-pdf { display: flex; flex-wrap: wrap; gap: .4rem .6rem; align-items: center; }
.senha-pdf input.campo-senha-pdf { width: 10rem; }
.senha-pdf .ajuda { flex: 1 1 100%; }

/* ---------- Relatório de geração e créditos ---------- */
details.nomes-unidades { margin-top: 1rem; padding-top: .75rem; border-top: 1px solid var(--borda); }
details.nomes-unidades summary { color: var(--primaria); font-weight: 600; }
.grade-nomes { display: grid; gap: 10px 16px; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); margin-top: .5rem; align-items: end; }
.grade-nomes label { font-size: .85rem; font-weight: 600; color: var(--texto-2); }
.so-impressao { display: none; }
.relatorio-cab h1 { margin-bottom: .25rem; }
.relatorio-cab p { margin: .15rem 0; }
.relatorio-filtro { align-items: center; gap: .5rem .6rem; margin: .75rem 0 1rem; }
.relatorio-filtro input[type="month"] { min-height: 36px; padding: 4px 8px; font: inherit; border: 1px solid var(--borda); border-radius: 6px; background: var(--superficie); color: var(--texto); }
.tabela-compacta th, .tabela-compacta td { padding: .45rem .55rem; font-size: .9rem; }
.tabela-compacta tfoot td { border-top: 2px solid var(--borda); }
.lista-simples { margin: .25rem 0 .5rem; padding-left: 1.1rem; display: grid; gap: .3rem; }
.relatorio-nota { margin-top: 1rem; }
details.card > summary { font-weight: 600; color: var(--primaria); }
@media (max-width: 719px) {
  .tabela-matriz { display: table; }
  .tabela-matriz thead { display: table-header-group; }
  .tabela-matriz tbody { display: table-row-group; }
  .tabela-matriz tr { display: table-row; padding: 0; }
  .tabela-matriz td { display: table-cell; width: auto; padding: .4rem .5rem; border-bottom: 1px solid var(--borda); }
  .tabela-matriz td.num { text-align: right; white-space: nowrap; }
  .tabela-matriz td::before { content: none; }
}
@media print {
  @page { size: A4; margin: 12mm; }
  :root { color-scheme: light; }
  body { background: #fff !important; color: #000 !important; font-size: 10.5pt; }
  .topo, .nav, .rodape, .nao-imprimir, .alerta, .trilha { display: none !important; }
  :root { --texto: #12213b; --texto-2: #444f5e; --borda: #c9d3e0; --primaria: #092d93; --c-geracao: #ff7900; --c-esperado: #12213b; --fundo: #f4f7fc; --superficie: #fff; }
  .so-impressao { display: block; }
  .relatorio-logo { height: 52px; width: auto; margin-bottom: 6px; }
  .conteudo { max-width: none; padding: 0; margin: 0; }
  .card, .indicador { box-shadow: none !important; background: #fff !important; border-color: #bbb !important; break-inside: avoid; }
  .indicadores { grid-template-columns: repeat(4, 1fr) !important; }
  .tabela thead { display: table-header-group !important; }
  .tabela, .tabela tbody { display: table !important; width: 100%; }
  .tabela tbody { display: table-row-group !important; }
  .tabela tr { display: table-row !important; }
  .tabela td { display: table-cell !important; width: auto !important; }
  .tabela td::before { content: none !important; }
  .tabela td.nao-imprimir, .tabela th.nao-imprimir { display: none !important; }
  .tabela th { background: #eee !important; color: #000 !important; }
  .tabela-compacta th, .tabela-compacta td { padding: 3px 4px; font-size: 8pt; }
  .tabela th { text-transform: none; letter-spacing: 0; font-size: 7.5pt; line-height: 1.2; vertical-align: bottom; }
  .grafico-rolagem { overflow: visible; }
  .tabela-wrap { overflow: visible; }
  .indicador .num { font-size: 14pt; }
  .indicador { padding: 6px 8px; }
  .card { padding: 8px 10px; margin-bottom: 8px; }
  .relatorio-cab h1 { font-size: 16pt; }
  .tabela .selo { padding: 0 3px; font-size: 7pt; }
  .grafico-rolagem .grafico { min-width: 0 !important; width: 100%; }
  a { color: #000; text-decoration: none; }
}

/* Termos com explicação (passar o mouse ou tocar) */
.dica[title] { text-decoration: underline dotted; text-underline-offset: 3px; cursor: help; }
.dica-bolha { position: absolute; z-index: 30; max-width: min(320px, calc(100vw - 32px)); background: var(--texto); color: var(--superficie); font-size: .85rem; line-height: 1.4; padding: .55rem .7rem; border-radius: 8px; box-shadow: 0 6px 20px rgba(0, 0, 0, .2); }
@media print { .dica[title] { text-decoration: none; } .dica-bolha { display: none; } }

/* Relatório mensal (texto para o WhatsApp), divisão GD I / GD II, importação de datasheet */
.texto-relatorio { width: 100%; min-height: 8rem; font: .92rem/1.45 var(--fonte); white-space: pre-wrap; resize: vertical; margin: .5rem 0 .75rem; }
.gd-divisao { margin-top: .75rem; padding: .75rem; border: 1px dashed var(--borda); border-radius: var(--raio); }
.gd-divisao ul { margin: .25rem 0; padding-left: 1.2rem; }
.gd-split { color: var(--texto-2); }
.tabela-import input, .tabela-import select { min-width: 7.5rem; min-height: 36px; padding: .3rem .5rem; }
.tabela-import th[scope="row"] { min-width: 13rem; font-weight: 500; }
.tabela-import th[scope="row"] .btn { margin-top: .25rem; }
.lista-avisos-cred li { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.lista-avisos-cred form { margin-left: auto; }
.card.vazio .btn { white-space: normal; max-width: 100%; }
.troca-form p { margin: 0 0 .5rem; }
.troca-form .form-linha { flex-wrap: wrap; }
.resumo-monit { margin: 0 0 .5rem; }
.inversores-todos > summary { cursor: pointer; padding: .4rem 0; font-weight: 600; }
.inversores-rolagem { max-height: 24rem; overflow-y: auto; border-top: 1px solid var(--borda); }
.inversores-cliente li { padding: .4rem 0; }
/* 1.27: caixa de inversores com busca e rolagem própria (cerca de 5 inversores visíveis) */
.busca-inv { margin: .25rem 0 .5rem; }
.busca-inv input[type=search] { width: 100%; }
.busca-inv .filtro-cont { margin: .25rem 0 0; font-size: .85rem; }
.caixa-inv { max-height: 22rem; overflow-y: auto; border: 1px solid var(--borda); border-radius: 10px; padding: 0 .75rem; }
.caixa-inv:focus-visible { outline: 2px solid var(--primaria, #092D93); outline-offset: 2px; }
.caixa-inv-tit { position: sticky; top: 0; z-index: 1; margin: 0; padding: .5rem 0 .35rem; font-size: .85rem; font-weight: 700; color: var(--texto-2); background: var(--superficie); border-bottom: 1px solid var(--borda); }
.caixa-inv .inversores-cliente li + li { border-top: 1px solid var(--borda); }
.caixa-inv li[hidden], .caixa-inv [hidden] { display: none; }
.caixa-inv-vazio { padding: .75rem 0; }
@media (max-width: 720px) { .caixa-inv { max-height: 26rem; } }
/* 1.27: desempenho por inversor */
.tabela-desemp-inv tr.linha-ruim td { background: color-mix(in srgb, #d92d20 7%, transparent); }
.token-novo { display: block; padding: .6rem .8rem; background: var(--fundo); border: 1px solid var(--borda); border-radius: 8px; word-break: break-all; user-select: all; }

/* 1.17.8: dia a dia com valores, acumulado e escolha do ciclo */
.grafico .g-val { font-size: 9.5px; fill: var(--texto); }
.grafico .g-dia { font-size: 10px; }
.grafico .g-acum { stroke: var(--c-geracao); stroke-width: 2.5; fill: none; }
.grafico .g-val-acum { font-weight: 600; fill: var(--texto); }
.lg-acum { width: 16px; height: 0; border-radius: 0; border-top: 3px solid var(--c-geracao); }
.ciclo-nav { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .8rem; margin: .2rem 0 .5rem; }
.ciclo-nav .atual { font-weight: 600; }
.ciclo-nav .desligado { color: var(--texto-2); opacity: .5; }
.dias-lista table { max-width: 520px; }
.a-receber { color: var(--ok); font-style: italic; }
.grafico .g-mes { font-size: 10px; font-weight: 600; fill: var(--texto); }
.pelo-dem { font-style: italic; color: var(--texto-suave, #5b6475); }
.senha-outro summary { font-size: .8rem; color: var(--texto-suave, #5b6475); cursor: pointer; margin: 2px 0; }

/* Instalações do mesmo titular (1.18) */
.instalacoes { padding: .75rem 1rem; }
.instalacoes-troca { display: flex; flex-wrap: wrap; gap: .4rem; }
.pilula { display: inline-flex; align-items: center; gap: .35rem; padding: .35rem .8rem; border: 1px solid var(--borda); border-radius: 999px;
  background: var(--superficie); color: var(--primaria); text-decoration: none; font-weight: 600; font-size: .95rem; }
.pilula:hover { background: var(--info-suave); }
.pilula.ativa { background: var(--botao, var(--primaria)); border-color: transparent; color: var(--primaria-txt, #fff); }
.pilula small { font-weight: 400; opacity: .85; }
.instalacoes-resumo { margin-top: .6rem; }
.instalacoes-resumo > summary { cursor: pointer; color: var(--texto-2); }
.ligar-titular { padding: .6rem 1rem; }
.ligar-titular > summary { cursor: pointer; font-weight: 600; color: var(--primaria); }
.ligar-titular .form-linha { margin-top: .5rem; flex-wrap: wrap; }
.lista-instalacao { color: var(--texto-2); font-size: .9rem; }

/* relatório: economia da geradora (total + autoconsumo e créditos) */
.sem-quebra { white-space: nowrap; }
.econ-partes { display: inline-block; white-space: nowrap; font-size: .76rem; line-height: 1.35; }

/* relatório: cobranças de Fio B a conferir, por unidade */
.conferir-uc { border-top: 1px solid var(--borda); padding: .5rem 0; }
.conferir-uc > summary { cursor: pointer; line-height: 1.5; }
.total-conferir { margin: .75rem 0 .25rem; }

/* relatório: frase do mês e quadro de onde vieram os créditos */
.frase-mes { border-left: 4px solid var(--ok); font-size: 1.02rem; line-height: 1.5; }
.frase-mes-int { font-weight: 500; }
.credito-mes { border-top: 1px solid var(--borda); padding: .5rem 0; }
.credito-mes > summary { cursor: pointer; }
.credito-quadro { padding: .25rem 0 .25rem 1rem; }
.credito-quadro p { margin: .35rem 0; }
.lista-creditos { margin: .2rem 0 .5rem 1.2rem; }

/* 1.22.1: escolha das seções do relatório que saem na impressão */
.imprimir-opcoes { flex-wrap: wrap; gap: .4rem 1rem; align-items: center; }
.imprimir-opcoes label { display: inline-flex; align-items: center; gap: .35rem; font-weight: 500; }
.imprimir-opcoes input[type=checkbox] { width: auto; min-height: 0; margin: 0; }

/* =====================================================================
   1.23 · Novo visual: menu lateral, barra de cima, barra de baixo no celular
   e componentes do Painel (cards com ícone, pendências, gráficos).
   Tudo usa os tokens do topo do arquivo; nenhuma cor nova solta.
   ===================================================================== */
:root { --raio: 14px; --raio-ctrl: 10px; --lado-larg: 252px; --lado-mini: 76px; --barra-alt: 68px;
  --lado-fundo: var(--superficie); --lado-ativo: var(--botao); --lado-ativo-txt: #ffffff; --grade-graf: #e8eef6; }
@media (prefers-color-scheme: dark) { :root:not([data-tema="claro"]) { --lado-fundo: #101c30; --grade-graf: #22324b; } }
:root[data-tema="escuro"] { --lado-fundo: #101c30; --grade-graf: #22324b; }

.ico { flex: none; display: block; }
.pular { position: absolute; left: -9999px; top: 8px; z-index: 50; background: var(--botao); color: #fff; padding: .5rem 1rem; border-radius: var(--raio-ctrl); }
.pular:focus { left: 8px; color: #fff; }
.logo-mini { display: none; width: 36px; height: 36px; }

/* estrutura com menu lateral */
html.com-lado body { min-height: 100vh; }
.app { display: block; min-height: 100vh; }
.principal { min-width: 0; display: flex; flex-direction: column; min-height: 100vh; }
html.com-lado .conteudo { max-width: 1440px; width: 100%; padding: 20px 16px 28px; }
html.com-lado .rodape { margin-top: auto; }

.lado { background: var(--lado-fundo); border-right: 1px solid var(--borda); display: flex; flex-direction: column; gap: 4px; padding: 16px 12px; }
.lado-topo { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 2px 6px 14px; }
.lado-topo .marca .logo { height: 50px; }
.lado-fechar { display: none; width: 44px; height: 44px; border-radius: var(--raio-ctrl); align-items: center; justify-content: center; color: var(--texto-2); border: 1px solid var(--borda); }
.lado-novo { margin: 0 4px 12px; }
.lado-nav { display: grid; gap: 3px; }
.lado-nav a { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 0 12px; border-radius: var(--raio-ctrl); color: var(--texto); text-decoration: none; font-weight: 500; }
.lado-nav a .ico { color: var(--texto-2); }
.lado-nav a:hover { background: var(--info-suave); color: var(--texto); }
.lado-nav a[aria-current="page"] { background: var(--lado-ativo); color: var(--lado-ativo-txt); font-weight: 600; }
.lado-nav a[aria-current="page"] .ico { color: var(--lado-ativo-txt); }
.lado-rot { flex: 1 1 auto; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lado .contador, .barra-topo .contador, .barra-baixo .contador { background: var(--erro); color: #fff; margin: 0; min-width: 22px; height: 22px; line-height: 22px; padding: 0 6px; font-size: .72rem; }
.lado-grupo { margin: 14px 12px 4px; padding-top: 14px; border-top: 1px solid var(--borda); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--texto-2); }
.lado-rodape { margin-top: auto; padding: 12px 4px 0; border-top: 1px solid var(--borda); display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.lado-recolher { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 10px; border-radius: var(--raio-ctrl); border: 1px solid var(--borda); background: var(--superficie); color: var(--texto-2); font: inherit; font-size: .9rem; font-weight: 500; cursor: pointer; }
.lado-recolher:hover { background: var(--info-suave); color: var(--texto); }
.lado-versao { font-size: .75rem; color: var(--texto-2); }

/* barra de cima */
.barra-topo { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; gap: 10px 12px; padding: 10px 16px; background: var(--topo-fundo); border-bottom: 1px solid var(--borda); }
.barra-menu, .barra-icone { flex: none; position: relative; width: 44px; height: 44px; border-radius: var(--raio-ctrl); border: 1px solid var(--borda); display: inline-flex; align-items: center; justify-content: center; color: var(--texto); background: var(--superficie); }
.barra-menu:hover, .barra-icone:hover { background: var(--info-suave); color: var(--texto); }
.barra-icone .contador { position: absolute; top: -7px; right: -7px; }
.barra-marca .logo { height: 40px; }
.barra-busca { position: relative; flex: 1 1 280px; max-width: 620px; margin: 0; }
.barra-busca .ico { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--texto-2); pointer-events: none; }
.barra-busca input { padding-left: 42px; background: var(--fundo); }
.barra-tema { display: flex; gap: 2px; padding: 3px; margin: 0 0 0 auto; border-radius: var(--raio-ctrl); background: var(--fundo); border: 1px solid var(--borda); }
.barra-tema button { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 10px; border: 0; border-radius: 8px; background: transparent; color: var(--texto-2); font: inherit; font-size: .85rem; font-weight: 600; cursor: pointer; }
.barra-tema button[aria-pressed="true"] { background: var(--superficie); color: var(--texto); box-shadow: 0 1px 3px rgba(9, 45, 147, .15); }
.barra-topo .menu-usuario summary { gap: 10px; padding: 3px 10px 3px 3px; min-height: 44px; border-radius: var(--raio-ctrl); background: var(--superficie); border: 1px solid var(--borda); color: var(--texto); }
.avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--botao); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: .85rem; }
.usuario-txt { display: grid; line-height: 1.15; }
.usuario-txt small { color: var(--texto-2); font-size: .75rem; font-weight: 500; }
.barra-topo .menu-pop { z-index: 30; }

/* barra de baixo (celular) */
.barra-baixo { display: none; }

/* celular */
@media (max-width: 719px) {
  .barra-menu, .barra-busca, .usuario-txt, .barra-topo .menu-usuario summary > .ico, .barra-tema span { display: none; }
  .barra-topo { padding: 8px 12px; gap: 8px; }
  .barra-marca { margin-right: auto; }
  .barra-tema { margin: 0; }
  .barra-tema button { padding: 0 8px; min-height: 36px; }
  .barra-topo .menu-usuario summary { padding: 3px; border: 0; background: transparent; }
  .barra-baixo { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); position: fixed; left: 0; right: 0; bottom: 0; z-index: 25; background: var(--topo-fundo); border-top: 1px solid var(--borda); padding: 6px 4px calc(6px + env(safe-area-inset-bottom)); }
  .barra-baixo a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-height: 52px; border-radius: var(--raio-ctrl); color: var(--texto-2); text-decoration: none; font-size: .72rem; font-weight: 500; }
  .barra-baixo a[aria-current="page"] { color: var(--primaria); background: var(--info-suave); font-weight: 700; }
  .barra-baixo-ico { position: relative; display: flex; }
  .barra-baixo .contador { position: absolute; top: -6px; right: -12px; min-width: 18px; height: 18px; line-height: 18px; padding: 0 4px; font-size: .65rem; }
  html.com-lado body { padding-bottom: calc(var(--barra-alt) + env(safe-area-inset-bottom)); }
}
@media (min-width: 720px) { .barra-marca, .barra-buscar { display: none; } }

/* gaveta (celular e tablet) */
@media (max-width: 1023px) {
  .lado { position: fixed; z-index: 40; top: 0; bottom: 0; left: 0; width: min(300px, 86vw); overflow-y: auto; transform: translateX(-105%); transition: transform .2s ease; box-shadow: 0 10px 40px rgba(6, 29, 96, .25); }
  html.gaveta-aberta .lado, .lado:target { transform: none; }
  .lado-fechar { display: inline-flex; }
  .lado-recolher { display: none; }
  .lado-fundo { position: fixed; inset: 0; z-index: 35; background: rgba(6, 18, 40, .45); display: none; }
  html.gaveta-aberta .lado-fundo, .lado:target + .lado-fundo { display: block; }
}
/* computador: menu fixo à esquerda, recolhível */
@media (min-width: 1024px) {
  .app { display: grid; grid-template-columns: var(--lado-larg) minmax(0, 1fr); }
  html.lado-recolhido .app { grid-template-columns: var(--lado-mini) minmax(0, 1fr); }
  .lado { position: sticky; top: 0; height: 100vh; overflow-y: auto; }
  .barra-menu, .lado-fundo { display: none; }
  html.com-lado .conteudo { padding: 24px 28px 36px; }
  .barra-topo { padding: 12px 28px; }
  html.lado-recolhido .lado { padding: 16px 10px; }
  html.lado-recolhido .lado-rot, html.lado-recolhido .lado-grupo, html.lado-recolhido .lado-versao, html.lado-recolhido .lado-topo .logo { display: none !important; }
  html.lado-recolhido .logo-mini { display: block; }
  html.lado-recolhido .lado-topo { justify-content: center; padding: 2px 0 14px; }
  html.lado-recolhido .lado-nav a, html.lado-recolhido .lado-novo { justify-content: center; padding: 0; }
  html.lado-recolhido .lado-novo { margin: 0 0 12px; padding: 0; }
  html.lado-recolhido .lado-nav a { position: relative; }
  html.lado-recolhido .lado-nav .contador { position: absolute; top: 2px; right: 4px; min-width: 18px; height: 18px; line-height: 18px; padding: 0 4px; }
  html.lado-recolhido .lado-rodape { justify-content: center; }
  html.lado-recolhido .lado-recolher .ico { transform: rotate(180deg); }
}

/* ---------- Componentes do novo visual ---------- */
.card { border-radius: var(--raio); }
.saudacao { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px; }
.saudacao h1 { margin: 0; }
.saudacao p { margin: .15rem 0 0; color: var(--texto-2); }
.grupo-cab { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .75rem; margin: 0 0 12px; }
.grupo-cab h2 { margin: 0; font-size: 1.15rem; font-weight: 800; }
.grupo-cab span { color: var(--texto-2); font-size: .88rem; }
.kpis { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
.kpi { position: relative; display: flex; gap: 14px; align-items: flex-start; background: var(--superficie); border: 1px solid var(--borda); border-radius: 16px; box-shadow: var(--sombra); padding: 16px; color: var(--texto); text-decoration: none; min-width: 0; }
a.kpi:hover { border-color: var(--azul-300); color: var(--texto); }
.kpi-ico { flex: 0 0 46px; height: 46px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; }
.kpi-ico.laranja { background: var(--laranja-500); color: #fff; }
.kpi-ico.laranja-suave { background: var(--acento-suave); color: var(--acento); }
.kpi-ico.azul { background: var(--botao); color: #fff; }
.kpi-ico.azul-suave { background: var(--info-suave); color: var(--primaria); }
.kpi-ico.verde-suave { background: var(--ok-suave); color: var(--ok); }
.kpi-ico.erro-suave { background: var(--erro-suave); color: var(--erro); }
.kpi-txt { display: grid; gap: 4px; min-width: 0; flex: 1 1 auto; }
.kpi-rot { color: var(--texto-2); font-weight: 500; font-size: .92rem; }
.kpi-num { font-family: var(--fonte-titulo); font-weight: 800; font-size: 1.65rem; line-height: 1.1; letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.kpi-num small { font-size: .55em; font-weight: 700; color: var(--texto-2); }
.kpi-sub { font-size: .8rem; color: var(--texto-2); }
.kpi-sub strong.ok, .t-ok { color: var(--ok); }
.kpi-sub strong.erro, .t-erro, .kpi-num.t-erro { color: var(--erro); }
.kpi .ico-seta { align-self: center; color: var(--texto-2); }
.prog { display: block; width: 100%; height: 6px; border-radius: 3px; overflow: hidden; }
.prog .trilho { fill: var(--info-suave); }
.prog .valor { fill: var(--azul-500); }
.prog.verde .trilho { fill: var(--ok-suave); }
.prog.verde .valor { fill: var(--verde-500); }

.pendencias { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr)); }
.pend { display: grid; gap: 4px; align-content: start; padding: 14px; border-radius: 12px; border: 1px solid var(--borda); background: var(--superficie); color: var(--texto); text-decoration: none; min-height: 96px; }
.pend:hover { border-color: var(--azul-300); color: var(--texto); background: color-mix(in srgb, var(--info-suave) 40%, var(--superficie)); }
.pend-tit { display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: .92rem; }
.pend-num { font-family: var(--fonte-titulo); font-weight: 800; font-size: 1.5rem; line-height: 1.1; }
.pend-sub { font-size: .78rem; color: var(--texto-2); line-height: 1.35; }
.ponto { width: 10px; height: 10px; border-radius: 50%; flex: none; background: var(--texto-2); }
.ponto.erro { background: var(--erro); } .ponto.azul { background: var(--azul-500); } .ponto.laranja { background: var(--laranja-500); } .ponto.verde { background: var(--verde-500); }
.pend.zerado { opacity: .7; }

.graficos-painel { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.listas-painel { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr)); }
.card-cab { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.card-cab h2 { margin: 0; font-size: 1.1rem; font-weight: 800; }
.num-grande { font-family: var(--fonte-titulo); font-weight: 800; font-size: 1.5rem; line-height: 1.1; }
.num-grande small { font-size: .6em; font-weight: 600; color: var(--texto-2); }
.pilulas { display: flex; flex-wrap: wrap; gap: 6px; }
.pilulas a { display: inline-flex; align-items: center; min-height: 34px; padding: 0 12px; border-radius: 8px; border: 1px solid var(--borda); background: var(--superficie); color: var(--texto-2); font-size: .85rem; font-weight: 600; text-decoration: none; }
.pilulas a[aria-current="true"] { border-color: var(--primaria); background: var(--info-suave); color: var(--primaria); }
.selo-ponto { display: inline-flex; align-items: center; gap: 6px; }
.selo-ponto::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.rosca { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 20px; }
.rosca svg { width: 170px; height: 170px; flex: none; }
.rosca .r-auto { stroke: var(--c-geracao); } .rosca .r-inj { stroke: var(--azul-500); }
.rosca .r-num { fill: var(--texto); font-family: var(--fonte-titulo); font-weight: 800; font-size: 20px; }
.rosca .r-rot { fill: var(--texto-2); font-size: 11px; }
.rosca-leg { display: grid; gap: 12px; min-width: 150px; }
.rosca-leg div { display: flex; gap: 10px; align-items: flex-start; }
.rosca-leg span.marca-cor { width: 12px; height: 12px; border-radius: 50%; margin-top: 5px; flex: none; }
.marca-cor.auto { background: var(--c-geracao); } .marca-cor.inj { background: var(--azul-500); }
.rosca-leg small { display: block; color: var(--texto-2); }
.curva .c-grade { stroke: var(--grade-graf); stroke-width: 1; }
.curva .c-area { fill: var(--acento-suave); }
.curva .c-linha { fill: none; stroke: var(--c-geracao); stroke-width: 2.5; stroke-linejoin: round; }
.curva .c-txt { fill: var(--texto-2); font-size: 10px; }
.curva .c-ponto { fill: var(--c-geracao); stroke: var(--superficie); stroke-width: 2; }
.selo-online { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; background: var(--ok-suave); color: var(--ok); font-size: .78rem; font-weight: 600; }
.selo-online.parado { background: var(--aviso-suave); color: var(--aviso); }
.selo-online::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.lista-alertas-p { list-style: none; margin: 0; padding: 0; display: grid; }
.lista-alertas-p li { display: flex; gap: 12px; align-items: flex-start; padding: 11px 0; border-bottom: 1px solid var(--borda); }
.lista-alertas-p li:last-child { border-bottom: 0; }
.al-ico { flex: 0 0 32px; height: 32px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; }
.al-ico.alta { background: var(--erro-suave); color: var(--erro); } .al-ico.media { background: var(--aviso-suave); color: var(--aviso); } .al-ico.baixa { background: var(--info-suave); color: var(--primaria); }
.al-txt { display: grid; gap: 2px; min-width: 0; flex: 1 1 auto; }
.al-txt a { font-weight: 600; text-decoration: none; color: var(--texto); }
.al-txt a:hover { color: var(--primaria); text-decoration: underline; }
.al-txt small { color: var(--texto-2); }
.desemp { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
.desemp svg { width: 64px; height: 6px; border-radius: 3px; }
.desemp .trilho { fill: var(--grade-graf); }
.desemp .bom { fill: var(--verde-500); } .desemp .medio { fill: var(--laranja-500); } .desemp .ruim { fill: var(--erro); }
.ver-todos { display: inline-flex; justify-content: flex-end; width: 100%; margin-top: 8px; font-weight: 600; text-decoration: none; }
.vazio-ok { display: flex; align-items: center; gap: 10px; color: var(--ok); font-weight: 600; padding: 8px 0; }

@media print {
  .lado, .barra-topo, .barra-baixo, .lado-fundo, .pular { display: none !important; }
  .app { display: block !important; }
  html.com-lado body { padding: 0 !important; }
}
.rosca-leg p { margin: 0; }
.listas-painel { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 719px) {
  .pendencias { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .pend { min-height: 0; padding: 12px; }
  .pend-num { font-size: 1.3rem; }
  .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .kpi { padding: 12px; gap: 0; }
  .kpi-ico, .kpi > .ico { display: none; }
  .kpi-num { font-size: 1.3rem; }
  .saudacao .acoes { width: 100%; }
}
@media (min-width: 720px) and (max-width: 1023px) {
  .barra-tema span, .usuario-txt { display: none; }
  .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) and (max-width: 1279px) { .barra-tema span { display: none; } }

/* 1.25: campo para filtrar listas longas */
.filtro-lista { min-height: 36px; flex: 1 1 220px; }
.filtro-cont { color: var(--texto-2); font-size: .8rem; flex: 1 1 100%; }
.filtro-cont:empty { display: none; }
form.form-linha .filtro-lista { flex: 1 1 220px; }

/* 1.27.1: escolha do inversor da planilha sem nº de série, recolhida */
.destino-planilha-caixa { margin: .5rem 0; }
.destino-planilha-caixa > summary { cursor: pointer; font-weight: 600; padding: .4rem 0; }
/* 1.28: clicar na barra do ciclo abre o dia a dia; escolher o ciclo numa lista */
.grafico .g-alvo { fill: transparent; }
.grafico a.g-link { cursor: pointer; }
.grafico a.g-link:hover .g-alvo, .grafico a.g-link:focus .g-alvo { fill: color-mix(in srgb, var(--primaria) 8%, transparent); }
.ciclo-nav .form-ciclo { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; flex: 1 1 340px; }
.ciclo-nav .form-ciclo select { flex: 1 1 260px; min-width: 0; }
.ciclo-nav .form-ciclo input[type=date] { flex: 0 1 11rem; }
/* 1.28: aviso de marca/modelo/potência pelo catálogo */
.equip-aviso { display: block; margin-top: .25rem; font-size: .82rem; color: var(--texto-2); line-height: 1.3; }
.equip-aviso-erro { color: var(--erro); }
.equip-confere { color: var(--erro); }

/* Rede Cosern (BDGD) */
.rede-leg { width: 12px; height: 12px; border-radius: 50%; display: inline-block; border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.3); }
.rede-ok { background: #0a8a3a; } .rede-media { background: #e0a100; } .rede-baixa { background: #c62828; }
.rede-leg.rede-mt { width: 18px; height: 3px; border: 0; border-radius: 2px; background: #1f5fd1; box-shadow: none; }
.rede-aviso { background: rgba(255,255,255,.92); color: #222; padding: .3rem .6rem; border-radius: 6px; font-size: .85rem; box-shadow: 0 1px 4px rgba(0,0,0,.25); }
.rede-dica { margin: 0; padding: 0 1rem .8rem; font-size: .85rem; }
.lista-rede { margin: .4rem 0; padding-left: 1.1rem; }
.lista-rede li { margin: .2rem 0; }
.popup .lista-rede { font-size: .85rem; max-width: 300px; }

/* Tarifas ANEEL */
.selo-ok { background: var(--ok-suave); color: var(--ok); }
.selo-erro { background: var(--erro-suave); color: var(--erro); }

/* Quedas de energia */
.selo-queda { background: var(--aviso-suave); color: var(--aviso); }
.alerta-queda { border-left: 4px solid var(--aviso); }

/* Mercado */
.paginacao { display: flex; gap: .8rem; align-items: center; justify-content: center; padding: .8rem 0 0; }

/* Consulta de CNPJ */
.cnpj-info { margin-top: .35rem; display: grid; gap: .25rem; }
.cnpj-info .btn { margin: .15rem .3rem .15rem 0; }
.inmetro-conf { margin-top: .6rem; display: grid; gap: .3rem; justify-items: start; }
.inmetro-res p { margin: .15rem 0; }

/* ---------- Propostas (1.38) ---------- */
.saida-grande { display: block; font-size: 1.5rem; font-weight: 700; color: var(--primaria); min-height: 44px; line-height: 44px; font-variant-numeric: tabular-nums; }
.acoes-proposta { margin: .25rem 0 1rem; }
.proposta-resumo { display: grid; gap: 16px; align-items: start; }
@media (min-width: 1100px) { .proposta-resumo { grid-template-columns: minmax(0, 460px) minmax(0, 1fr); } }
.proposta-img { margin: 0; overflow: hidden; }
.proposta-img img { display: block; width: 100%; height: auto; }
.proposta-dados { display: grid; gap: 16px; min-width: 0; }
.funil { display: grid; gap: 12px; grid-auto-flow: column; grid-auto-columns: minmax(230px, 1fr); overflow-x: auto; padding-bottom: 8px; }
.funil-col { background: var(--superficie-2, var(--fundo)); border: 1px solid var(--borda); border-radius: var(--raio); padding: 10px; display: grid; gap: 8px; align-content: start; min-height: 120px; }
.funil-col h2 { font-size: .95rem; margin: 0; display: flex; justify-content: space-between; gap: .5rem; }
.funil-card { background: var(--superficie); border: 1px solid var(--borda); border-radius: var(--raio-ctrl); padding: 8px 10px; display: grid; gap: 2px; text-decoration: none; color: inherit; }
.funil-card:hover { border-color: var(--azul-300); }
.funil-card strong { font-size: .92rem; }
.funil-card small { color: var(--texto-2); }
.funil-card .atrasado { color: var(--erro); font-weight: 600; }
.linha-tempo { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.linha-tempo li { border-left: 3px solid var(--borda); padding: 2px 0 2px 10px; }
.linha-tempo li small { color: var(--texto-2); display: block; }
/* Preços e kits (1.38) */
.input-preco { width: 8.5rem; text-align: right; font-variant-numeric: tabular-nums; }
.card-titulo-pad { padding: 14px 16px 0; margin: 0 0 8px; font-size: 1rem; }
.faixas-lista { display: grid; gap: 12px; }
.faixa.inativa { opacity: .7; }
.faixa legend { font-weight: 700; }
.grade-faixa { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); align-items: end; }
.grade-faixa label { display: flex; flex-direction: column; gap: 3px; font-size: .9rem; }
.grade-faixa label.campo-check { flex-direction: row; align-items: center; gap: 6px; }
.grade-faixa input, .grade-faixa select { width: 100%; min-width: 0; }
.grade-faixa .campo-check input { width: auto; }
.kit-resumo { margin-top: 10px; padding: 12px 14px; border: 1px solid var(--borda); border-radius: 10px; background: var(--fundo); font-size: .92rem; }
.kit-resumo ul { margin: 6px 0 0; padding-left: 1.1rem; }
.kit-resumo[hidden] { display: none; }

/* celular: botão com texto longo quebra a linha em vez de passar da tela */
@media (max-width: 480px) { .btn { white-space: normal; text-align: center; max-width: 100%; } }
.rede-part { background: #8a8f98; }
.rede-leg.rede-gdmt { border-radius: 3px; background: #f08c00; }
.rede-gdmt-ico { background: #f08c00; border: 2px solid #fff; border-radius: 3px; box-shadow: 0 0 0 1px rgba(0,0,0,.35); }
/* proposta: conferência do inversor e preço da tabela (1.38.4) */
.ajuda.inv-erro { color: var(--erro); font-weight: 600; }
.ajuda.inv-aviso { color: var(--aviso); font-weight: 600; }
.ajuda.inv-ok { color: var(--ok); }
/* o resumo do kit fica dentro da grade de campos, mas é texto corrido: sem a subgrade de 3 linhas dos campos (1.38.4) */
.grade-campos > .campo.kit-resumo { display: block; grid-row: auto; grid-column: 1 / -1; }
.grade-campos > .campo.kit-resumo[hidden] { display: none; }
.alerta-info { background: var(--info-suave); color: var(--texto); border-color: var(--primaria); }
/* proposta: rateio com outras unidades (1.39) */
.selo-aviso { background: var(--acento-suave); color: var(--aviso); }
.unidades { display: grid; gap: .75rem; margin-top: .75rem; }
.unidade { border: 1px solid var(--borda); border-radius: 10px; padding: .75rem .9rem; background: var(--fundo); }
.unidade[data-tipo="g"] { border-left: 4px solid var(--acento); }
.unidade-topo { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-bottom: .5rem; }
.unidade-acoes { margin-left: auto; display: flex; gap: .3rem; }
.unidade-novo { margin-top: .5rem; }
.unidade-novo > summary { cursor: pointer; color: var(--primaria); font-size: .9rem; }
[data-rateio-prop][data-sem-benef] .rateio-config, [data-rateio-prop][data-sem-benef] .unidades { display: none; }
[data-rateio-prop][data-modo="prioridade"] [data-un-pct-campo], [data-rateio-prop][data-modo="prioridade"] [data-un-total-campo] { display: none; }
.tabela-rateio-prop .num { white-space: nowrap; }
.bloco-rateio { margin-top: 1rem; }
/* inversão de fluxo (1.40) */
.invfluxo { margin-top: .75rem; padding: .6rem .9rem; border-radius: 10px; border-left: 4px solid var(--borda); background: var(--fundo); }
.invfluxo h3 { margin: 0 0 .3rem; font-size: 1rem; }
.invfluxo p { margin: .2rem 0; }
.invfluxo-ok { border-left-color: var(--ok); }
.invfluxo-analise { border-left-color: var(--aviso); }
.invfluxo-pend { border-left-color: var(--primaria); }
.invfluxo > summary { cursor: pointer; }
/* rede: subestações (1.41) */
.rede-sub-ico { background: #7b1fa2; border: 2px solid #fff; border-radius: 3px; box-shadow: 0 0 0 1px #7b1fa2; }

/* Área do cliente (lado da equipe) */
.portal-ficha { border-top: 1px solid var(--borda); margin-top: 1rem; padding-top: .8rem; }
.portal-ficha h3 { margin: 0 0 .4rem; font-size: 1rem; }
.portal-ficha p { margin: .3rem 0; }
.portal-ficha .acoes { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .5rem; }
.portal-link { margin-top: .6rem; }
.portal-link label { display: block; font-weight: 600; font-size: .85rem; margin-bottom: .3rem; }
.portal-link textarea { width: 100%; font-size: .85rem; }
.portal-pedido { border-top: 1px solid var(--borda); padding: .8rem 0; }
.portal-pedido:first-of-type { border-top: 0; }
.portal-pedido p { margin: .2rem 0 .5rem; }
.portal-msg { background: var(--info-suave); border-radius: 8px; padding: .5rem .7rem; }
tr.linha-destaque td { background: var(--aviso-suave); }
