:root {
  --marca: #1f6f5c;
  --marca-escura: #16503f;
  --bs-link-color-rgb: 31, 111, 92;
  --bs-primary: #1f6f5c;
  --bs-primary-rgb: 31, 111, 92;
}
body { background: #f4f5f9; }
.bg-marca { background: var(--marca) !important; }
.text-marca { color: var(--marca) !important; }
.fundo-login { background: linear-gradient(135deg, #1f6f5c, #2f9478); }
.btn-primary { --bs-btn-bg: var(--marca); --bs-btn-border-color: var(--marca); --bs-btn-hover-bg: var(--marca-escura); --bs-btn-hover-border-color: var(--marca-escura); --bs-btn-active-bg: var(--marca-escura); --bs-btn-disabled-bg: var(--marca); --bs-btn-disabled-border-color: var(--marca); }
.btn-outline-primary { --bs-btn-color: var(--marca); --bs-btn-border-color: var(--marca); --bs-btn-hover-bg: var(--marca); --bs-btn-hover-border-color: var(--marca); --bs-btn-active-bg: var(--marca); --bs-btn-active-border-color: var(--marca); }
.text-bg-primary { background-color: var(--marca) !important; }
.progress-bar { background-color: var(--marca); }
.nav-pills .nav-link.active { background: rgba(255,255,255,.18); }

.sidebar { width: 250px; min-height: 100vh; }
@media (min-width: 992px) {
  .sidebar { position: sticky; top: 0; height: 100vh; overflow-y: auto; flex-shrink: 0; }
}
.sidebar .menu .nav-link { color: rgba(255,255,255,.85); padding: .45rem .6rem; border-radius: .4rem; }
.sidebar .menu .nav-link:hover { color: #fff; background: rgba(255,255,255,.1); }
.sidebar .menu .nav-link i { width: 1.4rem; display: inline-block; }
.conteudo { min-width: 0; }

.card { border: 0; box-shadow: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08); }
.card-header { background: #fff; font-weight: 600; }
.page-title { font-size: 1.4rem; font-weight: 600; margin: 0; }
.rotulo { font-size: .75rem; color: var(--bs-secondary-color); text-transform: uppercase; letter-spacing: .03em; }
.kpi .valor { font-size: 1.8rem; font-weight: 700; line-height: 1.1; }

.htmx-indicator { opacity: 0; transition: opacity .2s; }
.htmx-request .htmx-indicator, .htmx-request.htmx-indicator { opacity: 1; }

/* Envio de arquivos */
.min-w-0 { min-width: 0; }
.zona-upload { display: block; border: 2px dashed #c9cbe3; border-radius: .6rem; padding: 1rem; text-align: center; cursor: pointer; color: var(--bs-secondary-color); transition: background .15s, border-color .15s; }
.zona-upload:hover, .zona-upload.arrastando { border-color: var(--marca); background: rgba(31,111,92,.05); }

/* Relatório do validador */
.achado { border-left: 3px solid var(--bs-border-color); padding: .35rem .6rem; margin-bottom: .35rem; background: #fff; }
.achado.erro { border-left-color: var(--bs-danger); }
.achado.aviso { border-left-color: var(--bs-warning); }
.achado .regra { font-family: var(--bs-font-monospace); font-size: .75rem; color: var(--bs-secondary-color); }
.tabela-compacta td, .tabela-compacta th { padding: .3rem .5rem; font-size: .875rem; }

/* Planilha e boletim */
.linha-titulo td { background: #eef3f1 !important; font-weight: 600; }
.campo-pct { width: 7.5rem; }
.tabela-medicao td { vertical-align: middle; }
.relatorio { background: #fff; font-size: .85rem; }
@media print {
  .relatorio .tabela-compacta td, .relatorio .tabela-compacta th { padding: .15rem .3rem; font-size: .72rem; }
  .assinaturas { page-break-inside: avoid; }
}

/* Nota fiscal: o PDF ao lado do aceite, e a correção dos dados recolhida */
.visor-pdf { width: 100%; height: 80vh; min-height: 30rem; border: 0; border-radius: var(--bs-card-border-radius); }
details.card > summary { cursor: pointer; list-style: revert; }

/* QR da verificação em duas etapas: fundo branco no tema escuro também */
.qr-2fa svg { width: 210px; height: 210px; background: #fff; border-radius: .5rem; }

/* Curva S */
.grafico-curva .grade { stroke: var(--bs-border-color); stroke-width: 1; }
.grafico-curva .rotulo-y { font-size: 11px; text-anchor: end; dominant-baseline: middle; fill: var(--bs-secondary-color); }
.grafico-curva .rotulo-x { font-size: 10px; text-anchor: middle; fill: var(--bs-secondary-color); }
.grafico-curva .linha-previsto { fill: none; stroke: #6c8ebf; stroke-width: 2; stroke-dasharray: 6 4; }
.grafico-curva .linha-medido { fill: none; stroke: var(--bs-success); stroke-width: 2.5; }
.grafico-curva .ponto-medido { fill: var(--bs-success); }
.legenda { display: inline-block; width: 22px; height: 0; vertical-align: middle; border-top: 2.5px solid; }
.legenda-previsto { border-top: 2px dashed #6c8ebf; }
.legenda-medido { border-top-color: var(--bs-success); }

/* Diário de obra: miniaturas das fotos */
.foto-diario { width: 7.5rem; }
.foto-diario img, .foto-diario > a { width: 7.5rem; height: 5.6rem; object-fit: cover; display: block; }
.diario-campos dd { margin-bottom: .4rem; }
