/* =========================================================================
   fonctions_gardes.css
   -------------------------------------------------------------------------
   CSS extrait des attributs `style=` STATIQUES de fonctions_gardes.php.
   Origine des blocs (par fonction) :
     - show_competences()      : pastille de compétence attendue
     - display_subgroup()      : jauges d'horaire
     - display_postes()        /
       display_postes_equipe() : cartes de poste affectées, marqueurs de période
     - display_vehicule()      : panneau latéral « Véhicules disponibles »
     - display_equipe()        : cartes d'équipe, zones de drop, « Sans équipe »
     - display_inscrit()       : panneau latéral « Personnel inscrit »
     - displayJourNuit()       : cartes personnel de la vue jour/nuit
     - name_to_logo()          : initiale d'une plage horaire personnalisée

   Pourquoi cette sortie : ces déclarations étaient figées dans des chaînes PHP,
   dupliquées d'un panneau à l'autre, et illisibles en revue. Elles sont
   reprises ICI À L'IDENTIQUE (mêmes propriétés, mêmes valeurs, même ordre) :
   aucune n'a été « nettoyée », fusionnée ni convertie, et aucun `!important`
   n'a été ajouté — seuls ceux déjà présents en inline sont conservés.

   /!\ ORDRE DE CHARGEMENT : cette feuille DOIT être liée APRÈS css/bootstrap.css,
   css/main.css et css/dashboard-modern.css. Plusieurs règles ci-dessous
   remplacent un style inline qui battait une règle de même spécificité
   (ex. `.sticky { top: 50px }` de main.css, `.form-check { margin-bottom }` de
   bootstrap.css) : à spécificité égale, c'est l'ordre de déclaration qui tranche.

   Les déclarations dynamiques (valeur calculée en PHP), celles pilotées par
   JavaScript (display) et celles qui perdraient un conflit de spécificité
   (`padding-left` des champs .form-control) sont volontairement restées inline.
   ========================================================================= */

/* ---- Pastille de compétence attendue (show_competences) ---------------- */
.ebg-comp-badge { margin-bottom:2px; }

/* ---- Tableau de garde : jauges (display_subgroup) ---------------------- */
.ebg-gauge-stack { gap:4px; }
/* Pas de classe pour l'icône de grade (fonctions_gardes.php:1404) : son
   `border-radius: 2px` reste inline. Sorti en classe, il perdait contre
   `.swal2-popup:has(#selection) #table-garde img.img-max-22 { border-radius: 3px }`
   (css/evenement_garde_modal.css:358), de spécificité très supérieure — l'inline
   la battait, une classe non. C'est exactement ce tableau que remplit
   display_subgroup() (evenement_garde.php:401, setBodyHtml). */

/* ---- Marqueurs de période des postes (display_postes) ------------------
   <i> décoratifs sans glyphe : transposition littérale, y compris l'espace
   avant le deux-points et le !important déjà présents en inline. */
.ebg-poste-marker-nuit { float:right;color : var(--bkg-color3); }
.ebg-poste-marker-jour { float:right;color: var(--txt-color54) !important; }
.ebg-poste-marker-jour-espace { float:right;margin-left:5px;color: var(--txt-color54) !important; }
.ebg-poste-marker-nuit-espace { float:right;margin-left:5px;color : var(--bkg-color3); }

/* ---- Carte « personne affectée » d'un poste ---------------------------
   Commune à display_postes() (.affected.pompier) et à
   display_postes_equipe() (.affectedPoste.pompier). */
.ebg-poste-assignee {
  background-color: var(--bkg-color9); text-align:left; height:100%;width:100%;position:absolute;left:0px;top:0px;border: 1px solid black;font-size:13px;
}

/* ---- Conteneur de la liste des postes (display_postes_equipe) ---------- */
.ebg-post-list { color:var(--txt-color3);overflow:visible !important; }

/* =========================================================================
   Panneaux latéraux « Véhicules disponibles » et « Personnel inscrit »
   (display_vehicule / display_inscrit) — mêmes blocs des deux côtés.
   ========================================================================= */
