/* =========================================================
   Painel de Licitações — identidade visual WebPro Saúde
   Azul institucional + verde saúde sobre fundo claro.
   Ajuste as variáveis abaixo se a marca mudar de tom.
   ========================================================= */
:root {
  --azul-escuro:  #0B3C5D;
  --azul:         #1076BC;
  --azul-claro:   #E8F3FB;
  --verde:        #7AC143;
  --verde-escuro: #5FA032;
  --verde-claro:  #EEF8E4;

  --tinta:        #16324A;
  --tinta-media:  #56718A;
  --tinta-suave:  #8FA3B5;

  --fundo:        #F4F8FB;
  --superficie:   #FFFFFF;
  --borda:        #DEE8F0;
  --borda-forte:  #C3D5E3;

  --alerta:       #E05A47;
  --alerta-claro: #FDEDEA;
  --ambar:        #E9A23B;

  --raio:   10px;
  --raio-g: 14px;
  --sombra:    0 1px 2px rgba(16,50,74,.06), 0 4px 16px rgba(16,50,74,.06);
  --sombra-alta: 0 12px 40px rgba(11,60,93,.18);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--fundo);
  color: var(--tinta);
  font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
}
a { color: var(--azul); text-decoration: none; }
a:hover { text-decoration: underline; }
button { font-family: inherit; }
:focus-visible { outline: 3px solid rgba(16,118,188,.4); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } }

.container { max-width: 1280px; margin: 0 auto; padding: 0 24px; }

/* ===== Ícones (sprite em partials/topbar.ejs) ===== */
.icone {
  width: 17px; height: 17px; flex-shrink: 0; vertical-align: -3px;
  fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
}
.icone-sm { width: 14px; height: 14px; }
.icone-lg { width: 22px; height: 22px; }

/* ===== Topo / navegação ===== */
.topbar {
  background: var(--superficie);
  border-bottom: 1px solid var(--borda);
  position: sticky; top: 0; z-index: 40;
}
.topbar-inner {
  position: relative;
  max-width: 1280px; margin: 0 auto; padding: 12px 24px;
  display: flex; align-items: center; gap: 20px;
}
.marca { display: flex; align-items: center; gap: 12px; text-decoration: none; margin-right: auto; }
.marca:hover { text-decoration: none; }
.marca-simbolo {
  width: 40px; height: 40px; border-radius: 11px;
  background: linear-gradient(135deg, var(--azul) 0%, var(--azul-escuro) 100%);
  display: grid; place-items: center; color: #fff; font-weight: 800; font-size: 1rem;
  letter-spacing: -.02em;
  box-shadow: 0 4px 12px rgba(16,118,188,.28);
}
.marca-simbolo em { font-style: normal; color: var(--verde); }
.marca-texto strong {
  display: block; font-size: 1.02rem; font-weight: 700; letter-spacing: -.01em; color: var(--azul-escuro);
}
.marca-texto span { display: block; font-size: .76rem; color: var(--tinta-suave); }

.nav-principal { display: flex; align-items: center; gap: 3px; }
.nav-link {
  display: flex; align-items: center; gap: 7px; padding: 9px 13px; border-radius: 8px;
  font-size: .87rem; font-weight: 600; color: var(--tinta-media);
  transition: background .15s ease, color .15s ease;
}
.nav-link:hover { background: var(--azul-claro); color: var(--azul); text-decoration: none; }
.nav-link.ativo { background: var(--azul-claro); color: var(--azul); }

.usuario-box { display: flex; align-items: center; gap: 14px; flex-shrink: 0; }
.usuario-nome { font-size: .88rem; color: var(--tinta-media); text-align: right; line-height: 1.35; }
.usuario-nome b { color: var(--tinta); display: block; font-size: .93rem; }
.btn-sair {
  display: inline-flex; align-items: center; gap: 7px;
  border: 1px solid var(--borda-forte); background: var(--superficie); color: var(--tinta-media);
  padding: 8px 14px; border-radius: 8px; font-size: .84rem; font-weight: 600; cursor: pointer;
}
.btn-sair:hover { border-color: var(--alerta); color: var(--alerta); text-decoration: none; }

