/* ==========================================================================
   forms.css — Inputs, selects, checks, labels, validation
   ========================================================================== */

.form-label {
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--crm-text);
    margin-bottom: 0.375rem;
}

.form-text {
    font-size: 0.75rem;
    color: var(--crm-text-muted);
}

.form-control,
.form-select {
    font-size: 0.875rem;
    color: var(--crm-ink);
    background-color: var(--crm-surface);
    border: 1px solid var(--crm-border-strong);
    border-radius: var(--crm-radius-sm);
    padding: 0.4688rem 0.75rem;
    box-shadow: var(--crm-shadow-xs);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.form-control::placeholder { color: var(--crm-text-faint); }

.form-control:focus,
.form-select:focus {
    border-color: var(--crm-primary);
    box-shadow: 0 0 0 3px rgba(74, 90, 194, 0.12);
    outline: none;
}

.form-control:disabled,
.form-select:disabled {
    background-color: var(--crm-surface-alt);
    color: var(--crm-text-muted);
    border-color: var(--crm-border);
    box-shadow: none;
    cursor: not-allowed;
}

.form-control-sm,
.form-select-sm {
    font-size: 0.8125rem;
    padding: 0.3125rem 0.5625rem;
    border-radius: var(--crm-radius-sm);
}
.form-select-sm { padding-right: 1.75rem; }

textarea.form-control { min-height: 96px; line-height: 1.55; }

/* Search input groups (icon prefix pattern used on filter bars) */
.input-group-text {
    background: var(--crm-surface) !important;
    border: 1px solid var(--crm-border-strong);
    border-radius: var(--crm-radius-sm);
    color: var(--crm-text-faint);
    font-size: 0.8125rem;
}
.input-group .form-control.border-start-0 { border-left: 0; box-shadow: none; }
.input-group .input-group-text.border-end-0 { border-right: 0; }
.input-group:focus-within .input-group-text,
.input-group:focus-within .form-control {
    border-color: var(--crm-primary);
}

/* Checks, radios, switches */
.form-check-input {
    border: 1px solid var(--crm-border-strong);
    box-shadow: var(--crm-shadow-xs);
}
.form-check-input:checked {
    background-color: var(--crm-primary) !important;
    border-color: var(--crm-primary) !important;
}
.form-check-input:focus {
    border-color: var(--crm-primary);
    box-shadow: 0 0 0 3px rgba(74, 90, 194, 0.12);
}
.form-check-label { font-size: 0.8438rem; color: var(--crm-text); }

/* Validation */
.form-control.is-invalid,
.form-select.is-invalid {
    border-color: var(--crm-danger);
    box-shadow: none;
}
.form-control.is-invalid:focus,
.form-select.is-invalid:focus {
    box-shadow: 0 0 0 3px rgba(180, 35, 24, 0.12);
}
.invalid-feedback {
    font-size: 0.75rem;
    color: var(--crm-danger);
}

/* File inputs */
.form-control[type="file"] { padding: 0.375rem 0.625rem; }
.form-control[type="file"]::file-selector-button {
    background: var(--crm-surface-alt);
    border: 1px solid var(--crm-border);
    border-radius: 4px;
    color: var(--crm-text);
    font-size: 0.8125rem;
    font-weight: 500;
    padding: 0.25rem 0.625rem;
    margin-right: 0.75rem;
    transition: background-color 0.15s ease;
}
.form-control[type="file"]::file-selector-button:hover {
    background: var(--crm-border);
}

/* Date inputs — align icon color with the palette */
input[type="date"].form-control,
input[type="datetime-local"].form-control {
    color: var(--crm-ink);
}
