/* SIGEC · paleta oficial Fundação iNOVA Capixaba */
:root {
  --inova-vinho: #7F2145;
  --inova-vinho-escuro: #66193A;
  --inova-rosa: #EE638D;
  --inova-rosa-claro: #FCE8EE;
  --inova-navy: #263F73;
  --inova-quase-preto: #222940;
  --inova-cinza: #F2F2F2;
  --texto-suave: #5A6180;
  --linha: #DCDEE6;

  --ok: #1E7B4C; --ok-bg: #E3F3EA;
  --alerta: #A86200; --alerta-bg: #FFF1D9;
  --risco: #B8321E; --risco-bg: #FBE4E0;
  --info: #263F73; --info-bg: #E6ECF7;

  --bs-primary: var(--inova-vinho);
  --bs-primary-rgb: 127, 33, 69;
  --bs-link-color: var(--inova-vinho);
  --bs-link-color-rgb: 127, 33, 69;
  --bs-link-hover-color: var(--inova-vinho-escuro);
  --bs-body-color: var(--inova-quase-preto);
  --bs-body-bg: var(--inova-cinza);
  --bs-body-font-family: "Source Sans 3", "Segoe UI", system-ui, sans-serif;
  --bs-border-color: var(--linha);
}

body { background: var(--inova-cinza); font-size: 0.95rem; }
h1, h2, h3, h4, h5, .titulo { font-family: "Libre Franklin", "Segoe UI", system-ui, sans-serif; color: var(--inova-navy); }
h1 { font-size: 1.55rem; font-weight: 700; }
h2 { font-size: 1.2rem; font-weight: 700; }
h3 { font-size: 1.02rem; font-weight: 700; }
.num, td.n, th.n { font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.text-suave { color: var(--texto-suave) !important; }
.eyebrow { font-family: "Libre Franklin", sans-serif; font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--inova-vinho); }

