/* ================================================================
   📝 DARK MODE - ADVANCED FORMS
   Formulaires avancés, date pickers, file upload, etc.
   ================================================================ */

/* ===== SELECT2 / MULTISELECT ===== */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
    background-color: var(--bg-elevated);
    border-color: var(--border-primary);
    color: var(--text-primary);
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
    color: var(--text-primary);
}

.select2-container--default .select2-selection--single .select2-selection__placeholder {
    color: var(--text-muted);
}

.select2-dropdown {
    background-color: var(--bg-elevated);
    border-color: var(--border-primary);
    box-shadow: var(--shadow-lg);
}

.select2-results__option {
    color: var(--text-primary);
    background-color: var(--bg-elevated);
}

.select2-results__option--highlighted {
    background-color: var(--bg-tertiary) !important;
    color: var(--text-primary) !important;
}

.select2-results__option[aria-selected="true"] {
    background-color: rgba(94, 129, 255, 0.15) !important;
}

.select2-search--dropdown .select2-search__field {
    background-color: var(--bg-secondary);
    border-color: var(--border-primary);
    color: var(--text-primary);
}

.select2-container--default .select2-selection--multiple .select2-selection__choice {
    background-color: var(--accent-primary);
    border-color: var(--accent-primary);
    color: #ffffff;
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
    color: #ffffff;
}

/* ===== DATE PICKERS (FLATPICKR) ===== */
.flatpickr-calendar {
    background: var(--bg-elevated);
    border-color: var(--border-primary);
    box-shadow: var(--shadow-lg);
}

.flatpickr-months {
    background: var(--bg-secondary);
    border-bottom: 1px solid var(--border-primary);
}

.flatpickr-months .flatpickr-month,
.flatpickr-current-month .flatpickr-monthDropdown-months {
    color: var(--text-primary);
    background: transparent;
}

.flatpickr-current-month input.cur-year {
    color: var(--text-primary);
}

.flatpickr-weekdays {
    background: var(--bg-secondary);
}

.flatpickr-weekday {
    color: var(--text-secondary);
}

.flatpickr-day {
    color: var(--text-primary);
}

.flatpickr-day:hover {
    background: var(--bg-tertiary);
    border-color: var(--bg-tertiary);
}

.flatpickr-day.selected {
    background: var(--accent-primary);
    border-color: var(--accent-primary);
    color: #ffffff;
}

.flatpickr-day.today {
    border-color: var(--accent-primary);
}

.flatpickr-day.disabled,
.flatpickr-day.flatpickr-disabled {
    color: var(--text-disabled);
}

.flatpickr-time {
    border-top: 1px solid var(--border-primary);
}

.flatpickr-time input {
    color: var(--text-primary);
    background: var(--bg-secondary);
}

.flatpickr-time .flatpickr-am-pm {
    color: var(--text-primary);
    background: var(--bg-secondary);
}

/* ===== DATE PICKERS (BOOTSTRAP-DATEPICKER) ===== */
.datepicker {
    background-color: var(--bg-elevated);
    border-color: var(--border-primary);
    box-shadow: var(--shadow-lg);
}

.datepicker table tr td,
.datepicker table tr th {
    color: var(--text-primary);
}

.datepicker table tr td.day:hover {
    background: var(--bg-tertiary);
}

.datepicker table tr td.active,
.datepicker table tr td.active:hover,
.datepicker table tr td.active.disabled,
.datepicker table tr td.active.disabled:hover {
    background-color: var(--accent-primary);
    color: #ffffff;
}

.datepicker table tr td.today {
    background-color: rgba(94, 129, 255, 0.15);
    color: var(--accent-primary);
}

.datepicker table tr td.disabled,
.datepicker table tr td.disabled:hover {
    color: var(--text-disabled);
}

/* ===== FILE UPLOAD (DROPZONE) ===== */
.dropzone {
    background: var(--bg-secondary);
    border: 2px dashed var(--border-primary);
    color: var(--text-secondary);
}

