*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{font-size:13px}
body{font-family:'DM Sans',system-ui,sans-serif;background:#fff;color:#1c1c1e;line-height:1.55}
button{cursor:pointer;font-family:inherit}
:root{
  /* Couleurs de marque — injectées/surchargées par themes.php selon le club */
  --accent:#c8102e;        /* couleur fond/barres/bordures de marque      */
  --accent-text:#c8102e;   /* couleur texte accent (onglet actif, n°1…)  */
  --accent-fill:#c8102e;   /* couleur remplissage barres SVG (graphiques) */
  --accent-bg:#fdf1f3;     /* fond surlignage ligne n°1                  */
  --navy:#1a1a2e;          /* bandeau principal, pastilles classement     */
  /* Sémantique — ne pas modifier dans les thèmes club */
  --red:#c8102e;--red-bg:#fdf1f3;
  /* Niveaux de gris */
  --g50:#f7f7f8;--g100:#eeeeef;--g200:#dededf;--g400:#adadb0;--g600:#636366;
  /* Podiums & états */
  --green:#2a7a2a;--gold:#b8860b;--silver:#888;--bronze:#a05a2c;
  --sb:190px;
  --sb-eq:240px;
}

/* ══ WRAPPER PAGE ════════════════════════════════════════ */
#page-wrap {
  max-width:1280px;
  margin:0 auto;
  background:#fff;
  box-shadow:0 0 0 1px var(--g100);
  min-height:100vh;
}

/* ══ NAV PRINCIPALE (haut) ═══════════════════════════════ */
/* ══ BARRE CLUB (sélecteur) ══════════════════════════════ */
#club-bar {
  display:flex; align-items:center; gap:10px;
  padding:8px 16px;
  background:var(--navy); color:#fff;
  position:sticky; top:0; z-index:101;
}
#club-select {
  flex:1; max-width:400px;
  padding:6px 10px; border:1px solid rgba(255,255,255,.2);
  border-radius:6px; background:rgba(255,255,255,.1);
  color:#fff; font-size:13px; font-weight:600;
  font-family:inherit; cursor:pointer;
  appearance:auto;
}
#club-select option { color:#1c1c1e; background:#fff; }

#nav-main {
  display:flex; align-items:stretch; gap:0;
  border-bottom:2px solid var(--g200);
  background:#fff;
  position:sticky; top:40px; z-index:100;
  overflow-x:auto; scrollbar-width:none;
}
#nav-main::-webkit-scrollbar{display:none}
.nm-btn {
  background:none; border:none;
  border-bottom:2px solid transparent; margin-bottom:-2px;
  padding:11px 22px;
  font-size:12px; font-weight:600; letter-spacing:.05em; text-transform:uppercase;
  color:var(--g600); white-space:nowrap;
  transition:color .13s, border-color .13s;
}
.nm-btn:hover{color:var(--navy)}
.nm-btn.active{color:var(--accent-text); border-bottom-color:var(--accent-text)}
.nm-chev{font-size:8px;margin-left:2px;color:var(--g400);transition:transform .2s}
.nm-parent.active .nm-chev{transform:rotate(180deg);color:var(--accent-text)}
#nav-lv2{
  display:none;align-items:stretch;gap:0;
  background:var(--g50);border-bottom:1px solid var(--g200);
  overflow-x:auto;scrollbar-width:none;
  position:sticky;top:82px;z-index:99;
}
#nav-lv2::-webkit-scrollbar{display:none}
#nav-lv2.visible{display:flex}
.lv2-btn{
  background:none;border:none;
  border-bottom:2px solid transparent;margin-bottom:-1px;
  padding:8px 18px;
  font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  color:var(--g600);white-space:nowrap;cursor:pointer;
  transition:color .13s,border-color .13s;
}
.lv2-btn:hover{color:var(--navy)}
.lv2-btn.active{color:var(--accent-text);border-bottom-color:var(--accent-text)}
.nav-version{font-size:10px;color:#bbb;margin-left:auto;align-self:center;font-weight:400;letter-spacing:.3px;user-select:none}

/* ══ CORPS (sous la nav principale) ══════════════════════ */
#body {
  display:flex;
  align-items:flex-start;
  min-height:300px;
}

/* ══ SOUS-NAV (sidebar gauche, contextuelle) ═════════════ */
#nav-sub {
  width:var(--sb);
  flex-shrink:0;
  border-right:1px solid var(--g200);
  padding:14px 0 30px;
  position:sticky;
  top:84px; /* hauteur barre club + nav principale */
  max-height:calc(100vh - 84px);
  overflow-y:auto;
  background:#fff;
  display:none; /* masqué par défaut */
}
#nav-sub.visible{display:block}

