.teamButtonFilter3512{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  margin:10px 0 14px;
  position:relative;
  overflow:visible;
}
.teamButtonFilter3512 button{
  border:1px solid rgba(11,61,110,.25);
  background:#d9ecff;
  color:var(--kf-primary)!important;
  border-radius:999px;
  padding:8px 12px;
  cursor:pointer;
  font-weight:700;
}
.teamButtonFilter3512 button.activeTeam3512{
  background:#0b3d6e;
  color:#fff!important;
  border-color:#0b3d6e;
}
.teamMoreWrap3512{
  position:relative;
  display:inline-flex;
}
.teamButtonFilter3512 .teamMoreButton3512{
  min-width:48px;
}
.teamButtonFilter3512 .teamMoreButton3512.moreActive3512{
  background:#0b3d6e;
  color:#fff!important;
  border-color:#0b3d6e;
}
.teamMoreMenu3512{
  display:none;
  position:absolute;
  z-index:120;
  top:calc(100% + 8px);
  right:0;
  min-width:180px;
  max-width:min(280px,calc(100vw - 36px));
  max-height:260px;
  overflow:auto;
  padding:8px;
  border:1px solid rgba(11,61,110,.18);
  border-radius:16px;
  background:#fff;
  box-shadow:0 18px 44px rgba(11,61,110,.18);
  gap:6px;
  flex-direction:column;
}
.teamMoreWrap3512.moreOpen3512 .teamMoreMenu3512{
  display:flex;
}
.teamMoreMenu3512 button{
  width:100%;
  justify-content:flex-start;
  border-radius:12px;
  background:#eef7ff;
  color:var(--kf-primary)!important;
  box-shadow:none;
  padding:9px 10px;
}
.teamMoreMenu3512 button.activeTeam3512{
  background:#0b3d6e;
  color:#fff!important;
}
.playersManager3512 .formRow{
  margin:10px 0;
  display:flex;
  gap:10px;
  align-items:center;
  flex-wrap:wrap;
}
.playersManager3512 .playersTopBar3512 .formRow input:not([type="checkbox"]):not([type="radio"]):not([type="color"]){
  height:52px!important;
  min-height:52px!important;
  max-height:56px!important;
  flex:0 1 190px!important;
  width:auto!important;
  min-width:150px;
  box-sizing:border-box;
  padding:0 13px!important;
  line-height:1.2!important;
}
.playersManager3512 .playersTopBar3512 .formRow input[type="date"]{
  flex-basis:170px!important;
  min-width:150px;
}
.playersManager3512 table input{
  width:100%;
  min-width:82px;
  height:38px!important;
  min-height:38px!important;
  padding:0 8px!important;
}
.playersManager3512 table input.pBirth{
  width:112px;
  min-width:0;
  max-width:112px;
}
.playersTopBar3512{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  margin:8px 0 12px;
}
.playersTopBar3512 .left3512{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  align-items:center;
}
.playersTopBar3512 button{
  white-space:nowrap;
}
.playersTable3512{
  table-layout:auto;
}
.playersTable3512 th,
.playersTable3512 td{
  white-space:nowrap;
}
.playersTable3512 .birthCol3512{
  width:112px;
  max-width:112px;
  text-align:center;
  overflow:hidden;
  text-overflow:ellipsis;
}
.playersTable3512 th.birthCol3512{
  font-size:12px;
  line-height:1.15;
  white-space:normal;
}
.playersTable3512 td.birthCol3512{
  font-size:13px;
}
.mutedSmall3512{
  opacity:.72;
  font-size:13px;
}
.inlineWarn3512{
  background:#fff8e7;
  border:1px solid #f1d38b;
  color:#705000;
  border-radius:12px;
  padding:10px 12px;
  margin:8px 0;
}
@media(max-width:640px){
  .playersManager3512 .playersTopBar3512,
  .playersManager3512 .playersTopBar3512 .left3512,
  .playersManager3512 .playersTopBar3512 .formRow{
    width:100%;
  }
  .playersManager3512 .playersTopBar3512 .formRow{
    display:grid;
    grid-template-columns:1fr;
    gap:10px;
  }
  .playersManager3512 .playersTopBar3512 .formRow input:not([type="checkbox"]):not([type="radio"]):not([type="color"]){
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    flex:none!important;
    height:52px!important;
    min-height:52px!important;
  }
  .playersManager3512 .playersTopBar3512 .formRow button{
    width:100%;
    min-height:46px;
  }
  .teamMoreMenu3512{
    right:auto;
    left:0;
    min-width:190px;
    max-width:calc(100vw - 56px);
  }
}