.dropzone:hover {
    border-color: var(--accent-primary);
    background: var(--bg-tertiary);
}

.dropzone .dz-message {
    color: var(--text-secondary);
}

.dropzone .dz-preview {
    background: var(--bg-elevated);
    border: 1px solid var(--border-primary);
}

.dropzone .dz-preview .dz-details {
    background-color: var(--bg-secondary);
    color: var(--text-primary);
}

.dropzone .dz-preview .dz-filename {
    color: var(--text-primary);
}

.dropzone .dz-preview .dz-size {
    color: var(--text-secondary);
}

.dropzone .dz-preview .dz-error-message {
    background: var(--accent-danger);
    color: #ffffff;
}

.dropzone .dz-preview .dz-success-mark,
.dropzone .dz-preview .dz-error-mark {
    background: var(--bg-elevated);
}

/* ===== CUSTOM FILE INPUT ===== */
.custom-file-input,
.file-upload-wrapper {
    position: relative;
    display: inline-block;
}

.custom-file-label {
    background-color: var(--bg-elevated);
    border: 1px solid var(--border-primary);
    color: var(--text-primary);
    padding: 0.375rem 0.75rem;
    border-radius: 0.25rem;
    cursor: pointer;
    transition: background-color var(--transition-fast);
}

.custom-file-label:hover {
    background-color: var(--bg-tertiary);
}

.custom-file-label::after {
    content: "Parcourir";
    background-color: var(--accent-primary);
    color: #ffffff;
    padding: 0.375rem 0.75rem;
    border-radius: 0 0.25rem 0.25rem 0;
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    display: flex;
    align-items: center;
}

/* ===== COLOR PICKER ===== */
.colorpicker,
.color-picker-wrapper {
    background-color: var(--bg-elevated);
    border-color: var(--border-primary);
    box-shadow: var(--shadow-lg);
}

.colorpicker .colorpicker-saturation {
    background-color: var(--bg-secondary);
}

.colorpicker .colorpicker-hue,
.colorpicker .colorpicker-alpha {
    background-color: var(--bg-secondary);
}

.colorpicker-color {
    border-color: var(--border-primary);
}

/* ===== RANGE SLIDER ===== */
input[type="range"] {
    background: var(--bg-secondary);
}

input[type="range"]::-webkit-slider-thumb {
    background: var(--accent-primary);
    border: 2px solid var(--bg-elevated);
}

input[type="range"]::-moz-range-thumb {
    background: var(--accent-primary);
    border: 2px solid var(--bg-elevated);
}

input[type="range"]::-webkit-slider-runnable-track {
    background: var(--bg-tertiary);
}

input[type="range"]::-moz-range-track {
    background: var(--bg-tertiary);
}

/* ===== TAGS INPUT ===== */
.bootstrap-tagsinput {
    background-color: var(--bg-elevated);
    border-color: var(--border-primary);
    color: var(--text-primary);
}

.bootstrap-tagsinput .tag {
    background-color: var(--accent-primary);
    color: #ffffff;
    border-radius: 0.25rem;
    padding: 0.25rem 0.5rem;
}

.bootstrap-tagsinput .tag [data-role="remove"] {
    color: #ffffff;
}

.bootstrap-tagsinput input {
    color: var(--text-primary);
}

.bootstrap-tagsinput input::placeholder {
    color: var(--text-muted);
}

/* ===== WYSIWYG EDITORS ===== */
/* TinyMCE */
.tox .tox-menubar,
.tox .tox-toolbar,
.tox .tox-toolbar__primary {
    background-color: var(--bg-secondary) !important;
    border-color: var(--border-primary) !important;
}

.tox .tox-edit-area {
    background-color: var(--bg-elevated) !important;
}

.tox .tox-edit-area__iframe {
    background-color: var(--bg-elevated) !important;
}

.tox .tox-tbtn {
    color: var(--text-primary) !important;
}

.tox .tox-tbtn:hover {
    background-color: var(--bg-tertiary) !important;
}

