/* Estilos de Validação de Formulários - Bens Patrimoniais */

/* Indicador de campo obrigatório */
.required-field::after {
    content: " *";
    color: #dc3545;
    font-weight: bold;
    margin-left: 2px;
}

/* Estilo para campos inválidos */
.invalid {
    border-color: #dc3545 !important;
    padding-right: calc(1.5em + 0.75rem);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right calc(0.375em + 0.1875rem) center;
    background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}

.invalid:focus {
    border-color: #dc3545;
    box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
}

/* Estilo para select inválidos */
select.invalid {
    background-position: right 2.25rem center, center right 0.75rem;
    background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}

/* Estilo para campos válidos (opcional - comentado por padrão) */
/*
.valid {
    border-color: #198754;
    padding-right: calc(1.5em + 0.75rem);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right calc(0.375em + 0.1875rem) center;
    background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
*/

/* Mensagens de validação */
.validation-message {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.875em;
    color: #dc3545;
    font-weight: 500;
}

/* Ícone de erro na mensagem de validação */
.validation-message::before {
    content: "⚠ ";
    font-weight: bold;
}

/* Estilo para formulários com erro */
.was-validated .form-control:invalid,
.was-validated .form-select:invalid {
    border-color: #dc3545;
}

/* Destaque para grupo de campos com erro */
.has-error {
    animation: shake 0.5s;
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
    20%, 40%, 60%, 80% { transform: translateX(5px); }
}

/* Tooltip de erro (opcional) */
.field-validation-error {
    color: #dc3545;
    font-size: 0.875rem;
    margin-top: 0.25rem;
    display: block;
}

/* Ajuste para InputTextArea */
textarea.invalid {
    background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
}

/* Ajuste para checkboxes e radio buttons */
.form-check-input.invalid {
    border-color: #dc3545;
}

.form-check-input.invalid:checked {
    background-color: #dc3545;
    border-color: #dc3545;
}

/* Estilo para resumo de erros (se implementado) */
.validation-summary-errors {
    background-color: #f8d7da;
    border: 1px solid #f5c2c7;
    border-radius: 0.375rem;
    padding: 1rem;
    margin-bottom: 1rem;
    color: #842029;
}

.validation-summary-errors ul {
    margin: 0;
    padding-left: 1.5rem;
}

.validation-summary-errors li {
    margin-bottom: 0.25rem;
}

/* Efeito de focus em campos com erro */
.invalid:focus {
    outline: none;
    border-color: #dc3545;
    box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
}

/* Ajuste para disabled buttons durante validação */
button[type="submit"]:disabled {
    cursor: not-allowed;
    opacity: 0.65;
}

/* Spinner de loading */
.spinner-border-sm {
    width: 1rem;
    height: 1rem;
    border-width: 0.15em;
}

/* Destaque sutil para campos obrigatórios não preenchidos ao submeter */
.was-validated .form-control:invalid:not(:focus),
.was-validated .form-select:invalid:not(:focus) {
    border-color: #dc3545;
    background-color: #fff5f5;
}