.nav-toggle {
  display: none; width: 38px; height: 38px; border-radius: 8px; flex-shrink: 0;
  border: 1px solid var(--borda-forte); background: var(--superficie); color: var(--tinta-media);
  cursor: pointer; align-items: center; justify-content: center;
}
.nav-toggle:hover { border-color: var(--azul); color: var(--azul); }

@media (max-width: 860px) {
  .marca-texto span { display: none; }
  .nav-toggle { display: flex; }
  .rotulo-sair { display: none; }
  .btn-sair { padding: 8px 10px; }
  .nav-principal {
    display: none; position: absolute; top: calc(100% + 1px); left: 0; right: 0;
    flex-direction: column; align-items: stretch; gap: 2px;
    background: var(--superficie); border: 1px solid var(--borda); border-top: none;
    border-radius: 0 0 var(--raio-g) var(--raio-g); padding: 8px; box-shadow: var(--sombra-alta);
  }
  .nav-principal.aberto { display: flex; }
  .nav-link { padding: 11px 13px; }
}
@media (max-width: 480px) {
  .usuario-nome { display: none; }
}

/* ===== Abas ===== */
.abas { display: flex; gap: 4px; border-bottom: 1px solid var(--borda); margin-top: 22px; flex-wrap: wrap; }
.aba {
  background: none; border: none; padding: 12px 18px; cursor: pointer;
  font-size: .92rem; font-weight: 600; color: var(--tinta-media);
  border-bottom: 3px solid transparent; display: flex; align-items: center; gap: 8px;
  transition: color .15s ease, border-color .15s ease;
}
.aba:hover { color: var(--azul); }
.aba.ativa { color: var(--azul); border-bottom-color: var(--verde); }
.aba-contador {
  background: var(--azul-claro); color: var(--azul); font-size: .74rem; font-weight: 700;
  padding: 2px 8px; border-radius: 20px;
}
.aba.ativa .aba-contador { background: var(--verde-claro); color: var(--verde-escuro); }

