/* Docentes · área Faltas (Marcação, Justificação, Recuperação, Alertas, …). Carregado depois do docentes.css. */

/* ---------------------------------------------------------------- Faltas › Marcação */
.faltas-topo { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.faltas-topo h1 { margin: 0; font-size: 20px; font-weight: 600; }
.faltas-topo h1 .muted { font-size: 15px; font-weight: 400; }
.faltas-topo .espaco, .alunos-resumo .espaco, .faltas-barra .espaco { flex: 1; }
.faltas-data { display: inline-flex; align-items: center; gap: 4px; }
.faltas-data input { padding: 4px 8px; border: 1px solid var(--linha); border-radius: 6px; font: inherit; font-size: 14px; }
.faltas-data .btn.pequeno { font-size: 15px; padding: 3px 10px; }
.faltas-aulas { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px; }
.faltas-aulas .aula-cartao { border-left-color: #b0bec5; }
.faltas-aulas .aula-cartao.minha { border-left-color: var(--azul); }
.faltas-ferramentas { display: flex; align-items: center; gap: 10px 14px; flex-wrap: wrap; }
.faltas-rotulo { font-size: 13px; color: var(--texto-2); }
.faltas-tipos { display: flex; gap: 6px; flex-wrap: wrap; }
.falta-tipo { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border: 1px solid var(--linha); border-radius: 999px; background: #fff; font: inherit; font-size: 13px; cursor: pointer; color: var(--texto); }
.falta-tipo strong { font-size: 12px; }
.falta-tipo:hover { border-color: var(--azul); }
.falta-tipo.ativo { color: #fff; border-color: transparent; background: var(--cor-tipo, var(--azul)); box-shadow: 0 0 0 2px rgba(0,0,0,.08); }
.faltas-modulo { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--texto-2); }
.faltas-modulo select { padding: 4px 6px; border: 1px solid var(--linha); border-radius: 6px; font: inherit; font-size: 13px; max-width: 360px; }
.faltas-aviso { margin: 0; padding: 8px 12px; border-radius: 8px; background: #fff1d6; color: #8a5a00; font-size: 14px; }
/* cores por tipo de falta (siglas de alunos.tiposfaltas) */
.tipo-as { --cor-tipo: #c62828; }
.tipo-at { --cor-tipo: #ef8c00; }
.tipo-dc { --cor-tipo: #6a1b9a; }
.tipo-mt { --cor-tipo: #1565c0; }
.tipo-ss { --cor-tipo: #00796b; }
.alunos-resumo .selo[class*="tipo-"] { background: var(--cor-tipo, #546e7a); color: #fff; }
.faltas-alunos .falta-aluno { padding-top: 12px; }
.faltas-alunos .falta-aluno:disabled { cursor: default; }
.faltas-alunos .falta-aluno:disabled:hover { border-color: var(--linha); box-shadow: none; }
.falta-aluno.registada { border-color: #f2c48d; background: #fffaf2; }
.falta-aluno.nova { border-color: var(--cor-tipo, var(--azul)); background: #fff5f5; box-shadow: 0 0 0 2px rgba(198,40,40,.15); }
.falta-aluno.trocar { border-style: dashed; border-color: #ef8c00; background: #fff8ec; }
.falta-aluno.remover { border-style: dashed; border-color: #90a4ae; background: #f5f7f8; }
.falta-aluno.remover .falta-marca { text-decoration: line-through; opacity: .6; }
.falta-marca { position: absolute; top: 6px; right: 8px; min-width: 28px; padding: 1px 6px; border-radius: 999px; background: var(--cor-tipo, #546e7a); color: #fff; font-size: 12px; font-weight: 700; text-align: center; }
.faltas-barra { position: sticky; bottom: 0; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 12px; margin: 0 -14px -14px; border-top: 1px solid var(--linha); background: #f7f9fb; border-radius: 0 0 10px 10px; font-size: 14px; }
.faltas-barra.com { background: #fff8e1; font-weight: 600; }
.faltas-avisos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.faltas-avisos li { display: flex; flex-direction: column; gap: 2px; padding-bottom: 8px; border-bottom: 1px solid #eef1f3; }

/* componentes DevExpress */
.faltas-data-edit { width: 170px; }
.faltas-modulo-combo { min-width: 260px; max-width: 420px; }
.faltas-vista { display: inline-flex; gap: 4px; }
.faltas-linha-tipos { display: flex; gap: 4px; flex-wrap: wrap; }
.faltas-linha-tipos .dxbl-btn.ativo { background: var(--cor-tipo, var(--azul)); border-color: var(--cor-tipo, var(--azul)); color: #fff; }
.falta-marca-linha { display: inline-block; min-width: 28px; padding: 1px 6px; border-radius: 999px; background: var(--cor-tipo, #546e7a); color: #fff; font-size: 12px; font-weight: 700; text-align: center; }
.falta-marca-linha.remover { text-decoration: line-through; opacity: .6; }

/* ---------------------------------------------------------------- comum às opções de Faltas */
.campo-data { width: 135px; }
.barra-grelha { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.formulario-grelha { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 8px 12px; align-items: center; margin-top: 12px; }
.formulario-grelha > label { font-size: 13px; color: var(--texto-2); }
@media (max-width: 700px) { .formulario-grelha { grid-template-columns: minmax(0, 1fr); } }

/* ---------------------------------------------------------------- Faltas › Justificação */
.pedidos-lista { display: flex; flex-direction: column; gap: 12px; }
.pedido-cartao { background: #fff; border: 1px solid var(--linha); border-left: 4px solid #e0a800; border-radius: 8px; padding: 10px 12px; display: flex; flex-direction: column; gap: 8px; }
.pedido-topo { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.pedido-topo .espaco { flex: 1; }
.pedido-motivo { display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; font-size: 14px; }
.pedido-anexos { display: flex; gap: 12px; flex-wrap: wrap; font-size: 13px; }
.pedido-rodape { display: flex; gap: 8px; justify-content: flex-end; }

/* ---------------------------------------------------------------- Faltas › Alertas */
.combo-aviso { min-width: 240px; }
.alerta-falta { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 12px; font-weight: 700; color: #fff; background: var(--cor-aviso, #d9534f); }
.alerta-falta-msg { font-size: 12px; white-space: normal; }

/* ---------------------------------------------------------------- Faltas › Medidas */
.medidas-colunas { align-items: start; }
.medidas-colunas > .medidas-separadores { margin-top: 0; }
.medida-subtitulo { display: flex; align-items: center; gap: 10px; font-size: 14px; margin: 14px 0 6px; color: var(--azul-escuro); }
.combo-responsavel { min-width: 280px; flex: 1; }
.lista-linhas .lista-acao { margin-left: auto; }

/* ---------------------------------------------------------------- Faltas › Controlo Interno */
.conversao-opcoes { margin: 0 0 6px; }
.campo-divisor { width: 90px; }
.conversao-origem { font-size: 12px; white-space: normal; }

/* ---------------------------------------------------------------- Faltas › Comunicações */
.comunicacoes-colunas { align-items: start; }
.comunicacoes-filtros { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.comunicacoes-acoes { margin-top: 8px; }
.comunicacoes-email { margin-top: 14px; padding-top: 6px; border-top: 1px solid var(--linha); display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.comunicacoes-email p { margin: 0; font-size: 13px; }
.grelha-dx .envio-ok td { background: #edf7ee; }
.grelha-dx .envio-aviso td { background: #fff8e1; }
.grelha-dx .envio-erro td { background: #fdeeee; }

/* telemóvel / tablet */
@media (max-width: 700px) {
    .faltas-alunos { grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); }
    .faltas-alunos .foto-aluno { width: 48px; height: 48px; }
    .faltas-aulas { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
    .falta-tipo { padding: 8px 12px; }
}
/* Justificação: turmas com pedidos por aprovar no topo (o clique escolhe a turma) */
.turmas-pedidos { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-right: 10px; }
.turmas-pedidos .chip { gap: 6px; }
.turmas-pedidos .chip.ativo .pasta-contador { background: rgba(255,255,255,.25); }

/* Marcação › Vários tempos (calendário da turma e escolha dos alunos) */
.faltas-dias { display: flex; flex-wrap: wrap; gap: 6px; padding: 2px 4px 8px; }
.ev-futura-f { border-left-color: #b0bec5; background: #f3f5f6; color: var(--texto-2); }
.leg-falta::before { background: #e0a800; }
.leg-futura-f::before { background: #b0bec5; }
.faltas-varios { display: flex; flex-direction: column; gap: 10px; }
.faltas-varios-titulo { display: flex; align-items: center; gap: 8px; margin: 6px 0 0; font-size: 14px; font-weight: 600; }
.faltas-varios-tempos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; max-height: 30vh; overflow: auto; }
.faltas-varios-tempos li { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; padding: 6px 4px; border-bottom: 1px solid var(--linha); font-size: 13px; }
.faltas-varios-alunos { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 2px 12px; max-height: 40vh; overflow: auto; }
.faltas-varios-alunos label { display: flex; align-items: center; gap: 6px; padding: 4px; font-size: 13px; cursor: pointer; border-radius: 4px; }
.faltas-varios-alunos label:hover { background: var(--azul-claro); }
.faltas-varios-alunos label.inativo { opacity: .5; cursor: not-allowed; }
.faltas-varios-alunos .aluno-num { min-width: 22px; text-align: right; color: var(--texto-2); }
.faltas-varios-notas { margin: 0 0 10px; padding-left: 18px; font-size: 13px; }