.tox .tox-tbtn--enabled {
    background-color: var(--accent-primary) !important;
    color: #ffffff !important;
}

.tox .tox-menu {
    background-color: var(--bg-elevated) !important;
    border-color: var(--border-primary) !important;
}

.tox .tox-collection__item {
    color: var(--text-primary) !important;
}

.tox .tox-collection__item:hover {
    background-color: var(--bg-tertiary) !important;
}

/* Quill */
.ql-toolbar {
    background-color: var(--bg-secondary);
    border-color: var(--border-primary);
}

.ql-container {
    background-color: var(--bg-elevated);
    border-color: var(--border-primary);
    color: var(--text-primary);
}

.ql-editor {
    color: var(--text-primary);
}

.ql-editor.ql-blank::before {
    color: var(--text-muted);
}

.ql-stroke {
    stroke: var(--text-primary);
}

.ql-fill {
    fill: var(--text-primary);
}

.ql-picker-label {
    color: var(--text-primary);
}

.ql-picker-options {
    background-color: var(--bg-elevated);
    border-color: var(--border-primary);
}

.ql-picker-item:hover {
    background-color: var(--bg-tertiary);
}

.ql-active .ql-stroke,
.ql-toolbar button:hover .ql-stroke {
    stroke: var(--accent-primary);
}

.ql-active .ql-fill,
.ql-toolbar button:hover .ql-fill {
    fill: var(--accent-primary);
}

/* ===== AUTOCOMPLETE ===== */
.autocomplete-suggestions {
    background: var(--bg-elevated);
    border-color: var(--border-primary);
    box-shadow: var(--shadow-lg);
}

.autocomplete-suggestion {
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-secondary);
}

.autocomplete-suggestion:hover,
.autocomplete-suggestion.selected {
    background-color: var(--bg-tertiary);
}

/* ===== INPUT GROUPS ===== */
.input-group-text {
    background-color: var(--bg-secondary);
    border-color: var(--border-primary);
    color: var(--text-primary);
}

.input-group > .form-control:focus + .input-group-text {
    border-color: var(--border-focus);
}

/* ===== VALIDATION STATES ===== */
.was-validated .form-control:valid,
.form-control.is-valid {
    border-color: var(--accent-success);
}

.was-validated .form-control:invalid,
.form-control.is-invalid {
    border-color: var(--accent-danger);
}

.valid-feedback {
    color: var(--accent-success);
}

.invalid-feedback {
    color: var(--accent-danger);
}

/* ===== FORM WIZARD / STEPS ===== */
.wizard-steps {
    background-color: var(--bg-secondary);
    border-radius: 8px;
    padding: 1rem;
}

.wizard-step {
    color: var(--text-secondary);
    border-color: var(--border-primary);
}

.wizard-step.active {
    color: var(--accent-primary);
    border-color: var(--accent-primary);
}

.wizard-step.completed {
    color: var(--accent-success);
    border-color: var(--accent-success);
}

.wizard-step-icon {
    background-color: var(--bg-elevated);
    border: 2px solid var(--border-primary);
    color: var(--text-secondary);
}

.wizard-step.active .wizard-step-icon {
    background-color: var(--accent-primary);
    border-color: var(--accent-primary);
    color: #ffffff;
}

.wizard-step.completed .wizard-step-icon {
    background-color: var(--accent-success);
    border-color: var(--accent-success);
    color: #ffffff;
}

/* ===== RESPONSIVE ===== */
@media (max-width: 768px) {
    .select2-container {
        width: 100% !important;
    }
    
    .flatpickr-calendar {
        width: 100%;
    }
    
    .dropzone {
        padding: 1rem;
    }
}

/* ===== TRANSITIONS ===== */
.form-control,
.form-select,
.select2-container,
.flatpickr-input,
.custom-file-label,
input[type="range"] {
    transition: background-color var(--transition-fast),
                color var(--transition-fast),
                border-color var(--transition-fast);
}
