:root {
  /* Paleta Olhar Contábil */
  --fundo: #f4f6f6;
  --cartao: #ffffff;
  --texto: #1c2426;
  --muted: #747474;
  --borda: #dcdede;
  --primaria: #042c34;
  --primaria-escura: #021a1f;
  --primaria-clara: #e7edee;
  --lateral: #042c34;
  --lateral-texto: #b0bfc0;
  --verde: #127a4a; --verde-f: #e5f5ec;
  --amarelo: #8a5a00; --amarelo-f: #fff4d6;
  --vermelho: #b42318; --vermelho-f: #fdeceb;
  --azul: #1f5fbf; --azul-f: #eaf1fc;
  --cinza: #475467; --cinza-f: #eef1f5;
  --raio: 10px;
  --sombra: 0 1px 2px rgba(4, 44, 52, .08), 0 1px 3px rgba(4, 44, 52, .05);
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body { font: 15px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; color: var(--texto); background: var(--fundo); }
a { color: var(--primaria); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 1.45rem; margin: 0; font-weight: 650; letter-spacing: -.01em; display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
h2 { font-size: 1.02rem; margin: 0 0 .9rem; font-weight: 650; }
code { background: var(--cinza-f); padding: .05rem .3rem; border-radius: 4px; font-size: .85em; }
hr { border: 0; border-top: 1px solid rgba(255,255,255,.08); margin: .6rem 0; }

/* Estrutura */
.app { display: flex; min-height: 100vh; }
.lateral { width: 248px; flex: none; background: var(--lateral); color: var(--lateral-texto); display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; }
.marca { display: flex; align-items: center; gap: .7rem; padding: 1.1rem 1.2rem; }
.marca strong { display: block; color: #fff; font-size: .98rem; }
.marca small { color: #8fa3bd; font-size: .78rem; }
.marca.grande { padding: 0 0 1.2rem; }
.marca.grande strong { color: var(--texto); font-size: 1.1rem; }
.marca.grande small { color: var(--muted); }
.logo { width: 36px; height: 36px; border-radius: 9px; background: #ffffff url('logo.png') center/68% no-repeat; box-shadow: 0 0 0 1px rgba(4,44,52,.14); color: transparent; font-weight: 800; display: grid; place-items: center; font-size: 1.1rem; flex: none; }
.lateral nav { flex: 1; padding: .3rem .6rem; overflow-y: auto; }
.lateral nav a { display: flex; align-items: center; gap: .7rem; padding: .55rem .7rem; border-radius: 8px; color: var(--lateral-texto); font-size: .92rem; }
.lateral nav a:hover { background: rgba(255,255,255,.06); text-decoration: none; color: #fff; }
.lateral nav a.ativo { background: rgba(47, 122, 229, .22); color: #fff; }
.lateral svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.usuario-box { padding: .9rem 1.2rem; border-top: 1px solid rgba(255,255,255,.08); display: flex; justify-content: space-between; font-size: .85rem; }
.usuario-box a { color: #9fb6d6; }
.principal { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.barra { background: var(--cartao); border-bottom: 1px solid var(--borda); padding: .6rem 1.5rem; display: flex; align-items: center; gap: 1rem; position: sticky; top: 0; z-index: 5; }
.menu-btn { display: none; background: none; border: 1px solid var(--borda); border-radius: 8px; font-size: 1.1rem; padding: .25rem .6rem; cursor: pointer; }
.troca-empresa { display: flex; align-items: center; gap: .6rem; flex: 1; min-width: 0; }
.troca-empresa label { font-size: .8rem; color: var(--muted); }
.troca-empresa select { max-width: 460px; min-width: 0; flex: 0 1 auto; }
.conteudo { padding: 1.5rem; max-width: 1200px; width: 100%; }
.cabecalho { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1.1rem; flex-wrap: wrap; }
.titulo-secao { margin: 1.6rem 0 .7rem; }

/* Cartões */
.cartao { background: var(--cartao); border: 1px solid var(--borda); border-radius: var(--raio); padding: 1.25rem; box-shadow: var(--sombra); margin-bottom: 1rem; }
.cartao.sem-padding { padding: 0; overflow-x: auto; }
.duas-colunas { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; align-items: start; }
.duas-colunas.larga-esquerda { grid-template-columns: 3fr 2fr; }
.muted { color: var(--muted); }
.pequeno { font-size: .84rem; }
.nowrap { white-space: nowrap; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .82rem; word-break: break-all; }
.pre { white-space: pre-wrap; }

/* Formulários */
.form label, .filtros-lote label { display: block; font-size: .85rem; font-weight: 550; color: #344054; margin-bottom: .85rem; }
.form label small, .form p small { display: block; font-weight: 400; color: var(--muted); margin-top: .25rem; font-size: .8rem; }
input, select, textarea { width: 100%; font: inherit; color: inherit; border: 1px solid #cfd6e0; border-radius: 8px; padding: .55rem .7rem; background: #fff; margin-top: .3rem; font-weight: 400; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--primaria); box-shadow: 0 0 0 3px rgba(4, 44, 52, .16); }
textarea { resize: vertical; }
input[type=checkbox], input[type=radio] { width: auto; margin: 0; accent-color: var(--primaria); }
label.check { display: flex; align-items: center; gap: .5rem; font-weight: 500; }
label.check small { display: inline; margin: 0; }
.grade { display: grid; grid-template-columns: repeat(12, 1fr); gap: 0 1rem; }
.c1 { grid-column: span 1; } .c2 { grid-column: span 2; } .c3 { grid-column: span 3; } .c4 { grid-column: span 4; } .c5 { grid-column: span 5; } .c6 { grid-column: span 6; }
.c7 { grid-column: span 7; } .c8 { grid-column: span 8; } .c12 { grid-column: span 12; }
.com-botao { display: flex; gap: .4rem; align-items: stretch; }
.com-botao input { flex: 1; min-width: 0; }
.com-botao .btn { margin-top: .3rem; }
.acoes-form { display: flex; gap: .6rem; align-items: center; margin-top: .4rem; flex-wrap: wrap; }
details.avancado { border-top: 1px dashed var(--borda); margin-top: .4rem; padding-top: .8rem; }
details summary { cursor: pointer; color: var(--primaria); font-weight: 550; font-size: .9rem; margin-bottom: .8rem; }
details.cancelar summary { color: var(--vermelho); margin: 0; }
details.cancelar[open] summary { margin-bottom: 1rem; }
.opcoes-radio { display: flex; gap: .8rem; margin-bottom: 1rem; flex-wrap: wrap; }
.radio-cartao { flex: 1; min-width: 220px; display: flex !important; gap: .7rem; align-items: flex-start; border: 1px solid var(--borda); border-radius: 10px; padding: .8rem 1rem; cursor: pointer; margin: 0 !important; }
.radio-cartao input { margin-top: .25rem; }
.radio-cartao strong { display: block; }
.radio-cartao small { font-weight: 400; color: var(--muted); }
.radio-cartao:has(input:checked) { border-color: var(--primaria); background: var(--primaria-clara); }
.info-cert { background: var(--verde-f); color: var(--verde); padding: .6rem .8rem; border-radius: 8px; font-size: .9rem; }

/* Botões */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; font: inherit; font-weight: 550; font-size: .9rem; border: 1px solid #cfd6e0; background: #fff; color: var(--texto); border-radius: 8px; padding: .5rem .95rem; cursor: pointer; white-space: nowrap; text-decoration: none !important; }
.btn:hover { background: #f7f9fc; }
.btn.primario { background: var(--primaria); border-color: var(--primaria); color: #fff; }
.btn.primario:hover { background: var(--primaria-escura); }
.btn.perigo { color: var(--vermelho); border-color: #f1c5c1; }
.btn.perigo:hover { background: var(--vermelho-f); }
.btn.texto { border-color: transparent; background: none; color: var(--primaria); }
.btn.texto.perigo { color: var(--vermelho); }
.btn.pequeno { padding: .28rem .6rem; font-size: .82rem; }
.btn.grande { padding: .7rem 1.4rem; font-size: 1rem; }
.btn.largo { width: 100%; padding: .7rem; }
.btn:disabled { opacity: .55; cursor: not-allowed; }
form.inline { display: inline; }
.barra-acoes { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: 1rem; align-items: center; }

/* Tabelas */
.tabela { width: 100%; border-collapse: collapse; font-size: .9rem; }
.tabela th { text-align: left; font-weight: 600; font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); background: #fafbfc; padding: .65rem .9rem; border-bottom: 1px solid var(--borda); }
.tabela td { padding: .65rem .9rem; border-bottom: 1px solid var(--borda); vertical-align: middle; }
.tabela tbody tr:last-child td { border-bottom: 0; }
.tabela tbody tr:hover { background: #fafcff; }
.tabela tfoot td { border-top: 1px solid var(--borda); background: #fafbfc; }
.tabela .dir { text-align: right; }
.tabela tr.inativo { opacity: .5; }
.tabela tr.selecionada { background: var(--primaria-clara); }
.vazio { text-align: center; color: var(--muted); padding: 2rem !important; }

/* Selos */
.badge { display: inline-block; font-size: .74rem; font-weight: 600; padding: .12rem .5rem; border-radius: 999px; white-space: nowrap; vertical-align: middle; }
.badge.verde { background: var(--verde-f); color: var(--verde); }
.badge.amarelo { background: var(--amarelo-f); color: var(--amarelo); }
.badge.vermelho { background: var(--vermelho-f); color: var(--vermelho); }
.badge.azul { background: var(--azul-f); color: var(--azul); }
.badge.cinza { background: var(--cinza-f); color: var(--cinza); }

/* Alertas */
.alerta { padding: .75rem 1rem; border-radius: 8px; margin-bottom: 1rem; border: 1px solid; font-size: .92rem; }
.alerta .btn { margin-left: .5rem; }
.alerta.ok { background: var(--verde-f); color: var(--verde); border-color: #bfe6cf; }
.alerta.aviso { background: var(--amarelo-f); color: var(--amarelo); border-color: #f3dc9b; }
.alerta.erro { background: var(--vermelho-f); color: var(--vermelho); border-color: #f5c4bf; }
.alerta.info { background: var(--azul-f); color: #1a4f9e; border-color: #c7daf6; }
.alerta a { color: inherit; font-weight: 600; text-decoration: underline; }

/* Filtros */
.filtros { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: 1rem; align-items: center; }
.filtros input, .filtros select { width: auto; margin: 0; }
.filtros input[name=q] { min-width: 220px; flex: 1; max-width: 340px; }
.filtros-lote { display: flex; gap: 1.5rem; align-items: flex-end; flex-wrap: wrap; }
.filtros-lote label { margin: 0; }
.filtros-lote input[type=date] { width: auto; }
.filtros-lote fieldset { border: 0; padding: 0; margin: 0; display: flex; gap: .4rem 1.1rem; flex-wrap: wrap; flex: 1; }
.filtros-lote legend { font-size: .85rem; font-weight: 550; color: #344054; margin-bottom: .4rem; padding: 0; }
.filtros-lote .check { margin: 0; }
.resumo { color: var(--muted); font-size: .9rem; margin: 0 0 .6rem; }
.rodape-lote { position: sticky; bottom: 0; background: var(--cartao); border: 1px solid var(--borda); border-radius: var(--raio); padding: .8rem 1.1rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem; box-shadow: 0 -4px 14px rgba(16,32,51,.06); flex-wrap: wrap; }

/* Dados */
dl.dados { display: grid; grid-template-columns: 150px 1fr; gap: .45rem 1rem; margin: 0 0 1.2rem; font-size: .92rem; }
dl.dados dt { color: var(--muted); }
dl.dados dd { margin: 0; min-width: 0; }

/* Painel */
.indicadores { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-bottom: .5rem; }
.indicador { display: flex; flex-direction: column; gap: .15rem; margin: 0; color: inherit; }
a.indicador:hover { text-decoration: none; border-color: #c7d3e3; }
.indicador span { font-size: .82rem; color: var(--muted); }
.indicador strong { font-size: 1.45rem; font-weight: 650; letter-spacing: -.01em; }
.indicador small { color: var(--muted); font-size: .8rem; }
.indicador.destaque { border-color: #b8cff2; background: #f5f9ff; }
.indicador.alerta-ind strong { color: var(--vermelho); }
.boas-vindas { max-width: 640px; }
.boas-vindas h1 { margin-bottom: .5rem; }
.passos { padding-left: 1.2rem; margin: 1rem 0 1.4rem; }
.passos li { margin-bottom: .45rem; }

/* Lote */
.barra-progresso { height: 10px; background: var(--cinza-f); border-radius: 999px; overflow: hidden; margin-bottom: .8rem; }
.barra-progresso span { display: block; height: 100%; background: linear-gradient(90deg, #0a4a56, var(--primaria)); transition: width .3s; }
.progresso-lote p { margin: 0 0 .8rem; }

/* Login / instalação */
.tela-login { min-height: 100vh; display: grid; place-items: center; padding: 1.5rem; }
.cartao.login { width: 100%; max-width: 400px; padding: 2rem; }
.cartao.login.largo-600 { max-width: 600px; }
.cartao.login label { display: block; font-size: .85rem; font-weight: 550; margin-bottom: .9rem; }
.requisitos { list-style: none; padding: 0; margin: 0 0 1.2rem; font-size: .9rem; columns: 2; }
.requisitos li.ok { color: var(--verde); }
.requisitos li.falha { color: var(--vermelho); font-weight: 600; }

/* Celular */
@media (max-width: 900px) {
  .lateral { position: fixed; left: -260px; z-index: 20; transition: left .2s; box-shadow: 4px 0 24px rgba(0,0,0,.25); }
  .lateral.aberto { left: 0; }
  .menu-btn { display: block; }
  .barra { padding: .6rem 1rem; }
  .troca-empresa label { display: none; }
  .troca-empresa select { max-width: none; flex: 1; }
  .conteudo { padding: 1rem; }
  .duas-colunas, .duas-colunas.larga-esquerda { grid-template-columns: 1fr; }
  .indicadores { grid-template-columns: 1fr 1fr; }
  .grade > * { grid-column: span 12 !important; }
  dl.dados { grid-template-columns: 1fr; gap: .1rem; }
  dl.dados dd { margin-bottom: .5rem; }
  .requisitos { columns: 1; }
  .tabela { font-size: .85rem; }
}
@media (max-width: 520px) {
  .indicadores { grid-template-columns: 1fr; }
  .filtros input, .filtros select { flex: 1 1 100%; max-width: none; }
}

/* Acesso */
.lista-empresas { border: 1px solid var(--borda); border-radius: 8px; padding: .6rem .9rem .2rem; margin: 0 0 .9rem; }
.lista-empresas legend { font-size: .85rem; font-weight: 550; padding: 0 .3rem; }
.lista-empresas .check { margin-bottom: .5rem; }
.qr { width: 196px; min-height: 180px; padding: 8px; background: #fff; border: 1px solid var(--borda); border-radius: 8px; margin: .4rem 0 .6rem; }
.qr:empty { display: none; }
.campo-codigo { font-size: 1.4rem; letter-spacing: .35em; text-align: center; font-family: ui-monospace, Menlo, Consolas, monospace; }
