:root{
    --bv-blue:#002BAB;
    --bv-blue-dark:#001d73;
    --bv-blue-light:#e7ecff;
    --bg:#f4f6fb;
    --border:#d8deec;
    --text:#1c2233;
    --muted:#6b7488;
    /* cores das legendas */
    --c-F:#2f6bff;
    --c-A:#00a37a;
    --c-L:#c0392b;
    --c-BH:#f2a922;
    --c-FFA:#8e44ad;
    --c-FE:#7f8c9b;
    --c-FO:#e67e22;
  }
  *{box-sizing:border-box}
  body{margin:0;font-family:'Segoe UI',Tahoma,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}
  header{background:var(--bv-blue);color:#fff;padding:16px 24px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
  header .brand{display:flex;align-items:center;gap:14px}
  header .logo{background:#fff;color:var(--bv-blue);font-weight:800;font-size:20px;border-radius:8px;padding:6px 12px;letter-spacing:1px}
  header h1{font-size:18px;margin:0;font-weight:600}
  header .sub{font-size:12px;opacity:.85;margin-top:2px}
  .wrap{padding:20px 24px;max-width:1600px;margin:0 auto}
  .panel{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px 18px;margin-bottom:18px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
  .panel h2{margin:0 0 14px;font-size:15px;color:var(--bv-blue);display:flex;align-items:center;gap:8px}
  .row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
  .field{display:flex;flex-direction:column;gap:4px}
  .field label{font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.3px}
  input,select,button{font-family:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text)}
  input:focus,select:focus{outline:2px solid var(--bv-blue-light);border-color:var(--bv-blue)}
  button{cursor:pointer;font-weight:600}
  .btn-primary{background:var(--bv-blue);color:#fff;border-color:var(--bv-blue)}
  .btn-primary:hover{background:var(--bv-blue-dark)}
  .btn-ghost{background:#fff;color:var(--bv-blue);border-color:var(--bv-blue)}
  .btn-ghost:hover{background:var(--bv-blue-light)}
  .btn-sm{padding:5px 9px;font-size:12px}
  .toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:space-between}
  .month-nav{display:flex;gap:8px;align-items:center}
  .month-nav .cur{font-size:16px;font-weight:700;color:var(--bv-blue);min-width:170px;text-align:center}
  /* calendário */
  .cal-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:10px}
  table.cal{border-collapse:collapse;width:100%;font-size:12px}
  table.cal th,table.cal td{border:1px solid #e9edf6;text-align:center;padding:0}
  table.cal thead th{background:var(--bv-blue);color:#fff;position:sticky;top:0;z-index:2;font-weight:600;height:34px}
  table.cal thead th.dow{font-size:10px;font-weight:500;height:20px;background:var(--bv-blue-dark)}
  .name-col{position:sticky;left:0;z-index:3;background:#fff;text-align:left!important;padding:6px 10px!important;min-width:150px;font-weight:600;box-shadow:2px 0 4px rgba(0,0,0,.04)}
  thead .name-col{background:var(--bv-blue);z-index:4}
  .daycell{width:30px;height:30px;cursor:pointer;position:relative}
  .daycell:hover{outline:2px solid var(--bv-blue);outline-offset:-2px}
  .weekend{background:#f0f2f8}
  .today{box-shadow:inset 0 0 0 2px #ff5a5a}
  .mark{color:#fff;font-weight:700;font-size:10px;line-height:30px;display:block;width:100%;height:100%}
  .m-F{background:var(--c-F)} .m-A{background:var(--c-A)} .m-L{background:var(--c-L)}
  .m-BH{background:var(--c-BH)} .m-FFA{background:var(--c-FFA)} .m-FE{background:var(--c-FE)} .m-FO{background:var(--c-FO)}
  .team-head{background:var(--bv-blue-light)!important;color:var(--bv-blue)!important;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.4px}
  .team-head-fill{background:var(--bv-blue-light)}
  .name-col .del{float:right;color:var(--muted);cursor:pointer;font-weight:700;border:none;background:none;padding:0 4px}
  .name-col .del:hover{color:var(--c-L)}
  /* legenda */
  .legend{display:flex;gap:16px;flex-wrap:wrap;align-items:center}
  .legend .item{display:flex;align-items:center;gap:6px;font-size:12px}
  .legend .chip{width:20px;height:20px;border-radius:5px;display:inline-block}
  /* overlaps */
  .overlap-list{display:flex;flex-direction:column;gap:8px}
  .ov{background:var(--bv-blue-light);border-left:4px solid var(--bv-blue);border-radius:6px;padding:8px 12px;font-size:13px}
  .ov b{color:var(--bv-blue)}
  .muted{color:var(--muted);font-size:12px}
  .pill{display:inline-block;background:var(--bv-blue-light);color:var(--bv-blue);border-radius:20px;padding:2px 10px;font-size:11px;font-weight:600;margin:2px}
  .empty{color:var(--muted);font-style:italic;padding:8px 0}
  .footer{text-align:center;color:var(--muted);font-size:11px;padding:10px 0 30px}
  .hint{font-size:11px;color:var(--muted);margin-top:6px}
  dialog{border:none;border-radius:12px;padding:0;box-shadow:0 10px 40px rgba(0,0,0,.25);max-width:420px;width:92%}
  dialog::backdrop{background:rgba(0,20,80,.35)}
  .dlg-head{background:var(--bv-blue);color:#fff;padding:14px 18px;font-weight:600;border-radius:12px 12px 0 0}
  .dlg-body{padding:18px}
  .dlg-foot{padding:0 18px 18px;display:flex;justify-content:flex-end;gap:10px}

  .periodos-lista {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.periodo-card {
  display: grid;
  grid-template-columns:
    minmax(180px, 1.5fr)
    minmax(120px, 1fr)
    minmax(210px, 1.4fr)
    minmax(90px, 0.6fr)
    auto;
  gap: 14px;
  align-items: center;

  padding: 12px 14px;

  border: 1px solid var(--border);
  border-left: 5px solid var(--bv-blue);
  border-radius: 9px;

  background: #fff;
}

.periodo-card:hover {
  background: #fafbff;
}

.periodo-card.tipo-F {
  border-left-color: var(--c-F);
}

.periodo-card.tipo-A {
  border-left-color: var(--c-A);
}

.periodo-card.tipo-L {
  border-left-color: var(--c-L);
}

.periodo-card.tipo-BH {
  border-left-color: var(--c-BH);
}

.periodo-card.tipo-FFA {
  border-left-color: var(--c-FFA);
}

.periodo-card.tipo-FO {
  border-left-color: var(--c-FO);
}

.periodo-info {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.periodo-label {
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.3px;
  text-transform: uppercase;
}

.periodo-valor {
  color: var(--text);
  font-size: 13px;
  font-weight: 600;
}

.periodo-status {
  display: inline-block;

  width: fit-content;
  padding: 3px 9px;

  color: var(--bv-blue);
  background: var(--bv-blue-light);

  border-radius: 20px;

  font-size: 10px;
  font-weight: 700;
}

.btn-danger {
  color: #fff;
  background: var(--c-L);
  border-color: var(--c-L);
}

.btn-danger:hover {
  background: #962d22;
  border-color: #962d22;
}

.btn-danger:disabled {
  cursor: not-allowed;
  opacity: 0.6;
}

@media (max-width: 900px) {
  .periodo-card {
    grid-template-columns: 1fr 1fr;
  }

  .periodo-acoes {
    grid-column: 1 / -1;
  }
}

@media (max-width: 560px) {
  .periodo-card {
    grid-template-columns: 1fr;
  }

  .periodo-acoes {
    grid-column: auto;
  }
}


.ferias-periodos {
  display: flex;
  flex-direction: column;
  gap: 14px;

  margin-top: 18px;
}

.ferias-periodo {
  padding: 14px;

  border: 1px solid var(--border);
  border-left: 5px solid var(--c-F);
  border-radius: 9px;

  background: #fafbff;
}

.ferias-periodo-titulo {
  margin: 0 0 12px;

  color: var(--bv-blue);

  font-size: 13px;
  font-weight: 700;
}

.ferias-periodo-campos {
  display: flex;
  gap: 12px;
  align-items: flex-end;
  flex-wrap: wrap;
}

.ferias-resumo {
  display: grid;
  grid-template-columns: repeat(3, minmax(150px, 1fr));
  gap: 12px;

  margin-top: 18px;
}

.ferias-indicador {
  display: flex;
  flex-direction: column;
  gap: 5px;

  padding: 12px 14px;

  border: 1px solid var(--border);
  border-radius: 9px;

  background: #fff;
}

.ferias-indicador strong {
  color: var(--bv-blue);
  font-size: 18px;
}

.ferias-validacao {
  min-height: 22px;
  margin-top: 14px;

  font-size: 13px;
  font-weight: 600;
}

.ferias-validacao.valido {
  color: #007a5a;
}

.ferias-validacao.alerta {
  color: #9a6700;
}

.ferias-validacao.erro {
  color: var(--c-L);
}

.ferias-acoes {
  display: flex;
  gap: 10px;
  justify-content: flex-end;

  margin-top: 14px;
}

.ferias-periodo.conflito {
  border-color: var(--c-L);
  border-left-color: var(--c-L);

  background: #fff5f4;
}

@media (max-width: 700px) {
  .ferias-resumo {
    grid-template-columns: 1fr;
  }

  .ferias-acoes {
    flex-direction: column-reverse;
  }

  .ferias-acoes button {
    width: 100%;
  }
}

.holiday-head {
  position: relative;

  background: #5f6b7a !important;
  color: #fff !important;
}

.holiday-indicator {
  position: absolute;
  top: 2px;
  right: 3px;

  color: #ffd166;

  font-size: 7px;
  line-height: 1;
}

.holiday-cell {
  background-color: #fff7d6;

  background-image:
    repeating-linear-gradient(
      135deg,
      rgba(242, 169, 34, 0.08) 0,
      rgba(242, 169, 34, 0.08) 4px,
      transparent 4px,
      transparent 8px
    );
}

.holiday-cell.weekend {
  background-color: #f5edd0;
}

.holiday-cell .mark {
  position: relative;
  z-index: 1;


}

.holiday-legend-chip {
  background-color: #fff7d6;
  border: 2px solid #f2a922;
}


.feriados-especiais-lista {
  display: flex;
  flex-direction: column;
  gap: 8px;

  margin-top: 18px;
}

.feriado-especial-card {
  display: grid;
  grid-template-columns:
    minmax(120px, 0.7fr)
    minmax(180px, 1.5fr)
    minmax(130px, 0.8fr)
    minmax(160px, 1fr)
    auto;
  gap: 12px;
  align-items: center;

  padding: 11px 13px;

  border: 1px solid var(--border);
  border-left: 5px solid #f2a922;
  border-radius: 9px;

  background: #fff;
}

.feriado-especial-card.tipo-INTERNO {
  border-left-color: var(--c-FFA);
}

.feriado-especial-card.tipo-ESTADUAL {
  border-left-color: var(--c-BH);
}

.feriado-especial-card.tipo-MUNICIPAL {
  border-left-color: var(--c-A);
}

.feriado-especial-local {
  color: var(--muted);
  font-size: 12px;
}

@media (max-width: 850px) {
  .feriado-especial-card {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 560px) {
  .feriado-especial-card {
    grid-template-columns: 1fr;
  }
}

.auth-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;

  display: flex;
  align-items: center;
  justify-content: center;

  padding: 24px;

  background:
    linear-gradient(
      135deg,
      rgba(0, 43, 171, 0.96),
      rgba(0, 29, 115, 0.96)
    );
}

.auth-overlay[hidden] {
  display: none;
}

.auth-card {
  width: 100%;
  max-width: 430px;

  padding: 24px;

  border-radius: 16px;

  background: #fff;

  box-shadow:
    0 20px 60px rgba(0, 0, 0, 0.3);
}

.auth-brand {
  display: flex;
  align-items: center;
  gap: 14px;

  margin-bottom: 20px;
}

.auth-brand .logo {
  background: var(--bv-blue);
  color: #fff;
}

.auth-brand h2 {
  margin: 0;

  color: var(--bv-blue);

  font-size: 20px;
}

.auth-brand p {
  margin: 4px 0 0;

  color: var(--muted);

  font-size: 12px;
}

.auth-abas {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;

  margin-bottom: 18px;
  padding: 4px;

  border-radius: 10px;

  background: var(--bg);
}

.auth-aba {
  border: none;

  color: var(--muted);
  background: transparent;
}

.auth-aba.ativa {
  color: var(--bv-blue);
  background: #fff;

  box-shadow:
    0 1px 4px rgba(0, 0, 0, 0.1);
}

.auth-card .field {
  margin-bottom: 12px;
}

.auth-card .field input {
  width: 100%;
}

.auth-botao-principal {
  width: 100%;
  margin-top: 8px;
}

.auth-mensagem {
  min-height: 20px;
  margin-top: 8px;

  font-size: 12px;
  font-weight: 600;
}

.auth-mensagem.erro {
  color: var(--c-L);
}

.auth-mensagem.sucesso {
  color: #007a5a;
}

.auth-mensagem.alerta {
  color: #9a6700;
}

.usuario-conectado {
  display: flex;
  gap: 10px;
  align-items: center;

  padding-left: 12px;

  border-left:
    1px solid rgba(255, 255, 255, 0.3);
}

.usuario-conectado[hidden] {
  display: none;
}

.usuario-conectado-info {
  display: flex;
  flex-direction: column;
  gap: 1px;

  max-width: 260px;
}

.usuario-conectado-label {
  font-size: 9px;
  opacity: 0.75;
  text-transform: uppercase;
}

#usuarioConectadoEmail {
  overflow: hidden;

  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.usuario-conectado-perfil {
  font-size: 9px;
  font-weight: 700;
  opacity: 0.85;
}

.btn-link-auth {
  width: 100%;
  margin-top: 10px;
  padding: 6px;

  border: none;

  color: var(--bv-blue);
  background: transparent;

  font-size: 12px;
  font-weight: 600;
  text-decoration: underline;
}

.btn-link-auth:hover {
  color: var(--bv-blue-dark);
  background: transparent;
}