/* ============================================
   Inputs / States
   États partagés par tous les contrôles : input, select, textarea.
   NE PAS déclarer ces états dans d'autres fichiers inputs/.
   ============================================ */

/* ===== FOCUS ===== */
input:focus,
select:focus,
textarea:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(30, 58, 138, 0.1);
}

/* ===== PLACEHOLDER ===== */
input::placeholder,
textarea::placeholder {
    color: var(--slate-400);
}

/* ===== ERROR ===== */
.form-group.error input,
.form-group.error select,
.form-group.error textarea,
input.error,
select.error,
textarea.error {
    border-color: var(--error);
}

.form-group.error input:focus,
.form-group.error select:focus,
.form-group.error textarea:focus {
    box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}

/* ===== SUCCESS ===== */
.form-group.success input,
.form-group.success select,
.form-group.success textarea,
input.success,
select.success,
textarea.success {
    border-color: var(--success);
}

/* ===== DISABLED ===== */
input:disabled,
select:disabled,
textarea:disabled {
    background: var(--bg-tertiary);
    color: var(--text-tertiary);
    cursor: not-allowed;
    border-color: var(--border-light);
}

/* ===== READONLY ===== */
input:read-only,
textarea:read-only {
    background: var(--slate-50);
    color: var(--text-secondary);
}

/* ===== FILE INPUT ===== */
input[type="file"] {
    padding: var(--spacing-sm) var(--spacing-md);
    height: auto;
    cursor: pointer;
    background: var(--bg-primary);
    border: 1px solid var(--slate-300);
    border-radius: var(--radius-md);
    font-size: var(--font-sm);
    color: var(--text-secondary);
    width: 100%;
    box-sizing: border-box;
}

input[type="file"]::-webkit-file-upload-button {
    background: var(--bg-tertiary);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    font-size: var(--font-sm);
    color: var(--text-primary);
    cursor: pointer;
    margin-right: var(--spacing-sm);
}

/* ===== DARK MODE — INPUT BORDERS ===== */
body.dark-mode input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
body.dark-mode select,
body.dark-mode textarea {
    border-color: var(--border-color);
    background-color: var(--color-input-bg); /* background-color only — background shorthand resetterait background-image/repeat des select */
    color: var(--text-primary);
}

body.dark-mode input:read-only,
body.dark-mode textarea:read-only {
    background: var(--bg-tertiary);
    color: var(--text-secondary);
}

body.dark-mode input:focus,
body.dark-mode select:focus,
body.dark-mode textarea:focus {
    border-color: var(--primary-light);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);
}

/* ===== FORM INPUT ERROR CLASS ===== */
/* Applied by FormHelper when Validator::errors() contains this field. */
.form-input--error {
    border-color: var(--error) !important;
}

.form-input--error:focus {
    box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
    border-color: var(--error);
}
