/* Stili validazione form AdminLTE */
.form-control.is-invalid,
.was-validated .form-control:invalid {
    border-color: #dc3545;
}

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

/* Container a altezza fissa per lo spazio degli errori */
.error-container {
    min-height: 1.5rem;
    height: 1.5rem;
    margin-top: 0.25rem;
    margin-bottom: 0.75rem;
    position: relative;
}

.invalid-feedback {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
    font-size: 0.875rem;
    line-height: 1.2;
    color: #dc3545;
    position: absolute;
    top: 0;
    left: 0;
}

/* Placeholder invisibile per riservare spazio agli errori - sempre presente */
.error-placeholder {
    display: block;
    width: 100%;
    height: 1.5rem;
    margin: 0;
    padding: 0;
    visibility: hidden;
    box-sizing: border-box;
}

/* Quando c'è un errore, nascondi il placeholder */
.error-container.has-error .error-placeholder {
    display: none;
}

/* Quando c'è un errore, riduci il margine dell'input-group */
.form-group .input-group.has-error {
    margin-bottom: 0 !important;
}

/* Input append squadrati (rimuove border-radius) */
.input-group-append .input-group-text {
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}

.input-group-prepend .input-group-text {
    border-top-left-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
}

/* Assicura che anche l'input abbia angoli squadrati quando è con append */
.input-group > .form-control:not(:first-child) {
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}

.input-group > .form-control:not(:last-child) {
    border-top-left-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
}

/* Pulsante toggle password (occhietto): aspetto come gli altri addon, cursore pointer */
#togglePassword {
    cursor: pointer;
}
