/* Validation Error Styles */

.form-control.is-invalid {
    border-color: var(--color-red-300);
    box-shadow: 0 0 0 0.2rem rgba(248, 113, 113, 0.25);
}

.form-control.is-invalid:focus {
    border-color: var(--color-red-300);
    box-shadow: 0 0 0 0.2rem rgba(248, 113, 113, 0.25);
}

.invalid-feedback {
    display: none;
    width: 100%;
    margin-top: 0.25rem;
    font-size: var(--font-size-sm);
    color: var(--color-red-600);
}

.form-control.is-invalid ~ .invalid-feedback {
    display: block;
}

.was-validated .form-control:invalid {
    border-color: var(--color-red-300);
    box-shadow: 0 0 0 0.2rem rgba(248, 113, 113, 0.25);
}

.was-validated .form-control:invalid ~ .invalid-feedback {
    display: block;
}

.was-validated .form-control:valid {
    border-color: var(--color-green-300);
    box-shadow: 0 0 0 0.2rem rgba(34, 197, 94, 0.25);
}

/* Alert Styles for Feedback */
.alert {
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
    border: 1px solid transparent;
    border-radius: var(--border-radius);
}

.alert-success {
    color: var(--color-green-800);
    background-color: var(--color-green-50);
    border-color: var(--color-green-200);
}

.alert-danger {
    color: var(--color-red-800);
    background-color: var(--color-red-50);
    border-color: var(--color-red-200);
}

.alert-warning {
    color: var(--color-yellow-800);
    background-color: var(--color-yellow-50);
    border-color: var(--color-yellow-200);
}

.alert-info {
    color: var(--color-blue-800);
    background-color: var(--color-blue-50);
    border-color: var(--color-blue-200);
}

/* Form validation states */
.form-group.has-error .form-control {
    border-color: var(--color-red-300);
}

.form-group.has-error .form-label {
    color: var(--color-red-600);
}

.form-group.has-success .form-control {
    border-color: var(--color-green-300);
}

.help-text {
    font-size: var(--font-size-sm);
    color: var(--color-gray-500);
    margin-top: 0.25rem;
}

.help-text.error {
    color: var(--color-red-600);
}