*,*::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:inline-flex;align-items:center;gap:0;background:var(--g100);border:1px solid transparent;padding:4px 10px;border-radius:4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;transition:all .15s;color:var(--g400);opacity:.55}
.ag-comp-btn:hover{opacity:.85}
.ag-comp-btn.checked{opacity:1}
.ag-check{display:none}
.ag-comp-btn-championnat.checked{background:#eef2ff;color:#4f5fb3}
.ag-comp-btn-coupe.checked{background:#fef3c7;color:#92400e}
.ag-comp-btn-jeunes.checked{background:#ecfdf5;color:#065f46}
.ag-comp-btn-veterans.checked{background:#f3e8ff;color:#7c3aed}
.ag-comp-btn-pro.checked{background:#fef2f2;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}

  /* 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
     NB: background:inherit ne fonctionne PAS de façon fiable ici — la <tr> n'a un
     fond explicite que sur les lignes "bandées" (alternance par date), donc sur
     les lignes sans style inline la cellule sticky devenait transparente et la
     colonne Date qui défile dessous se voyait par transparence (chevauchement
     visuel mobile, s.25b). Fonds désormais explicites via les classes rp-row/rp-band. */
  #parties-table th:nth-child(1), #parties-table td:nth-child(1){
    position:sticky; left:0; z-index:2; background:#fff;
    border-right:1px solid var(--g200); white-space:nowrap;
  }
  #parties-table tbody tr.rp-band td:nth-child(1){background:#e8edf5}
  #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}


/* ══════════════════════════════════════════════════════════════════════════
   v1.8.1/1.8.2 — Habillage logo + footer (en-tête, sélecteur, nav, footer)
   Migré depuis le <style id="csqtt-v181-style"> inline d'index.php en v1.8.4
   (dette technique notée section 14 du document de relais — migration faite).
   Règles laissées en l'état (avec leurs !important et commentaires de
   débogage d'origine) pour garantir un rendu strictement identique.
   ═══════════════════════════════════════════════════════════════════════ */

#club-bar{
  background:#fff !important;
  display:flex;
  align-items:center;
  gap:16px;
  padding:8px 14px 8px 16px;
  border-bottom:1px solid #eef0f3;
  position:sticky !important;
  top:0 !important;
  z-index:62;
  width:100% !important;
  max-width:100% !important;
  overflow:hidden !important; /* le bandeau ne déborde jamais de l'écran (cause du scroll horizontal v1.8.1i) */
}
/* Wrapper <div> autour du <select> : on contrôle la largeur ici, le <select>
   remplit à 100%. */
#club-select-wrap{
  /* Historique du diagnostic (s.25) :
     - Le sélecteur s'écrasait à ~26px à cause de "margin-left:auto" sur le logo,
       qui absorbait tout l'espace libre du flex et comprimait le sélecteur jusqu'à
       sa largeur de contenu. (margin-left:auto retiré.)
     - TEST2 a tranché le levier de largeur : sur Android le flex-basis du <select>
       est ignoré (A/B = 43px) mais min-width est respecté (C = 200px).
       => min-width est le SEUL levier fiable pour garantir une largeur mobile. */
  flex:0 1 auto !important;
  min-width:200px !important;   /* plancher mobile garanti */
  max-width:340px !important;   /* plafond desktop (sinon trop large) */
  background:#fff;
  border:1px solid #d6d9e0;
  border-radius:8px;
  position:relative;
  display:flex;
  align-items:center;
}
#club-select-wrap::after{
  content:'';
  position:absolute;
  right:11px; top:50%;
  width:11px; height:11px;
  margin-top:-5px;
  pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239aa0aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-size:contain;
}
#club-select{
  appearance:none !important;
  -webkit-appearance:none !important;
  -moz-appearance:none !important;
  width:100% !important;
  background:transparent !important;
  border:0 !important;
  color:#1c1c1e;
  border-radius:8px;
  padding:9px 28px 9px 13px;
  font-size:13px;
  font-weight:600;
  font-family:inherit;
}
#site-logo-link{
  display:flex;
  align-items:center;
  flex:0 0 auto;
  cursor:pointer;
  text-decoration:none;
}
#club-bar-spacer{
  flex:1 1 0;        /* mange l'espace libre -> pousse le logo à droite sur grand écran */
  min-width:0;       /* mais se réduit à 0 en priorité quand la place manque (mobile) */
}
#site-logo-top{
  flex:0 0 auto; /* PAS de margin-left:auto (il écrasait le sélecteur). Le logo est
                    poussé à droite par #club-bar-spacer qui occupe l'espace libre. */
  height:38px;
  width:auto;
  color:var(--accent);
}
#site-picto-top{ /* pictogramme seul : utilisé uniquement en mobile (cf. media query).
     width explicite (pas width:auto) : un <svg> sans largeur explicite dans un
     conteneur flex se rend à 0px sous Firefox -> picto invisible (v1.8.1l).
     Ratio picto ≈ 491/433 ≈ 1.13 -> width ≈ height*1.13. */
  display:none;
  flex:0 0 auto;
  height:34px;
  width:39px;
  color:var(--accent);
}