/* Bootstrap na cor da marca */
.btn-primary { --bs-btn-bg: var(--inova-vinho); --bs-btn-border-color: var(--inova-vinho); --bs-btn-hover-bg: var(--inova-vinho-escuro); --bs-btn-hover-border-color: var(--inova-vinho-escuro); --bs-btn-active-bg: var(--inova-vinho-escuro); --bs-btn-disabled-bg: var(--inova-vinho); --bs-btn-disabled-border-color: var(--inova-vinho); }
.btn-outline-primary { --bs-btn-color: var(--inova-vinho); --bs-btn-border-color: var(--inova-vinho); --bs-btn-hover-bg: var(--inova-vinho); --bs-btn-hover-border-color: var(--inova-vinho); --bs-btn-active-bg: var(--inova-vinho); }
.btn-navy { --bs-btn-color: #fff; --bs-btn-bg: var(--inova-navy); --bs-btn-border-color: var(--inova-navy); --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--inova-quase-preto); --bs-btn-hover-border-color: var(--inova-quase-preto); }
.text-primary { color: var(--inova-vinho) !important; }
.bg-primary { background-color: var(--inova-vinho) !important; }
.border-primary { border-color: var(--inova-vinho) !important; }
.form-control:focus, .form-select:focus { border-color: var(--inova-rosa); box-shadow: 0 0 0 .2rem rgba(238, 99, 141, .25); }
.form-check-input:checked { background-color: var(--inova-vinho); border-color: var(--inova-vinho); }
.page-link { color: var(--inova-vinho); }
.active > .page-link, .page-link.active { background-color: var(--inova-vinho); border-color: var(--inova-vinho); }
a:focus-visible, button:focus-visible { outline: 2px solid var(--inova-rosa); outline-offset: 2px; }

/* Cabeçalho institucional: faixa navy + barra vinho */
.faixa-topo { background: linear-gradient(100deg, var(--inova-navy) 0%, var(--inova-navy) 45%, var(--inova-quase-preto) 100%); color: #fff; }
.faixa-topo .marca { font-family: "Libre Franklin", sans-serif; font-weight: 800; font-size: 1.25rem; color: #fff; text-decoration: none; letter-spacing: .02em; }
.faixa-topo .marca small { display: block; font-weight: 500; font-size: .72rem; color: #C3CBE0; letter-spacing: .04em; }
.faixa-topo .usuario { font-size: .85rem; color: #D9DFEE; }
.barra-menu { background: var(--inova-vinho); position: sticky; top: 0; z-index: 1020; }
.barra-menu .nav-link { color: #fff; font-family: "Libre Franklin", sans-serif; font-weight: 600; font-size: .84rem; padding: .7rem .9rem; border-bottom: 3px solid transparent; }
.barra-menu .nav-link:hover, .barra-menu .nav-link.ativo { border-bottom-color: var(--inova-rosa); color: #fff; }

/* Painéis e cartões */
.painel { background: #fff; border: 1px solid var(--linha); border-radius: 8px; }
.painel-cab { padding: .8rem 1rem; border-bottom: 1px solid var(--linha); display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.painel-corpo { padding: 1rem; }
.kpi { background: #fff; border: 1px solid var(--linha); border-radius: 8px; padding: .85rem 1rem; height: 100%; }
.kpi .rotulo { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--texto-suave); font-weight: 600; }
.kpi .valor { font-family: "Libre Franklin", sans-serif; font-size: 1.3rem; font-weight: 700; color: var(--inova-navy); font-variant-numeric: tabular-nums; line-height: 1.25; margin-top: .15rem; }
.kpi .valor.menor { font-size: 1.05rem; }
.kpi .detalhe { font-size: .8rem; color: var(--texto-suave); }
a.kpi { display: block; text-decoration: none; transition: border-color .15s; }
a.kpi:hover { border-color: var(--inova-vinho); }
.kpi.destaque { border-left: 4px solid var(--inova-vinho); }

.progresso { height: 6px; background: #E8EAF0; border-radius: 3px; overflow: hidden; }
.progresso > span { display: block; height: 100%; background: var(--inova-navy); }
.progresso.alto > span { background: var(--alerta); }
.progresso.estourado > span { background: var(--risco); }

/* Tabelas */
.tabela { font-size: .88rem; margin: 0; }
.tabela thead th { font-family: "Libre Franklin", sans-serif; font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: var(--texto-suave); font-weight: 600; background: #F7F7FA; white-space: nowrap; border-bottom: 1px solid var(--linha); }
.tabela td { vertical-align: middle; }
.tabela tfoot td { font-weight: 700; background: #F7F7FA; }
.tabela tr.clicavel { cursor: pointer; }
.tabela tr.clicavel:hover td { background: var(--inova-rosa-claro); }
.tabela .grupo td { background: var(--info-bg); font-weight: 700; color: var(--inova-navy); }
.tabela-wrap { overflow-x: auto; }

/* Selos */
.badge-status, .badge-faixa { display: inline-block; font-size: .74rem; font-weight: 700; padding: .18rem .55rem; border-radius: 999px; white-space: nowrap; }
.st-ok { background: var(--ok-bg); color: var(--ok); }
.st-alerta { background: var(--alerta-bg); color: var(--alerta); }
.st-risco { background: var(--risco-bg); color: var(--risco); }
.st-info { background: var(--info-bg); color: var(--info); }
.st-neutro { background: #ECEDF2; color: #4A5068; }
.st-fim { background: #E4E5EA; color: #6B7085; }
.faixa-regular { background: #1E7B4C; color: #fff; }
.faixa-planejar { background: #6FA83A; color: #fff; }
.faixa-iniciar { background: #D9A400; color: #222940; }
.faixa-atencao { background: #E07A1F; color: #fff; }
.faixa-critico { background: #C6392B; color: #fff; }
.faixa-vencido { background: #5B1230; color: #fff; }
.faixa-encerrado { background: #E4E5EA; color: #6B7085; }

/* Conferência da composição */
.conferencia { border-radius: 8px; padding: .65rem .9rem; display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; font-size: .9rem; }
.conferencia.ok { background: var(--ok-bg); color: var(--ok); }
.conferencia.aviso { background: var(--alerta-bg); color: var(--alerta); }
.conferencia.risco { background: var(--risco-bg); color: var(--risco); }
.conferencia b { font-weight: 700; }

/* Ficha do contrato */
.ficha-cab { background: #fff; border: 1px solid var(--linha); border-radius: 8px; padding: 1rem 1.1rem; }
.ficha-cab .ident { font-size: .85rem; color: var(--texto-suave); }
.ficha-cab .objeto { font-family: "Libre Franklin", sans-serif; font-size: 1.25rem; font-weight: 700; color: var(--inova-navy); }
.abas { border-bottom: 2px solid var(--linha); display: flex; gap: .25rem; overflow-x: auto; scrollbar-width: thin; }
.abas a { padding: .6rem .9rem; font-weight: 600; font-size: .88rem; color: var(--texto-suave); text-decoration: none; border-bottom: 3px solid transparent; margin-bottom: -2px; white-space: nowrap; }
.abas a:hover { color: var(--inova-vinho); }
.abas a.ativa { color: var(--inova-vinho); border-bottom-color: var(--inova-vinho); }
.dl-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: .75rem 1.25rem; margin: 0; }
.dl-grade dt { font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; color: var(--texto-suave); font-weight: 600; }
.dl-grade dd { margin: 0; font-weight: 600; }

/* Filtros */
.filtros .form-label { font-size: .75rem; font-weight: 600; color: var(--texto-suave); margin-bottom: .15rem; }
.filtros select[multiple] { min-height: 5.5rem; }

/* Medição */
.linha-medicao input { min-width: 90px; }
.cadeia { display: flex; flex-wrap: wrap; gap: .4rem; align-items: stretch; }
.cadeia .elo { flex: 1 1 140px; background: #fff; border: 1px solid var(--linha); border-radius: 8px; padding: .6rem .8rem; }
.cadeia .elo .rotulo { font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; color: var(--texto-suave); font-weight: 600; }
.cadeia .elo .valor { font-family: "Libre Franklin", sans-serif; font-weight: 700; color: var(--inova-navy); font-variant-numeric: tabular-nums; }
.cadeia .seta { align-self: center; color: var(--inova-vinho); font-weight: 700; }

.login-caixa { max-width: 380px; margin: 8vh auto; }
.rodape { color: var(--texto-suave); font-size: .8rem; }
@media (max-width: 576px) { .cadeia .seta { display: none; } }

/* Diário de fiscalização: calendário */
.calendario { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.cal-cab { font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; color: var(--texto-suave); font-weight: 600; text-align: center; padding: 2px 0; }
.cal-dia { position: relative; min-height: 76px; border: 1px solid var(--linha); border-radius: 6px; padding: 4px 6px; background: #fff; font-size: .75rem; display: flex; flex-direction: column; gap: 2px; overflow: hidden; }
.cal-num { font-weight: 700; color: var(--inova-navy); font-variant-numeric: tabular-nums; }
.cal-reg { display: block; border-radius: 4px; padding: 1px 4px; color: #fff; text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-rotulo { color: var(--risco); font-weight: 600; }
.cal-add { position: absolute; right: 4px; top: 2px; font-weight: 700; color: var(--inova-vinho); text-decoration: none; font-size: 1rem; line-height: 1; }
.cal-outro-mes { background: transparent; border-style: dashed; opacity: .45; }
.cal-fora, .cal-futuro { background: #F7F7FA; color: var(--texto-suave); }
.cal-hoje { border: 2px solid var(--inova-vinho); }
.cal-faltando { background: var(--risco-bg); border-color: #EFC0B8; }
.cal-conforme .cal-reg, .legend-cal .cal-conforme { background: var(--ok); }
.cal-ressalvas .cal-reg, .legend-cal .cal-ressalvas { background: var(--alerta); }
.cal-nao_conforme .cal-reg, .legend-cal .cal-nao_conforme { background: var(--risco); }
.cal-feriado { background: var(--info-bg); }
.cal-feriado-nome { font-size: .68rem; color: var(--inova-navy); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.legend-cal .cal-feriado { background: var(--info-bg); border: 1px solid #C9D5EC; }
.legend-cal .cal-faltando { background: var(--risco-bg); border: 1px solid #EFC0B8; }
.legend-cal { display: flex; flex-wrap: wrap; gap: 14px; }
.legend-cal span { display: inline-flex; align-items: center; gap: 6px; }
.legend-cal i { width: 14px; height: 10px; border-radius: 2px; display: inline-block; }
.anexos { display: flex; flex-wrap: wrap; gap: 8px; }
.anexos img { width: 96px; height: 72px; object-fit: cover; border-radius: 6px; border: 1px solid var(--linha); }
.anexo-pdf { display: inline-block; padding: 6px 10px; border: 1px solid var(--linha); border-radius: 6px; font-size: .8rem; }
@media (max-width: 576px) { .cal-dia { min-height: 52px; } .cal-reg { font-size: 0; height: 8px; padding: 0; } }
