/* ============================================================================ */
/*                        SELECT2 BOOTSTRAP 5 COMPATIBILITY FIX               */
/* ============================================================================ */
/*
 * DESCRIPTION:
 * Ce fichier CSS corrige les incompatibilités d'affichage entre Select2 et
 * Bootstrap 5 dans l'application TerraPartus. Il résout spécifiquement les
 * problèmes de double flèches, d'alignement et de dimensionnement.
 *
 * CONTEXTE TECHNIQUE:
 * Bootstrap 5 a introduit de nouveaux styles pour les éléments <select> qui
 * entrent en conflit avec le système de rendu de Select2. Ces conflits
 * génèrent des problèmes visuels majeurs dans les formulaires.
 *
 * PROBLÈMES RÉSOLUS:
 * ✓ Double flèches (Bootstrap + Select2)
 * ✓ Hauteur incohérente avec les inputs Bootstrap
 * ✓ Texte mal centré verticalement
 * ✓ Select2 multiples excessivement hauts
 * ✓ Styles de focus et validation incohérents
 * ✓ Conflits avec les couleurs de thème personnalisées
 * ✓ Problèmes de z-index dans les modals
 *
 * DÉPENDANCES REQUISES:
 * - Bootstrap 5.1.0+ (déjà inclus via CDN)
 * - Select2 (version utilisée via autocomplete_light)
 * - jQuery 3.7.1+ (déjà inclus)
 *
 * ORDRE D'INCLUSION CRITIQUE:
 * 1. Bootstrap CSS
 * 2. Select2 CSS (via autocomplete_light)
 * 3. Styles personnalisés de l'application
 * 4. CE FICHIER (doit être chargé EN DERNIER)
 *
 * INTÉGRATION:
 * Ajouter dans <head> après tous les autres CSS:
 * <link rel="stylesheet" href="/static/css/select2-fixes.css">
 *
 * COMPATIBILITÉ:
 * - Bootstrap 5.x
 * - Select2 4.x
 * - django-autocomplete-light
 * - Navigateurs modernes (Chrome 90+, Firefox 88+, Safari 14+)
 * - Responsive design (mobile-first)
 * - Mode sombre (prefers-color-scheme: dark)
 * - Accessibilité (focus visible, reduced-motion)
 *
 * MAINTENANCE:
 * - Vérifier la compatibilité lors des mises à jour Bootstrap
 * - Tester après modification des styles Select2
 * - Adapter si changement de version django-autocomplete-light
 *
 * STRUCTURE DU FICHIER:
 * 1. Correction des doubles flèches Bootstrap/Select2
 * 2. Normalisation des dimensions et alignements
 * 3. Styles pour Select2 simple (single)
 * 4. Styles pour Select2 multiple
 * 5. États interactifs (focus, hover, validation)
 * 6. Styles pour les dropdowns
 * 7. Gestion des erreurs et validation
 * 8. Adaptations responsive
 * 9. Support mode sombre
 * 10. Corrections spécifiques au thème TerraPartus
 *
 * NOTES DE DÉBOGAGE:
 * - Si les styles ne s'appliquent pas: vérifier l'ordre de chargement CSS
 * - Si double flèche persiste: vérifier les styles Bootstrap personnalisés
 * - Si hauteur incorrecte: vérifier les calc() dans les navigateurs anciens
 * - Utiliser !important uniquement quand nécessaire pour la spécificité CSS
 *
 * AUTEUR: Équipe TerraPartus
 * VERSION: 1.0
 * DERNIÈRE MODIFICATION: 2025
 *
 * ============================================================================ */

/* Fix pour éliminer la double flèche Bootstrap sur Select2 */
.select2-container .select2-selection--single {
    /* Supprimer la flèche Bootstrap */
    background-image: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
}

/* Styles généraux pour Select2 */
.select2-container {
    width: 100% !important;
    z-index: 9999;
}

/* Correction de la hauteur et centrage du texte pour Select2 simple */
.select2-container .select2-selection--single {
    height: calc(2.25rem + 2px) !important; /* Même hauteur que les inputs Bootstrap */
    border: 1px solid #ced4da !important;
    border-radius: 0.375rem !important;
    padding: 0 !important;
}

.select2-container .select2-selection--single .select2-selection__rendered {
    line-height: calc(2.25rem) !important; /* Centrage vertical du texte */
    padding-left: 0.75rem !important;
    padding-right: 2rem !important; /* Espace pour la flèche */
    color: #495057 !important;
    font-size: 1rem !important;
}

.select2-container .select2-selection--single .select2-selection__placeholder {
    color: #6c757d !important;
}

/* Flèche Select2 - repositionnement et style */
.select2-container .select2-selection--single .select2-selection__arrow {
    height: calc(2.25rem) !important;
    right: 0.75rem !important;
    width: 20px !important;
}

.select2-container .select2-selection--single .select2-selection__arrow b {
    border-color: #495057 transparent transparent transparent !important;
    border-style: solid !important;
    border-width: 5px 4px 0 4px !important;
    height: 0 !important;
    left: 50% !important;
    margin-left: -4px !important;
    margin-top: -2px !important;
    position: absolute !important;
    top: 50% !important;
    width: 0 !important;
}