#nav-main{
  background:var(--navy) !important;
  display:flex;
  align-items:center;
  gap:4px;
  padding:0 8px;
  position:sticky !important;
  top:var(--cdp-h1, 60px) !important; /* calé dynamiquement sous #club-bar (voir script cdpUpdateHeaderVars) */
  z-index:61;
}
/* #nav-lv2 (sous-navigation niveau 2, construite en JS) : recalée dynamiquement
   sous #club-bar + #nav-main pour éviter tout chevauchement avec le contenu
   quand le bandeau change de hauteur (ex: ajout du logo en v1.8.1). */
#nav-lv2:not(:empty){
  position:sticky !important;
  top:var(--cdp-h2, 98px) !important;
  z-index:60;
  background:#fff;
}
#nav-main .nm-btn{
  background:transparent;
  border:0;
  border-bottom:3px solid transparent;
  color:rgba(255,255,255,.7);
  font-size:13px;
  font-weight:600;
  font-family:inherit;
  padding:13px 12px;
  cursor:pointer;
}
#nav-main .nm-btn:hover{
  color:#fff;
}
#nav-main .nm-btn.active{
  color:#fff;
  border-bottom-color:var(--accent);
  background:rgba(255,255,255,.06);
}
#nav-main .nav-version{
  margin-left:auto;
  color:rgba(255,255,255,.45);
  font-size:11px;
  padding-right:10px;
}

#club-reload-wrap{
  margin-bottom:14px;
}
#club-reload-wrap .reload-btn.club-reload-left{
  float:none !important;   /* annule le float:right hérité de app.css (sinon bouton isolé en haut) */
  margin-top:0 !important;
}
#site-footer{
  border-top:1px solid #ececf0;
  background:#fafbfc;
  padding:16px 18px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
}
#site-footer .legal{
  font-size:12px;
  color:#9aa0aa;
  line-height:1.5;
}
#site-footer .legal .ph-note{
  color:#b9bec6;
  font-style:italic;
}
#site-footer .powered{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:12px;
  color:#9aa0aa;
  white-space:nowrap;
}
#site-logo-footer{
  height:22px;
  width:auto;
  color:var(--accent);
}

@media (max-width:640px){
  #club-bar{
    flex-wrap:nowrap !important; /* logo et sélecteur restent sur la même ligne */
    gap:8px;
    padding:6px 10px;
  }
  #club-select-wrap{
    /* flex:1 occupe tout l'espace restant après le logo ; pas de largeur fixe
       nécessaire. max-width relevé pour mobile (le logo + gap font ~120px,
       le reste va au sélecteur). */
    max-width:none !important;
  }
  #club-select-wrap::after{ right:9px; width:10px; height:10px; margin-top:-5px; }
  #club-select{
    padding:6px 24px 6px 10px;
    font-size:12px;
  }
  /* Sur petit écran, le sélecteur large (min-width:200px) + le logo complet ne
     tiennent pas côte à côte (overflow:hidden coupait le logo, ne laissant que
     le picto à droite). On affiche donc volontairement le PICTOGRAMME seul. */
  #site-logo-top{ display:none; }
  #site-picto-top{ display:block; height:30px; width:34px; }
  #site-footer{flex-direction:column;align-items:flex-start}
}

/* ══ MODALE MENTIONS LÉGALES ════════════════════════════════ */
#ml-modal{display:none;position:fixed;inset:0;z-index:200}
#ml-modal.show{display:block}
.ml-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.45);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.ml-box{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:12px;width:min(560px,92vw);max-height:82vh;display:flex;flex-direction:column;box-shadow:0 8px 40px rgba(0,0,0,.18)}
.ml-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 14px;border-bottom:1px solid var(--g100)}
.ml-head h2{font-size:16px;font-weight:700;color:var(--navy);margin:0}
.ml-close{background:none;border:none;font-size:18px;color:var(--g400);cursor:pointer;line-height:1;padding:2px 4px}
.ml-close:hover{color:var(--navy)}
.ml-body{padding:20px;overflow-y:auto;font-size:13px;line-height:1.65;color:var(--g600)}
.ml-body h3{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--g400);margin:18px 0 6px}
.ml-body h3:first-child{margin-top:0}
.ml-body p{margin:0 0 4px}
.ml-body a{color:var(--accent-text)}
.ml-usage{margin-top:20px;padding-top:14px;border-top:1px solid var(--g100);font-size:11px;color:var(--g400);font-style:italic}
.legal-link{background:none;border:none;padding:0;font:inherit;font-size:inherit;color:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:2px;opacity:.8}
.legal-link:hover{opacity:1}