/* V7.0.7 — responsive mobile ciblé joueurs.html
   Desktop conservé. Mobile : conteneurs fluides, formulaire compact, tableau transformé en cartes lisibles. */
.urw-page-joueurs *,
.urw-page-joueurs *::before,
.urw-page-joueurs *::after{
  box-sizing:border-box;
}
.urw-page-joueurs .urw-functional-card,
.urw-page-joueurs .card,
.playersManager3512,
.playersTopBar3512,
.seasonTableWrapV350{
  min-width:0;
  max-width:100%;
}
.joueursQuickLinksV315{
  display:flex;
  flex-wrap:wrap;
  gap:8px 14px;
  align-items:center;
}
.joueursQuickLinksV315 a{
  max-width:100%;
  overflow-wrap:anywhere;
}

@media(max-width:700px){
  .urw-page-joueurs{
    overflow-x:hidden;
  }
  .urw-page-joueurs .urw-functional-main{
    width:100%;
    max-width:100%;
    padding-left:10px;
    padding-right:10px;
    padding-bottom:92px;
    overflow-x:hidden;
  }
  .urw-page-joueurs .urw-functional-card,
  .urw-page-joueurs .card{
    width:100%;
    max-width:100%;
    overflow:hidden;
    padding-left:16px;
    padding-right:16px;
  }
  .urw-page-joueurs h1,
  .urw-page-joueurs h2,
  .playersManager3512 h2{
    max-width:100%;
    overflow-wrap:anywhere;
    word-break:normal;
    line-height:1.12;
  }
  .playersManager3512 h2{
    font-size:clamp(1.35rem, 6vw, 1.85rem);
  }
  .playersManager3512 .mutedSmall3512{
    display:block;
    max-width:100%;
    overflow-wrap:break-word;
    line-height:1.25;
  }
  .teamButtonFilter3512{
    max-width:100%;
    overflow:visible;
    gap:8px;
  }
  .teamButtonFilter3512 button{
    max-width:100%;
    min-height:42px;
    padding:8px 12px;
    white-space:nowrap;
  }
  .teamMoreWrap3512{
    position:relative;
  }
  .teamMoreMenu3512{
    position:absolute;
    left:auto;
    right:0;
    min-width:190px;
    max-width:calc(100vw - 44px);
    max-height:260px;
    z-index:500;
  }
  .playersTopBar3512{
    width:100%;
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
  }
  .playersTopBar3512 .left3512,
  .playersTopBar3512 .formRow{
    width:100%;
    min-width:0;
  }
  .playersManager3512 .playersTopBar3512 .formRow{
    display:grid;
    grid-template-columns:1fr;
    gap:10px;
  }
  .playersManager3512 .playersTopBar3512 .formRow input:not([type="checkbox"]):not([type="radio"]):not([type="color"]),
  .playersManager3512 .playersTopBar3512 .formRow input[type="date"]{
    display:block;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    height:50px!important;
    min-height:50px!important;
    max-height:54px!important;
    padding:0 14px!important;
    line-height:1.2!important;
  }
  .playersManager3512 .playersTopBar3512 .formRow button,
  .playersTopBar3512 > button{
    width:100%;
    max-width:100%;
    min-height:48px;
    padding-left:14px;
    padding-right:14px;
    white-space:normal;
    overflow-wrap:anywhere;
  }
  .seasonTableWrapV350{
    width:100%;
    max-width:100%;
    overflow:visible;
  }
  .playersTable3512,
  .playersTable3512 thead,
  .playersTable3512 tbody,
  .playersTable3512 tr,
  .playersTable3512 th,
  .playersTable3512 td{
    display:block;
    width:100%;
    max-width:100%;
  }
  .playersTable3512{
    border-collapse:separate;
    border-spacing:0;
    table-layout:auto;
  }
  .playersTable3512 thead{
    position:absolute;
    width:1px;
    height:1px;
    overflow:hidden;
    clip:rect(0 0 0 0);
    white-space:nowrap;
  }
  .playersTable3512 tbody{
    display:grid;
    gap:12px;
  }
  .playersTable3512 tr{
    border:1px solid rgba(11,61,110,.14);
    border-radius:18px;
    padding:10px;
    background:#fff;
    box-shadow:0 10px 28px rgba(11,61,110,.08);
  }
  .playersTable3512 td{
    display:grid;
    grid-template-columns:minmax(86px, 32%) minmax(0, 1fr);
    align-items:center;
    gap:10px;
    min-height:44px;
    padding:7px 0;
    border:0!important;
    white-space:normal;
    overflow:visible;
    word-break:normal;
    overflow-wrap:break-word;
    text-align:left!important;
  }
  .playersTable3512 td::before{
    content:"";
    color:#4c5b73;
    font-size:.76rem;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.03em;
    line-height:1.15;
    white-space:normal;
  }
  /* ===== T108D — LES LIBELLES SE NOMMENT, ILS NE SE COMPTENT PLUS =====

     DAN, 15/08 : « il y a un décalage dans les rubriques sous les joueurs :
     on a nom sans case à remplir, puis équipe avec le nom en face, puis
     naissance avec l'équipe en face… »

     CAUSE, MESUREE. Ce bloc numerotait les colonnes de 1 a 6, c est-a-dire
     un tableau SANS colonne photo. Or `ENABLE_PLAYER_PHOTOS` vaut `true`
     (joueurs.js l.17) et la ligne compte HUIT cellules :
        photo · nom · equipe · date naissance · annee naissance ·
        taille · MAJ taille · actions
     Chaque libelle se posait donc sur la cellule PRECEDENTE. « Nom »
     tombait sur la photo — d ou la rubrique « sans case a remplir ».

     Le second bloc (max-width:700px) numerotait jusqu a 7 : il avait ete
     mis a jour pour la photo, mais PAS pour `annee naissance`, ajoutee
     apres. Il etait donc decale a partir de la cinquieme colonne, et la
     huitieme n avait aucun libelle.

     Deux blocs positionnels, deux decalages differents, et un troisieme
     garanti a la prochaine colonne ajoutee.

     ON NOMME LES CELLULES. Chaque `td` porte deja sa classe — `nameCol3512`,
     `birthYearCol3512`… — posee par joueurs.js l.826. Un libelle ancre sur
     la classe survit a l ajout, au retrait et au deplacement d une colonne.
     C est la meme lecon que les zones lisibles par machine du 13/08 : une
     regle positionnelle est un compte fige, et un compte fige finit
     toujours par etre faux. */
  .playersTable3512 td.photoCol3512::before{content:"Photo";}
  .playersTable3512 td.nameCol3512::before{content:"Nom";}
  .playersTable3512 td.teamCol3512::before{content:"Équipe";}
  .playersTable3512 td.birthCol3512::before{content:"Date naissance";}
  .playersTable3512 td.birthYearCol3512::before{content:"Année naissance";}
  .playersTable3512 td.sizeCol3512::before{content:"Taille vêtement";}
  .playersTable3512 td.updatedCol3512::before{content:"MAJ taille";}
  .playersTable3512 td.actionsCol3512::before{content:"Actions";}
  .playersTable3512 .birthCol3512{
    width:100%;
    max-width:100%;
    text-align:left;
    overflow:visible;
    text-overflow:clip;
  }
  .playersManager3512 table input,
  .playersManager3512 table input.pBirth,
  .playersManager3512 table input.pName,
  .playersManager3512 table input.pSize{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    height:40px!important;
    min-height:40px!important;
    max-height:44px!important;
    padding:0 10px!important;
    line-height:1.2!important;
    font-size:.95rem;
    border:1px solid #d0d5dd!important;
    background:#fff!important;
    border-radius:6px!important;
  }
  .playersManager3512 table input.pBirth{
    font-size:.9rem;
  }
  .playersTable3512 .deletePlayer3512{
    width:auto;
    min-width:44px;
    min-height:40px;
    padding:8px 12px;
  }
}