/* Fix pour Select2 Multiple - Hauteur excessive */
.select2-container .select2-selection--multiple {
    min-height: calc(2.25rem + 2px) !important;
    border: 1px solid #ced4da !important;
    border-radius: 0.375rem !important;
    padding: 0.375rem 0.375rem 0 0.375rem !important;
}

/* Correction des tags dans Select2 multiple */
.select2-container .select2-selection--multiple .select2-selection__choice {
    background-color: #e9ecef !important;
    border: 1px solid #ced4da !important;
    border-radius: 0.25rem !important;
    color: #495057 !important;
    font-size: 0.875rem !important;
    line-height: 1.5 !important;
    margin-bottom: 0.375rem !important;
    margin-right: 0.375rem !important;
    padding: 0.25rem 0.5rem !important;
}

.select2-container .select2-selection--multiple .select2-selection__choice__remove {
    color: #6c757d !important;
    font-size: 1.2em !important;
    font-weight: bold !important;
    margin-right: 0.25rem !important;
}

.select2-container .select2-selection--multiple .select2-selection__choice__remove:hover {
    color: #dc3545 !important;
}

/* Zone de saisie dans Select2 multiple */
.select2-container .select2-selection--multiple .select2-search__field {
    margin-top: 0 !important;
    height: calc(1.5em + 0.75rem) !important;
    line-height: 1.5 !important;
    font-size: 1rem !important;
}

/* États focus */
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--focus .select2-selection--multiple {
    border-color: #86b7fe !important;
    outline: 0 !important;
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25) !important;
}

/* Dropdown Select2 */
.select2-dropdown {
    border: 1px solid #ced4da !important;
    border-radius: 0.375rem !important;
    z-index: 9999 !important;
}

.select2-container--default .select2-results__option--highlighted[aria-selected] {
    background-color: #0d6efd !important;
    color: white !important;
}

.select2-container--default .select2-results__option[aria-selected=true] {
    background-color: #e7f1ff !important;
    color: #0d6efd !important;
}

/* Recherche dans le dropdown */
.select2-search--dropdown .select2-search__field {
    border: 1px solid #ced4da !important;
    border-radius: 0.375rem !important;
    padding: 0.375rem 0.75rem !important;
    font-size: 1rem !important;
}

/* États d'erreur pour Select2 (compatibilité avec django-error-handler.css) */
.select2-container.is-invalid .select2-selection,
.select2-container.is-invalid .select2-selection--single,
.select2-container.is-invalid .select2-selection--multiple {
    border-color: #dc3545 !important;
    box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25) !important;
}

.select2-container.is-invalid .select2-selection:focus,
.select2-container.is-invalid .select2-selection--single:focus,
.select2-container.is-invalid .select2-selection--multiple:focus {
    border-color: #dc3545 !important;
    box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25) !important;
}

/* États valides pour Select2 */
.select2-container.is-valid .select2-selection,
.select2-container.is-valid .select2-selection--single,
.select2-container.is-valid .select2-selection--multiple {
    border-color: #198754 !important;
    box-shadow: 0 0 0 0.2rem rgba(25, 135, 84, 0.25) !important;
}

/* Amélioration pour les écrans mobiles */
@media (max-width: 768px) {
    .select2-container .select2-selection--single {
        height: calc(2.5rem + 2px) !important; /* Hauteur légèrement plus grande sur mobile */
    }

    .select2-container .select2-selection--single .select2-selection__rendered {
        line-height: calc(2.5rem) !important;
        font-size: 1.1rem !important; /* Texte légèrement plus grand sur mobile */
    }

    .select2-container .select2-selection--single .select2-selection__arrow {
        height: calc(2.5rem) !important;
    }
}

/* Mode sombre (si utilisé) */
@media (prefers-color-scheme: dark) {
    .select2-container .select2-selection--single,
    .select2-container .select2-selection--multiple {
        background-color: #2d3748 !important;
        border-color: #4a5568 !important;
        color: #e2e8f0 !important;
    }

    .select2-container .select2-selection--single .select2-selection__rendered {
        color: #e2e8f0 !important;
    }

    .select2-dropdown {
        background-color: #2d3748 !important;
        border-color: #4a5568 !important;
        color: #e2e8f0 !important;
    }
}

/* Corrections spécifiques pour votre thème */
.select2-container .select2-selection--single {
    /* Assurer la cohérence avec votre formulaire */
    font-family: inherit !important;
}

/* Si vous avez des problèmes de z-index dans les modals */
.modal .select2-container {
    z-index: 1060;
}

.modal .select2-dropdown {
    z-index: 1061;
}

/* Corrections pour l'affichage dans vos fieldsets avec background form-bg-color */
.form-element .select2-container .select2-selection--single,
.form-element .select2-container .select2-selection--multiple {
    background-color: #fff !important; /* Assure un fond blanc dans vos fieldsets colorés */
}