.ebg-panel-vehicules { z-index:0;width:220px;flex-shrink:0;top:160px;padding:0 6px; }
.ebg-panel-personnel { z-index:0;width:300px;flex-shrink:0;top:160px;padding:0 6px; }

.ebg-side-shell { height:60vh;color:var(--txt-color3); }
.ebg-side-card {
  height:100%;display:flex;flex-direction:column;background:var(--bkg-color108);border-radius:12px;padding:14px 12px;box-shadow:0 2px 10px rgba(0,0,0,.08);
}
.ebg-side-header { display:flex;align-items:center;margin-bottom:10px;flex-shrink:0; }
.ebg-side-header-icon {
  width:28px;height:28px;border-radius:7px;background:var(--bkg-color9);display:flex;align-items:center;justify-content:center;margin-right:9px;
}
.ebg-side-header-glyph-vehicules { font-size:0.78rem;opacity:0.65; }
.ebg-side-header-glyph-personnel { font-size:0.75rem;opacity:0.65; }
.ebg-side-title { margin:0;font-size:0.9rem;font-weight:700; }
.ebg-side-scroll { flex:1;overflow-y:auto;overflow-x:hidden; }

/* Champ de recherche : seul l'habillage du conteneur et de la loupe est sorti.
   Le `style` de l'<input> reste inline (cf. commentaire d'en-tête). */
.ebg-search-wrap { position:relative;margin-bottom:10px;flex-shrink:0; }
.ebg-search-icon {
  position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#aaa;font-size:0.72em;
}

/* Interrupteur « Masquer les personnes déjà placées » */
.ebg-filter-switch { margin-bottom:10px;flex-shrink:0;font-size:0.76rem; }
.ebg-filter-switch-label { opacity:.72;cursor:pointer; }

/* Bloc d'identité qui occupe la largeur restante d'une ligne (8 emplois) */
.ebg-row-main { flex:1;min-width:0; }

/* ---- États vides des panneaux -----------------------------------------
   /!\ Les deux règles d'icône sont qualifiées par le type `i` (0,1,1) et non
   posées en simple classe (0,1,0). Raison : `css/imginput.css` redéclare
   `.fa, .fab, .fad, .fal, .far, .fas { display: inline-block }` (ligne 126) et
   evenement_display_tabs.php la charge dans son <head> APRÈS load_css() donc
   après cette feuille (evenement_display_tabs.php:2186). À spécificité égale,
   c'est elle qui l'emportait : l'icône repassait `inline-block` et se
   retrouvait sur la même ligne que le libellé (« Tous les véhicules sont déjà
   rattachés à une équipe », « Aucun résultat », « Toutes les personnes sont
   déjà placées »), alors que le `display:block` inline d'origine gagnait.
   Les déclarations, elles, restent celles de l'inline — sans `!important`. */
.ebg-empty-state { text-align:center;padding:20px 8px;opacity:0.4; }
i.ebg-empty-icon { font-size:1.5rem;display:block;margin-bottom:6px; }
.ebg-empty-label { font-size:0.8rem; }
.ebg-empty-state-lg { text-align:center;padding:24px 8px;opacity:0.38; }
i.ebg-empty-icon-lg { font-size:1.8rem;display:block;margin-bottom:8px; }

