/**
 * Formularios SGAD — marcacao de campo obrigatorio e feedback de validacao.
 *
 * Camada compartilhada: nao depende do CSS de nenhum modulo e nao usa
 * seletores de modulo. Qualquer tela pode incluir as classes daqui.
 *
 * Ver "Formularios, validacao e feedback (REGRA)" no CLAUDE.md.
 */

:root {
    --sgad-form-erro: #dc3545;
    --sgad-form-erro-fundo: rgba(220, 53, 69, 0.08);
    --sgad-form-erro-sombra: rgba(220, 53, 69, 0.18);
}

/* Asterisco de campo obrigatorio. Sempre vermelho, inclusive no dark. */
.sgad-obrigatorio {
    color: var(--sgad-form-erro);
    font-weight: 700;
    margin-left: 2px;
    line-height: 1;
}

/* Estado invalido do input. `!important` porque os CSS de modulo
   (usuarios-module.css e afins) definem borda e fundo com especificidade alta,
   e o estado de erro precisa vencer em qualquer tela. */
.sgad-campo-invalido,
.sgad-campo-invalido:focus {
    border-color: var(--sgad-form-erro) !important;
    background-color: var(--sgad-form-erro-fundo) !important;
    box-shadow: 0 0 0 3px var(--sgad-form-erro-sombra) !important;
}

/* Mensagem logo abaixo do input. */
.sgad-campo-erro {
    display: flex;
    align-items: flex-start;
    gap: 6px;
    margin-top: 6px;
    font-size: 0.8125rem;
    line-height: 1.35;
    color: var(--sgad-form-erro);
}

.sgad-campo-erro::before {
    content: "\F33A"; /* bi-exclamation-circle-fill */
    font-family: "bootstrap-icons";
    font-size: 0.875rem;
    line-height: 1.2;
    flex-shrink: 0;
}

/* Checkbox e radio: a mensagem ancora no wrapper, nao no input. */
.form-check .sgad-campo-erro,
.sgad-campo-erro.is-check {
    margin-top: 4px;
}

/* ------------------------------------------------------------------
   Dark mode
   O SGAD usa tema explicito: `data-theme="dark"` no <html> (public/js/theme.js
   remove o atributo no tema claro). Nao usar prefers-color-scheme aqui, senao
   quem esta no tema claro com o sistema operacional escuro ve a cor errada.

   O vermelho clareia para manter contraste sobre fundo escuro; o fundo do
   input continua escuro, so recebe o tom de erro.
   ------------------------------------------------------------------ */

[data-theme="dark"] {
    --sgad-form-erro: #ff6b7a;
    --sgad-form-erro-fundo: rgba(255, 107, 122, 0.12);
    --sgad-form-erro-sombra: rgba(255, 107, 122, 0.22);
}