/* ===== Filtros ===== */
.filtros {
  background: var(--superficie); border: 1px solid var(--borda); border-radius: var(--raio-g);
  padding: 20px; margin-top: 22px; box-shadow: var(--sombra);
  display: grid; grid-template-columns: 1.2fr .8fr .9fr 1fr 1fr .9fr auto; gap: 14px;
}
@media (max-width: 1400px) { .filtros { grid-template-columns: 1fr 1fr 1fr 1fr; } }
@media (max-width: 900px)  { .filtros { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px)  { .filtros { grid-template-columns: 1fr; } }

.campo label {
  display: block; font-size: .74rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: .05em; color: var(--tinta-suave); margin-bottom: 6px;
}
.campo input, .campo select {
  width: 100%; height: 42px; background: var(--superficie); color: var(--tinta);
  border: 1px solid var(--borda-forte); border-radius: 8px; padding: 0 12px;
  font-size: .92rem; appearance: none; transition: border-color .15s ease, box-shadow .15s ease;
}
.campo select {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='%238FA3B5'/></svg>");
  background-repeat: no-repeat; background-position: right 13px center; padding-right: 32px;
}
.campo input:focus, .campo select:focus {
  outline: none; border-color: var(--azul); box-shadow: 0 0 0 3px rgba(16,118,188,.15);
}
.campo select:disabled { background-color: #F1F5F8; color: var(--tinta-suave); cursor: not-allowed; }

.acoes-filtro { display: flex; gap: 8px; align-items: flex-end; }
.btn-primario {
  background: var(--azul); color: #fff; border: none; height: 42px; padding: 0 20px;
  border-radius: 8px; font-weight: 700; font-size: .88rem; cursor: pointer; white-space: nowrap;
  box-shadow: 0 3px 10px rgba(16,118,188,.25); transition: background .15s ease, transform .1s ease;
}
.btn-primario:hover { background: var(--azul-escuro); }
.btn-primario:active { transform: translateY(1px); }
.btn-primario:disabled { background: var(--tinta-suave); box-shadow: none; cursor: progress; }

.btn-secundario {
  background: var(--superficie); color: var(--tinta-media); border: 1px solid var(--borda-forte);
  height: 42px; padding: 0 14px; border-radius: 8px; font-weight: 600; font-size: .88rem; cursor: pointer;
}
.btn-secundario:hover { border-color: var(--azul); color: var(--azul); }

/* ===== Barra de status dos resultados ===== */
.resultados-meta {
  display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px;
  padding: 18px 2px 14px; font-size: .86rem; color: var(--tinta-media);
}
.resultados-meta b { color: var(--tinta); }
.selo-periodo {
  background: var(--verde-claro); color: var(--verde-escuro); border: 1px solid #D3EAB9;
  padding: 4px 10px; border-radius: 20px; font-size: .78rem; font-weight: 600;
}

/* ===== Cartão de licitação ===== */
.cartao {
  position: relative; background: var(--superficie); border: 1px solid var(--borda);
  border-left: 4px solid var(--azul); border-radius: var(--raio); padding: 20px 150px 18px 22px;
  margin-bottom: 14px; box-shadow: var(--sombra);
  transition: box-shadow .15s ease, border-color .15s ease;
  animation: surge .25s ease both;
}
.cartao.favoritado { border-left-color: var(--verde); }
.cartao:hover { box-shadow: var(--sombra-alta); }
@keyframes surge { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
@media (max-width: 700px) { .cartao { padding: 60px 18px 18px; } }

.cartao-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.tag {
  font-size: .72rem; font-weight: 600; color: var(--tinta-media);
  background: #F1F6FA; border: 1px solid var(--borda); border-radius: 6px; padding: 3px 8px;
}
.tag.destaque { background: var(--azul-claro); color: var(--azul); border-color: #CBE4F6; }

.cartao h3 { margin: 0 0 3px; font-size: 1.06rem; font-weight: 700; color: var(--azul-escuro); letter-spacing: -.01em; }
.cartao .local { color: var(--tinta-media); font-size: .86rem; margin: 0 0 12px; }
.cartao .objeto {
  margin: 0 0 14px; font-size: .93rem; line-height: 1.6; color: var(--tinta);
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
  cursor: pointer; white-space: pre-wrap;
}
.cartao .objeto.aberto { -webkit-line-clamp: unset; }

.cartao-rodape {
  display: flex; flex-wrap: wrap; gap: 14px; align-items: center; justify-content: space-between;
  border-top: 1px solid var(--borda); padding-top: 12px; font-size: .84rem; color: var(--tinta-media);
}
.rodape-dados { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; }
.valor { color: var(--verde-escuro); font-weight: 700; }
.rodape-acoes { display: flex; gap: 8px; flex-wrap: wrap; }

.btn-link {
  border: 1px solid var(--borda-forte); background: var(--superficie); color: var(--tinta-media);
  padding: 7px 13px; border-radius: 7px; font-size: .82rem; font-weight: 600; cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px; transition: all .15s ease;
}
.btn-link:hover { border-color: var(--azul); color: var(--azul); text-decoration: none; }
.btn-link.principal { background: var(--azul-claro); border-color: #CBE4F6; color: var(--azul); }
.btn-link.principal:hover { background: var(--azul); color: #fff; border-color: var(--azul); }
.btn-link.perigo:hover { border-color: var(--alerta); color: var(--alerta); background: var(--alerta-claro); }

/* Prazo e estrela */
.prazo {
  position: absolute; top: 18px; right: 18px; text-align: right;
  background: var(--azul-claro); border: 1px solid #CBE4F6; color: var(--azul);
  border-radius: 8px; padding: 6px 10px; font-size: .74rem; font-weight: 700; line-height: 1.25;
}
.prazo small { display: block; font-weight: 500; opacity: .85; }
.prazo.urgente { background: var(--alerta-claro); border-color: #F6CFC8; color: var(--alerta); }
.prazo.encerrado { background: #F1F5F8; border-color: var(--borda); color: var(--tinta-suave); }

.btn-estrela {
  position: absolute; top: 70px; right: 18px;
  width: 36px; height: 36px; border-radius: 50%; cursor: pointer;
  border: 1px solid var(--borda-forte); background: var(--superficie); color: var(--tinta-suave);
  font-size: 1.05rem; display: grid; place-items: center; transition: all .15s ease;
}
.btn-estrela:hover { border-color: var(--verde); color: var(--verde-escuro); }
.btn-estrela.ativa { background: var(--verde-claro); border-color: var(--verde); color: var(--verde-escuro); }
.btn-estrela:disabled { opacity: .5; cursor: wait; }
@media (max-width: 700px) {
  .prazo { top: 16px; right: auto; left: 18px; }
  .btn-estrela { top: 14px; right: 16px; }
}

.progresso { margin-bottom: 12px; }
.progresso-trilho { height: 7px; background: #EDF2F6; border-radius: 4px; overflow: hidden; }
.progresso-preenchido { height: 100%; background: linear-gradient(90deg, var(--azul), var(--verde)); transition: width .25s ease; }
.progresso-texto { font-size: .78rem; color: var(--tinta-media); margin-top: 5px; }
.progresso-texto.completo { color: var(--verde-escuro); font-weight: 600; }

/* ===== Estados vazios / carregamento ===== */
.estado {
  text-align: center; padding: 54px 24px; background: var(--superficie);
  border: 1px dashed var(--borda-forte); border-radius: var(--raio-g); color: var(--tinta-media);
  line-height: 1.6;
}
.estado b { display: block; color: var(--azul-escuro); font-size: 1.1rem; margin-bottom: 6px; }
.barra-carga { max-width: 380px; margin: 18px auto 0; height: 8px; background: #EDF2F6; border-radius: 4px; overflow: hidden; }
.barra-carga i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--azul), var(--verde)); transition: width .2s ease; }
.texto-carga { font-size: .82rem; color: var(--azul); margin-top: 10px; }

/* ===== Paginação ===== */
.paginacao { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 28px; }
.paginacao button {
  background: var(--superficie); border: 1px solid var(--borda-forte); color: var(--tinta);
  padding: 9px 16px; border-radius: 8px; font-size: .85rem; font-weight: 600; cursor: pointer;
}
.paginacao button:hover:not(:disabled) { border-color: var(--azul); color: var(--azul); }
.paginacao button:disabled { opacity: .4; cursor: not-allowed; }
.paginacao span { font-size: .86rem; color: var(--tinta-media); }

/* ===== Calendário ===== */
.calendario {
  background: var(--superficie); border: 1px solid var(--borda); border-radius: var(--raio-g);
  padding: 22px; box-shadow: var(--sombra);
}
.calendario-topo { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; gap: 12px; flex-wrap: wrap; }
.calendario-topo h2 { margin: 0; font-size: 1.16rem; color: var(--azul-escuro); text-transform: capitalize; }
.calendario-nav { display: flex; gap: 8px; }
.calendario-nav button {
  width: 38px; height: 38px; border-radius: 8px; border: 1px solid var(--borda-forte);
  background: var(--superficie); color: var(--tinta-media); cursor: pointer; font-size: .9rem;
}
.calendario-nav button:hover { border-color: var(--azul); color: var(--azul); }
.calendario-nav .hoje { width: auto; padding: 0 16px; font-weight: 600; font-size: .84rem; }

.grade { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.grade-cabecalho { text-align: center; font-size: .74rem; font-weight: 700; color: var(--tinta-suave); text-transform: uppercase; padding-bottom: 6px; }
.dia {
  min-height: 84px; background: #FAFCFE; border: 1px solid var(--borda); border-radius: 8px;
  padding: 7px; display: flex; flex-direction: column; gap: 5px; transition: all .15s ease;
}
.dia.fora { background: transparent; border-color: transparent; }
.dia.hoje { border-color: var(--azul); background: var(--azul-claro); }
.dia.com-evento { cursor: pointer; border-color: #CFE7B7; background: var(--verde-claro); }
.dia.com-evento:hover { border-color: var(--verde); box-shadow: var(--sombra); }
.dia.selecionado { border-color: var(--verde-escuro); box-shadow: 0 0 0 2px rgba(122,193,67,.35); }
.dia-num { font-size: .82rem; font-weight: 600; color: var(--tinta-media); }
.dia.hoje .dia-num { color: var(--azul); }
.dia-marca {
  font-size: .7rem; font-weight: 700; border-radius: 5px; padding: 2px 6px; align-self: flex-start;
  background: #fff; border: 1px solid var(--verde); color: var(--verde-escuro);
}
.dia-marca.urgente { border-color: var(--alerta); color: var(--alerta); }
.dia-resumo { font-size: .68rem; color: var(--tinta-media); line-height: 1.3; overflow: hidden; }

.legenda { display: flex; gap: 20px; flex-wrap: wrap; margin-top: 16px; font-size: .8rem; color: var(--tinta-media); }
.legenda span { display: inline-flex; align-items: center; gap: 7px; }
.ponto { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.ponto.verde { background: var(--verde); }
.ponto.vermelho { background: var(--alerta); }
.ponto.azul { background: var(--azul); }

.lista-do-dia { margin-top: 26px; }
.lista-do-dia h3 { font-size: 1rem; color: var(--azul-escuro); margin: 0 0 14px; }

/* ===== Modal ===== */
.modal {
  position: fixed; inset: 0; background: rgba(11,60,93,.45); backdrop-filter: blur(2px);
  display: none; align-items: flex-start; justify-content: center; padding: 40px 18px; overflow-y: auto; z-index: 90;
}
.modal.aberto { display: flex; }
.modal-caixa {
  background: var(--superficie); border-radius: var(--raio-g); max-width: 660px; width: 100%;
  box-shadow: var(--sombra-alta); animation: surge .2s ease both; overflow: hidden;
}
.modal-topo { background: var(--azul-escuro); color: #fff; padding: 20px 24px; display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; }
.modal-topo h2 { margin: 0 0 4px; font-size: 1.05rem; line-height: 1.4; }
.modal-topo p { margin: 0; font-size: .84rem; color: #B9D5E8; }
.modal-topo p b { color: var(--verde); }
.modal-fechar { background: none; border: none; color: #B9D5E8; font-size: 1.3rem; cursor: pointer; line-height: 1; padding: 0 4px; }
.modal-fechar:hover { color: #fff; }
.modal-corpo { padding: 22px 24px 24px; }
.modal-bloco { margin-bottom: 22px; }
.modal-bloco h4 {
  margin: 0 0 10px; font-size: .76rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .05em; color: var(--tinta-suave);
  display: flex; align-items: center; gap: 6px;
}
/* Bloco principal do modal: "Documentos desta licitação" concentra a maior
   parte do trabalho (gerar declarações, anexar documentos da empresa, zip),
   por isso ganha destaque visual — cartão com fundo e borda em vez de texto
   solto — pra ficar claramente o primeiro passo, não só o primeiro da lista. */
.modal-bloco-principal {
  background: linear-gradient(180deg, #F0F7FC, #F7FBFE);
  border: 1px solid var(--borda-forte);
  border-radius: var(--raio, 10px);
  padding: 18px 18px 20px;
  margin-bottom: 22px;
}
.modal-bloco-principal h4 { color: var(--azul-escuro); font-size: .8rem; }
.modal-bloco-principal + .modal-bloco { margin-top: -6px; }
.select-modelo { flex: 1; height: 40px; border: 1px solid var(--borda-forte); border-radius: 8px; padding: 0 10px; font-size: .89rem; }
.select-modelo:focus { outline: none; border-color: var(--azul); box-shadow: 0 0 0 3px rgba(16,118,188,.15); }

.check-item { display: flex; align-items: center; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--borda); }
.check-item:last-child { border-bottom: none; }
/* Checkbox customizado — maior (26px, alvo confortável no toque) e com a
   marca de "feito" desenhada via SVG embutido, no lugar do quadradinho
   nativo minúsculo do navegador. */
.check-item input[type="checkbox"] {
  appearance: none; -webkit-appearance: none; width: 26px; height: 26px; flex-shrink: 0; margin: 0;
  border: 2px solid var(--borda-forte); border-radius: 8px; cursor: pointer; background: var(--superficie);
  transition: background-color .15s ease, border-color .15s ease, transform .1s ease;
}
.check-item input[type="checkbox"]:hover { border-color: var(--azul); }
.check-item input[type="checkbox"]:active { transform: scale(.92); }
.check-item input[type="checkbox"]:focus-visible { outline: 2px solid var(--azul); outline-offset: 2px; }
.check-item input[type="checkbox"]:checked {
  background-color: var(--verde-escuro); border-color: var(--verde-escuro);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='4 12 9 18 20 6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: center; background-size: 15px;
}
.check-item label { flex: 1; font-size: .93rem; cursor: pointer; }
.check-item.feito label { color: var(--tinta-suave); text-decoration: line-through; }
.check-remover { background: none; border: none; color: var(--tinta-suave); cursor: pointer; font-size: .9rem; padding: 2px 6px; display: inline-flex; align-items: center; }
.check-remover:hover { color: var(--alerta); }
.doc-gerado-icone, .doc-empresa-icone { color: var(--azul); }

/* ===== Envio de documentos da empresa (Minha empresa) =====
   Duas colunas fixas (não depende de media query de viewport, já que este
   card vive dentro de um container com max-width — o breakpoint por
   viewport não acompanha a largura real disponível aqui). */
.form-enviar-documento {
  margin-top: 16px; border-top: 1px solid var(--borda); padding-top: 16px;
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: end;
}
.form-enviar-documento .btn-secundario { display: inline-flex; align-items: center; justify-content: center; gap: 6px; width: 100%; }
.campo input[type="file"] {
  width: 100%; height: 42px; border: 1px solid var(--borda-forte); border-radius: 8px;
  padding: 8px 10px; font-size: .82rem; color: var(--tinta-media); background: var(--superficie);
}
@media (max-width: 480px) { .form-enviar-documento { grid-template-columns: 1fr; } }

/* ===== Checklist de habilitação (dentro do modal da licitação) =====
   Minimalista e funcional: cada item é um cartão enxuto, checkbox grande
   (fácil de acertar no toque), botão de remover sempre visível e do mesmo
   tamanho do checkbox (nada de mirar num alvo minúsculo), e uma barra de
   progresso no topo que atualiza sozinha a cada clique — ver
   .checklist-progresso logo abaixo e atualizarProgressoChecklist() em app.js. */
.checklist-progresso { margin: 0 0 14px; }
.checklist-progresso .progresso-trilho { height: 8px; margin-bottom: 8px; }
.checklist-progresso-topo { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.checklist-progresso-topo .progresso-texto { margin: 0; font-weight: 600; color: var(--tinta); }
.checklist-toggle-feitos {
  background: none; border: none; color: var(--azul); font-size: .78rem; font-weight: 600;
  cursor: pointer; padding: 5px 9px; border-radius: 7px; white-space: nowrap; transition: background-color .15s ease;
}
.checklist-toggle-feitos:hover:not(:disabled) { background: var(--azul-claro); }
.checklist-toggle-feitos:disabled { color: var(--tinta-suave); cursor: default; }

.checklist-lista { display: flex; flex-direction: column; gap: 8px; }
.checklist-lista.oculta-feitos .check-item-wrap.feito { display: none; }
.check-item-wrap {
  padding: 13px 14px; border: 1px solid var(--borda); border-radius: 12px;
  background: var(--superficie); transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.check-item-wrap:hover { border-color: var(--borda-forte); box-shadow: 0 2px 10px rgba(11,60,93,.08); }
.check-item-wrap.feito { background: var(--verde-claro); border-color: #DCEECB; }
.check-item-wrap .check-item { padding: 0; border-bottom: none; gap: 12px; }
.check-item-wrap .check-item.feito { opacity: .7; }
.check-item-wrap .check-item label { font-weight: 500; }
.check-item-wrap .check-remover {
  border-radius: 8px; width: 32px; height: 32px; justify-content: center; flex-shrink: 0;
  transition: background-color .15s ease, color .15s ease;
}
.check-item-wrap .check-remover:hover { background: var(--alerta-claro); color: var(--alerta); }
.check-item-wrap .btn-link { font-weight: 600; }

/* Linha de anexo (documento da empresa vinculado, ou seletor pra vincular
   um): fundo levemente diferente, "encaixada" visualmente sob o item pai. */
.check-item-anexo {
  margin: 9px 0 0 27px; padding: 9px 11px; background: #F8FAFC; border-radius: 8px;
  display: flex; align-items: center; gap: 9px; flex-wrap: wrap; font-size: .82rem; color: var(--tinta-media);
}
.check-item-anexo select {
  height: 34px; border: 1px solid var(--borda-forte); border-radius: 7px; padding: 0 9px;
  font-size: .8rem; max-width: 240px; background: var(--superficie); flex: 1; min-width: 160px;
}
.check-item-anexo .btn-link {
  font-size: .76rem; padding: 5px 10px; border-radius: 6px; background: var(--azul-claro);
  color: var(--azul); font-weight: 600; white-space: nowrap;
}
.check-item-anexo .btn-link:hover { background: #D9EDFB; text-decoration: none; }
.check-item-anexo a.btn-link { background: none; padding: 5px 4px; }
.check-item-anexo a.btn-link:hover { background: none; text-decoration: underline; }

.badge-validade { display: inline-block; font-size: .73rem; font-weight: 600; padding: 2px 9px; border-radius: 999px; margin-left: 8px; white-space: nowrap; }
.badge-validade.ok { background: var(--verde-claro); color: var(--verde-escuro); }
.badge-validade.vencendo { background: #FEF3E0; color: #B5730A; }
.badge-validade.vencido { background: var(--alerta-claro); color: var(--alerta); }

.linha-adicionar { display: flex; gap: 8px; margin-top: 12px; }
.linha-adicionar input {
  flex: 1; height: 40px; border: 1px solid var(--borda-forte); border-radius: 8px; padding: 0 12px; font-size: .89rem;
}
.linha-adicionar input:focus { outline: none; border-color: var(--azul); box-shadow: 0 0 0 3px rgba(16,118,188,.15); }

.modal-bloco textarea {
  width: 100%; min-height: 96px; border: 1px solid var(--borda-forte); border-radius: 8px;
  padding: 11px 13px; font-family: inherit; font-size: .9rem; resize: vertical; color: var(--tinta);
}
.modal-bloco textarea:focus { outline: none; border-color: var(--azul); box-shadow: 0 0 0 3px rgba(16,118,188,.15); }

.modal-rodape { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.salvo-aviso { font-size: .8rem; color: var(--tinta-suave); }
.salvo-aviso.ok { color: var(--verde-escuro); }

/* ===== Aviso flutuante ===== */
.aviso-flutuante {
  position: fixed; bottom: 22px; left: 50%; transform: translateX(-50%) translateY(20px);
  background: var(--azul-escuro); color: #fff; padding: 12px 20px; border-radius: 10px;
  font-size: .88rem; box-shadow: var(--sombra-alta); opacity: 0; pointer-events: none;
  transition: opacity .2s ease, transform .2s ease; z-index: 120; max-width: 90vw; text-align: center;
}
.aviso-flutuante.visivel { opacity: 1; transform: translateX(-50%) translateY(0); }
.aviso-flutuante.erro { background: var(--alerta); }

/* ===== Alerta de validade de documentos (painel + página de documentos) ===== */
.alerta-documentos {
  display: flex; align-items: center; gap: 9px; padding: 12px 16px; border-radius: var(--raio);
  font-size: .87rem; font-weight: 600; margin-bottom: 12px; line-height: 1.5;
}
.alerta-documentos .icone { flex-shrink: 0; }
.alerta-documentos.atencao { background: #FEF3E0; color: #8A5809; }
.alerta-documentos.critico { background: var(--alerta-claro); color: var(--alerta); }
.alerta-documentos a { color: inherit; text-decoration: underline; font-weight: 700; white-space: nowrap; }

/* ===== Rodapé ===== */
.rodape {
  border-top: 1px solid var(--borda); margin-top: 50px; padding: 26px 24px 50px;
  color: var(--tinta-suave); font-size: .82rem; line-height: 1.6;
  max-width: 1280px; margin-left: auto; margin-right: auto;
}

/* =========================================================
   Telas de acesso (login / cadastro)
   ========================================================= */
.acesso {
  min-height: 100vh; display: grid; grid-template-columns: 1.05fr .95fr;
}
@media (max-width: 900px) { .acesso { grid-template-columns: 1fr; } }

.acesso-lado {
  background: linear-gradient(150deg, var(--azul-escuro) 0%, #0E5185 55%, var(--azul) 100%);
  color: #fff; padding: 56px 52px; display: flex; flex-direction: column; justify-content: center;
  position: relative; overflow: hidden;
}
.acesso-lado::after {
  content: ""; position: absolute; right: -140px; bottom: -140px; width: 380px; height: 380px;
  border-radius: 50%; background: rgba(122,193,67,.16);
}
@media (max-width: 900px) { .acesso-lado { padding: 40px 28px; } }
.acesso-lado h1 { font-size: clamp(1.7rem, 3.4vw, 2.3rem); line-height: 1.25; margin: 20px 0 14px; letter-spacing: -.02em; }
.acesso-lado h1 em { font-style: normal; color: var(--verde); }
.acesso-lado p { color: #C6DDEE; font-size: .98rem; line-height: 1.65; max-width: 440px; margin: 0 0 26px; }
.acesso-lista { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; position: relative; z-index: 1; }
.acesso-lista li { display: flex; gap: 11px; align-items: flex-start; font-size: .92rem; color: #DCEBF6; }
.acesso-lista li::before {
  content: "✓"; flex-shrink: 0; width: 21px; height: 21px; border-radius: 50%;
  background: var(--verde); color: var(--azul-escuro); display: grid; place-items: center;
  font-size: .74rem; font-weight: 800;
}

.acesso-form { display: flex; align-items: center; justify-content: center; padding: 48px 28px; background: var(--fundo); }
.acesso-caixa { width: 100%; max-width: 400px; }
.acesso-caixa h2 { margin: 0 0 6px; font-size: 1.5rem; color: var(--azul-escuro); letter-spacing: -.02em; }
.acesso-caixa .apoio { margin: 0 0 26px; color: var(--tinta-media); font-size: .92rem; }
.acesso-caixa .campo { margin-bottom: 15px; }
.acesso-caixa .btn-primario { width: 100%; margin-top: 6px; height: 46px; font-size: .95rem; }
.acesso-rodape { margin-top: 22px; font-size: .89rem; color: var(--tinta-media); text-align: center; }

.mensagem { padding: 12px 14px; border-radius: 8px; font-size: .88rem; margin-bottom: 18px; line-height: 1.5; }
.mensagem.erro { background: var(--alerta-claro); color: #A8331F; border: 1px solid #F6CFC8; }
.mensagem.sucesso { background: var(--verde-claro); color: var(--verde-escuro); border: 1px solid #D3EAB9; }

/* ===== Lista de modelos (/modelos) ===== */
.lista-modelos { display: flex; flex-direction: column; gap: 3px; margin-bottom: 8px; }
.modelo-item {
  display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-radius: 8px;
  color: var(--tinta); border: 1px solid transparent;
}
.modelo-item:hover { background: #F1F6FA; text-decoration: none; }
.modelo-item.ativo { background: var(--azul-claro); border-color: #CBE4F6; color: var(--azul-escuro); }
.modelo-item .icone { color: var(--tinta-suave); }
.modelo-item.ativo .icone { color: var(--azul); }
.modelo-item-titulo { flex: 1; font-size: .87rem; line-height: 1.4; font-weight: 600; }
.modelo-item-titulo small { display: block; font-size: .72rem; color: var(--tinta-suave); font-weight: 500; }

/* ===== Itens da proposta de preços (dentro do modal) ===== */
.linha-item-proposta {
  display: grid; grid-template-columns: 2.2fr 0.8fr 0.8fr 1fr auto;
  gap: 6px; margin-bottom: 8px; align-items: center;
}
.linha-item-proposta input {
  height: 36px; border: 1px solid var(--borda-forte); border-radius: 6px;
  padding: 0 8px; font-size: .82rem; width: 100%;
}
.linha-item-proposta button {
  background: none; border: none; color: var(--tinta-suave); cursor: pointer; font-size: .95rem;
}
.linha-item-proposta button:hover { color: var(--alerta); }
@media (max-width: 640px) { .linha-item-proposta { grid-template-columns: 1fr 1fr; } }