/* ---- Carte véhicule de la liste de gauche (display_vehicule) ----------- */
.ebg-veh-card {
  background:var(--bkg-color9);border:1px solid var(--bor-color17);border-radius:8px;padding:8px 10px;margin-bottom:7px;display:flex;align-items:center;cursor:grab;
}
.ebg-veh-card-body { flex:1;display:flex;align-items:center;gap:8px;min-width:0; }
.ebg-veh-card-identity { min-width:0;flex:1; }
.ebg-veh-card-name {
  font-weight:600;font-size:0.83rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ebg-veh-card-grip { color:var(--bor-color17);font-size:0.82rem;flex-shrink:0; }

/* Sous-titre commun (libellé de fonction du véhicule, organisation du membre) */
.ebg-card-subtitle { font-size:0.73rem;opacity:0.55;margin-top:1px; }

/* =========================================================================
   Colonne centrale : équipes (display_equipe)
   ========================================================================= */
.ebg-teams-scroll { height:60vh;overflow-y:auto;overflow-x:hidden;padding-right:2px; }

.ebg-team-card {
  background:var(--bkg-color108);border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.07);overflow:hidden;
}
.ebg-card-header {
  padding:10px 12px;display:flex;align-items:center;border-bottom:1px solid var(--bor-color17);gap:8px;
}
.ebg-card-body { padding:10px 12px; }
.ebg-card-actions { display:flex;align-items:center;gap:4px;flex-shrink:0; }
.ebg-team-avatar { border-radius:50%;flex-shrink:0; }
.ebg-team-drag-handle {
  cursor:grab;color:var(--bor-color17);flex-shrink:0;font-size:0.85rem;margin-right:2px;
}
.ebg-team-name {
  display:block;font-size:0.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* En-tête d'un véhicule rattaché (équipe ou zone « Sans équipe ») */
.ebg-veh-header-name {
  font-weight:600;font-size:0.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ebg-veh-header-subtitle { font-size:0.72rem;opacity:0.55; }
.ebg-grip { color:var(--bor-color17);flex-shrink:0; }

/* Invites des zones de drop (le fond et la bordure restent inline : ils sont
   calculés en PHP via $borderDrop). */
.ebg-drop-hint { font-size:.78rem;opacity:.48; }
.ebg-drop-placeholder { display:flex;align-items:center;gap:5px;opacity:0.45;margin:auto; }
.ebg-drop-placeholder-icon { font-size:0.85rem; }
.ebg-drop-placeholder-label { font-size:0.78rem; }

/* Membre d'une équipe */
.ebg-member-cell { padding:3px; }
.ebg-member-card {
  background:var(--bkg-color108);border:1px solid var(--bor-color17);border-radius:8px;padding:6px 8px;display:flex;align-items:center;gap:6px;
}
.ebg-member-name { font-size:0.82rem;font-weight:500;flex:1;min-width:0;overflow:hidden; }
.ebg-member-name-text {
  display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;
}
.ebg-member-grip { color:var(--bor-color17);flex-shrink:0;font-size:0.75rem; }

/* Carte « Véhicules sans équipe » */
.ebg-noteam-card {
  background:var(--bkg-color108);border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.07);overflow:hidden;border:1px dashed var(--bor-color17);
}
.ebg-noteam-icon {
  width:32px;height:32px;border-radius:50%;background:var(--bkg-color9);display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.ebg-noteam-glyph { opacity:0.6; }
.ebg-noteam-title { display:block;font-size:0.9rem; }

/* =========================================================================
   Cartes personnel (display_inscrit / displayJourNuit)
   ========================================================================= */
/* displayJourNuit() seulement : dans display_inscrit(), le `display` de la
   carte est calculé en PHP et repris par le filtre JS → resté inline. */
.ebg-person-card {
  background:var(--bkg-color9);border:1px solid var(--bor-color17);border-radius:8px;padding:8px 10px;margin-bottom:7px;display:flex;align-items:center;gap:9px;cursor:grab;
}
.ebg-person-name {
  font-weight:600;font-size:0.83rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt-color3);
}
.ebg-person-firstname { font-weight:400; }
.ebg-person-role {
  font-size:0.73rem;opacity:0.55;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ebg-person-actions { display:flex;align-items:center;gap:2px;flex-shrink:0;font-size:0.78rem; }
.ebg-person-actions-compact { gap:2px;flex-shrink:0; }

/* Marqueurs de période de la vue jour/nuit (<i> décoratifs sans glyphe) */
.ebg-periode-marker-jour { float:left;color: var(--txt-color54) !important; }
.ebg-periode-marker-nuit { float:left;color : var(--bkg-color3); }

/* ---- Initiale d'une plage horaire personnalisée (name_to_logo) --------- */
.ebg-periode-initiale { margin-top:15px; font-weight:600; font-size:0.8rem; }