.ns-head {
  font-size:9px; text-transform:uppercase; letter-spacing:.1em;
  color:var(--g400); font-weight:700;
  padding:8px 14px 4px;
}
.ns-group{padding:4px 10px 2px;font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--g300);font-weight:700;margin-top:8px;border-top:1px solid var(--g100)}
.ns-group:first-child{border-top:none;margin-top:0}
.ns-subgroup{padding:4px 14px 3px;font-size:10px;color:var(--navy);font-weight:600;margin-top:6px;background:var(--g50);border-left:2px solid var(--accent);margin-left:8px;margin-right:8px;border-radius:2px}
#nav-sub.eq-wide{width:var(--sb-eq)}
.ns-link {
  display:block; width:100%; background:none; border:none;
  text-align:left; padding:7px 14px;
  font-size:12px; font-weight:500; color:var(--g600);
  border-left:2px solid transparent;
  transition:all .12s; line-height:1.3;
  white-space:normal;
}
.ns-eq-div{display:block;font-size:11px;color:var(--g400);margin-top:1px}
.ns-link.active .ns-eq-div{color:#e8899a}
.ns-link:hover{color:var(--navy); background:var(--g50)}
.ns-link.active{color:var(--accent-text); border-left-color:var(--accent-text); font-weight:600; background:var(--accent-bg)}
.ns-link .ns-sub{display:block; font-size:10px; color:var(--g400); font-weight:400; margin-top:1px}
.ns-link[data-name] .ns-sub{font-size:12px; font-weight:600; color:var(--navy)}
.ns-link[data-name].active .ns-sub{color:var(--accent-text)}
.ns-link.active .ns-sub{color:#e8899a}

/* Champ recherche dans la sous-nav */
.ns-search {
  padding:8px 10px;
}
.ns-search input {
  width:100%; padding:5px 9px;
  border:1px solid var(--g200); border-radius:4px;
  font-family:'DM Sans',sans-serif; font-size:11px; color:var(--navy);
  outline:none; background:var(--g50);
  transition:border-color .13s;
}
.ns-search input:focus{border-color:var(--accent-text); background:#fff}

/* ══ CONTENU PRINCIPAL ════════════════════════════════════ */
#content {
  flex:1; min-width:0;
  padding:20px 22px 40px;
}

.section{display:none}
.section.active{display:block; animation:fi .18s ease}
@keyframes fi{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

.page-head{margin-bottom:18px}.breadcrumb{display:flex;align-items:center;gap:6px;margin-top:5px;font-size:11px}.bc-root{color:var(--g400);font-weight:500}.bc-sep{color:var(--g400)}.bc-current{color:var(--accent-text);font-weight:600}
.page-title{font-size:16px;font-weight:700;color:var(--navy)}
.page-sub{font-size:11px;color:var(--g400);margin-top:2px}

/* Stats strip */
.stats-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--g200);border:1px solid var(--g200);border-radius:5px;overflow:hidden;margin-bottom:20px}
@media(max-width:500px){.stats-strip{grid-template-columns:1fr 1fr}}
.ss-item{background:#fff;padding:13px 14px}
.ss-val{font-size:15px;font-weight:700;color:var(--navy);line-height:1.1;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ss-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--g400);font-weight:500}

/* Graphiques licenciés */
.lic-charts{display:flex;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.lc-box{flex:1;min-width:240px;background:#fff;border:1px solid var(--g200);border-radius:6px;padding:14px 16px 12px}
.lc-title{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--g400);font-weight:600;margin-bottom:10px}
.lc-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.lc-label{width:24px;font-size:13px;font-weight:700;color:var(--navy);text-align:right;flex-shrink:0}
.lc-label-cat{width:80px;min-width:80px;font-size:12px;text-align:left}
.lc-bar-bg{flex:1;height:18px;background:var(--g50);border-radius:9px;overflow:hidden}
.lc-bar{height:100%;border-radius:9px;min-width:3px;transition:width .3s ease}
.lc-bar-cl{background:var(--accent)}
.lc-val{font-size:12px;font-weight:600;color:var(--navy);white-space:nowrap;min-width:52px}
.lc-val-zero{color:var(--g200);font-weight:400}
.lc-row-empty{opacity:.4}
.lc-row-empty .lc-bar-bg{height:10px}
.lc-pct{font-weight:400;color:var(--g400);font-size:11px}
.tf-click{cursor:pointer;transition:opacity .15s}.tf-click:hover{opacity:.75}
.tf-label{width:150px;min-width:150px;max-width:150px;font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tf-pts{font-weight:400;color:var(--g400);font-size:11px;margin-left:6px}
.lc-bar-up{background:var(--accent)}
.lc-bar-down{background:var(--accent)}
.tf-val-up{color:var(--accent-text);font-weight:700}
.tf-val-down{color:var(--accent-text);font-weight:700}

/* Tableau */
.tw{overflow-x:auto}
.dt{width:100%;border-collapse:collapse;font-size:12px;line-height:1.2;table-layout:auto}
#cl-table td:nth-child(2){white-space:nowrap}
.dt thead th{background:var(--g50);border-bottom:2px solid var(--g200);padding:4px 8px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--g600);font-weight:600;text-align:left;white-space:nowrap}
.dt thead th.tc{text-align:center}
.dt tbody td{padding:4px 8px;border-bottom:1px solid var(--g100);vertical-align:middle;line-height:1.2}
.dt tbody tr:last-child td{border-bottom:none}
.dt tbody tr:hover{background:var(--g50)}
.rhi{background:var(--accent-bg)!important}.rcsq{background:#f0f8f0!important}.rmor{background:#f0f8f0!important}
.tc{text-align:center}.tm{color:var(--g600)}
.tpts{font-weight:700;color:var(--navy)}.tmu{color:var(--g600);font-size:11px}
.medal{display:inline-flex;align-items:center;justify-content:center;width:21px;height:21px;border-radius:50%;font-size:10px;font-weight:700;color:#fff}
.gd{background:var(--gold)}.sv{background:var(--silver)}.br{background:var(--bronze)}
.rn{color:var(--g400);font-size:12px}.r1{color:var(--accent-text);font-weight:700}
.cdot{color:var(--accent-text);font-size:8px;vertical-align:middle;margin-left:3px}
.bs{display:inline-block;background:var(--navy);color:#fff;font-size:10px;font-weight:600;padding:2px 6px;border-radius:3px}
.bs.sm{font-size:9px;padding:1px 5px}
.res-b{display:inline-block;font-size:10px;font-weight:600;padding:2px 7px;border-radius:3px}
.rb-w{background:#e8f5e8;color:var(--green)}.rb-l{background:#fdecea;color:var(--accent-text)}.prt-sets{min-width:80px;padding:3px 6px!important;vertical-align:middle}.sets-grid{display:flex;flex-direction:column;gap:0}.sets-row{display:flex;gap:6px}.sets-row b{color:var(--navy);font-weight:400;font-size:11px;min-width:16px;text-align:right}.sets-row span{color:var(--g400);font-size:11px;min-width:16px;text-align:right}.sets-top{margin-bottom:1px}
.eu{color:var(--green);font-weight:600}.ed{color:var(--accent-text);font-weight:600}

/* Équipe */
.eq-detail{display:grid;grid-template-columns:1fr;gap:26px;align-items:start;max-width:780px}
@media(max-width:580px){.eq-detail{grid-template-columns:1fr}}
.sl{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--g400);font-weight:600;margin-bottom:9px;padding-bottom:6px;border-bottom:1px solid var(--g200)}
.mr{display:flex;align-items:center;gap:4px;padding:1px 4px;border-radius:2px;margin-bottom:0;background:none;font-size:11px;position:relative;transition:background .1s}
.j-group{margin-bottom:8px}
.j-group-head{display:flex;align-items:center;gap:6px;padding:2px 0 4px;border-bottom:1px solid var(--g100);margin-bottom:2px}
.j-num{font-size:10px;font-weight:700;color:var(--navy);background:var(--g100);padding:1px 6px;border-radius:3px}
.j-date{font-size:10px;color:var(--g400);flex:1}
.jbadge{font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:1px 5px;border-radius:3px}
.jbadge-done{background:#e8f5e9;color:#2a7a2a}
.jbadge-todo{background:#eef2ff;color:#4f5fb3}
.jbadge-partial{background:#fff3e0;color:#b45309}
.mr:hover{background:var(--g100)}
.mw{}.ml2{}.mcsq{}.mcsq-vis{}.mu{}
.md{min-width:30px;text-align:center;font-size:10px;color:var(--g600);line-height:1.2}
.md b{display:block;font-size:14px;color:var(--navy);font-family:'DM Mono',monospace}
.mv{flex:1;display:flex;align-items:center;gap:3px;flex-wrap:wrap;font-size:11px;min-width:0}
.tu{font-weight:700;color:var(--accent-text)}.msep{color:var(--g400);font-size:9px}
.ms{font-size:11px;font-weight:600}
.sw{color:var(--green)}.sl2{color:var(--accent-text)}
.mloc{font-size:10px;color:var(--g600);white-space:nowrap}.mhint{color:var(--g400);font-size:14px;font-weight:700}

/* ── Tableau final Coupe (vue Département) ──────────────── */
.dep-elim-section{margin:16px 0 20px}
.dep-elim-title{font-size:13px;font-weight:700;color:var(--navy);padding:6px 0 10px;border-bottom:2px solid var(--navy);margin-bottom:14px}
/* Bracket = tableau principal ou consolante */
.dep-bracket{margin-bottom:20px;max-width:480px}
.dep-bracket-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--g500);padding:5px 10px;background:var(--g50);border:1px solid var(--g200);border-radius:5px;margin-bottom:10px}
/* Rupture de stade */
.dep-bracket-stade{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--g400);padding:10px 0 4px;border-bottom:1px solid var(--g100);margin-bottom:6px}
.dep-bracket:first-child .dep-bracket-stade:first-of-type{padding-top:2px}
/* Carte match */
.dep-match-card{border:1px solid var(--g200);border-radius:6px;margin-bottom:6px;overflow:hidden;cursor:pointer;transition:box-shadow .15s;background:#fff}
.dep-match-card:hover{box-shadow:0 2px 8px rgba(0,0,0,.08)}
.dep-match-todo-card{padding:10px;display:flex;align-items:center;justify-content:center;min-height:50px;cursor:default;border:1px solid var(--g100);border-radius:6px;margin-bottom:6px}
.dep-match-row{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#fff}
.dep-match-win{background:#f0f8f0}
.dep-match-name{flex:1;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Score identique aux .tpts des tableaux de poule */
.dep-match-score{font-weight:700;color:var(--g300);min-width:22px;text-align:center;font-size:12px}
.dep-match-score-w{color:var(--navy)}
.dep-match-todo{color:var(--g300)}
.dep-match-badge{padding:2px 8px 5px;background:var(--g50)}
@media(max-width:600px){
  .dep-bracket{max-width:100%}
  .dep-match-name{font-size:11px}
}

/* ── Tableau final Coupe (vue Département) ──────────────── */
.bilan-elim-wrap{padding:6px 8px 4px}
.bilan-elim-match{border:1px solid var(--g200);border-radius:5px;overflow:hidden;margin-bottom:6px}
.bilan-elim-match.mclick{cursor:pointer}.bilan-elim-match.mclick:hover{border-color:var(--navy)}
.bilan-elim-row{display:flex;align-items:center;gap:6px;padding:4px 8px;background:#fff}
.bilan-elim-win{background:#f0f8f0}
.bilan-elim-name{flex:1;font-size:11px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bilan-elim-score{font-weight:700;color:var(--g300);min-width:20px;text-align:center;font-size:12px}
.bilan-elim-score-w{color:var(--navy)}

/* ── Élimination directe ───────────────────────────────── */
.elim-match{border:1px solid var(--g200);border-radius:8px;overflow:hidden;margin-bottom:14px;cursor:default;transition:box-shadow .15s}
.elim-match.mclick{cursor:pointer}.elim-match.mclick:hover{box-shadow:0 2px 10px rgba(0,0,0,.08)}
.elim-head{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--g50);border-bottom:1px solid var(--g200)}
.elim-date{font-size:11px;color:var(--g400);flex:1}
.elim-hint{font-size:11px;color:var(--g400);margin-left:auto}
.elim-body{padding:10px 14px;display:flex;flex-direction:column;gap:6px}
.elim-row{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:5px;background:#fff}
.elim-winner{background:#f0f8f0}
.elim-name{flex:1;font-size:13px;font-weight:500}
.elim-team{display:inline}
.elim-us{color:var(--accent-text);font-weight:700}
.elim-score{font-weight:700;color:var(--g300);min-width:24px;text-align:center;font-size:12px}
.elim-score-w{color:var(--navy)}
.elim-score-todo{color:var(--g300);font-size:12px}
@media(max-width:480px){
  .elim-score{min-width:20px}
  .elim-name{font-size:12px}
  .elim-body{padding:8px 10px}
}

/* Détail match */
.match-detail{animation:fi .18s ease}
.back-btn{display:inline-flex;align-items:center;gap:5px;background:none;border:1px solid var(--g200);border-radius:4px;padding:5px 12px;font-size:11px;color:var(--g600);margin-bottom:14px;transition:all .12s}
.back-btn:hover{border-color:var(--accent-text);color:var(--accent-text)}
.match-header{display:flex;align-items:center;background:var(--g50);border:1px solid var(--g200);border-radius:5px;padding:14px 16px;margin-bottom:14px;gap:10px}
.mh-team{flex:1;font-size:12px;font-weight:600;color:var(--g600)}.mh-team.mh-us{color:var(--accent-text);font-weight:700}.mh-team:last-child{text-align:right}
.mh-score{font-family:'DM Mono',monospace;font-size:22px;font-weight:700;color:var(--navy);text-align:center;white-space:nowrap;padding:0 10px}
.match-compo{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.mc-player{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid var(--g100)}
.mc-player:last-child{border-bottom:none}
.mc-name{font-size:12px;font-weight:500}.mc-cat{font-size:10px;color:var(--g600);font-family:'DM Mono',monospace}

/* Joueur */
.jc{display:grid;grid-template-columns:175px 1fr;gap:20px;align-items:start;animation:fi .18s ease}
@media(max-width:560px){.jc{grid-template-columns:1fr}}
.jr-top{display:flex;gap:14px;align-items:flex-start;margin-bottom:16px}
.jr-graph{flex:1;min-width:0;max-width:100%}
#j-evol-chart{max-width:100%;overflow-x:auto}
.jr{min-width:0;overflow:hidden}
#j-tab-stats,#j-tab-matchs,#j-stats-async{min-width:0;max-width:100%}
#j-kpis-side{display:flex;gap:0;margin:12px 0}
#j-kpis-side-data{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--g200);border:1px solid var(--g200);border-radius:6px;overflow:hidden;width:100%}
.jkpi-side{text-align:center;background:#fff;padding:10px 6px}
.jkv-s{display:block;font-size:22px;font-weight:700;color:var(--navy);line-height:1.1}
.jkl-s{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--g400);margin-top:3px;font-weight:500}
.jl{background:var(--g50);border:1px solid var(--g200);border-radius:6px;padding:18px 13px;text-align:center}
.jav{width:62px;height:62px;border-radius:50%;background:var(--navy);margin:0 auto 11px;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;color:#fff;letter-spacing:-1px}
.jname{font-size:13px;color:var(--navy);line-height:1.35;margin-bottom:3px}.jname strong{font-size:14px}
.jlic{font-family:'DM Mono',monospace;font-size:10px;color:var(--g400);margin-bottom:11px}
.jpts{font-size:32px;font-weight:700;color:var(--accent-text);line-height:1}.jptsl{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--g400);margin-bottom:4px}
.jbest{font-size:12px;color:var(--g600);margin-top:6px}
.jbest strong{color:var(--navy);font-weight:700}
.jbest-date{font-size:10px;color:var(--g400);margin-top:1px;margin-bottom:8px}
.jkpis{display:grid;grid-template-columns:1fr 1fr;gap:5px;border-top:1px solid var(--g200);padding-top:11px;margin-top:10px}
.jkpi{text-align:center;background:var(--g50);border:1px solid var(--g100);border-radius:4px;padding:7px 4px}
.jkv{display:block;font-size:13px;font-weight:700;color:var(--navy);margin-bottom:2px}
.jkl{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--g400)}
.jevol{font-size:10px;font-weight:600;margin:4px 0 8px;text-align:center}
/* ── Parcours de saison (cadre fiche joueur) ── */
.jparcours{position:relative;display:inline-block;text-align:left;padding-left:20px;margin:14px 0 4px}
.jp-line{position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:var(--g200)}
.jp-step{position:relative;margin-bottom:16px}
.jp-step:last-child{margin-bottom:0}
.jp-dot{position:absolute;left:-19px;top:3px;width:9px;height:9px;border-radius:50%}
.jp-dot-lg{left:-20px;top:5px;width:11px;height:11px;border:2px solid var(--g50)}
.jp-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.05em;line-height:1.3}
.jp-val{font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.jp-val-sm{font-size:16px;color:#1c1c1e}
.jp-val-lg{font-size:24px}
.jp-num{display:inline-block;min-width:54px}
.jp-delta{font-size:12px;font-weight:500;margin-left:4px}
.dt tbody tr.ph-sep>td{border-top:3px solid var(--accent)!important}
/* Onglets fiche joueur */
.j-tabs{display:flex;gap:0;border-bottom:2px solid var(--g200);margin-bottom:14px}
.j-tab{background:none;border:none;padding:8px 18px;font-size:13px;font-weight:600;color:var(--g400);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .2s,border-color .2s}
.j-tab:hover{color:var(--navy)}
.j-tab.active{color:var(--navy);border-bottom-color:var(--accent-text)}
.j-tab-pane{}
/* Cartes stats */
.j-stat-section{margin-bottom:16px;max-width:100%;overflow:hidden}
.j-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}
.j-stat-card{text-align:center;background:var(--g50);border:1px solid var(--g100);border-radius:6px;padding:10px 6px}
.j-sc-val{display:block;font-size:22px;font-weight:700;color:var(--navy);line-height:1.1}
.j-sc-lbl{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--navy);margin-top:4px;font-weight:600}
.j-sc-sub{display:block;font-size:9px;color:var(--g400);margin-top:2px}
.j-tranche-tbl td,.j-tranche-tbl th{font-size:12px;padding:5px 8px}
.jinfo-block{margin:10px 0;text-align:left;border-top:1px solid var(--g200);padding-top:10px}
.ji-row{display:flex;justify-content:space-between;align-items:center;padding:3px 0;font-size:10.5px;border-bottom:1px solid var(--g100)}
.ji-row:last-child{border-bottom:none}
.ji-k{color:var(--g400);font-weight:500}
.ji-v{color:var(--navy);font-weight:600;text-align:right;max-width:60%;word-break:break-word}
.j-kv{display:block;font-size:18px;font-weight:700;color:var(--navy);line-height:1}
.j-kl{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--g400);margin-top:3px}
.histo{display:flex;align-items:flex-end;gap:3px;height:84px;border-bottom:1px solid var(--g200);margin-bottom:5px}
.hcol{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end;gap:2px}
.hval{font-size:9px;font-weight:600;color:var(--accent-text);min-height:11px;text-align:center}
.hbg{width:100%;flex:1;display:flex;align-items:flex-end}
.hbar{width:100%;background:var(--g200);border-radius:2px 2px 0 0;min-height:3px}.hnow{background:var(--accent)}
.hlbl{font-size:8px;color:var(--g400);white-space:nowrap}.hleg{font-size:11px;color:var(--g600);text-align:right;margin-bottom:4px}

/* Bilan saison – Championnats */
.bilan-type-label{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--navy);font-weight:700;padding:12px 14px;background:var(--g50);border-left:3px solid var(--accent);border-radius:4px;margin:24px 0 8px}
.bilan-phase-label{font-size:11px;font-weight:600;color:var(--navy);padding:12px 0 6px;margin-bottom:0;display:flex;align-items:center;gap:8px}
.bf-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:3px}
.bf-badge-live{background:#eef2ff;color:#4f5fb3}
.bf-badge-done{background:#f3f4f6;color:#6b7280}
.bilan-filters{display:flex;gap:4px;margin:10px 0 6px}
.bf-btn{background:none;border:1px solid var(--g200);padding:5px 14px;border-radius:6px;font-size:12px;font-weight:600;color:var(--g500);cursor:pointer;transition:all .15s}
.bf-btn:hover{border-color:var(--g300);color:var(--navy)}
.bf-btn.active{background:var(--navy);color:#fff;border-color:var(--navy)}
[data-bilan-status].bilan-hidden{display:none}
[data-dep-type].bilan-hidden{display:none}
[data-dep-status].bilan-hidden{display:none}
[data-reg-status].bilan-hidden{display:none}
[data-reg-genre].bilan-hidden{display:none}
[data-nat-status].bilan-hidden{display:none}
[data-nat-genre].bilan-hidden{display:none}
[data-pro-status].bilan-hidden{display:none}
[data-pro-genre].bilan-hidden{display:none}
.bilan-eq-block{margin-bottom:0;min-width:0}
.bilan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;align-items:start;margin-top:4px}
@media(max-width:600px){.bilan-grid{grid-template-columns:1fr}}
.bilan-eq-head{font-size:12px;font-weight:700;color:var(--navy);padding:10px 0 6px;transition:opacity .15s}.bilan-eq-head:hover{opacity:.7}
.bilan-table-wrap{overflow-x:auto;border:1px solid var(--g200);border-radius:8px;background:#fff}
.bilan-dt{margin:0;font-size:12px}
.bilan-dt thead th{background:var(--g50);font-size:11px;padding:6px 10px;border-bottom:1px solid var(--g200)}
.bilan-dt tbody td{padding:5px 10px;border-bottom:1px solid var(--g100)}
.bilan-dt tbody tr:last-child td{border-bottom:none}
.bilan-dt tbody tr.rcsq{background:var(--accent-bg)}.bilan-dt tbody tr.rmor{background:#f0f8f0}

/* États */
.empty-state{padding:32px 20px;text-align:center;color:var(--g400);font-size:13px}.empty-state.small{padding:12px 10px}
.data-notice{font-size:11px;color:#6b5c00;background:#fffde6;border-left:3px solid #f5d000;padding:8px 12px;border-radius:0 4px 4px 0;margin-bottom:16px;line-height:1.4}
.ei{display:block;font-size:26px;margin-bottom:7px}
.cl-filters{display:flex;align-items:center;gap:16px;padding:10px 0 14px;flex-wrap:wrap}
#sec-classement .tw{max-width:none;overflow-x:auto}

.th-sort:hover{background:var(--g100)}
.sort-ic{font-size:9px;color:var(--g400)}
.th-sort.asc .sort-ic::after{content:'▲'}
.th-sort.desc .sort-ic::after{content:'▼'}
.th-sort .sort-ic{display:none}
.th-sort:hover .sort-ic,.th-sort.asc .sort-ic,.th-sort.desc .sort-ic{display:inline}
.clf{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--g600);cursor:pointer;user-select:none}
.clf input{accent-color:var(--accent-text);cursor:pointer}
.cl-count{font-size:11px;color:var(--g400);margin-left:auto}
.loading-row{display:flex;align-items:center;gap:9px;padding:18px 0;color:var(--g400);font-size:12px}
.spin{width:13px;height:13px;border:2px solid var(--g200);border-top-color:var(--accent-text);border-radius:50%;animation:rot .65s linear infinite;flex-shrink:0}
@keyframes rot{to{transform:rotate(360deg)}}

/* ══ CLUB ════════════════════════════════════════════════ */
.club-card{display:flex;align-items:center;gap:16px;background:var(--g50);border:1px solid var(--g200);border-radius:8px;padding:18px 20px;margin-bottom:22px}
.club-logo{font-size:36px;flex-shrink:0}
.club-name{font-size:18px;font-weight:700;color:var(--navy);margin-bottom:4px}
.club-meta{font-size:12px;color:var(--g600)}
.club-equipes-type{margin-bottom:20px}
.club-type-label{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--g400);font-weight:700;padding-bottom:8px;border-bottom:1px solid var(--g200);margin-bottom:12px}
.club-phases-row{display:flex;gap:28px;align-items:flex-start}
.club-phase-col{flex:1;min-width:260px}
.club-phase-label{font-size:10px;font-weight:700;color:var(--navy);margin-bottom:8px}
.club-equipes-grid{display:flex;flex-direction:column;gap:8px}
.ceq-card{border:1px solid var(--g200);border-radius:5px;padding:7px 10px;display:flex;align-items:center;gap:0;background:#fff;transition:border-color .12s,box-shadow .12s;justify-content:space-between}
.ceq-card:hover{border-color:var(--accent-text);box-shadow:0 2px 8px rgba(200,16,46,.08)}
.ceq-right{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0;min-width:44px}
.ceq-pos{font-size:20px;font-weight:700;line-height:1.1;color:inherit}
.ceq-pts{font-size:10px;font-weight:600;color:var(--g600);white-space:nowrap}
.ceq-body{flex:1;min-width:0}
.ceq-name{font-size:11px;font-weight:600;color:var(--navy);margin-bottom:3px}
.ceq-bilan{font-size:10px}
.ceq-v{color:var(--green);font-weight:600}.ceq-n{color:var(--g400)}.ceq-d{color:var(--accent-text);font-weight:600}
.club-equipes-grid{display:flex;flex-direction:column;gap:5px}
.club-renc-list{display:flex;flex-direction:column;gap:4px;max-width:680px}
.crenc{display:flex;align-items:center;gap:6px;padding:2px 8px;font-size:12px;line-height:1;border-bottom:1px solid var(--g100);transition:background .1s}
.crenc *{line-height:1}
.crenc:hover{background:var(--g100)}
.crenc-date{font-family:'DM Mono',monospace;font-size:11px;color:var(--g600);white-space:nowrap;min-width:42px}
.crenc-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:1px 5px;border-radius:3px;white-space:nowrap}
.crenc-todo{background:#eef2ff;color:#4f5fb3}
.crenc-played{background:#f3f4f6;color:#6b7280}
.agenda-filters{display:flex;align-items:center;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.agenda-filter-time{display:flex;gap:4px}
.agenda-filter-time button{background:none;border:1px solid var(--g200);padding:5px 14px;border-radius:6px;font-size:12px;font-weight:600;color:var(--g500);cursor:pointer;transition:all .15s}
.agenda-filter-time button:hover{border-color:var(--g300);color:var(--navy)}
.agenda-filter-time button.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.agenda-filter-comp{display:flex;gap:4px}
.ag-comp-btn{display:flex;align-items:center;gap:4px;background:none;border:1px solid var(--g200);padding:4px 10px;border-radius:6px;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;color:var(--g400)}
.ag-comp-btn:hover{border-color:var(--g300)}
.ag-check{width:14px;height:14px;border-radius:3px;border:1.5px solid var(--g300);display:flex;align-items:center;justify-content:center;font-size:10px;line-height:1;transition:all .15s;color:transparent}
.ag-comp-btn.checked .ag-check{color:#fff}
.ag-comp-btn-championnat.checked{border-color:#4f5fb3;color:#4f5fb3}
.ag-comp-btn-championnat.checked .ag-check{background:#4f5fb3;border-color:#4f5fb3}
.ag-comp-btn-coupe.checked{border-color:#92400e;color:#92400e}
.ag-comp-btn-coupe.checked .ag-check{background:#92400e;border-color:#92400e}
.ag-comp-btn-jeunes.checked{border-color:#065f46;color:#065f46}
.ag-comp-btn-jeunes.checked .ag-check{background:#065f46;border-color:#065f46}
.ag-comp-btn-veterans.checked{border-color:#7c3aed;color:#7c3aed}
.ag-comp-btn-veterans.checked .ag-check{background:#7c3aed;border-color:#7c3aed}
.ag-comp-btn-pro.checked{border-color:#991b1b;color:#991b1b}
.ag-comp-btn-pro.checked .ag-check{background:#991b1b;border-color:#991b1b}
.agenda-table{font-size:12px}
.agenda-table td{vertical-align:middle}
.ag-date{white-space:nowrap;font-weight:600;color:var(--navy);min-width:60px}
.ag-comp{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:2px 7px;border-radius:3px;white-space:nowrap}
.ag-comp-championnat{background:#eef2ff;color:#4f5fb3}
.ag-comp-coupe{background:#fef3c7;color:#92400e}
.ag-comp-jeunes{background:#ecfdf5;color:#065f46}
.ag-comp-vtrans{background:#f3e8ff;color:#7c3aed}
.ag-comp-pro{background:#fef2f2;color:#991b1b}
.ag-poule{font-size:11px;color:var(--g500);white-space:nowrap}
.ag-vs{color:var(--g400);font-size:11px}
.ag-upcoming{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--g400)}
.ag-row-played{opacity:.7}
.csq-hl{color:var(--accent-text)}
.crenc-score{font-size:12px;font-weight:600;white-space:nowrap}
.crenc-w{background:#e8f5e9;color:var(--green)}
.crenc-l{background:#fdecea;color:var(--accent-text)}
.crenc-teams{flex:1;min-width:0}

/* Graphiques club */
.club-charts-row{display:flex;gap:32px;align-items:flex-start;flex-wrap:wrap;margin-bottom:4px}
.club-chart-block{display:flex;flex-direction:column;align-items:center}
.club-chart-title{font-size:12px;font-weight:600;color:var(--navy);margin-bottom:8px;text-align:center}
.chart-legend{display:flex;gap:6px 14px;font-size:11px;color:var(--g600);margin-top:8px;flex-wrap:wrap;justify-content:center}
.cl-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px;vertical-align:middle}

/* Coordonnées club */
.club-coords{display:flex;flex-direction:column;gap:12px;margin-bottom:4px;max-width:500px}
.cc-row{display:flex;align-items:flex-start;gap:12px}
.cc-icon{font-size:16px;margin-top:1px;flex-shrink:0}
.cc-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--g400);font-weight:600;margin-bottom:2px}
.cc-val{font-size:12px;color:var(--navy);line-height:1.5}

/* Sections Club */

/* ══════════════════════════════════════════════════════════
   RESPONSIVE MOBILE (max-width: 768px)
   ══════════════════════════════════════════════════════════ */
@media(max-width:768px){

  /* ── 1. Sidebar: overlay plein écran, masquée par défaut ── */
  #nav-sub{
    position:fixed!important; top:0; left:0; bottom:0;
    width:260px!important; max-width:80vw;
    z-index:200; background:#fff;
    box-shadow:4px 0 20px rgba(0,0,0,.15);
    transform:translateX(-100%);
    transition:transform .22s ease;
    display:block!important; /* toujours dans le DOM */
    max-height:100vh!important; top:0!important;
    padding-top:50px!important;
  }
  #nav-sub.visible{
    transform:translateX(-100%); /* visible ne suffit plus, il faut .mob-open */
  }
  #nav-sub.mob-open{
    transform:translateX(0)!important;
  }
  /* Backdrop sombre derrière la sidebar */
  #mob-backdrop{
    display:none; position:fixed; inset:0; z-index:199;
    background:rgba(0,0,0,.35);
    -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
  }
  #mob-backdrop.show{display:block}

  /* Bouton contextuel mobile: sous les onglets, affiche l'élément sélectionné */
  #mob-ctx{
    display:none!important;
    width:100%;
    align-items:center; gap:8px;
    padding:10px 12px;
    background:var(--navy);
    border:none; border-bottom:1px solid var(--g200);
    font-size:12px; font-weight:600; color:#fff;
    cursor:pointer; text-align:left;
    font-family:inherit;
  }
  #mob-ctx.has-content{
    display:flex!important;
  }
  #mob-ctx-icon{font-size:14px; color:rgba(255,255,255,.6)}
  #mob-ctx-label{flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
  #mob-ctx-arrow{font-size:10px; color:rgba(255,255,255,.6)}

  /* Masquer le titre équipe sur mobile (déjà dans le bouton contextuel) */
  #sec-equipe > .page-head{display:none}
  #mob-sb-close{
    display:flex!important;
    position:absolute; top:10px; right:10px;
    width:32px; height:32px; border-radius:50%;
    background:var(--g100); border:none;
    align-items:center; justify-content:center;
    font-size:18px; color:var(--g600); cursor:pointer;
  }

  /* ── 2. Navigation onglets compacte ─────────────────── */
  #club-bar{padding:6px 10px}
  #club-select{font-size:12px; max-width:100%; width:100%; box-sizing:border-box}
  #nav-main{top:36px}
  #nav-lv2{top:72px}
  .nm-btn{padding:9px 6px; font-size:10px; letter-spacing:0}
  .nm-btn:first-child{margin-left:4px}
  .nm-chev{font-size:7px;margin-left:1px}
  .nav-version{display:inline;font-size:9px}
  .lv2-btn{padding:7px 10px;font-size:9px}

  /* ── 3. Tableaux scrollables horizontalement ─────────── */
  .tw, .eq-block, .bilan-eq-block, .dt-wrap{overflow-x:auto; -webkit-overflow-scrolling:touch}
  .dt{min-width:420px} /* force scroll si trop étroit */
  .j-stat-section .dt{min-width:0!important}
  .j-stat-section .tw{max-width:100%;overflow-x:auto}
  .j-stat-section{max-width:100%;overflow-x:auto}

  /* Tableau Licenciés: compact */
  #cl-table{min-width:0!important; font-size:9px!important}
  #cl-table thead th{font-size:9px!important; padding:3px 3px}
  #cl-table tbody td{padding:2px 3px; font-size:9px!important}
  #cl-table .tm{font-family:inherit!important; font-size:9px!important}
  /* Entêtes raccourcies sur mobile */
  #cl-table thead th:nth-child(4){font-size:0!important}
  #cl-table thead th:nth-child(4)::after{content:'Clt';font-size:9px}
  #cl-table thead th:nth-child(4) .sort-ic{font-size:9px}
  #cl-table thead th:nth-child(6){font-size:0!important}
  #cl-table thead th:nth-child(6)::after{content:'Pts Mens';font-size:9px}
  #cl-table thead th:nth-child(6) .sort-ic{font-size:9px}
  #cl-table thead th:nth-child(7){font-size:0!important}
  #cl-table thead th:nth-child(7)::after{content:'Prog M';font-size:9px}
  #cl-table thead th:nth-child(7) .sort-ic{font-size:9px}
  #cl-table thead th:nth-child(8){font-size:0!important}
  #cl-table thead th:nth-child(8)::after{content:'Pts Off';font-size:9px}
  #cl-table thead th:nth-child(8) .sort-ic{font-size:9px}
  #cl-table thead th:nth-child(9){font-size:0!important}
  #cl-table thead th:nth-child(9)::after{content:'Pts Init';font-size:9px}
  #cl-table thead th:nth-child(9) .sort-ic{font-size:9px}
  #cl-table thead th:nth-child(10){font-size:0!important}
  #cl-table thead th:nth-child(10)::after{content:'Prog S';font-size:9px}
  #cl-table thead th:nth-child(10) .sort-ic{font-size:9px}
  /* Tableau Licenciés: masquer colonnes Licence(11), Cl.France(12), Cl.Départ.(13) */
  #cl-table th:nth-child(11), #cl-table td:nth-child(11),
  #cl-table th:nth-child(12), #cl-table td:nth-child(12),
  #cl-table th:nth-child(13), #cl-table td:nth-child(13){display:none}
  /* Colonnes # et Joueur fixes au scroll horizontal */
  #cl-table th:nth-child(1), #cl-table td:nth-child(1){
    position:sticky; left:0; z-index:2; background:#fff;
  }
  #cl-table th:nth-child(2), #cl-table td:nth-child(2){
    position:sticky; left:22px; z-index:2; background:#fff;
    border-right:1px solid var(--g200);
  }
  #cl-table thead th:nth-child(1), #cl-table thead th:nth-child(2){
    background:var(--g50); z-index:3;
  }
  #cl-table tbody tr:hover td:nth-child(1),
  #cl-table tbody tr:hover td:nth-child(2){background:var(--g50)}
  #cl-table tbody tr.rhi td:nth-child(1),
  #cl-table tbody tr.rhi td:nth-child(2){background:#fff}

  /* ── 4. Padding/marges réduits ──────────────────────── */
  #content{padding:14px 10px 30px}
  .page-title{font-size:14px}
  .page-sub{font-size:10px}
  .page-head{margin-bottom:12px}
  .data-notice{font-size:10px; padding:6px 10px}
  .stats-strip{grid-template-columns:1fr 1fr}
  .lic-charts{flex-direction:column;gap:10px;margin-bottom:12px}
  .lc-box{min-width:0;padding:10px 12px 8px}
  .lc-val{font-size:11px;min-width:44px}
  .lc-bar-bg{height:14px}
  .lc-row-empty .lc-bar-bg{height:8px}

  /* Fiche club responsive */
  .club-info{font-size:12px}
  .club-info iframe{height:200px!important}

  /* Bilan grille: toujours 1 colonne */
  .bilan-grid{grid-template-columns:1fr!important}
  /* Tableaux Championnats: compacts pour tenir sans scroll horizontal */
  .bilan-dt{font-size:11px; min-width:0!important}
  .bilan-dt thead th{font-size:9px; padding:4px 5px}
  .bilan-dt tbody td{padding:3px 5px}
  .bilan-eq-block{overflow-x:visible}
  .bilan-eq-head{font-size:11px}

  /* Filtres bilan */
  .bf-wrap{flex-wrap:wrap; gap:6px}
  .bf-btn{font-size:11px; padding:5px 10px}

  /* Tableaux Équipes: compacts pour tenir sans scroll */
  .eq-detail .dt{font-size:11px; min-width:0!important}
  .eq-detail .dt thead th{font-size:9px; padding:4px 4px}
  .eq-detail .dt tbody td{padding:3px 4px}
  .eq-detail{max-width:none}
  .eq-block{overflow-x:visible}
  /* Rencontres équipe compactes */
  .crenc{font-size:11px; padding:2px 4px; gap:4px}
  .crenc-date{font-size:10px; min-width:36px}

  /* Agenda: réduire */
  .ag-filters{flex-wrap:wrap; gap:4px}
  .ag-btn{font-size:10px; padding:4px 8px}
  .agenda-table{font-size:9px; table-layout:fixed!important; width:100%!important; min-width:0!important}
  .agenda-table td{padding:2px 2px; overflow:hidden; text-overflow:ellipsis}
  .agenda-table th{padding:2px 2px!important; font-size:8px!important}
  /* Largeurs colonnes: Date 15%, Compétition 20%, Match 65% (Poule+Score masquées) */
  .agenda-table thead th:nth-child(1){width:15%}
  .agenda-table thead th:nth-child(2){width:20%}
  .agenda-table thead th:nth-child(4){width:65%}
  .agenda-table td:nth-child(4){white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:0}
  .ag-date{font-size:9px; min-width:0}
  .ag-comp{font-size:7px; padding:1px 3px; letter-spacing:0}
  .ag-poule{font-size:8px; display:none} /* masquer colonne Poule sur mobile */
  .agenda-table thead th:nth-child(3){display:none} /* masquer header Poule */
  .agenda-table tbody td:nth-child(3){display:none} /* masquer cellule Poule */
  .agenda-table thead th:nth-child(5){display:none} /* masquer header Score */
  .agenda-table tbody td:nth-child(5){display:none} /* masquer cellule Score */
  .ag-vs{font-size:8px}
  .ag-upcoming{font-size:7px}
  .csq-hl{font-size:9px}
  .ag-comp-btn{font-size:9px; padding:3px 6px; gap:3px}
  .ag-check{width:12px; height:12px; font-size:8px}

  /* Stats joueur: fiche compacte */
  .jc{grid-template-columns:1fr!important}
  .ji{grid-template-columns:1fr 1fr}
  .jkpi-side{padding:8px 4px}
  .jkv-s{font-size:18px}
  .jkpis{gap:4px; padding-top:8px; margin-top:8px}
  .jkpi{padding:5px 3px}
  .jkv{font-size:11px}
  /* Graphe pleine largeur */
  .jr-graph{width:100%;max-width:100%}
  .jr{overflow:hidden;max-width:100%}
  #j-evol-chart{max-width:100%}
  #j-evol-chart>div{max-width:100%}
  /* Onglets joueur */
  .j-tab{padding:7px 12px; font-size:12px}
  .j-stat-grid{grid-template-columns:repeat(2,1fr)}
  .j-sc-val{font-size:18px}
  .j-tranche-tbl td,.j-tranche-tbl th{font-size:10px;padding:3px 4px}
  #j-kpis-side .jkv-s{font-size:16px}
  #j-kpis-side .jkl-s{font-size:9px}

  /* Tableau Parties: scroll horizontal, colonne Adversaire fixe */
  #parties-table{font-size:9px!important}
  #parties-table thead th{font-size:9px!important; padding:3px 3px!important}
  #parties-table tbody td{padding:2px 3px!important; font-size:9px!important; font-family:inherit!important}
  #parties-table .tm{font-family:inherit!important; font-size:9px!important}
  /* Forcer le wrapper à ne pas déborder */
  #j-parties .tw{max-width:calc(100vw - 20px)}
  /* Réduire manches dans parties */
  #parties-table .sets-row b, #parties-table .sets-row span{font-size:8px!important; min-width:9px!important}
  #parties-table .sets-row{gap:2px}
  #parties-table .prt-sets{min-width:0!important; padding:2px 2px!important}
  /* Colonne Adversaire fixe au scroll */
  #parties-table th:nth-child(1), #parties-table td:nth-child(1){
    position:sticky; left:0; z-index:2; background:inherit;
    border-right:1px solid var(--g200); white-space:nowrap;
  }
  #parties-table thead th:nth-child(1){
    background:var(--g50); z-index:3;
  }
  #parties-table tbody tr:hover td:nth-child(1){background:var(--g50)}

  /* Overlay club externe */
  #club-ext-wrap{padding:10px}

  /* Match header compact */
  .mh{flex-direction:column; gap:6px; text-align:center}
  .mh-team{font-size:13px}
  .mh-score{font-size:22px}

  /* Parties individuelles: très compact */
  table.dt.prt{font-size:10px!important; min-width:0!important}
  table.dt.prt thead th{font-size:8px!important; padding:3px 3px!important}
  table.dt.prt tbody td{padding:2px 3px!important; font-size:10px!important}
  .prt-sets{min-width:50px!important; padding:2px 2px!important}
  .sets-row b, .sets-row span{font-size:9px!important; min-width:11px!important}
  .sets-row{gap:3px}
  .res-b{font-size:8px; padding:1px 4px}
  /* Compositions match */
  .match-compo{gap:10px}
  .mc-name{font-size:10px}
  .mc-cat{font-size:8px}
  .mc-player{padding:3px 4px}

  /* Roster mobile */
  .roster-tabs{flex-wrap:wrap}
  .roster-team-hd{flex-wrap:wrap}
  .roster-team-hd .rt-name{font-size:12px}
  .roster-team-hd .rt-force{font-size:10px;margin-left:0}
  .roster-team-hd .rt-count{font-size:10px}
  .roster-section{margin-top:10px}
  /* Wrap roster dans un scroll horizontal */
  .roster-team-body, #roster-global{overflow-x:auto;-webkit-overflow-scrolling:touch}
  table.roster-tbl{min-width:0;font-size:11px}
  table.roster-tbl th, table.roster-tbl td{padding:3px 5px}
  /* Masquer Pts Init et Prog sur mobile */
  .rc-pi, .rc-prog{display:none}
  /* Masquer Équipe en vue globale (trop large) */
  .rc-eq{display:none}
  /* Raccourcir les entêtes */
  th.rc-pm{font-size:0!important}
  th.rc-pm::after{content:'Pts M';font-size:9px}
  th.rc-pm .sort-ic{font-size:8px}
  th.rc-po{font-size:0!important}
  th.rc-po::after{content:'Pts O';font-size:9px}
  th.rc-po .sort-ic{font-size:8px}
  th.rc-pct{font-size:0!important}
  th.rc-pct::after{content:'%V';font-size:9px}
  th.rc-pct .sort-ic{font-size:8px}
  /* Nom sticky au scroll horizontal */
  .roster-tbl th.rc-nom, .roster-tbl td.rc-nom{position:sticky;left:0;z-index:2;background:#fff;min-width:110px;border-right:1px solid var(--g200)}
  .roster-tbl thead th.rc-nom{background:var(--g50);z-index:3}
  .roster-ours td.rc-nom{background:#f0f8f0}
  /* Bouton analyse plus petit */
  .roster-btn{font-size:11px;padding:5px 10px}
  .reload-btn{font-size:10px;padding:3px 8px}
  /* Classement de poule dans le roster : scroll + compact */
  #roster-panel .eq-block-cl{overflow-x:auto;-webkit-overflow-scrolling:touch}
  #roster-panel .eq-block-cl .dt{font-size:11px;min-width:0}
  #roster-panel .eq-block-cl .dt thead th{font-size:9px;padding:3px 4px;white-space:nowrap}
  #roster-panel .eq-block-cl .dt tbody td{padding:3px 4px}
  /* Masquer N, PG, PP sur mobile (colonnes 5, 8, 9) */
  #roster-panel .eq-block-cl .dt th:nth-child(5),
  #roster-panel .eq-block-cl .dt td:nth-child(5),
  #roster-panel .eq-block-cl .dt th:nth-child(8),
  #roster-panel .eq-block-cl .dt td:nth-child(8),
  #roster-panel .eq-block-cl .dt th:nth-child(9),
  #roster-panel .eq-block-cl .dt td:nth-child(9){display:none}
  /* Nom d'équipe sticky */
  #roster-panel .eq-block-cl .dt th:nth-child(2),
  #roster-panel .eq-block-cl .dt td:nth-child(2){position:sticky;left:22px;z-index:2;background:#fff;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-right:1px solid var(--g200)}
  #roster-panel .eq-block-cl .dt th:nth-child(1),
  #roster-panel .eq-block-cl .dt td:nth-child(1){position:sticky;left:0;z-index:2;background:#fff}
  #roster-panel .eq-block-cl .dt thead th:nth-child(1),
  #roster-panel .eq-block-cl .dt thead th:nth-child(2){background:var(--g50);z-index:3}
  #roster-panel .eq-block-cl .rcsq td:nth-child(1),
  #roster-panel .eq-block-cl .rcsq td:nth-child(2){background:#f0f8f0}

  /* Analyse des matchs mobile */
  .ma-match{margin-bottom:14px}
  .ma-head{flex-direction:column;align-items:flex-start;padding:8px 10px;gap:4px}
  .ma-head-left{flex-wrap:wrap;gap:6px}
  .ma-head-right{gap:8px}
  .ma-j{font-size:12px;padding:2px 6px}
  .ma-date{font-size:11px}
  .ma-lieu{font-size:10px}
  .ma-adv{font-size:12px}
  .ma-teams{font-size:11px}
  .ma-score{font-size:14px}
  table.ma-tbl{font-size:11px}
  table.ma-tbl thead th{font-size:9px;padding:3px 4px}
  table.ma-tbl tbody td{padding:3px 5px}
  /* Nom joueur sticky */
  table.ma-tbl td:first-child,table.ma-tbl th:first-child{position:sticky;left:0;z-index:2;background:#fff;min-width:90px;border-right:1px solid var(--g200)}
  table.ma-tbl thead th:first-child{background:var(--g50);z-index:3}
  /* Masquer colonne Pts Off sur petit mobile */
  .ma-nom{font-size:11px}
  .ma-res-adv{min-width:80px;font-size:10px}
  .ma-res-pts{min-width:28px;font-size:9px}
  .ma-res-line{gap:4px}
  .ma-sets .sets-row{gap:2px}.ma-sets .sets-row b,.ma-sets .sets-row span{font-size:9px;min-width:11px}
  /* Colonne résultats */
  .ma-res-label{min-width:80px}
}

/* Bouton contextuel mobile: masqué sur desktop */
#mob-ctx{display:none}
#mob-sb-close{display:none}
#mob-backdrop{display:none}

/* ── Roster (joueurs de la poule) ──────────────────────── */
.roster-btn{background:#fff;color:#1c1c1e;border:1px solid #ccc;padding:7px 14px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s}
.roster-btn:hover{background:#f5f5f7;border-color:#999}
.reload-btn{background:none;border:1px solid var(--g200);border-radius:4px;padding:4px 10px;font-size:11px;color:var(--g500);cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:4px;float:right;margin-top:-2px}
.reload-btn:hover{border-color:var(--accent-text);color:var(--accent-text)}
.reload-btn .reload-icon{display:inline-block;font-size:13px;line-height:1}
.reload-btn.spinning .reload-icon{animation:spin-reload .6s linear infinite}
@keyframes spin-reload{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.roster-section{margin-top:14px}
.roster-section .sl{margin-bottom:6px}
.roster-team-hd{display:flex;align-items:center;gap:8px;padding:10px 0 6px;cursor:pointer;user-select:none;border-bottom:1px solid #eee}
.roster-team-hd:hover{opacity:.7}
.roster-team-hd .rt-arrow{font-size:10px;transition:transform .15s;color:#888}
.roster-team-hd .rt-arrow.open{transform:rotate(90deg)}
.roster-team-hd .rt-name{font-weight:600;font-size:13px}
.roster-team-hd .rt-count{font-size:11px;color:#888}
.roster-team-hd .rt-force{font-size:11px;font-weight:700;color:#1c1c1e;margin-left:auto}
.roster-team-hd .rt-ours{color:var(--accent-text)}
.roster-team-body{overflow:hidden;transition:max-height .25s ease}
.roster-team-body.collapsed{max-height:0!important;padding:0}
.roster-name{cursor:pointer;transition:opacity .15s}

/* ── Analyse des matchs ────────────────────────────────── */
.ma-match{margin-bottom:20px;border:1px solid var(--g200);border-radius:8px;overflow:hidden}
.ma-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--g50);gap:10px;flex-wrap:wrap}
.ma-head-left{display:flex;align-items:center;gap:8px}
.ma-head-right{display:flex;align-items:center;gap:10px}
.ma-j{font-weight:700;font-size:13px;color:var(--navy);background:#fff;border:1px solid var(--g200);border-radius:4px;padding:2px 7px}
.ma-date{font-size:12px;color:#666}
.ma-lieu{font-size:11px;color:#888;font-style:italic}
.ma-adv{font-size:13px;font-weight:600}
.ma-teams{font-size:13px;font-weight:500}
.ma-sep{color:#888;margin:0 2px}
.ma-score{font-size:15px;font-weight:700}
.ma-tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.ma-tbl{font-size:12px;margin:0;border-radius:0}
table.ma-tbl thead th{font-size:10px}
.ma-nom{font-weight:500;white-space:nowrap}
.ma-nom:hover{opacity:.7;text-decoration:underline}
.ma-nom-pts{font-size:10px;color:#888;font-weight:400}
.ma-results{padding:4px 8px!important}
.ma-res-line{display:flex;align-items:center;gap:6px;padding:2px 0;border-bottom:1px solid #f5f5f5}
.ma-res-line:last-child{border-bottom:none}
.ma-res-dbl{border-top:1px solid #ddd;margin-top:2px;padding-top:4px}
.ma-res-label{font-size:10px;color:#888;font-style:italic;min-width:100px}
.ma-res-adv{font-size:11px;min-width:100px}
.ma-res-adv:hover{opacity:.7;text-decoration:underline}
.ma-res-pts{font-size:10px;color:#888;min-width:35px;text-align:right}
.ma-sets{margin-left:4px}.ma-sets .sets-grid{display:inline-flex;flex-direction:column;gap:0;vertical-align:middle}.ma-sets .sets-row{display:flex;gap:4px}.ma-sets .sets-row b{color:var(--navy);font-weight:600;font-size:10px;min-width:14px;text-align:right}.ma-sets .sets-row span{font-size:10px;min-width:14px;text-align:right}.ma-sets .sets-top{margin-bottom:0}
.ma-adv-row th{border-bottom:1px solid var(--g100)!important;padding:2px 8px!important}
.roster-name:hover{opacity:.7;text-decoration:underline}
.roster-pct{font-weight:600}
.roster-pct.good{color:#2a7a2a}
.roster-pct.bad{color:#c8102e}
.roster-prog{font-size:11px}
.roster-prog.pos{color:#2a7a2a}
.roster-prog.neg{color:#c8102e}
.roster-ours{background:#f0f8f0}
.roster-tabs{display:flex;gap:6px;margin-bottom:12px}
.roster-tab{padding:6px 14px;border-radius:5px;border:1px solid #ddd;background:#fff;font-size:11px;font-weight:600;cursor:pointer}
.roster-tab.active{background:#1c1c1e;color:#fff;border-color:#1c1c1e}
table.roster-tbl th.sortable{cursor:pointer;user-select:none}
table.roster-tbl th.sortable:hover{color:var(--accent-text)}
table.roster-tbl th .sort-ic{font-size:8px;margin-left:2px;color:#bbb}
table.roster-tbl{table-layout:fixed}
table.roster-tbl .rc-nom{width:24%}
table.roster-tbl .rc-eq{width:18%}
table.roster-tbl .rc-pm{width:10%}
table.roster-tbl .rc-po{width:10%}
table.roster-tbl .rc-pi{width:10%}
table.roster-tbl .rc-prog{width:9%}
table.roster-tbl .rc-mj{width:7%}
table.roster-tbl .rc-v{width:6%}
table.roster-tbl .rc-d{width:6%}
table.roster-tbl .rc-pct{width:8%}
table.roster-tbl td.rc-nom{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ══ Brûlages ═════════════════════════════════════════════ */
.bru-phase-title{font-size:14px;font-weight:600;color:var(--navy);margin-bottom:10px}
.bru-legend{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:12px;font-size:11px;color:var(--g600)}
.bru-legend span{display:flex;align-items:center;gap:4px}
.bru-legend-dot{width:16px;height:16px;border-radius:2px;display:inline-block;flex-shrink:0;border:1px solid #ccc}
.bru-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.bru-tbl{border-collapse:collapse;width:auto;font-size:12px}
table.bru-tbl th{background:var(--g50);padding:6px 8px;text-align:center;border:1px solid var(--g200);font-weight:600;font-size:11px;color:var(--g600);white-space:nowrap}
table.bru-tbl th.bru-th-name{text-align:left;min-width:160px}
table.bru-tbl th.bru-th-j{min-width:32px;width:32px}
table.bru-tbl th.bru-th-eq{min-width:38px;width:38px}
table.bru-tbl td{padding:4px 6px;text-align:center;border:1px solid var(--g200);vertical-align:middle;font-size:12px}
table.bru-tbl td.bru-name{text-align:left;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:sticky;left:0;background:#fff;z-index:1;border-right:2px solid var(--g400)}
table.bru-tbl tr:hover td{background:#fafafa}
table.bru-tbl tr:hover td.bru-name{background:#fafafa}
table.bru-tbl tr:hover td.bru-burn{background:#f0c0c0}
table.bru-tbl tr:hover td.bru-warn{background:#fae6c8}
.bru-j-cell{font-weight:600;color:var(--navy)}
td.bru-burn{background:#f2b4b4;color:#8b2020}
td.bru-warn{background:#fce0a8;color:#7a5a10}
td.bru-ok{background:#e6f5e8;color:#3a8a3a}
td.bru-lock{background:#f2b4b4;color:#8b2020}
.bru-sep-col{border-left:3px solid var(--navy)!important}
.bru-subtitle{font-size:12px;color:var(--g600);margin-bottom:8px;font-style:italic}
.bru-filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.bru-phase-btn{background:#fff;border:1px solid var(--g200);border-radius:6px;padding:4px 14px;font-size:12px;font-weight:500;color:var(--g600);cursor:pointer}
.bru-phase-btn.active{background:var(--navy);color:#fff;border-color:var(--navy)}
@media(max-width:768px){
  table.bru-tbl{font-size:10px}
  table.bru-tbl th.bru-th-name{min-width:90px;max-width:110px;font-size:9px}
  table.bru-tbl th{padding:3px 2px;font-size:9px}
  table.bru-tbl th.bru-th-j{min-width:22px;width:22px}
  table.bru-tbl th.bru-th-eq{min-width:28px;width:28px}
  table.bru-tbl td{padding:2px 2px;font-size:10px}
  table.bru-tbl td.bru-name{font-size:10px;max-width:110px}
  .bru-legend{font-size:9px;gap:8px}
  .bru-legend-dot{width:12px;height:12px}
  .bru-filters{gap:4px}
  .bru-phase-btn{padding:3px 10px;font-size:11px}
}

/* ══ Admin stats ══════════════════════════════════════════ */
.adm-range{background:#fff;border:1px solid var(--g200);border-radius:6px;padding:4px 12px;font-size:12px;font-weight:500;color:var(--g600)}
.adm-range.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.adm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin-top:16px}
.adm-card{background:var(--g50);border:1px solid var(--g100);border-radius:10px;padding:16px}
.adm-card h3{font-size:13px;font-weight:600;color:var(--g600);margin-bottom:10px}
.adm-kpi{display:flex;gap:24px;margin-bottom:16px;flex-wrap:wrap}
.adm-kpi-item{text-align:center}
.adm-kpi-val{font-size:28px;font-weight:700;color:var(--navy);line-height:1.1}
.adm-kpi-lbl{font-size:11px;color:var(--g600);margin-top:2px}
.adm-bar-row{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12px}
.adm-bar-label{width:90px;text-align:right;color:var(--g600);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adm-bar-track{flex:1;height:16px;background:var(--g100);border-radius:3px;overflow:hidden}
.adm-bar-fill{height:100%;background:var(--accent);border-radius:3px;min-width:1px;transition:width .3s}
.adm-bar-val{width:36px;font-size:11px;color:var(--g400);text-align:right}
.adm-chart{position:relative;width:100%;height:140px}
.adm-chart svg{width:100%;height:100%}
table.adm-log{border-collapse:collapse;width:100%;font-size:11px;margin-top:10px}
table.adm-log th{background:var(--g50);padding:5px 8px;text-align:left;border-bottom:2px solid var(--g200);font-size:10px;font-weight:600;color:var(--g600);white-space:nowrap}
table.adm-log th.adm-sortable{cursor:pointer;user-select:none}table.adm-log th.adm-sortable:hover{background:var(--g100)}table.adm-log th.adm-sort-asc::after{content:" ▲";font-size:8px;color:var(--accent-text)}table.adm-log th.adm-sort-desc::after{content:" ▼";font-size:8px;color:var(--accent-text)}
table.adm-log td{padding:4px 8px;border-bottom:1px solid var(--g100);vertical-align:middle;font-size:11px}
table.adm-log tr:hover td{background:var(--g50)}
table.adm-log .log-ip{font-family:'DM Mono',monospace;font-size:10px;color:var(--g600)}
table.adm-log .log-action{font-weight:500;color:var(--navy)}
table.adm-log .log-ts{color:var(--g400);font-size:10px;white-space:nowrap}
.adm-badge{display:inline-block;padding:1px 6px;border-radius:3px;font-size:10px;font-weight:500}
.adm-badge-mobile{background:#fff3e0;color:#b45309}
.adm-badge-desktop{background:#e8eaf6;color:#3949ab}
.adm-badge-tablet{background:#e8f5e9;color:#2a7a2a}
.adm-log-wrap{overflow-x:auto;max-height:600px;overflow-y:auto}