@media(max-width:700px){
  .urw-page-joueurs .card > .formRow{
    display:grid;
    grid-template-columns:1fr;
    gap:10px;
    width:100%;
  }
  .urw-page-joueurs .card > .formRow input:not([type="checkbox"]):not([type="radio"]):not([type="color"]){
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    height:50px!important;
    min-height:50px!important;
    max-height:54px!important;
    padding:0 14px!important;
    line-height:1.2!important;
  }
  .urw-page-joueurs .card > .formRow button{
    width:100%;
    max-width:100%;
    min-height:48px;
    white-space:normal;
  }
}

/* V7.0.9 — Photos joueurs : PC = icône paysage uniquement ; mobile = vraie photo uniforme. */
.photoCol3512{
  width:54px;
  max-width:54px;
  text-align:center;
}
.playerPhotoIcon3512{
  width:30px;
  height:30px;
  min-width:30px;
  padding:0;
  border-radius:10px;
}
.playerPhotoIconSvg3512{
  width:20px;
  height:20px;
  stroke:currentColor;
  fill:none;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
/* Desktop : ne jamais afficher la vraie image dans le tableau. */
.playerPhotoAvatar3512{
  display:none!important;
}
.playerPhotoEmpty3512{
  display:inline-flex;
  width:30px;
  height:30px;
  align-items:center;
  justify-content:center;
  color:#6d7890;
  font-weight:800;
}
.playerPhotoPlaceholder3512{
  display:none!important;
}

@media(max-width:700px){
  /* T108D — bloc positionnel retire. Il numerotait jusqu a 7 alors que la
     ligne compte 8 cellules depuis l ajout de `annee naissance` : decale a
     partir de la cinquieme, et la huitieme sans libelle. Les libelles par
     classe declares plus haut s appliquent aussi ici — inutile de les
     repeter, et surtout dangereux : deux definitions du meme libelle
     finissent toujours par diverger. */
  .playersTable3512 td.photoCol3512{
    width:100%;
    max-width:100%;
    min-height:72px;
  }
  .playerPhotoIcon3512{
    display:none!important;
  }
  .playerPhotoAvatar3512{
    display:block!important;
    width:64px!important;
    height:64px!important;
    min-width:64px!important;
    max-width:64px!important;
    min-height:64px!important;
    max-height:64px!important;
    border-radius:16px!important;
    object-fit:cover!important;
    object-position:center!important;
  }
  .playerPhotoEmpty3512{
    width:64px;
    height:64px;
    border-radius:16px;
    border:1px dashed rgba(11,61,110,.2);
    background:#eef7ff;
    color:#607086;
  }
  .photoCol3512 + td{
    min-width:0;
  }
}


/* V7.0.10 — clarté des actions photo/joueur + icône PC réellement cliquable */
.playerPhotoIcon3512{
  cursor:pointer!important;
  pointer-events:auto!important;
}
.playerPhotoIcon3512:focus-visible,
.playerPhotoAvatar3512:focus-visible{
  outline:3px solid rgba(11,61,110,.35);
  outline-offset:2px;
}
.playerActions3512{
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
}
.playerPhotoUpload3512,
.playerPhotoRemove3512,
.deletePlayer3512{
  border:1px solid rgba(11,61,110,.18);
  border-radius:999px;
  min-height:34px;
  padding:6px 10px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  cursor:pointer;
  font-weight:800;
  text-decoration:none;
  line-height:1.1;
  white-space:nowrap;
}
.playerPhotoUpload3512{
  background:#eef7ff;
  color:var(--kf-primary)!important;
}
.playerPhotoRemove3512{
  background:#fff1f1;
  color:#7a1f1f!important;
  border-color:rgba(122,31,31,.18);
}
.deletePlayer3512{
  background:#0b3d6e;
  color:#fff!important;
  border-color:#0b3d6e;
}
.playerPhotoActionText3512{
  font-size:12px;
}
.playerPhotoActionIcon3512{
  line-height:1;
}
@media(min-width:701px){
  .playerActions3512 .playerPhotoActionText3512{
    position:absolute;
    width:1px;
    height:1px;
    overflow:hidden;
    clip:rect(0 0 0 0);
    white-space:nowrap;
  }
  .playerPhotoUpload3512,
  .playerPhotoRemove3512,
  .deletePlayer3512{
    width:36px;
    min-width:36px;
    height:34px;
    padding:0;
  }
}
@media(max-width:700px){
  .playerActions3512{
    width:100%;
    display:grid;
    grid-template-columns:1fr;
    gap:8px;
  }
  .playerPhotoUpload3512,
  .playerPhotoRemove3512,
  .deletePlayer3512{
    width:100%;
    min-height:42px;
  }
  .playerPhotoActionText3512{
    font-size:13px;
  }
  .playerPhotoIcon3512{
    display:none!important;
  }
  .playerPhotoAvatar3512{
    cursor:pointer!important;
    pointer-events:auto!important;
  }
}

/* V7.0.13 — Tableau PC compact sans doublon photo, popover photo fonctionnel, zéro scroll horizontal. */
.playersManager3512 .seasonTableWrapV350{overflow-x:visible!important;overflow-y:visible!important;max-width:100%!important;}
.playersTable3512{width:100%!important;max-width:100%!important;table-layout:fixed!important;border-collapse:collapse!important;font-size:12.5px!important;}
.playersTable3512 th,.playersTable3512 td{box-sizing:border-box!important;vertical-align:middle!important;padding:8px 6px!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;line-height:1.18!important;}
.playersTable3512 th{font-size:11.5px!important;line-height:1.08!important;text-align:center!important;font-weight:900!important;white-space:normal!important;word-break:normal!important;overflow:visible!important;text-overflow:clip!important;}
.playersTable3512 th span{display:block;max-width:100%;}
.playersTable3512 td{font-size:13px!important;}
.playersTable3512 .photoCol3512{width:56px!important;min-width:56px!important;max-width:56px!important;text-align:center!important;}
.playersTable3512 .nameCol3512{width:17%!important;min-width:0!important;}
.playersTable3512 .teamCol3512{width:9%!important;min-width:0!important;}
.playersTable3512 .birthCol3512{width:116px!important;min-width:116px!important;max-width:116px!important;text-align:center!important;}
.playersTable3512 .birthYearCol3512{width:74px!important;min-width:74px!important;max-width:74px!important;text-align:center!important;}
.playersTable3512 .sizeCol3512{width:64px!important;min-width:64px!important;max-width:64px!important;text-align:center!important;}
.playersTable3512 .updatedCol3512{width:86px!important;min-width:86px!important;max-width:86px!important;text-align:center!important;}
.playersTable3512 .actionsCol3512{width:60px!important;min-width:60px!important;max-width:60px!important;text-align:center!important;}
.playersTable3512 input{box-sizing:border-box!important;width:100%!important;min-width:0!important;height:34px!important;min-height:34px!important;max-height:36px!important;padding:0 8px!important;border-radius:14px!important;font-size:13px!important;line-height:1.1!important;}
.playersTable3512 input.pBirth{width:104px!important;max-width:104px!important;padding:0 6px!important;font-size:12.5px!important;}
.playersTable3512 input.pBirthYear{width:48px!important;max-width:48px!important;text-align:center!important;padding:0 5px!important;}
.playersTable3512 input.pSize{width:48px!important;max-width:48px!important;text-align:center!important;padding:0 5px!important;}
.playersTable3512 .updatedCol3512{font-size:12.5px!important;}
.playerPhotoIcon3512{width:26px!important;height:26px!important;min-width:26px!important;max-width:26px!important;padding:0!important;border-radius:8px!important;background:transparent!important;border:1px solid rgba(11,61,110,.22)!important;box-shadow:none!important;color:#0b3d6e!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;}
.playerPhotoIconEmpty3512{opacity:.55;background:#f7fbff!important;}
.playerPhotoIconSvg3512{width:17px!important;height:17px!important;display:block!important;}
.playerPhotoEmpty3512{display:none!important;}
.playerPhotoAvatar3512{display:none!important;}
.playerPhotoManageMobile3512{display:none!important;}
.playerActions3512{display:flex!important;align-items:center!important;justify-content:center!important;gap:0!important;}
.playerActions3512 .playerPhotoManage3512,.playerActions3512 .playerPhotoUpload3512,.playerActions3512 .playerPhotoRemove3512{display:none!important;}
.deletePlayer3512{width:28px!important;min-width:28px!important;max-width:28px!important;height:28px!important;min-height:28px!important;max-height:28px!important;padding:0!important;border-radius:9px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;}
.deletePlayer3512 .playerPhotoActionText3512{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;}
.playerPhotoManagePopover3512{z-index:30000!important;position:fixed!important;}
.playerPhotoManagePreview3512{grid-template-columns:72px 1fr!important;background:#f7fbff!important;cursor:pointer!important;}
.playerPhotoManagePreview3512 img{width:72px!important;height:72px!important;border-radius:16px!important;object-fit:cover!important;object-position:center!important;}
.playerPhotoPreviewHint3512{font-size:12px!important;color:#607086!important;font-weight:700!important;}
@media(max-width:700px){
  .playersManager3512 .seasonTableWrapV350{overflow:visible!important;}
  .playersTable3512{table-layout:auto!important;font-size:13px!important;}
  .playersTable3512 th{display:none!important;}
  .playersTable3512 td{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;padding:10px 12px!important;}
  /* T108D — TROISIEME bloc de libelles, et il etait le seul JUSTE (2 a 8).
     C est aussi le seul en `!important`, donc celui qui gagnait la cascade.
     Trois blocs pour un meme libelle, avec trois numerotations
     differentes : celui qui l emporte depend de l ordre du fichier et des
     `!important`, c est-a-dire de rien de lisible.
     On le passe en selecteurs de CLASSE comme les deux autres. Les trois
     disent desormais la meme chose, et lequel gagne n a plus d importance.
     `!important` conserve : il neutralise ce qu une feuille chargee plus
     tard pourrait imposer — inventaire des feuilles avant de patcher, la
     lecon vaut ici. */
  .playersTable3512 td.photoCol3512::before{content:"Photo"!important;}
  .playersTable3512 td.nameCol3512::before{content:"Nom"!important;}
  .playersTable3512 td.teamCol3512::before{content:"Équipe"!important;}
  .playersTable3512 td.birthCol3512::before{content:"Date naissance"!important;}
  .playersTable3512 td.birthYearCol3512::before{content:"Année naissance"!important;}
  .playersTable3512 td.sizeCol3512::before{content:"Taille vêtement"!important;}
  .playersTable3512 td.updatedCol3512::before{content:"MAJ taille"!important;}
  .playersTable3512 td.actionsCol3512::before{content:"Actions"!important;}
  .playersTable3512 .photoCol3512,.playersTable3512 .nameCol3512,.playersTable3512 .teamCol3512,.playersTable3512 .birthCol3512,.playersTable3512 .birthYearCol3512,.playersTable3512 .sizeCol3512,.playersTable3512 .updatedCol3512,.playersTable3512 .actionsCol3512{width:100%!important;min-width:0!important;max-width:100%!important;text-align:left!important;}
  .playersTable3512 input,.playersTable3512 input.pBirth,.playersTable3512 input.pBirthYear,.playersTable3512 input.pSize{width:100%!important;max-width:100%!important;min-width:0!important;text-align:left!important;height:40px!important;min-height:40px!important;max-height:44px!important;}
  .playerPhotoIcon3512{display:none!important;}
  .playerPhotoEmpty3512{display:none!important;}
  .playerPhotoAvatar3512{display:block!important;width:64px!important;height:64px!important;min-width:64px!important;max-width:64px!important;min-height:64px!important;max-height:64px!important;border-radius:16px!important;object-fit:cover!important;object-position:center!important;}
  .playerPhotoManageMobile3512{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:6px!important;width:100%!important;min-height:42px!important;margin-top:8px!important;border:1px solid rgba(11,61,110,.18)!important;border-radius:999px!important;background:#eef7ff!important;color:var(--kf-primary)!important;font-weight:800!important;cursor:pointer!important;}
  .playerActions3512{width:100%!important;display:grid!important;grid-template-columns:1fr!important;gap:8px!important;}
  .deletePlayer3512{width:100%!important;max-width:100%!important;height:42px!important;min-height:42px!important;border-radius:999px!important;}
  .deletePlayer3512 .playerPhotoActionText3512{position:static!important;width:auto!important;height:auto!important;overflow:visible!important;clip:auto!important;white-space:normal!important;}
}

/* V7.0.15 — régression mobile : bloc Photo + Année éditable, PC préservé. */
.playerPhotoYearMobile3512{display:none!important;}
@media(max-width:700px){
  .playersTable3512 td.photoCol3512{
    display:grid!important;
    grid-template-columns:86px minmax(86px,120px)!important;
    grid-template-rows:auto auto auto!important;
    align-items:start!important;
    justify-content:start!important;
    column-gap:14px!important;
    row-gap:8px!important;
  }
  .playersTable3512 td.photoCol3512::before{
    grid-column:1 / -1!important;
    grid-row:1!important;
  }
  .playersTable3512 td.photoCol3512 .playerPhotoAvatar3512,
  .playersTable3512 td.photoCol3512 .playerPhotoEmpty3512{
    grid-column:1!important;
    grid-row:2!important;
    align-self:start!important;
  }
  .playersTable3512 td.photoCol3512 .playerPhotoManageMobile3512{
    grid-column:1!important;
    grid-row:3!important;
    width:100%!important;
    margin-top:0!important;
  }
  .playerPhotoYearMobile3512{
    display:flex!important;
    grid-column:2!important;
    grid-row:2!important;
    flex-direction:column!important;
    align-items:flex-start!important;
    justify-content:flex-start!important;
    gap:5px!important;
    min-height:0!important;
    padding:0!important;
    border:0!important;
    background:transparent!important;
    color:var(--kf-primary)!important;
    width:100%!important;
    max-width:120px!important;
  }
  .playerPhotoYearLabel3512{
    display:block!important;
    font-size:12px!important;
    line-height:1!important;
    font-weight:900!important;
    letter-spacing:.03em!important;
    text-transform:uppercase!important;
    color:#4f5d73!important;
  }
  .playersTable3512 input.pBirthYearMobile3512{
    width:78px!important;
    max-width:78px!important;
    min-width:0!important;
    height:38px!important;
    min-height:38px!important;
    max-height:40px!important;
    padding:0 8px!important;
    border-radius:14px!important;
    text-align:center!important;
    font-size:15px!important;
    font-weight:700!important;
    box-sizing:border-box!important;
  }
  .playersTable3512 td.birthYearCol3512{display:none!important;}
  .playersTable3512 td.actionsCol3512::before{
    content:none!important;
    display:none!important;
    visibility:hidden!important;
  }
}

/* V7.5.4 — sécurité mobile création équipe : bouton toujours tapable sur iOS/PWA. */
.urw-page-joueurs #teamNameInput,
.urw-page-joueurs #addTeamBtn{
  position:relative;
  z-index:5;
  pointer-events:auto!important;
  -webkit-tap-highlight-color:rgba(11,61,110,.18);
  touch-action:manipulation;
}
@media(max-width:700px){
  .urw-page-joueurs #addTeamBtn{
    display:flex!important;
    align-items:center;
    justify-content:center;
    width:100%!important;
    min-height:52px!important;
  }
}


/* V7.10.2 — Mobile joueurs : libellés explicites et champs compacts. */
.playersManager3512 .playersTopBar3512 .formRow .playerAddField3512{
  display:flex;
  flex-direction:column;
  gap:6px;
  min-width:150px;
  flex:0 1 190px;
  color:var(--kf-primary);
  font-weight:800;
  font-size:.82rem;
  letter-spacing:.02em;
}
.playersManager3512 .playersTopBar3512 .formRow .playerAddField3512 > span{
  display:block;
  line-height:1.15;
  color:#4c5b73;
}
.playersManager3512 .playersTopBar3512 .formRow .playerAddField3512 input:not([type="checkbox"]):not([type="radio"]):not([type="color"]){
  width:100%!important;
  flex:none!important;
}
.playersManager3512 .playersTopBar3512 .formRow input.newPlayerBirth3512,
.playersManager3512 table input.pBirth{
  text-align:center!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.playersManager3512 table input.pSize::placeholder,
.playersManager3512 .playersTopBar3512 .formRow input.newPlayerSize3512::placeholder{
  color:#8b96a8;
}

@media(max-width:700px){
  .playersManager3512 .playersTopBar3512 .formRow .playerAddField3512{
    width:100%;
    max-width:100%;
    min-width:0;
    flex:none;
    font-size:.86rem;
  }
  .playersManager3512 .playersTopBar3512 .formRow .playerAddField3512 > span{
    padding-left:2px;
  }
  .playersManager3512 .playersTopBar3512 .formRow .playerAddField3512 input:not([type="checkbox"]):not([type="radio"]):not([type="color"]){
    height:46px!important;
    min-height:46px!important;
    max-height:50px!important;
    padding:0 13px!important;
    line-height:46px!important;
  }
  .playersManager3512 .playersTopBar3512 .formRow input.newPlayerBirth3512,
  .playersManager3512 table input.pBirth{
    min-height:42px!important;
    height:42px!important;
    max-height:46px!important;
    line-height:42px!important;
    text-align:center!important;
    font-size:.95rem!important;
  }
  .playersManager3512 table input.pSize{
    min-height:42px!important;
    height:42px!important;
    max-height:46px!important;
  }
  /* T108D — NEUTRALISATION RETIREE, ELLE N A PLUS D OBJET ET ELLE NUISAIT.

     Ce bloc effacait les libelles nth-child(1 a 6) parce qu ils etaient
     devenus faux avec la colonne Photo. C etait le QUATRIEME emplacement
     a traiter le meme sujet, apres trois blocs de libelles contradictoires
     — et il ne pouvait pas gagner : `td:nth-child(1)` et `td.nameCol3512`
     ont exactement la meme specificite, si bien que le vainqueur ne
     dependait que de l ordre du fichier.

     Depuis t108d, PLUS AUCUN libelle n est positionnel. Il n y a donc plus
     rien a neutraliser, et laisser un `content:""` sur les six premieres
     cellules ne pouvait plus qu effacer un libelle legitime le jour ou un
     `!important` disparaitrait. */
  .playersTable3512 .nameCol3512::before{content:"Nom";}
  .playersTable3512 .teamCol3512::before{content:"Équipe";}
  .playersTable3512 .birthCol3512::before{content:"Date naissance";}
  .playersTable3512 .birthYearCol3512::before{content:"Année naissance";}
  .playersTable3512 .sizeCol3512::before{content:"Taille vêtement";}
  .playersTable3512 .updatedCol3512::before{content:"MAJ taille";}
  .playersTable3512 .actionsCol3512::before{content:"Actions";}
  .playersTable3512 .photoCol3512::before{content:"Photo";}
}


/* THEME COLORS BRIDGE V5 — Création équipe */
.urw-page-joueurs #addTeamBtn,
#addTeamBtn{
  background:var(--kf-primary,#0b3d6e)!important;
  border-color:var(--kf-primary,#0b3d6e)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  box-shadow:0 10px 22px color-mix(in srgb, var(--kf-primary,#0b3d6e) 20%, transparent)!important;
}
/* fin V5 Joueurs */

/* ===== Lot J — Raccourcis de retour (bas de page Joueurs) =====
   Avant : deux pastilles identiques en styles inline, flex:1, libellés longs
   (« ← Retour aux convocations ») → serrées et coupées sur mobile.
   Après : classes dédiées, libellés courts, pastilles alignées sur la charte
   (rayon 999px comme les autres boutons), empilement sous 480px. */
.joueursQuickLinksV315{
  display:flex;
  gap:10px;
  margin-top:20px;
  padding-top:18px;
  border-top:1px solid #e4e7ec;
  flex-wrap:wrap;
}
.joueursQuickLinkV315{
  flex:1 1 140px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-height:42px;
  padding:10px 16px;
  border:1px solid var(--kf-primary,#0b3d6e);
  border-radius:999px;
  background:#fff;
  color:var(--kf-primary,#0b3d6e);
  font-weight:700;
  font-size:.86rem;
  text-decoration:none;
  white-space:nowrap;
  transition:background .15s ease,color .15s ease;
}
.joueursQuickLinkV315:hover,
.joueursQuickLinkV315:focus-visible{
  background:var(--kf-primary,#0b3d6e);
  color:#fff;
}
@media(max-width:480px){
  .joueursQuickLinkV315{flex:1 1 100%;}
}

/* ===== T108D — MARQUER CE QUI EST FACULTATIF =====
   Demande de Dan (15/08) : « il faudrait mettre (facultatif) a cote de
   tous les champs de creation du joueur sauf sur le champ nom du joueur ».
   Seul le nom est obligatoire — le code le verifie deja et refuse un
   ajout sans nom. Le formulaire ne le disait nulle part, et un parent qui
   ne connait pas la taille de vetement de son fils renonçait a l ajouter.
   Le nom, lui, ne porte AUCUNE mention : marquer l exception plutot que
   la regle garde le formulaire lisible. */
.fieldOptionalV108D{
  font-style:normal;
  font-weight:600;
  font-size:.82em;
  color:#7a879b;
  letter-spacing:.01em;
}



/* T111B — phrase équipe vide, hors des cartes */
.playersEmptySentenceV111B{
  margin:12px 4px 8px;
  color:#c62828;
  font-weight:800;
  font-size:1rem;
  line-height:1.35;
}
.playersEmptySentenceV111B[hidden]{display:none !important;}
