/**
 * Forms Enhancements CSS
 */

/* Flatpickr Custom Styling */
.flatpickr-custom {
    font-family: var(--font-family, 'Open Sans', sans-serif);
}

.flatpickr-calendar {
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    border: 1px solid var(--color-border, #E0E0E0);
}

.flatpickr-day.selected,
.flatpickr-day.startRange,
.flatpickr-day.endRange {
    background: var(--color-primary, #8B0000);
    border-color: var(--color-primary, #8B0000);
}

.flatpickr-day.selected:hover,
.flatpickr-day.startRange:hover,
.flatpickr-day.endRange:hover {
    background: var(--color-primary-dark, #6B0000);
    border-color: var(--color-primary-dark, #6B0000);
}

.flatpickr-day.today {
    border-color: var(--color-primary, #8B0000);
}

.flatpickr-day.today:hover {
    background: var(--color-primary-light, rgba(139, 0, 0, 0.1));
}

/* Form Field Validation States */
.form-control.is-valid {
    border-color: #28a745;
    box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}

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

.form-control.is-valid:focus {
    border-color: #28a745;
    box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}

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

/* Character Counter */
.char-counter {
    font-size: 0.875rem;
    color: var(--color-text-light, #666);
    margin-top: 0.25rem;
    text-align: right;
    transition: color 0.2s ease;
}

.char-counter.warning {
    color: #ffc107;
}

.char-counter.danger {
    color: #dc3545;
}

/* Enhanced Textarea */
textarea.form-control {
    resize: vertical;
    min-height: 100px;
    transition: height 0.2s ease;
}

/* Number Input Enhancements */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
    opacity: 1;
    height: auto;
}

/* Date Input with Flatpickr */
input.date-picker {
    cursor: pointer;
}

input.date-picker:read-only {
    background-color: var(--color-white, #fff);
    cursor: pointer;
}

/* Form Group Enhancements */
.form-group {
    position: relative;
}

.form-group .form-help {
    font-size: 0.875rem;
    color: var(--color-text-light, #666);
    margin-top: 0.25rem;
    line-height: 1.4;
}

/* Focus States */
.form-control:focus {
    outline: none;
    border-color: var(--color-primary, #8B0000);
    box-shadow: 0 0 0 0.2rem rgba(139, 0, 0, 0.1);
    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

/* Loading State for Form Submission */
form[data-loading="true"] .form-control {
    opacity: 0.6;
    pointer-events: none;
}

form[data-loading="true"] button[type="submit"] {
    opacity: 0.7;
    cursor: not-allowed;
}
