/* =============================================================================
 * Novalyz · components.css — Couche 3 : composants UI réutilisables
 * Classes préfixées .nv-* (nouveaux) ou legacy sans préfixe (existants).
 * =========================================================================== */

/* ===== Animation d'entrée (modale / carte) ===== */
.modal-card { animation:pop-in 0.22s cubic-bezier(.2,.8,.2,1); }

/* ===== Couleur de rôle (staff) — HEADER uniquement (bande + pastille) ===== */
body[data-role]        { --role:#4f46e5; --role-a:rgba(79,70,229,.12); }   /* coach par défaut */
body[data-role="coach"]{ --role:#4f46e5; --role-a:rgba(79,70,229,.12); }
body[data-role="prepa"]{ --role:#ea580c; --role-a:rgba(234,88,12,.12); }
body[data-role="kine"] { --role:#0d9488; --role-a:rgba(13,148,136,.12); }
.coach-role-chip { font-size:9.5px; font-weight:900; text-transform:uppercase; letter-spacing:.04em; color:var(--role,var(--accent)); background:var(--role-a,var(--accent-a)); padding:3px 8px; border-radius:20px; white-space:nowrap; }

/* ===== Header accueil coach / prépa (#coach-topbar) =====
 * Pleine largeur + sticky (hérite du sélecteur `header`), affiché uniquement en
 * vue accueil coach. Liseré de couleur du rôle = bord supérieur. */
#coach-topbar { display:none; border-top:3px solid var(--role,var(--accent)); gap:10px; }
body.coach-active:not(.athlete-selected) #coach-topbar { display:flex; }
#coach-topbar #ct-sport-ico { width:22px; height:22px; color:var(--role,var(--accent)); flex-shrink:0; }
#coach-topbar .ct-id       { min-width:0; margin-right:auto; }
#coach-topbar .ct-eyebrow  { font-size:11px; color:var(--text-muted); text-transform:uppercase; letter-spacing:.5px; }
#coach-topbar .ct-name-row { display:flex; align-items:center; gap:8px; }
#coach-topbar .ct-name     { font-weight:800; font-size:18px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#coach-topbar .ct-actions  { display:flex; align-items:center; gap:8px; flex-shrink:0; }
#coach-topbar .ct-btn      { position:relative; display:inline-flex; align-items:center; gap:6px; background:none; border:1px solid var(--border); color:var(--text); border-radius:8px; padding:7px 12px; font-size:13px; font-weight:700; cursor:pointer; white-space:nowrap; }
#coach-topbar .ct-btn .ico { width:16px; height:16px; }
#coach-topbar .ct-plus     { background:var(--accent); border-color:var(--accent); color:var(--on-accent); }
#coach-topbar .ct-deco     { color:var(--danger); border-color:color-mix(in srgb, var(--danger) 25%, transparent); background:color-mix(in srgb, var(--danger) 10%, transparent); }

/* ===== Header fiche athlète coach muscu (#cd-header) =====
 * Même traitement que #coach-topbar : pleine largeur + sticky (via `header`),
 * épuré (icône sport + nom d'onglet + boutons). Affiché sur la fiche détail. */
#cd-header { display:none; gap:9px; }
body.coach-active.athlete-selected #cd-header { display:flex; }
#cd-header #cd-sport-ico  { width:20px; height:20px; color:var(--accent); flex-shrink:0; }
#cd-header #cd-tab-title  { flex:1; min-width:0; margin:0; font-weight:800; font-size:18px; line-height:1.1; letter-spacing:-.3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--text); }
#cd-header .cd-back       { flex-shrink:0; display:inline-flex; align-items:center; background:none; border:1px solid var(--border); color:var(--text); border-radius:8px; padding:7px 9px; cursor:pointer; }
#cd-header .cd-head-actions { display:flex; align-items:center; gap:8px; flex-shrink:0; }
#cd-header .cd-hbtn       { display:inline-flex; align-items:center; gap:6px; background:none; border:1px solid var(--border); color:var(--text); border-radius:8px; padding:7px 12px; font-size:13px; font-weight:700; cursor:pointer; white-space:nowrap; }
#cd-header .cd-hbtn .ico  { width:16px; height:16px; }
#cd-header .cd-deco       { color:var(--danger); border-color:color-mix(in srgb, var(--danger) 25%, transparent); background:color-mix(in srgb, var(--danger) 10%, transparent); }
@media (max-width:600px) {
  #cd-header { padding:11px 14px; }
  #cd-header .cd-hbtn { padding:0; width:36px; height:36px; justify-content:center; gap:0; }
  #cd-header .cd-back { padding:0; width:36px; height:36px; justify-content:center; }
  #cd-header .cd-lbl  { display:none; }
}

/* ===== Exécution guidée du renfo (joueur) : barre de retour dédiée ===== */
#renfo-topbar { display:none; gap:9px; }
body.renfo-exec #renfo-topbar { display:flex; }
body.renfo-exec > header      { display:none; }   /* masque le header global pendant l'exécution */
#renfo-topbar .cd-back { flex-shrink:0; display:inline-flex; align-items:center; background:none; border:1px solid var(--border); color:var(--text); border-radius:8px; padding:7px 9px; cursor:pointer; }

/* ===== En-tête global ===== */
header { background:var(--surface); border-bottom:1px solid var(--border); padding:14px 20px; display:flex; align-items:center; justify-content:space-between; position:sticky; top:0; z-index:10; }
header h1 { font-size:17px; font-weight:700; }
/* Écran de connexion : pas d'icône de sport (l'app est multisport) → « Novalyz »
 * seul. L'icône (haltère/ballon…) n'apparaît qu'une fois connecté, selon le sport. */
body:has(#view-login.active) header #brand-ico { display:none; }
.logout-btn { font-size:12px; color:var(--danger); cursor:pointer; background:none; border:none; padding:4px 8px; }

/* ===== Navigation principale (bottom bar) ===== */
.tabs-bar { background:var(--surface); border-top:1px solid var(--border); display:flex; position:fixed; bottom:0; left:0; right:0; z-index:50; padding-bottom:env(safe-area-inset-bottom,0px); }
.tabs-bar > * { max-width:calc(var(--app-w) / 5); }
.tabs-bar { justify-content:center; }
.tab-btn { flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; padding:13px 2px; font-size:10px; font-weight:600; text-align:center; cursor:pointer; color:var(--text-muted); border:none; background:none; transition:color 0.2s; }
.tab-btn > span:not(.tab-ico):not([id]) { font-size:9.5px; line-height:1.1; font-weight:600; }
.tab-btn .tab-ico { font-size:21px; line-height:1; transition:transform 0.15s; }
.tab-btn .tab-ico svg { width:25px; height:25px; display:block; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.tab-btn.active { color:var(--accent); }
.tab-btn.active .tab-ico { transform:translateY(-1px); }
body.has-bottom-nav { padding-bottom:64px; }

/* ===== Bandeau coach (nav basse) — accueil coach, mobile/tablette ===== */
#coach-bandeau { display:none; position:fixed; bottom:0; left:0; right:0; z-index:50;
  background:var(--surface); border-top:1px solid var(--border);
  padding:8px 4px calc(8px + env(safe-area-inset-bottom,0px)); justify-content:center; }
body.coach-active:not(.athlete-selected) #coach-bandeau { display:flex; }
body.coach-active:not(.athlete-selected) #main-container { padding-bottom:84px; }
/* Boutons du header repris par le bandeau (Messages, Réglages) : masqués en
   mobile/tablette où le bandeau les fournit. Réaffichés en desktop (pas de bandeau). */
@media (max-width:991px) { #coach-topbar .ct-dup { display:none; } }
#coach-bandeau .cb-item { flex:1; max-width:calc(var(--app-w) / 5); display:flex; flex-direction:column;
  align-items:center; gap:3px; padding:4px 2px; border:none; background:none; cursor:pointer;
  color:var(--text-subtle); font-family:inherit; }
#coach-bandeau .cb-item svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2;
  stroke-linecap:round; stroke-linejoin:round; }
#coach-bandeau .cb-item span:last-child { font-size:9.5px; font-weight:700; }
#coach-bandeau .cb-item.on { color:var(--accent); }
#coach-bandeau .cb-item.on span:last-child { font-weight:800; }

/* ===== Recherche + filtres de la section Équipe ===== */
.coach-eq-search { display:flex; align-items:center; gap:9px; background:var(--surface); border:1px solid var(--border);
  border-radius:13px; padding:10px 13px; box-shadow:var(--shadow-sm); margin-bottom:11px; }
.coach-eq-search svg { width:17px; height:17px; flex:none; fill:none; stroke:var(--text-subtle); stroke-width:2.2; stroke-linecap:round; }
.coach-eq-search input { flex:1; min-width:0; border:none; background:none; color:var(--text); font-size:13.5px; font-family:inherit; outline:none; }
.coach-eq-chips { display:flex; gap:7px; overflow:auto; margin-bottom:14px; padding-bottom:2px; }
.coach-eq-chip { flex:none; font-size:12px; font-weight:700; border-radius:999px; padding:7px 13px; border:1px solid var(--border);
  background:var(--surface); color:var(--text-muted); box-shadow:var(--shadow-sm); cursor:pointer; font-family:inherit; white-space:nowrap; }
.coach-eq-chip.on { background:var(--accent); color:var(--on-accent); border-color:transparent; }
.coach-eq-chip b { font-weight:900; }

/* Carte athlète Équipe (piste A : bandeau d'état + 4 stats chiffrées) */
.cae-stripe { position:absolute; left:0; top:0; bottom:0; width:4px; }
.cae-top { display:flex; align-items:center; gap:10px; padding-left:4px; }
.cae-av { width:40px; height:40px; border-radius:12px; background:var(--surface2); color:var(--text); font-size:14px; font-weight:800; display:flex; align-items:center; justify-content:center; flex:none; }
.cae-nm { flex:1; min-width:0; display:flex; align-items:center; gap:7px; }
.cae-nm b { font-size:14px; font-weight:800; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cae-chip { font-size:9px; font-weight:900; text-transform:uppercase; letter-spacing:.03em; padding:2px 7px; border-radius:5px; white-space:nowrap; flex:none; }
.cae-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:1px; margin-top:11px; background:var(--border); border-radius:9px; overflow:hidden; }
.cae-st { background:var(--surface2); padding:7px 3px 6px; text-align:center; }
.cae-st .v { font-size:13px; font-weight:800; line-height:1.1; font-variant-numeric:tabular-nums; }
.cae-st .l { font-size:8px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; color:var(--text-subtle); margin-top:3px; }
.cae-vac { margin-top:9px; padding-left:4px; font-size:11.5px; color:#63b3ed; font-weight:600; }

/* ---- Page SÉANCE plein écran : le flux de saisie (#subtab-saisie) s'ouvre
   par-dessus l'app avec son propre en-tête retour (#seance-page-hd), header
   d'app et barre du bas masqués. Aucune logique modifiée. ---- */
body.seance-active #app-header,
body.seance-active #tabs-bar        { display:none !important; }
body.seance-active #seance-page-hd  { display:flex !important; }
body.seance-active #subtab-saisie   { position:fixed; inset:calc(56px + env(safe-area-inset-top,0px)) 0 0 0; z-index:60; margin:0;
                                      overflow-y:auto; -webkit-overflow-scrolling:touch; background:var(--bg);
                                      padding:14px 16px calc(28px + env(safe-area-inset-bottom,0px)); }
body.seance-active #subtab-saisie > * { max-width:640px; margin-left:auto; margin-right:auto; }
body.seance-active #seance-progress { top:0 !important; }
/* Onglet Entraînement = HUB : la saisie inline (#subtab-saisie) n'apparaît QUE
   en page plein écran (body.seance-active). Hors page → masquée (le hub +
   l'agenda restent). !important pour battre le display inline de switchSubTab. */
#tab-seance #subtab-saisie              { display:none !important; }
body.seance-active #tab-seance #subtab-saisie { display:block !important; }
/* En page séance : le mode (muscu/cardio) et la séance sont déjà choisis dans le
   hub → on masque l'ancien switcher et le bloc « Ma séance » (date/type). */
body.seance-active #mode-switch,
body.seance-active #card-choix-seance   { display:none !important; }
/* Reskin « Séance en cours » → look maquette (scopé à la page séance). */
body.seance-active #subtab-saisie .card              { border-radius:18px; background:var(--surface); border:1px solid var(--border); box-shadow:var(--sh-sm,0 1px 2px rgba(7,11,20,.06)); }
body.seance-active #seance-progress > div            { border-radius:18px; border-color:var(--border); box-shadow:var(--sh-sm,0 1px 2px rgba(7,11,20,.06)); }
body.seance-active .exo-actuel-card                  { background:var(--surface); border:1.5px solid var(--accent); border-radius:18px; box-shadow:0 8px 22px rgba(26,95,255,.16); padding:15px 16px; }
body.seance-active #card-liste-seance                { background:var(--surface); border:1px solid var(--border); border-radius:18px; box-shadow:var(--sh-sm,0 1px 2px rgba(7,11,20,.06)); padding:14px 15px; }
body.seance-active #btn-valider                      { border-radius:14px; padding:15px; font-size:15px; box-shadow:0 6px 16px rgba(0,168,84,.28); }
body.seance-active #card-choix-seance                { border-radius:18px; }
/* Lignes d'exercices « Séance en cours » (style maquette) — classes dédiées. */
.sc-exo{ display:flex; align-items:center; gap:11px; background:var(--surface); border:1px solid var(--border); border-radius:15px; padding:12px 13px; margin-bottom:8px; box-shadow:var(--sh-sm,0 1px 2px rgba(7,11,20,.06)); cursor:pointer; }
.sc-exo.cur{ border-color:var(--accent); box-shadow:0 4px 14px rgba(26,95,255,.16); }
.sc-exo .sc-ico{ width:28px; height:28px; border-radius:999px; flex:none; display:grid; place-items:center; font-size:12px; font-weight:800; }
.sc-exo.done .sc-ico{ background:var(--good,#00A854); color:#fff; }
.sc-exo.cur .sc-ico{ background:var(--accent); color:var(--on-accent,#fff); }
.sc-exo.todo .sc-ico{ background:var(--surface2); color:var(--text-subtle); border:1.5px solid var(--border); }
.sc-exo .sc-ico svg{ width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:2.6; stroke-linecap:round; stroke-linejoin:round; }
.sc-exo .sc-nm{ flex:1; min-width:0; }
.sc-exo .sc-nm .a{ font-weight:700; font-size:13.5px; }
.sc-exo .sc-nm .b{ font-size:11px; color:var(--text-subtle); margin-top:1px; }
.sc-chip{ font-size:10.5px; font-weight:700; border-radius:999px; padding:4px 9px; flex:none; white-space:nowrap; }
.sc-chip.done{ background:var(--good-a,rgba(0,168,84,.12)); color:var(--good,#00A854); }
.sc-chip.cur{ background:var(--accent); color:var(--on-accent,#fff); }
.sc-chip.todo{ background:var(--surface2); color:var(--text-muted); }
.sc-del{ background:none; border:none; color:var(--text-subtle); padding:4px; cursor:pointer; flex:none; }
.sc-del .ico{ width:16px; height:16px; }
/* Bouton « Remplacer » (séance) : explicite (icône + libellé, teinte accent) au lieu
   d'une icône grise anonyme qu'on ne comprenait pas. */
.sc-swapbtn{ display:inline-flex; align-items:center; gap:4px; background:var(--accent-a08); border:1px solid var(--accent-a28,rgba(26,95,255,.28)); color:var(--accent); padding:5px 9px; border-radius:9px; font-size:11.5px; font-weight:800; cursor:pointer; flex:none; white-space:nowrap; }
.sc-swapbtn:hover{ background:var(--accent); color:#fff; }
.sc-swapbtn svg{ width:13px; height:13px; }
/* N13 — « Coup d'œil » coach (entraînement + état) en tête de l'Aperçu. */
.cdcp-lab{ font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:var(--text-subtle); margin:4px 2px 8px; }
.cdcp-wrap{ display:grid; grid-template-columns:1fr; gap:10px; margin-bottom:14px; }
.cdcp-card{ padding:13px 14px; }
.cdcp-h{ font-size:12px; font-weight:800; margin-bottom:6px; }
.cdcp-row{ display:flex; align-items:flex-start; gap:8px; font-size:12.5px; padding:4px 0; line-height:1.4; }
.cdcp-ic{ flex:none; font-size:11px; width:14px; text-align:center; margin-top:1px; }
.cdcp-tx b{ font-weight:700; }
.cdcp-sub{ color:var(--text-subtle); font-size:11px; }
.cdcp-m{ color:var(--text-muted); }
.cdcp-empty{ font-size:12px; color:var(--text-subtle); padding:2px 0; }
.cdcp-head{ font-size:14px; line-height:1.45; margin:2px 2px 10px; }
.cdcp-tag{ font-size:9px; font-weight:800; color:var(--accent2,#4d82ff); background:var(--accent-a08); border:1px solid var(--border); border-radius:6px; padding:1px 6px; vertical-align:middle; margin-left:4px; text-transform:none; letter-spacing:0; }
.cdcp-reco{ margin-top:11px; margin-bottom:14px; background:var(--accent-a08); border:1px solid var(--border); border-radius:11px; padding:10px 13px; }
.cdcp-reco-l{ font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--accent); margin-bottom:3px; }
.cdcp-reco-t{ font-size:13px; font-weight:600; line-height:1.45; color:var(--text); }
@media(min-width:760px){ .cdcp-wrap{ grid-template-columns:1fr 1fr; } }
/* Chrono d'en-tête de la page séance */
#seance-page-chrono{ display:inline-flex; align-items:center; gap:6px; background:var(--accent-a10,rgba(26,95,255,.10)); color:var(--accent-strong,#1248D4); border-radius:999px; padding:6px 11px; font-size:13px; font-weight:800; font-variant-numeric:tabular-nums; flex:none; }
body.has-bottom-nav .toast { bottom:84px; }

/* ===== Sous-onglets (pill row) ===== */
.sub-tabs { display:flex; gap:6px; margin-bottom:14px; overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; scrollbar-width:none; padding:2px 0; }
.sub-tabs::-webkit-scrollbar { display:none; }
.sub-tab { flex:0 0 auto; padding:8px 14px; font-size:12.5px; font-weight:700; text-align:center; cursor:pointer; color:var(--text-muted); border:1px solid var(--border); border-radius:20px; background:var(--surface2); transition:all 0.2s; white-space:nowrap; }
.sub-tab.active { background:var(--accent-a14); color:var(--accent); border-color:var(--accent-dim); }

/* Sous-onglets contexte coach-detail (fixe en bas, icône+label) */
#view-coach-detail .sub-tabs { position:fixed; bottom:0; left:0; right:0; z-index:50; background:var(--surface); border-top:1px solid var(--border); padding:8px 10px calc(6px + env(safe-area-inset-bottom,0px)); gap:2px; }
#view-coach-detail .sub-tabs > * { max-width:calc(var(--coach-w) / 5); }
#view-coach-detail .sub-tabs { justify-content:center; }
body.cd-nav { padding-bottom:76px; }

/* Header accueil coach/prépa sur mobile : les libellés (« Lier un athlète », « Déco »)
 * sont masqués → boutons en icônes carrées, tout tient sur UNE ligne (＋ 💬 ⚙︎ ⏻). */
@media (max-width:600px) {
  #coach-topbar { padding:11px 14px; }
  #coach-topbar .ct-actions { gap:7px; }
  #coach-topbar .ct-btn { padding:0; width:36px; height:36px; justify-content:center; gap:0; }
  #coach-topbar .ct-lbl { display:none; }
}
#view-coach-detail .sub-tab { flex:1 1 0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; padding:7px 3px; font-size:9.5px; border:none; border-bottom:2px solid transparent; background:none; border-radius:0; min-width:0; white-space:nowrap; color:var(--text-muted); }
#view-coach-detail .sub-tab .cd-ico { line-height:1; }
#view-coach-detail .sub-tab .cd-ico svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; display:block; }
/* Icône + LABEL visibles + indicateur haut — standard .nv-navbtn (comme la barre
   de navigation athlète muscu et la fiche joueur foot). */
#view-coach-detail .sub-tab { position:relative; padding:9px 3px; justify-content:center; align-items:center; border-bottom:none; }
#view-coach-detail .sub-tab.active { background:none; color:var(--text-muted); }
#view-coach-detail .sub-tab.cc1.active,
#view-coach-detail .sub-tab.cc2.active,
#view-coach-detail .sub-tab.cc3.active,
#view-coach-detail .sub-tab.cc4.active,
#view-coach-detail .sub-tab.cc5.active,
#view-coach-detail .sub-tab.cc6.active { color:var(--accent); }
#view-coach-detail .sub-tab.active::before { content:""; position:absolute; top:0; left:50%; transform:translateX(-50%); width:26px; height:3px; border-radius:0 0 var(--radius-pill) var(--radius-pill); background:var(--accent); }

/* Harmonisation avec le bandeau coach (même langage visuel) : pas de marqueur
   haut, inactif en text-subtle, icône un peu plus compacte. */
#view-coach-detail .sub-tab { color:var(--text-subtle); }
#view-coach-detail .sub-tab .cd-ico svg { width:22px; height:22px; }
#view-coach-detail .sub-tab span:last-child { font-size:9.5px; font-weight:700; }
#view-coach-detail .sub-tab.active span:last-child { font-weight:800; }
#view-coach-detail .sub-tab.active::before { display:none; }
#view-coach-detail .sub-tabs { box-shadow:0 -2px 12px rgba(7,11,20,.05); }
#view-coach-detail .card, #view-coach-detail .dash-card { border-radius:16px; }

/* ===== Fiche athlète « hub » (mobile) : boutons d'action + retour ===== */
.cd-hub-actions { display:grid; grid-template-columns:1fr 1fr; gap:9px; margin-bottom:14px; }
.cd-act { display:flex; align-items:center; justify-content:center; gap:9px; background:var(--surface); border:1px solid var(--border);
  border-radius:14px; padding:13px 14px; box-shadow:var(--shadow-sm); font-weight:800; font-size:13px; color:var(--text); cursor:pointer; font-family:inherit; }
.cd-act svg { width:19px; height:19px; flex:none; fill:none; stroke:var(--accent); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.cd-act-primary { grid-column:1 / -1; background:var(--accent); color:var(--on-accent); border-color:transparent; }
.cd-act-primary svg { stroke:var(--on-accent); }
.cd-back-hub { display:inline-flex; align-items:center; gap:6px; background:var(--surface); border:1px solid var(--border); border-radius:10px;
  padding:8px 12px; font-size:12.5px; font-weight:800; color:var(--text); cursor:pointer; font-family:inherit; margin-bottom:12px; box-shadow:var(--shadow-sm); }
.cd-back-hub svg { width:16px; height:16px; fill:none; stroke:var(--text); stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
/* Mobile/tablette : plus de barre d'onglets en bas (modèle hub) */
@media (max-width:991px) {
  #view-coach-detail .sub-tabs { display:none !important; }
  body.coach-active.cd-nav { padding-bottom:24px; }
  /* Hub épuré : superflu masqué (dispo dans Analyses), « Son état » révélé au clic */
  #cdtab-overview #cd-extra-hidden { display:none; }
  #cdtab-overview #cd-etat-group { display:none; }
  #cdtab-overview.etat-open #cd-etat-group { display:block; }
}
/* Rail : « Dernière séance » et « Régularité » doublonnent les tuiles Repères → masqués */
#cd-rail .cd-rail-dup { display:none; }
/* Desktop : la nav passe par les onglets du haut + le rail → pas de boutons hub */
@media (min-width:992px) {
  .cd-hub-actions, .cd-back-hub { display:none !important; }
}

/* Focus visible clavier */
button:focus-visible, a:focus-visible, .sub-tab:focus-visible, .tab-btn:focus-visible, .nv-auth-seg button:focus-visible { outline:2px solid var(--accent); outline-offset:2px; border-radius:6px; }

/* ===== Carte ===== */
.card        { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:16px; margin-bottom:12px; box-shadow:var(--shadow-sm); }
.card-title  { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:1px; color:var(--text-muted); margin-bottom:12px; }

/* ===== Boutons ===== */
.btn { width:100%; padding:14px; border-radius:var(--radius); border:none; font-size:15px; font-weight:700; cursor:pointer; transition:background 0.15s, opacity 0.15s, transform 0.1s, box-shadow 0.15s; letter-spacing:0.3px; margin-bottom:8px; display:inline-flex; align-items:center; justify-content:center; gap:8px; }
.btn:active   { transform:scale(0.97); }
.btn:disabled { opacity:0.45; cursor:not-allowed; transform:none; }
.btn-accent   { background:var(--accent); color:var(--on-accent); box-shadow:0 4px 14px -4px var(--accent); }
.btn-accent:hover { background:var(--accent-strong); box-shadow:0 6px 18px -4px var(--accent); }
.btn-outline  { background:transparent; border:1px solid var(--border); color:var(--text); }
.btn-outline:hover { border-color:var(--accent); color:var(--accent); }
.btn-success  { background:var(--success); color:#041006; }
.btn-warning  { background:var(--warn); color:#1a1200; }
.btn-sm       { padding:8px 12px; font-size:13px; border-radius:8px; width:auto; margin-bottom:0; cursor:pointer; border:none; font-weight:700; }
.btn-danger-sm { background:transparent; border:1px solid var(--danger); color:var(--danger); }
.btn-flag     { background:var(--surface2); border:1px solid var(--border); color:var(--warn); font-size:13px; font-weight:700; border-radius:10px; padding:10px 12px; width:100%; cursor:pointer; display:flex; align-items:center; justify-content:center; gap:7px; margin-top:10px; }

/* ===== Séries ===== */
.serie-item { background:var(--surface2); border:1px solid var(--border); border-radius:8px; padding:10px 12px; margin-bottom:6px; display:flex; align-items:center; justify-content:space-between; }
.serie-num  { font-size:11px; color:var(--accent); font-weight:700; min-width:30px; }
.serie-data { flex:1; font-size:14px; font-weight:600; }
.serie-sub  { font-size:12px; color:var(--text-muted); margin-top:2px; }

/* ===== Badges & séparateurs ===== */
.badge-accent { background:var(--accent-a10); border:1px solid var(--accent-dim); color:var(--accent); border-radius:20px; padding:3px 10px; font-size:12px; }
.section-sep  { border:none; border-top:1px solid var(--border); margin:12px 0; }

/* ===== Historique ===== */
.hist-item        { background:var(--surface2); border-radius:8px; padding:12px; margin-bottom:8px; }
.hist-muscle      { font-size:11px; color:var(--accent); font-weight:600; text-transform:uppercase; letter-spacing:0.5px; margin-bottom:4px; }
.hist-exo         { font-size:13px; font-weight:700; margin-bottom:6px; }
.hist-serie       { font-size:12px; color:var(--text-muted); padding:3px 0; border-bottom:1px solid var(--border); }
.hist-serie:last-child { border-bottom:none; }

/* ===== Objectif / Poids ===== */
.objectif-tag { display:inline-block; background:var(--accent-a10); border:1px solid var(--accent-dim); color:var(--accent); border-radius:20px; padding:6px 14px; font-size:14px; font-weight:700; margin-bottom:12px; }
.poids-item   { display:flex; justify-content:space-between; align-items:center; padding:8px 0; border-bottom:1px solid var(--border); font-size:13px; }
.poids-val    { font-weight:700; color:var(--accent); }

/* ===== Progression ===== */
.prog-item       { background:var(--surface2); border-radius:8px; padding:10px 12px; margin-bottom:6px; }
.prog-exo-name   { font-size:13px; font-weight:700; margin-bottom:4px; }
.prog-exo-detail { font-size:11px; color:var(--text-muted); }
.prog-perf       { font-size:12px; color:var(--text); margin-top:4px; }
.prog-cible      { font-size:12px; color:var(--accent); font-weight:700; margin-top:2px; }
.prog-suggestion { background:var(--accent-a10); border:1px solid var(--accent-dim); border-radius:6px; padding:6px 10px; margin-top:6px; font-size:12px; color:var(--accent); }
/* #4 — Checklist des séries prévues (démarrage d'un exo). Cochée au fur et à mesure. */
.plan-hd { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); margin:10px 0 6px; }
.plan-chips { display:flex; flex-wrap:wrap; gap:6px; }
.plan-chip { display:inline-flex; align-items:center; gap:4px; font-size:12px; font-weight:700; border-radius:9px; padding:5px 9px; border:1px solid var(--border); background:var(--surface2); color:var(--text-muted); }
.plan-chip small { font-weight:600; opacity:.85; }
.plan-rpe { font-weight:700; color:var(--text-subtle); }
/* Onboarding plein écran : la bulle « Demande à Novalyz » ne doit pas passer dessus. */
body.onb-open #fab-novalyz, body.xp-open #fab-novalyz, body.jg-open #fab-novalyz, body.gen-open #fab-novalyz { display:none !important; }
#prog-editor-title { font-family:var(--font-heading); font-weight:400 !important; font-size:15px !important; }

/* Générateur « Novalyz te propose » : un seul défilement (overlay), page derrière bloquée. */
body.gen-open, body.xp-open, body.jg-open { overflow:hidden; }
.g2-sheet { width:100%; max-width:640px; margin:0 auto; box-sizing:border-box; padding:calc(16px + env(safe-area-inset-top,0px)) 18px calc(20px + env(safe-area-inset-bottom,0px)); background:var(--bg); }
.g2-side { margin-top:16px; }
.g2-hd { position:sticky; top:0; z-index:2; background:var(--surface); flex:none; }
.g2-sheet { padding-top:4px; }
@media (min-width:992px) {
  .g2-sheet { max-width:1180px; padding:26px 40px 32px; }
  .g2-cols { display:grid; grid-template-columns:minmax(0,1fr) 400px; gap:36px; align-items:start; }
  .g2-side { margin-top:14px; position:sticky; top:0; }
}

/* ═══ Page de choix des exercices (xp-) + « Construis ton programme » (jg-) ═══
   Maquette : mockups/novalyz-je-gere-programme.html. Mobile par défaut ; ≥ 992 px = 3 colonnes. */
.xp-ov, .jg-ov { position:fixed; inset:0; background:var(--bg,var(--surface)); display:none; flex-direction:column; }
.jg-ov { z-index:1300; }
.xp-ov { z-index:1400; }
.xp-page, .jg-page { flex:1; display:flex; flex-direction:column; min-height:0; width:100%; background:var(--surface); }
.xp-hd { flex:none; display:flex; align-items:center; gap:11px; padding:calc(12px + env(safe-area-inset-top,0px)) 16px 12px; border-bottom:1px solid var(--border); flex-wrap:wrap; }
.xp-back { width:36px; height:36px; border-radius:10px; border:1px solid var(--border); background:var(--surface2); color:var(--text-muted); font-size:18px; cursor:pointer; flex:none; }
.xp-ti { flex:1; min-width:0; }
/* Style app : titre de page en police de titre (comme « Aujourd'hui », « Novalyz te propose »). */
.xp-ti .a { font-family:var(--font-heading); font-weight:400; font-size:15px; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.xp-ti .b { font-size:11.5px; color:var(--text-muted); }
.xp-q { width:100%; order:3; margin:2px 0 0; background:var(--surface2); border:1px solid var(--border); border-radius:11px; color:var(--text); font-size:14px; padding:10px 12px; box-sizing:border-box; }
.xp-grid { flex:1; min-height:0; display:flex; flex-direction:column; }
.xp-nav { flex:none; display:flex; gap:7px; overflow-x:auto; padding:10px 16px; scrollbar-width:none; border-bottom:1px solid var(--border); }
.xp-nav::-webkit-scrollbar { display:none; }
/* Boutons de choix = style app (cf. _g2Chip du générateur) : blanc, contour ; sélection = contour + fond bleu léger. */
.xp-g { flex:none; display:inline-flex; align-items:center; gap:6px; font:inherit; font-size:12.5px; font-weight:700; border:1.5px solid var(--border); background:var(--surface); color:var(--text-muted); border-radius:11px; padding:8px 13px; cursor:pointer; white-space:nowrap; }
.xp-g.on { background:var(--accent-a08); border-color:var(--accent); color:var(--accent); }
.xp-g b { display:inline-grid; place-items:center; min-width:18px; height:18px; border-radius:9px; background:var(--accent); color:#fff; font-size:10.5px; padding:0 5px; }
.xp-list { flex:1; min-height:0; overflow-y:auto; -webkit-overflow-scrolling:touch; padding:4px 16px 12px; }
.xp-lab { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.07em; color:var(--text-subtle); margin:10px 2px 8px; }
.xp-grp { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.07em; color:var(--accent); margin:12px 2px 2px; }
.xp-grp-top { color:var(--text); font-size:12px; margin-top:16px; }
.xp-it { display:flex; align-items:center; gap:11px; padding:11px 4px; border-bottom:1px solid var(--surface2); cursor:pointer; }
.xp-ck { width:21px; height:21px; border-radius:6px; border:2px solid var(--border); flex:none; position:relative; cursor:pointer; }
.xp-it.on .xp-ck { background:var(--accent); border-color:var(--accent); }
.xp-it.on .xp-ck::after { content:''; position:absolute; left:6px; top:2px; width:5px; height:10px; border:solid #fff; border-width:0 2.5px 2.5px 0; transform:rotate(45deg); }
.xp-n { flex:1; min-width:0; font-size:14px; font-weight:600; color:var(--text); }
.xp-ic { width:30px; height:30px; border-radius:9px; display:grid; place-items:center; flex:none; }
.xp-min { display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:800; color:var(--accent); white-space:nowrap; }
.xp-min button { width:26px; height:26px; border-radius:7px; border:1px solid var(--border); background:var(--surface2); color:var(--text-muted); font:inherit; font-weight:800; cursor:pointer; }
.xp-empty { padding:24px 6px; text-align:center; color:var(--text-muted); font-size:13px; }
.xp-side { flex:none; border-top:1px solid var(--border); background:var(--surface); padding:10px 16px calc(14px + env(safe-area-inset-bottom,0px)); }
.xp-side > .xp-lab, .xp-selbox, .xp-side > .xp-note, .xp-desk { display:none; }
.xp-res { font-size:11.5px; color:var(--text-muted); margin-bottom:9px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.xp-res b { color:var(--text); }
.xp-add { width:100%; border:none; border-radius:13px; background:var(--accent); color:#fff; font:inherit; font-weight:800; font-size:14.5px; padding:13px; cursor:pointer; }
.xp-add:disabled { opacity:.45; cursor:default; }
.xp-note { font-size:11.5px; color:var(--text-muted); background:var(--surface2); border:1px solid var(--border); border-radius:11px; padding:9px 11px; margin-top:10px; }
.xp-sx { display:flex; justify-content:space-between; gap:8px; font-size:13px; padding:8px 0; border-bottom:1px solid var(--surface2); }
.xp-sx b { font-weight:700; color:var(--text); }
.xp-sx span { color:var(--text-subtle); cursor:pointer; padding:0 2px; }
/* Construis ton programme */
.jg-body { flex:1; min-height:0; overflow-y:auto; padding:6px 16px 16px; }
.jg-foot { flex:none; border-top:1px solid var(--border); padding:12px 16px calc(14px + env(safe-area-inset-bottom,0px)); }
.jg-chips { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:12px; }
.jg-chip { font:inherit; font-size:12.5px; font-weight:700; border:1.5px solid var(--border); background:var(--surface); color:var(--text-muted); border-radius:11px; padding:9px 13px; cursor:pointer; }
.jg-chip.on { background:var(--accent-a08); border-color:var(--accent); color:var(--accent); }
.jg-chip.add { border-style:dashed; color:var(--accent); }
.jg-autre { display:inline-flex; gap:6px; }
.jg-autre input { font:inherit; font-size:13px; border:1px solid var(--accent); border-radius:999px; padding:7px 12px; background:var(--surface); color:var(--text); width:170px; margin:0; }
.jg-autre button { font:inherit; font-weight:800; font-size:12.5px; border:none; border-radius:999px; background:var(--accent); color:#fff; padding:7px 13px; cursor:pointer; }
.jg-grid { display:grid; grid-template-columns:1fr; gap:10px; }
.jg-sess { border:1px solid var(--border); border-radius:14px; padding:12px 13px; background:var(--surface); }
.jg-sh { display:flex; justify-content:space-between; align-items:center; gap:8px; }
.jg-sn { font-weight:800; font-size:15px; color:var(--text); }
.jg-sc { font-size:11.5px; color:var(--text-muted); display:flex; align-items:center; gap:6px; }
.jg-del { border:none; background:none; color:var(--text-subtle); cursor:pointer; font-size:13px; padding:2px 4px; }
.jg-rows { margin-top:8px; }
.jg-x { display:flex; justify-content:space-between; gap:10px; font-size:12.5px; color:var(--text-muted); padding:6px 0; border-top:1px solid var(--surface2); }
.jg-x:first-child { border-top:none; }
.jg-x b { color:var(--text); font-weight:700; }
.jg-x-ed { cursor:pointer; align-items:center; }
.jg-x-ed > div { min-width:0; }
.jg-x-ed small { display:block; font-size:11px; color:var(--accent); font-weight:600; margin-top:1px; }
.jg-x-ed > span { white-space:nowrap; }
.jg-pen { font-style:normal; color:var(--text-subtle); margin-left:4px; }
/* Panneau de réglage d'un exercice */
.jg-panel-ov { position:fixed; inset:0; z-index:1350; background:rgba(3,6,14,.5); display:none; align-items:stretch; justify-content:center; }
.jg-panel { background:var(--surface); width:100%; display:flex; flex-direction:column; min-height:0; }
.jg-pbody { flex:1; min-height:0; overflow-y:auto; padding:12px 16px 16px; }
.jg-pfoot { flex:none; display:flex; gap:10px; border-top:1px solid var(--border); padding:12px 16px calc(14px + env(safe-area-inset-bottom,0px)); }
.jg-pdel { flex:none; border:1px solid var(--border); background:var(--surface2); color:#e5484d; border-radius:13px; font:inherit; font-weight:800; padding:12px 16px; cursor:pointer; }
.jg-mus { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text-subtle); margin-bottom:10px; }
.jg-fgrid { display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; margin-bottom:12px; }
.jg-f { display:flex; flex-direction:column; gap:4px; min-width:0; }
.jg-f span { font-size:10.5px; font-weight:700; color:var(--text-muted); text-transform:none; letter-spacing:0; }
.jg-f input, .jg-f select { width:100%; min-width:0; margin:0; font-size:15px; padding:9px 8px; text-align:center; border:1px solid var(--border); border-radius:10px; background:var(--surface2); color:var(--text); box-sizing:border-box; }
.jg-f select { font-size:13px; font-weight:700; }
.jg-f-wide { margin-top:12px; }
.jg-f-wide select { text-align:left; }
.jg-ss { margin-top:12px; font-size:13px; color:var(--text); background:var(--surface2); border:1px solid var(--border); border-radius:11px; padding:10px 12px; display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.jg-ss button { margin-left:auto; border:1px solid var(--border); background:var(--surface); color:var(--text-muted); border-radius:9px; font:inherit; font-size:12px; font-weight:700; padding:6px 10px; cursor:pointer; }
.jg-hint { margin-top:12px; font-size:12px; color:var(--text-muted); }
.jg-panel-sm { margin-top:auto; border-radius:20px 20px 0 0; max-height:80vh; }
@media (min-width:992px) { .jg-panel-sm { margin-top:0; border-radius:18px; max-width:480px; } }
@media (max-width:991px) { .jg-fgrid > .jg-f:last-child { grid-column:1 / -1; } }   /* RPE cible : pleine largeur en mobile */
.g2-force { max-width:860px; }
@media (min-width:992px) {
  .jg-panel-ov { align-items:center; }
  .jg-panel { max-width:560px; max-height:86vh; border-radius:18px; overflow:hidden; }
}
.jg-addx { margin-top:10px; width:100%; border:1.5px dashed var(--accent); background:rgba(26,95,255,.07); color:var(--accent); font:inherit; font-weight:800; font-size:13px; border-radius:11px; padding:10px; cursor:pointer; }
.jg-mods { display:grid; grid-template-columns:1fr; gap:9px; }
.jg-mod { text-align:left; border:1px solid var(--border); background:var(--surface); border-radius:14px; padding:13px 14px; cursor:pointer; font:inherit; display:flex; flex-direction:column; gap:3px; }
.jg-mod:hover { border-color:var(--accent); }
.jg-mod .a { font-weight:800; font-size:15px; color:var(--text); }
.jg-mod .b { font-size:12.5px; color:var(--text-muted); }
.jg-mod .c { font-size:11.5px; color:var(--accent); font-weight:700; }
@media (min-width:992px) {
  .xp-hd { flex-wrap:nowrap; padding:14px 22px; }
  .xp-ti { min-width:220px; }
  .xp-hd input.xp-q { order:0; flex:0 0 360px; width:360px; margin:0 0 0 auto; }
  .xp-grid { flex-direction:row; }
  .xp-nav { flex-direction:column; width:210px; overflow:auto; border-bottom:none; border-right:1px solid var(--border); background:var(--surface2); padding:14px 10px; gap:3px; }
  .xp-g { justify-content:space-between; border:none; background:none; border-radius:10px; padding:10px 12px; font-size:13.5px; }
  .xp-desk { display:block; }
  .xp-list { padding:8px 22px 16px; }
  .xp-items { display:grid; grid-template-columns:1fr 1fr; column-gap:22px; }
  .xp-side { width:300px; border-top:none; border-left:1px solid var(--border); display:flex; flex-direction:column; padding:14px 18px; }
  .xp-side > .xp-lab, .xp-side > .xp-note { display:block; }
  .xp-selbox { display:block; overflow:auto; }
  .xp-foot { margin-top:auto; padding-top:12px; }
  .xp-res { display:none; }
  .jg-body { padding:8px 28px 20px; max-width:1180px; width:100%; margin:0 auto; box-sizing:border-box; }
  .jg-grid { grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); }
  .jg-mods { grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); }
  .jg-foot { display:flex; justify-content:center; }
  .jg-foot .xp-add { max-width:420px; }
  body.coach-active .xp-ov { left:248px; }
}
.plan-chip.done { background:var(--good-a,rgba(0,168,84,.12)); border-color:transparent; color:var(--good,#00A854); }
.plan-chip.cur { background:var(--accent-a14,var(--accent-a10)); border-color:var(--accent-dim); color:var(--accent); box-shadow:0 0 0 1px var(--accent-dim) inset; }
.plan-chip.top { background:var(--warn-a,rgba(245,158,11,.14)); border-color:transparent; color:var(--warn,#f59e0b); }
.plan-sub { font-size:11.5px; font-weight:700; color:var(--accent); margin-top:6px; }
/* #4 — Contrôles « Schéma de séries » dans l'éditeur (builder desktop + mobile). */
.sch-wrap { margin-top:10px; padding-top:10px; border-top:1px dashed var(--border); display:flex; flex-direction:column; gap:9px; }
.pb-row-muscu .sch-wrap { flex:1 1 100%; width:100%; }
.sch-sel { display:flex; flex-direction:column; gap:3px; }
.sch-sel .sch-l { font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--text-muted); }
.sch-sel select, .sch-sel input { font-size:13px; font-weight:700; padding:8px 9px; border:1px solid var(--border); border-radius:9px; background:var(--surface2); color:var(--text); width:100%; margin:0; }
.sch-bo input { max-width:130px; }
.sch-pyr { background:var(--surface2); border:1px solid var(--border); border-radius:10px; padding:9px 10px; }
.sch-pyr-hd { font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--text-muted); margin-bottom:6px; }
.sch-pyr-row { display:flex; align-items:center; gap:8px; margin-top:6px; }
.sch-pyr-row:first-of-type { margin-top:0; }
.sch-pyr-s { font-size:12px; font-weight:800; width:26px; color:var(--text-muted); flex:none; }
.sch-pyr-row input { flex:1; min-width:0; font-size:13px; font-weight:700; text-align:center; padding:7px 6px; border:1px solid var(--border); border-radius:8px; background:var(--surface); color:var(--text); margin:0; }
.sch-prev { display:flex; flex-wrap:wrap; gap:6px; }
.sch-chip { display:inline-flex; align-items:center; gap:4px; font-size:11.5px; font-weight:800; border-radius:9px; padding:5px 8px; background:var(--accent-a10); border:1px solid var(--accent-dim); color:var(--accent); }
.sch-chip small { font-weight:600; opacity:.85; }
.sch-chip.top { background:var(--warn-a,rgba(245,158,11,.14)); border-color:transparent; color:var(--warn,#f59e0b); }

/* #18 — Bloc « alertes à traiter » (fiche coach) : triage par priorité + catégorie. */
.cda-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:4px; }
.cda-title { font-size:15px; font-weight:900; }
.cda-count { font-size:12px; font-weight:800; color:var(--warn); background:var(--warn-a,rgba(245,166,35,.14)); border-radius:999px; padding:3px 11px; white-space:nowrap; }
.cda-breakdown { display:flex; gap:14px; flex-wrap:wrap; font-size:11.5px; font-weight:700; color:var(--text-muted); margin-bottom:10px; }
.cda-breakdown .b { display:inline-flex; align-items:center; gap:6px; }
.cda-breakdown .dot, .cda-grp .dot { width:8px; height:8px; border-radius:50%; flex:none; }
.cda-grp { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; margin:13px 0 7px; display:flex; align-items:center; gap:7px; }
.cda-grp.prio { color:var(--danger); } .cda-grp.surv { color:var(--warn); }
.cda-al { border:1px solid var(--border); border-radius:13px; padding:11px 12px; margin-bottom:8px; background:var(--surface2); border-left:3px solid var(--border); }
.cda-al.prio { border-left-color:var(--danger); } .cda-al.surv { border-left-color:var(--warn); }
.cda-top { display:flex; align-items:center; gap:8px; }
.cda-pill { font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.03em; padding:3px 8px; border-radius:7px; white-space:nowrap; }
.cda-pill.charge { background:var(--accent-a10); color:var(--accent); }
.cda-pill.douleur { background:var(--danger-a,rgba(229,72,77,.14)); color:var(--danger); }
.cda-pill.prog { background:rgba(139,92,246,.16); color:#8b5cf6; }
.cda-pill.reg { background:rgba(14,165,163,.16); color:#0ea5a3; }
.cda-pill.bien { background:var(--warn-a,rgba(245,166,35,.14)); color:var(--warn); }
.cda-pill.neutre { background:var(--surface); color:var(--text-muted); border:1px solid var(--border); }
.cda-rec { margin-left:auto; font-size:10.5px; font-weight:700; color:var(--text-muted); background:var(--surface); border:1px solid var(--border); border-radius:999px; padding:2px 8px; white-space:nowrap; }
.cda-msg { font-size:13px; font-weight:700; margin-top:7px; line-height:1.4; }
.cda-presc { font-size:12px; font-weight:700; color:var(--accent); margin-top:5px; line-height:1.45; }
.cda-explic { font-size:11.5px; color:var(--text-muted); margin-top:7px; padding:7px 9px; background:var(--surface); border-radius:8px; line-height:1.45; }
.cda-acts { display:flex; gap:7px; flex-wrap:wrap; margin-top:10px; align-items:center; }
.cda-btn { font-size:12px; font-weight:800; border-radius:9px; padding:7px 11px; border:1px solid transparent; cursor:pointer; font-family:inherit; }
.cda-primary { background:var(--accent); color:#fff; }
.cda-ghost { background:transparent; border-color:var(--border); color:var(--text-muted); }
.cda-ok { background:var(--surface2); border-color:var(--border); color:var(--text); }
.cda-done-tag { font-size:11px; color:var(--good); font-weight:700; align-self:center; }
.cda-foot { margin-top:13px; padding-top:11px; border-top:1px dashed var(--border); font-size:11px; color:var(--text-subtle); display:flex; align-items:flex-start; gap:7px; line-height:1.4; }
.cda-foot.partial { color:var(--warn); }
.cda-foot .fi { width:14px; height:14px; flex:none; margin-top:1px; }
.cda-empty { display:flex; align-items:center; gap:10px; padding:4px 2px; }
.cda-empty .ic { width:32px; height:32px; border-radius:10px; background:var(--good-a,rgba(0,201,110,.13)); color:var(--good); display:grid; place-items:center; flex:none; }
.cda-empty .t { font-size:14px; font-weight:800; color:var(--good); }
.cda-empty .s { font-size:12px; color:var(--text-muted); }
.prog-section-title { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:1px; color:var(--text-muted); margin:12px 0 6px; }

/* ===== Toast ===== */
.toast { position:fixed; bottom:20px; left:50%; transform:translateX(-50%) translateY(80px); opacity:0; visibility:hidden; background:var(--success); color:#041006; padding:12px 24px; border-radius:var(--radius-pill); font-weight:700; font-size:14px; box-shadow:var(--shadow-lg); transition:transform 0.3s cubic-bezier(.2,.8,.2,1), opacity 0.3s ease, visibility 0.3s ease; z-index:100; white-space:nowrap; }
.toast.show { transform:translateX(-50%) translateY(0); opacity:1; visibility:visible; }

/* ===== Récapitulatif séance ===== */
.recap-exo      { margin-bottom:14px; }
.recap-exo-name { font-size:13px; font-weight:700; color:var(--accent); margin-bottom:4px; }
.recap-serie    { font-size:13px; padding:3px 0; border-bottom:1px solid var(--border); }

/* ===== Saisie de série (steppers + chips) ===== */
.saisie-lbl  { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:0.05em; color:var(--text-muted); margin-bottom:6px; }
.stepper-row { display:flex; align-items:center; background:var(--surface2); border:1px solid var(--border); border-radius:12px; overflow:hidden; }
.stepper-btn { width:46px; height:60px; border:none; background:none; color:var(--accent); font-size:26px; font-weight:700; cursor:pointer; flex-shrink:0; -webkit-appearance:none; }
.stepper-btn:active { background:var(--accent-a12); }
.stepper-num { flex:1; min-width:0; width:100%; text-align:center; font-size:28px; font-weight:800; font-variant-numeric:tabular-nums; border:none !important; background:none !important; color:var(--text); padding:0 !important; margin:0 !important; box-shadow:none !important; }
.stepper-num::-webkit-outer-spin-button, .stepper-num::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
.stepper-num[type=number] { -moz-appearance:textfield; }
.chip-row    { display:flex; gap:6px; flex-wrap:wrap; }
.saisie-chip { flex:1; min-width:42px; text-align:center; padding:10px 4px; border-radius:10px; background:var(--surface2); border:1px solid var(--border); font-size:14px; font-weight:700; color:var(--text-muted); cursor:pointer; transition:all 0.12s; }
.saisie-chip.on { background:var(--accent); color:var(--on-accent); border-color:var(--accent); }

/* ===== Dashboard ===== */
.dash         { background:var(--bg); padding:16px 20px 20px; }
.dash-card    { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:14px; margin-bottom:10px; box-shadow:var(--shadow-sm); transition:box-shadow 0.18s, transform 0.18s, border-color 0.18s; }
.dash-card[onclick] { cursor:pointer; }
.dash-card[onclick]:hover { box-shadow:var(--shadow); transform:translateY(-1px); border-color:var(--accent-dim); }
.dash-card-accent-orange { border-left:3px solid var(--warn); }
.dash-card-accent-green  { border-left:3px solid var(--good); }
.dash-next     { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:14px; margin-bottom:0; }
.dash-stat     { background:var(--surface2); border-radius:var(--radius-sm); padding:9px 8px; text-align:center; }
.dash-stat-num { font-size:18px; font-weight:800; color:var(--text); font-variant-numeric:tabular-nums; }
.dash-stat-label { font-size:9.5px; color:var(--text-muted); font-weight:500; }
.dash-big-num  { font-size:30px; font-weight:800; color:var(--text); letter-spacing:-0.5px; font-variant-numeric:tabular-nums; line-height:1.05; }
.dash-label    { font-size:10px; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.7px; font-weight:700; margin-bottom:7px; display:flex; align-items:center; }
.dash-bar-bg   { background:var(--surface2); border-radius:20px; height:6px; margin-top:8px; overflow:hidden; }
.dash-bar      { height:100%; border-radius:20px; transition:width 0.5s cubic-bezier(.2,.8,.2,1); }
.ring-wrap     { position:relative; width:60px; height:60px; flex-shrink:0; }
.ring-wrap svg { transform:rotate(-90deg); display:block; }
.ring-bg       { fill:none; stroke:var(--surface2); stroke-width:6; }
.ring-fg       { fill:none; stroke:var(--accent); stroke-width:6; stroke-linecap:round; transition:stroke-dashoffset 0.6s cubic-bezier(.2,.8,.2,1); }
.ring-label    { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; font-weight:800; font-size:15px; color:var(--text); font-variant-numeric:tabular-nums; }
.dash-badge    { border-radius:20px; padding:3px 10px; font-size:11px; font-weight:700; }
.dash-tag      { border-radius:6px; padding:2px 7px; font-size:10px; font-weight:600; }

/* ===== v2 — langage visuel unifié ===== */
.v2-hero     { background:radial-gradient(120% 90% at 100% 0%, var(--accent-a12), transparent 60%), var(--surface); border:1px solid var(--border); border-radius:18px; padding:16px; margin-bottom:12px; }
.v2-hero-top { display:flex; align-items:center; gap:15px; }
.v2-hi       { font-size:13px; color:var(--text-muted); font-weight:600; }
.v2-name     { font-size:21px; font-weight:800; letter-spacing:-.4px; margin-top:1px; }
.v2-week     { display:inline-flex; align-items:center; gap:5px; margin-top:8px; font-size:11px; font-weight:700; padding:4px 10px; border-radius:999px; background:var(--surface2); }
.v2-cta      { margin-top:14px; }
.v2-cta .dc-inner { display:flex; align-items:center; gap:12px; background:var(--accent); border-radius:13px; padding:12px 14px; }
.v2-cta .dc-ico   { width:38px; height:38px; border-radius:11px; background:rgba(255,255,255,.18); display:flex; align-items:center; justify-content:center; flex-shrink:0; color:#fff; }
.v2-cta .dc-txt   { flex:1; min-width:0; }
.v2-cta .dc-k     { font-size:10px; text-transform:uppercase; letter-spacing:.06em; color:rgba(255,255,255,.8); font-weight:700; }
.v2-cta .dc-v     { font-size:16px; font-weight:800; color:#fff; margin-top:1px; }
.v2-cta .dc-btn   { background:rgba(255,255,255,.2); color:#fff; border:none; border-radius:9px; padding:8px 14px; font-size:12px; font-weight:800; cursor:pointer; flex-shrink:0; }
.v2-kpis  { display:grid; grid-template-columns:1fr 1fr 1fr; gap:9px; margin-bottom:12px; }
.v2-kpi   { background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:12px 11px; }
.v2-kpi .kv { font-size:20px; font-weight:800; line-height:1; letter-spacing:-.3px; font-variant-numeric:tabular-nums; }
.v2-kpi .kk { font-size:10px; color:var(--text-muted); font-weight:600; margin-top:5px; line-height:1.25; }
/* KPIs de la fiche joueur (4 mesures) : 2 colonnes en mobile, 4 dès qu'il y a la
 * place. minmax(0,1fr) autorise le rétrécissement → pas de débordement horizontal. */
.fjd-kpis { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-bottom:12px; }
@media (min-width:480px) { .fjd-kpis { grid-template-columns:repeat(4,minmax(0,1fr)); } }
/* Hero d'accueil de la fiche joueur (onglet Profil) : « Bonjour + nom » + infos.
 * Même esprit que le briefing muscu ; l'avatar accepte une photo (img) ou des initiales. */
.fjd-hero { display:flex; align-items:flex-start; gap:14px; padding:18px; margin-bottom:14px;
  border-radius:18px; border:1px solid var(--border);
  background:linear-gradient(135deg, var(--surface) 0%, var(--surface2) 100%); }
.fjd-hero-av { width:56px; height:56px; border-radius:16px; flex-shrink:0; overflow:hidden;
  display:flex; align-items:center; justify-content:center; font-size:20px; font-weight:800;
  background:var(--accent); color:#fff; box-shadow:0 6px 18px rgba(26,95,255,.35); }
.fjd-hero-av img { width:100%; height:100%; object-fit:cover; display:block; }
.fjd-hero-grt  { font-size:13px; font-weight:700; color:var(--text-muted); }
.fjd-hero-name { font-size:24px; font-weight:800; letter-spacing:-.5px; line-height:1.05; margin:1px 0 9px; }
.fjd-hero-pills { display:flex; flex-wrap:wrap; gap:6px; }
.fjd-pill { display:inline-flex; align-items:center; gap:5px; font-size:12px; font-weight:700;
  padding:4px 10px; border-radius:999px; background:var(--surface); border:1px solid var(--border); color:var(--text); }
.v2-sec   { display:flex; align-items:center; justify-content:space-between; margin:2px 2px 9px; }
.v2-sec .st { display:flex; align-items:center; gap:7px; font-size:13px; font-weight:400; letter-spacing:.06em; }
.v2-sec .st .ico { width:15px; height:15px; color:var(--accent); }
.v2-sec .more { font-size:11px; font-weight:700; color:var(--accent); }
.v2-vrow  { display:flex; align-items:center; gap:10px; margin-top:11px; }
.v2-vrow:first-child { margin-top:2px; }
.v2-vrow .vn { width:76px; font-size:12px; font-weight:600; flex-shrink:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.v2-vtrack  { flex:1; height:9px; background:var(--surface2); border-radius:5px; position:relative; overflow:hidden; }
.v2-vfill   { position:absolute; left:0; top:0; bottom:0; border-radius:5px; }
.v2-vrow .vv { width:52px; text-align:right; font-size:11px; font-weight:700; color:var(--text-muted); flex-shrink:0; font-variant-numeric:tabular-nums; }
.v2-legend  { display:flex; gap:14px; margin-top:13px; padding-top:11px; border-top:1px solid var(--border); }
.v2-legend span { font-size:10.5px; color:var(--text-muted); font-weight:600; display:flex; align-items:center; gap:5px; }
.v2-dot   { width:8px; height:8px; border-radius:50%; display:inline-block; }
.v2-pgrid { display:flex; gap:9px; }
.v2-pstat { flex:1; border-radius:12px; padding:11px 12px; display:flex; align-items:center; gap:10px; }
.v2-pstat .pn { font-size:22px; font-weight:800; line-height:1; font-variant-numeric:tabular-nums; }
.v2-pstat .pk { font-size:10.5px; color:var(--text-muted); font-weight:600; line-height:1.2; }

/* ===== Timer ===== */
.timer-overlay      { position:fixed; bottom:0; left:0; right:0; background:var(--surface); border-top:2px solid var(--accent); padding:16px 20px; z-index:70; display:none; }
.timer-overlay.active { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.timer-circle-wrap  { position:relative; width:70px; height:70px; flex-shrink:0; }
.timer-circle-wrap svg { transform:rotate(-90deg); }
.timer-circle-bg    { fill:none; stroke:var(--border); stroke-width:5; }
.timer-circle-prog  { fill:none; stroke:var(--accent); stroke-width:5; stroke-linecap:round; transition:stroke-dashoffset 1s linear; }
.timer-time         { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); font-size:18px; font-weight:800; color:var(--accent); }
.timer-info         { flex:1; }
.timer-label        { font-size:12px; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.5px; }
.timer-serie        { font-size:14px; font-weight:700; margin-top:2px; }
.timer-btn-skip     { background:var(--surface2); border:1px solid var(--border); color:var(--text); padding:10px 16px; border-radius:8px; font-size:13px; font-weight:700; cursor:pointer; white-space:nowrap; }

/* ===== Exercice en cours ===== */
.exo-actuel-card   { background:var(--accent-a05); border:1px solid var(--accent-dim); border-radius:var(--radius); padding:14px; margin-bottom:12px; }
.exo-actuel-nom    { font-size:17px; font-weight:800; color:var(--accent); }
.exo-actuel-detail { font-size:12px; color:var(--text-muted); margin-top:3px; }
.exo-actuel-perf   { font-size:13px; margin-top:8px; }
.exo-actuel-cible  { font-size:14px; font-weight:700; color:var(--accent); margin-top:4px; }

/* ===== Page joueur foot — composants ===== */
.fjd-ava { width:44px; height:44px; border-radius:12px; background:var(--accent-a12,rgba(59,130,246,.12)); color:var(--accent); font-size:15px; font-weight:800; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.djt-dl  { display:flex; justify-content:space-between; gap:12px; padding:9px 0; border-top:1px solid var(--border); font-size:13px; }
.djt-dl:first-child { border-top:none; }
.djt-dl > span { color:var(--text-muted); }
.djt-dl > b    { font-weight:700; text-align:right; }

/* ===== Bien-être — chips questionnaire ===== */
.wq-block { padding:12px 0; border-bottom:1px solid var(--border); }
.wq-label { font-size:13px; font-weight:700; color:var(--text); margin-bottom:10px; display:flex; align-items:center; gap:8px; }
.wq-ic { width:18px; height:18px; flex:none; fill:none; stroke:var(--text-muted); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
/* RPE CR-10 (session-RPE Foster) : 11 cases 0..10, dégradé vert→rouge via --c. */
.wq-rpe-desc { font-size:11.5px; color:var(--text-muted); margin:-2px 0 10px; line-height:1.4; }
.wq-cr10 { display:flex; gap:4px; }
.wq-cr { flex:1; min-width:0; border:none; border-radius:9px; padding:13px 0; font-size:14px; font-weight:800; color:#fff; background:var(--c,var(--surface2)); opacity:.34; cursor:pointer; transition:opacity .12s, transform .12s; }
.wq-cr.selected { opacity:1; transform:translateY(-2px); box-shadow:0 3px 10px rgba(0,0,0,.35); }
.wq-cr-scale { display:flex; justify-content:space-between; font-size:9.5px; color:var(--text-subtle); margin-top:6px; }
.wq-chips { display:flex; gap:7px; overflow-x:auto; padding-bottom:4px; scrollbar-width:none; }
.wq-chips::-webkit-scrollbar { display:none; }
.wq-chips-wrap { flex-wrap:wrap; overflow-x:visible; }
.wq-chip {
  flex-shrink:0;
  background:var(--surface2);
  border:1.5px solid var(--border);
  border-radius:999px;
  padding:7px 14px;
  font-size:12px;
  font-weight:600;
  color:var(--text-muted);
  cursor:pointer;
  font-family:inherit;
  transition:all 0.15s;
  white-space:nowrap;
}
.wq-chip.selected { background:var(--accent-a14); border-color:var(--accent); color:var(--accent); }
.wq-seg .wq-chip { flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; padding:12px 2px; border-radius:12px; white-space:normal; }
.wq-seg { display:flex; gap:5px; overflow:visible; }
.wq-seg .wq-chip .wq-emo { font-size:20px; line-height:1; filter:grayscale(.55); transition:transform .15s, filter .15s; }
.wq-seg .wq-chip .wq-cap { font-size:10px; font-weight:700; color:var(--text-muted); text-align:center; line-height:1.15; }
.wq-seg .wq-chip.selected { background:var(--accent-a14); border-color:var(--accent); }
.wq-seg .wq-chip.selected .wq-emo { filter:none; transform:scale(1.18); }
.wq-seg .wq-chip.selected .wq-cap { color:var(--accent); }

/* =============================================================================
 * nv- PILOT — écran connexion (P1)
 * Premières classes préfixées nv- : preuve que les tokens pilotent la charte.
 * auth-seg-active et error-msg sont référencés dans app.js → migration P2.
 * =========================================================================== */
.nv-login-logo { text-align:center; padding:30px 0 20px; }

.nv-auth-seg { display:flex; background:var(--surface2); border:1px solid var(--border); border-radius:12px; padding:4px; margin-bottom:16px; }
.nv-auth-seg button { flex:1; padding:11px; border:none; background:none; color:var(--text-muted); font-size:13px; font-weight:700; border-radius:9px; cursor:pointer; transition:all 0.2s; }
.nv-auth-seg button.auth-seg-active { background:var(--accent); color:var(--on-accent); }
.reg-steps { display:flex; gap:6px; margin-bottom:12px; }
.reg-steps b { flex:1; height:4px; border-radius:2px; background:var(--border); }
.reg-steps b.on { background:var(--accent); }
.reg-aide { color:var(--text-muted); font-weight:600; text-transform:none; letter-spacing:0; }
.reg-intro { font-size:12.5px; color:var(--text-muted); margin:-4px 0 6px; line-height:1.4; }
.reg-seg { display:flex; gap:6px; }
.reg-seg button { flex:1; padding:10px; border:1px solid var(--border); background:var(--surface2); color:var(--text); font-size:13px; font-weight:700; border-radius:10px; cursor:pointer; }
.reg-seg button.on { background:var(--accent); border-color:var(--accent); color:var(--on-accent); }
.reg-login-etat { font-size:12px; font-weight:600; min-height:16px; margin:4px 0 6px; }
.reg-login-etat .ok { color:var(--good); } .reg-login-etat .ko { color:var(--bad, #e5484d); } .reg-login-etat .mut { color:var(--text-muted); font-weight:500; }
.reg-prop { border:0; background:none; padding:0; color:var(--accent); font-weight:700; font-size:12px; text-decoration:underline; cursor:pointer; }
.btn.reg-off { opacity:.45; }
.reg-manque { font-size:12px; color:var(--text-muted); text-align:center; margin-top:8px; min-height:15px; }
.reg-manque.reg-flash { color:var(--bad, #e5484d); }
.reg-retour { display:block; margin:10px auto 0; border:0; background:none; color:var(--text-muted); font-size:13px; font-weight:600; cursor:pointer; }

/* Bascule de rôle à la connexion (piste A) : athlète / coach·prépa au même niveau. */
.nv-role-switch { display:flex; gap:9px; margin:0 0 16px; }
.nv-role { flex:1; display:flex; align-items:center; gap:10px; border:1.5px solid var(--border); background:var(--surface);
  border-radius:14px; padding:11px 12px; cursor:pointer; font-family:inherit; text-align:left; transition:border-color .15s, background .15s, box-shadow .15s; }
.nv-role .ic { font-size:19px; flex:none; line-height:1; }
.nv-role .tx { display:flex; flex-direction:column; line-height:1.15; min-width:0; }
.nv-role .tx b { font-size:13px; font-weight:800; color:var(--text); }
.nv-role .tx small { font-size:9.5px; color:var(--text-subtle); font-weight:600; }
#roletab-athlete.on { border-color:var(--accent); background:rgba(26,95,255,.08); box-shadow:0 0 0 3px rgba(26,95,255,.10); }
#roletab-coach.on { border-color:#6D4BFF; background:rgba(109,75,255,.08); box-shadow:0 0 0 3px rgba(109,75,255,.10); }
#roletab-coach.on .tx b { color:#5733E0; }
/* Accent violet quand le rôle coach·prépa est actif (boutons + onglet actif). */
#view-login.role-coach .btn-accent { background:#6D4BFF; }
#view-login.role-coach .nv-auth-seg button.auth-seg-active { background:#6D4BFF; }

.error-msg { color:var(--danger); font-size:13px; text-align:center; margin-top:4px; min-height:20px; }

/* =============================================================================
 * BIBLIOTHÈQUE DE COMPOSANTS — Phase 1 (charte refonte)
 * Classes canoniques .nv-*, pilotées UNIQUEMENT par les tokens (aucune valeur
 * en dur). Elles remplacent, à terme, les composants redéfinis inline dans
 * app.js (voir Docs/audit-refonte-css.md). Additif : rien ne les utilise encore
 * → aucun changement visuel tant que la migration (P2/P3) n'a pas commencé.
 * =========================================================================== */

/* ---- Tuile de stat / KPI : nombre + label (remplace kpi/gpsTile/heroPill/
 *      chip/dash-stat/v2-kpi/v2-pstat — ~8 variantes inline aujourd'hui) ---- */
.nv-stat        { display:flex; flex-direction:column; align-items:center; text-align:center; gap:2px; min-width:0; }
.nv-stat-num    { font-size:var(--fs-xl); font-weight:var(--fw-heavy); color:var(--text); line-height:var(--lh-tight); letter-spacing:-.3px; font-variant-numeric:tabular-nums; }
.nv-stat-label  { font-size:var(--fs-2xs); font-weight:var(--fw-bold); text-transform:uppercase; letter-spacing:.05em; color:var(--text-muted); line-height:var(--lh-snug); }
.nv-stat--sm .nv-stat-num { font-size:var(--fs-lg); }
.nv-stat--lg .nv-stat-num { font-size:var(--fs-2xl); }
.nv-stat--accent .nv-stat-num { color:var(--accent); }
.nv-stat--good   .nv-stat-num { color:var(--good); }
.nv-stat--warn   .nv-stat-num { color:var(--warn); }
.nv-stat--danger .nv-stat-num { color:var(--danger); }
.nv-stat--tile  { background:var(--surface2); border-radius:var(--radius-sm); padding:9px 8px; }
.nv-stat--on-accent .nv-stat-num,
.nv-stat--on-accent .nv-stat-label { color:var(--on-accent); }
.nv-stat--tile-accent { background:var(--on-accent-a16); border-radius:var(--radius); padding:9px 6px; }

/* ---- Chip / pill : tag, type, statut (remplace border-radius:20px ×49) ---- */
.nv-chip        { display:inline-flex; align-items:center; gap:5px; font-size:var(--fs-xs); font-weight:var(--fw-bold); padding:3px 10px; border-radius:var(--radius-pill); background:var(--surface2); color:var(--text-muted); border:1px solid var(--border); white-space:nowrap; }
.nv-chip--sm    { font-size:var(--fs-2xs); padding:2px 8px; }
.nv-chip--accent{ background:var(--accent-a10); border-color:var(--accent-dim); color:var(--accent); }
.nv-chip--good  { background:var(--good-a); border-color:transparent; color:var(--good); }
.nv-chip--warn  { background:var(--warn-a); border-color:transparent; color:var(--warn); }
.nv-chip--danger{ background:var(--bad-a);  border-color:transparent; color:var(--danger); }
.nv-chip--info  { background:var(--info-a); border-color:transparent; color:var(--info); }
/* Catégoriels (types cardio) : poser --chip-c, un seul rendu */
.nv-chip--cat   { color:var(--chip-c,var(--accent)); border-color:var(--chip-c,var(--border)); background:var(--surface2); }
.nv-chip--run   { --chip-c:var(--c-run); }
.nv-chip--bike  { --chip-c:var(--c-bike); }
.nv-chip--walk  { --chip-c:var(--c-walk); }
.nv-chip--hike  { --chip-c:var(--c-hike); }
.nv-chip--swim  { --chip-c:var(--c-swim); }
.nv-chip--other { --chip-c:var(--c-other); }

/* ---- Label de section (remplace text-transform:uppercase ×55 inline) ---- */
.nv-label       { font-size:var(--fs-xs); font-weight:var(--fw-bold); text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); }
.nv-label--sm   { font-size:var(--fs-2xs); letter-spacing:.05em; }
.nv-label--accent { color:var(--accent); }

/* ---- Champ de formulaire : label + input ---- */
.nv-field       { display:flex; flex-direction:column; gap:6px; margin-bottom:12px; }
.nv-field > label { font-size:var(--fs-xs); font-weight:var(--fw-bold); text-transform:uppercase; letter-spacing:.05em; color:var(--text-muted); }
.nv-input       { width:100%; box-sizing:border-box; padding:11px 12px; border-radius:var(--radius-sm); border:1.5px solid var(--border); background:var(--surface2); color:var(--text); font-size:var(--fs-base); font-family:var(--font); transition:border-color .15s; }
.nv-input:focus { outline:none; border-color:var(--accent); }
.nv-input::placeholder { color:var(--text-subtle); }

/* ---- Bottom-sheet / modale de confirmation (remplace les sheets reconstruites
 *      inline : suppr. cardio, fin de séance, etc.) ---- */
.nv-sheet-overlay { position:fixed; inset:0; background:rgba(7,11,20,.45); z-index:9000; display:flex; align-items:flex-end; justify-content:center; }
.nv-sheet       { width:100%; max-width:480px; background:var(--surface); border-radius:var(--radius-lg) var(--radius-lg) 0 0; padding:24px 20px 32px; box-shadow:var(--shadow-lg); animation:pop-in .22s cubic-bezier(.2,.8,.2,1); }
.nv-sheet-handle{ width:40px; height:4px; background:var(--border); border-radius:var(--radius-pill); margin:0 auto 20px; }
.nv-sheet-title { font-size:var(--fs-lg); font-weight:var(--fw-heavy); color:var(--text); margin-bottom:6px; }
.nv-sheet-sub   { font-size:var(--fs-sm); color:var(--text-muted); margin-bottom:20px; }
.nv-sheet-actions { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:20px; }

/* ---- Variantes de carte (accent bord gauche) ---- */
.card--flush    { margin-bottom:0; }
.card--accent   { border-left:3px solid var(--accent); }
.card--good     { border-left:3px solid var(--good); }
.card--warn     { border-left:3px solid var(--warn); }
.card--danger   { border-left:3px solid var(--danger); }

/* ---- Boutons : variantes manquantes (complètent .btn existant) ---- */
.btn-ghost      { background:transparent; color:var(--accent); box-shadow:none; }
.btn-ghost:hover{ background:var(--accent-a08); }
.btn-danger     { background:var(--danger); color:var(--on-danger); }
.btn-neutral    { background:var(--surface2); border:1px solid var(--border); color:var(--text); }
.btn-block      { width:100%; }
.btn-inline     { width:auto; }

/* ---- Navigation du bas — composant UNIQUE (athlète + coach, rendu identique)
 *      Remplace .tab-btn (athlète) ET .sub-tab.cc* (coach). Icône + label,
 *      état actif standardisé (couleur accent + barre indicatrice en haut). ---- */
.nv-nav          { display:flex; position:fixed; bottom:0; left:0; right:0; max-width:var(--app-w); margin:0 auto; z-index:50;
                   background:var(--surface); border-top:1px solid var(--border); padding-bottom:env(safe-area-inset-bottom,0px); }
.nv-navbtn       { position:relative; flex:1 1 0; min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
                   padding:9px 3px; border:none; background:none; cursor:pointer; white-space:nowrap; transition:color .2s;
                   font-size:var(--fs-2xs); font-weight:var(--fw-bold); color:var(--text-muted); }
.nv-navbtn .nv-navico      { line-height:1; display:block; }
.nv-navbtn .nv-navico svg  { width:24px; height:24px; display:block; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.nv-navbtn.active          { color:var(--accent); }
.nv-navbtn.active::before  { content:""; position:absolute; top:0; left:50%; transform:translateX(-50%); width:26px; height:3px; border-radius:0 0 var(--radius-pill) var(--radius-pill); background:var(--accent); }
.nv-navbtn:disabled        { opacity:.45; cursor:not-allowed; }
.nv-navbtn .nv-nav-badge   { position:absolute; top:4px; right:calc(50% - 20px); background:var(--danger); color:#fff; font-size:var(--fs-2xs); font-weight:var(--fw-heavy); min-width:15px; height:15px; border-radius:var(--radius-pill); line-height:15px; text-align:center; padding:0 3px; }

/* ---- Onglets vue joueur foot (.djt-tabs) : barre d'icônes EN BAS (comme muscu).
 *      Enfant flex de l'overlay flex-colonne (pas de position:fixed → fiable iOS). ---- */
/* Barre d'onglets fiche joueur foot = STANDARD .nv-navbtn (icône + LABEL,
   actif = couleur accent + barre indicatrice en haut) — identique à la barre
   de navigation de la vue athlète muscu. */
/* Barre bord à bord comme le header (#fjd-topbar) : pas de max-width ni de
   marge auto → elle occupe toute la largeur de l'écran, en solo comme dans les
   vues coach/prépa. */
.djt-tabs.sub-tabs {
  position:fixed; left:0; right:0; bottom:0; z-index:60;
  width:100%; margin:0; justify-content:center; gap:0; overflow:visible;
  background:var(--surface); border-top:1px solid var(--border); border-radius:0;
  padding:0 0 env(safe-area-inset-bottom,0px);
}
.djt-tabs .sub-tab {
  position:relative; flex:1 1 0; min-width:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  border:none; border-radius:0; background:none; cursor:pointer; padding:9px 3px;
  color:var(--text-muted); font-size:var(--fs-2xs); font-weight:var(--fw-bold); white-space:nowrap; transition:color .2s;
}
.djt-tabs .sub-tab .dj-ico     { line-height:1; display:block; }
.djt-tabs .sub-tab .dj-ico svg { width:24px; height:24px; display:block; }
.djt-tabs .sub-tab.active          { color:var(--accent); }
.djt-tabs .sub-tab.active::before  { content:""; position:absolute; top:0; left:50%; transform:translateX(-50%); width:26px; height:3px; border-radius:0 0 var(--radius-pill) var(--radius-pill); background:var(--accent); }

/* ── Détail d'une séance (partagé : Entraînement « Dernières séances » +
 *    Analyses ▸ Muscu ▸ Historique). Exercice + séries en pastilles charge×reps. ── */
.nv-seancedet     { background:var(--surface2); border-radius:12px; padding:10px 12px; }
.nv-exrow         { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:7px 0; border-bottom:1px solid var(--border); }
.nv-exrow:last-child { border-bottom:none; }
.nv-exn           { font-size:12.5px; font-weight:700; color:var(--text); }
.nv-sets          { display:flex; gap:5px; flex-wrap:wrap; justify-content:flex-end; }
.nv-set           { font-size:11px; font-weight:700; background:var(--surface); border:1px solid var(--border); border-radius:7px; padding:3px 7px; color:var(--text-muted); font-variant-numeric:tabular-nums; }
.nv-trend         { margin-top:10px; display:flex; align-items:center; gap:8px; font-size:11.5px; font-weight:600; border-radius:11px; padding:9px 11px; line-height:1.35; }
.nv-trend svg     { flex:none; }
.nv-trend.up      { background:rgba(0,168,84,.10); color:var(--good); }
.nv-trend.dn      { background:rgba(224,120,0,.10); color:var(--warn); }

/* ===== Visite guidée (tour contextuel) — spotlight + bulle ===== */
#nvt-ov{position:fixed;inset:0;z-index:4000;display:none}
#nvt-ov.on{display:block}
#nvt-spot{position:absolute;border-radius:14px;box-shadow:0 0 0 9999px rgba(4,6,11,.74);border:2px solid var(--accent);transition:all .28s cubic-bezier(.4,0,.2,1);pointer-events:none}
#nvt-bub{position:absolute;width:280px;max-width:86vw;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:16px;box-shadow:0 16px 40px rgba(0,0,0,.45);transition:left .28s,top .28s;color:var(--text)}
#nvt-scr{font-size:10.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--accent);margin:0 0 5px;padding-right:62px}
#nvt-t{font-size:15px;font-weight:800;margin:0 0 6px}
#nvt-flash{position:absolute;inset:0;display:none;align-items:center;justify-content:center;pointer-events:none}
#nvt-flash.on{display:flex}
#nvt-flash .lbl{background:var(--accent);color:#fff;font-size:17px;font-weight:800;letter-spacing:.02em;padding:12px 24px;border-radius:14px;box-shadow:0 12px 34px rgba(0,0,0,.35);animation:nvtFlash 1.1s ease both}
@keyframes nvtFlash{0%{opacity:0;transform:scale(.88)}18%{opacity:1;transform:scale(1)}78%{opacity:1}100%{opacity:0}}
#nvt-x{font-size:13px;color:var(--text-muted);line-height:1.5;margin:0 0 14px}
#nvt-dots{display:flex;gap:6px;justify-content:center;margin:0 0 12px}
.nvt-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.nvt-dot{width:7px;height:7px;border-radius:999px;background:var(--border);display:inline-block}
.nvt-dot.on{background:var(--accent)}
.nvt-btns{display:flex;gap:8px}
#nvt-bub button{border:0;border-radius:9px;font-size:13px;font-weight:700;padding:8px 14px;cursor:pointer}
.nvt-ghost{background:none;color:var(--text-muted)}
.nvt-prim{background:var(--accent);color:#fff}
#nvt-skip{position:absolute;top:12px;right:14px;background:none;border:0;color:var(--text-muted);font-size:12px;cursor:pointer;padding:0}
#nvt-arrow{position:absolute;width:14px;height:14px;background:var(--surface);border-left:1px solid var(--border);border-top:1px solid var(--border)}
/* Pendant la visite : barre de nav au-dessus du voile + onglet courant entouré */
/* Barre de nav pendant la visite : au-dessus du voile, FOND SOMBRE, et seul
   l'onglet de l'écran courant est éclairé (le reste disparaît dans le sombre). */
.nvt-navlift{z-index:4001 !important;background:#0a0d16 !important;border-color:#1b2233 !important;box-shadow:0 -1px 0 rgba(255,255,255,.05)}
.nvt-navdim{opacity:.16;transition:opacity .2s}
.nvt-navcur{opacity:1 !important;background:rgba(26,95,255,.18);outline:2.5px solid var(--accent);outline-offset:-3px;border-radius:12px;position:relative;color:#eaf2ff !important}
.nvt-navcur span,.nvt-navcur svg{color:#eaf2ff !important}
/* Carte élargie (ex. tableau Premium en fin de visite) */
#nvt-bub.nvt-big{width:440px;max-width:94vw}
.nvt-ptab{width:100%;border-collapse:collapse;margin:10px 0 2px;font-size:12.5px}
.nvt-ptab th,.nvt-ptab td{padding:7px 8px;border-bottom:1px solid var(--border);text-align:left}
.nvt-ptab th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:800}
.nvt-ptab th:nth-child(2),.nvt-ptab td:nth-child(2),.nvt-ptab th:nth-child(3),.nvt-ptab td:nth-child(3){text-align:center;white-space:nowrap;width:74px}
.nvt-ptab td:nth-child(3){color:var(--accent);font-weight:700}
.nvt-ptab tr:last-child td{border-bottom:0}
#nvt-ov.nvt-dim{background:rgba(4,6,11,.72)}

/* ===== Boutique récompenses (dashboard Aujourd'hui, thème clair tj-*) ===== */
#tab-accueil .bq-h{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:800;color:var(--tj-text);margin:16px 0 9px;}
#tab-accueil .bq-solde{font-size:12px;font-weight:800;color:var(--tj-accent);background:var(--tj-accent-a);border-radius:999px;padding:3px 11px;}
#tab-accueil .bq-card{display:flex;align-items:center;gap:11px;background:var(--tj-surface);border:1px solid var(--tj-border);border-radius:14px;padding:11px 13px;margin-bottom:8px;}
#tab-accueil .bq-card.has{border-color:rgba(224,161,0,.42);background:#FFFCF0;}
#tab-accueil .bq-ic{font-size:24px;flex:none;line-height:1;}
#tab-accueil .bq-tx{flex:1;min-width:0;}
#tab-accueil .bq-tx b{display:block;font-size:13.5px;color:var(--tj-text);}
#tab-accueil .bq-tx span{display:block;font-size:11.5px;color:var(--tj-muted);margin-top:1px;}
#tab-accueil .bq-buy{flex:none;background:var(--tj-accent);color:#fff;border:none;border-radius:999px;padding:8px 14px;font-size:12px;font-weight:800;cursor:pointer;font-family:inherit;}
#tab-accueil .bq-buy.off{background:var(--tj-surface2);color:var(--tj-subtle);cursor:not-allowed;}
#tab-accueil .bq-owned{flex:none;font-size:12px;font-weight:800;color:var(--tj-good);}
#tab-accueil .bq-card.collab{border-style:dashed;opacity:.92;}
#tab-accueil .bq-soon{flex:none;font-size:11px;font-weight:800;color:var(--tj-muted);background:var(--tj-surface2);border:1px solid var(--tj-border);border-radius:999px;padding:5px 11px;white-space:nowrap;}

/* ── Icônes SVG (mask, héritent currentColor) — remplacent des emojis (passe anti-emoji) ── */
i[class^="nv-ic-"],i[class*=" nv-ic-"]{display:inline-block;width:1em;height:1em;vertical-align:-0.125em;background:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;}
.nv-ic-trash{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M3%206h18'%2F%3E%3Cpath%20d%3D'M19%206v14a2%202%200%200%201-2%202H7a2%202%200%200%201-2-2V6m3%200V4a2%202%200%200%201%202-2h4a2%202%200%200%201%202%202v2'%2F%3E%3Cpath%20d%3D'M10%2011v6M14%2011v6'%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M3%206h18'%2F%3E%3Cpath%20d%3D'M19%206v14a2%202%200%200%201-2%202H7a2%202%200%200%201-2-2V6m3%200V4a2%202%200%200%201%202-2h4a2%202%200%200%201%202%202v2'%2F%3E%3Cpath%20d%3D'M10%2011v6M14%2011v6'%2F%3E%3C%2Fsvg%3E");}
.nv-ic-pencil{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M12%2020h9'%2F%3E%3Cpath%20d%3D'M16.5%203.5a2.12%202.12%200%200%201%203%203L7%2019l-4%201%201-4Z'%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M12%2020h9'%2F%3E%3Cpath%20d%3D'M16.5%203.5a2.12%202.12%200%200%201%203%203L7%2019l-4%201%201-4Z'%2F%3E%3C%2Fsvg%3E");}
.nv-ic-bell{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M18%208a6%206%200%200%200-12%200c0%207-3%209-3%209h18s-3-2-3-9'%2F%3E%3Cpath%20d%3D'M13.7%2021a2%202%200%200%201-3.4%200'%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M18%208a6%206%200%200%200-12%200c0%207-3%209-3%209h18s-3-2-3-9'%2F%3E%3Cpath%20d%3D'M13.7%2021a2%202%200%200%201-3.4%200'%2F%3E%3C%2Fsvg%3E");}
.nv-ic-search{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Ccircle%20cx%3D'11'%20cy%3D'11'%20r%3D'7'%2F%3E%3Cpath%20d%3D'M21%2021l-4.3-4.3'%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Ccircle%20cx%3D'11'%20cy%3D'11'%20r%3D'7'%2F%3E%3Cpath%20d%3D'M21%2021l-4.3-4.3'%2F%3E%3C%2Fsvg%3E");}
.nv-ic-eye{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M1%2012s4-8%2011-8%2011%208%2011%208-4%208-11%208-11-8-11-8Z'%2F%3E%3Ccircle%20cx%3D'12'%20cy%3D'12'%20r%3D'3'%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M1%2012s4-8%2011-8%2011%208%2011%208-4%208-11%208-11-8-11-8Z'%2F%3E%3Ccircle%20cx%3D'12'%20cy%3D'12'%20r%3D'3'%2F%3E%3C%2Fsvg%3E");}
.nv-ic-eye-off{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M17.9%2017.9A10%2010%200%200%201%2012%2020C5%2020%201%2012%201%2012a18.5%2018.5%200%200%201%205-5.9M9.9%204.2A9%209%200%200%201%2012%204c7%200%2011%208%2011%208a18.5%2018.5%200%200%201-2.2%203.2M14.1%2014.1A3%203%200%201%201%209.9%209.9'%2F%3E%3Cpath%20d%3D'M1%201l22%2022'%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M17.9%2017.9A10%2010%200%200%201%2012%2020C5%2020%201%2012%201%2012a18.5%2018.5%200%200%201%205-5.9M9.9%204.2A9%209%200%200%201%2012%204c7%200%2011%208%2011%208a18.5%2018.5%200%200%201-2.2%203.2M14.1%2014.1A3%203%200%201%201%209.9%209.9'%2F%3E%3Cpath%20d%3D'M1%201l22%2022'%2F%3E%3C%2Fsvg%3E");}

/* ===== Agenda daté coach (.cdag) — rail Aperçu + onglet Programme ========== */
.cdag{font-size:13px}
.cdag-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.cdag-nav{width:30px;height:30px;flex:none;border-radius:9px;background:var(--surface2);border:1px solid var(--border);color:var(--text);font-size:16px;font-weight:800;cursor:pointer;display:grid;place-items:center;line-height:1}
.cdag-nav:hover{border-color:var(--accent);color:var(--accent)}
.cdag-wl{flex:1;text-align:center;min-width:0}
.cdag-wl b{display:block;font-size:13px;font-weight:800}
.cdag-wl span{font-size:10.5px;color:var(--text-subtle)}
.cdag-today{font-size:10px;font-weight:800;color:var(--accent);background:var(--accent-a12);border:1px solid var(--accent);border-radius:999px;padding:3px 9px;cursor:pointer}
.cdag-sub{font-size:10.5px;color:var(--text-subtle)}
.cdag-days{display:flex;flex-direction:column}
.cdag-day{display:flex;align-items:center;gap:10px;padding:6px 4px;border-top:1px solid var(--border);border-radius:9px;cursor:pointer;min-height:40px}
.cdag-day:first-child{border-top:none}
.cdag-day.cdag-dropok{background:var(--accent-a12);box-shadow:inset 0 0 0 1px var(--accent)}
.cdag-dd{width:30px;height:30px;flex:none;border-radius:999px;background:var(--surface2);border:1px solid var(--border);display:grid;place-items:center;line-height:1}
.cdag-dd b{font-size:11px;font-weight:800;color:var(--text-muted)}
.cdag-dd span{font-size:8px;color:var(--text-subtle)}
.cdag-day.has .cdag-dd{background:var(--accent-a12);border-color:var(--accent)}
.cdag-day.has .cdag-dd b{color:var(--accent)}
.cdag-ct{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.cdag-pill{display:inline-flex;align-items:center;gap:6px;max-width:100%;font-size:12px;font-weight:700;border-radius:8px;padding:4px 8px;color:#fff;cursor:grab}
.cdag-pill:active{cursor:grabbing}
.cdag-pill.cdag-dragging{opacity:.4}
.cdag-pill small{font-weight:600;opacity:.85;font-size:10px}
.cdag-x{margin-left:2px;opacity:.85;font-size:11px;cursor:pointer;padding:0 1px}
.cdag-x:hover{opacity:1}
.cdag-empty{font-size:11.5px;color:var(--text-subtle)}
.cdag-day:hover .cdag-empty{color:var(--accent)}
.cdag-topl{margin-top:11px;border-top:1px solid var(--border);padding-top:10px}
.cdag-lab{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle);margin:0 2px 7px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cdag-prefill{font-size:10px;font-weight:700;text-transform:none;letter-spacing:0;color:var(--accent);background:var(--accent-a12);border:1px solid var(--accent);border-radius:999px;padding:3px 9px;cursor:pointer}
.cdag-chips{display:flex;flex-wrap:wrap;gap:6px}
.cdag-chip{font-size:11.5px;font-weight:700;border-radius:8px;padding:5px 10px;color:#fff;cursor:grab;border:2px dashed rgba(255,255,255,.4)}
.cdag-chip:active{cursor:grabbing}
.cdag-chip.sel{outline:2px solid var(--text);outline-offset:1px}

/* Saisie : tableau des séries de l'exercice en cours (dernière fois · cible · aujourd'hui) */
.ps-tab { width:100%; border-collapse:separate; border-spacing:0 5px; font-size:12.5px; table-layout:fixed; }
.ps-tab th { font-size:10px; text-transform:uppercase; letter-spacing:.05em; color:var(--text-subtle); font-weight:800; text-align:left; padding:0 6px; }
.ps-tab th:first-child { width:34px; }
.ps-tab td { background:var(--surface2); padding:7px 6px; vertical-align:top; line-height:1.3; color:var(--text); }
.ps-tab td:first-child { border-radius:10px 0 0 10px; font-weight:900; text-align:center; }
.ps-tab td:last-child { border-radius:0 10px 10px 0; }
.ps-tab td b { font-weight:800; white-space:nowrap; }
.ps-tab td small { display:block; font-size:10.5px; color:var(--text-muted); font-weight:600; margin-top:1px; }
.ps-tab .ps-cib b { color:var(--accent); }
.ps-tab .ps-muted { color:var(--text-subtle); }
.ps-tab tr.ps-done td { background:var(--good-a,rgba(0,168,84,.10)); }
.ps-tab tr.ps-done .ps-auj b { color:var(--good,#00A854); }
.ps-tab tr.ps-cur td { background:var(--accent-a08,rgba(26,95,255,.08)); box-shadow:inset 0 1.5px 0 var(--accent),inset 0 -1.5px 0 var(--accent); }
.ps-tab tr.ps-cur td:first-child { box-shadow:inset 1.5px 1.5px 0 var(--accent),inset 0 -1.5px 0 var(--accent); }
.ps-tab tr.ps-cur td:last-child { box-shadow:inset -1.5px 1.5px 0 var(--accent),inset 0 -1.5px 0 var(--accent); }
.ps-tab tr.ps-cur .ps-auj b { color:var(--accent); }
.ps-note { font-size:11.5px; color:var(--text-muted); margin-top:4px; line-height:1.45; }
/* RPE : chaque bouton porte sa signification (reps en réserve) */
#rpe-chips .saisie-chip { padding:7px 2px; line-height:1.15; }
#rpe-chips .saisie-chip small { display:block; font-size:9.5px; font-weight:600; opacity:.8; margin-top:2px; }
.rpe-exp { font-size:12px; background:var(--accent-a08,rgba(26,95,255,.08)); color:var(--text); border-radius:10px; padding:8px 10px; margin-top:8px; }
.rpe-exp:empty { display:none; }
/* Surcharge par niveau : choix du jour (avancé / expert) */
.pc-box { border:1.5px solid var(--warn); background:var(--warn-a,rgba(224,120,0,.10)); border-radius:13px; padding:11px 12px; margin:10px 0 4px; }
.pc-box.pc-done { border-color:var(--border); background:var(--surface2); }
.pc-box p { margin:0 0 9px; font-size:12.5px; color:var(--text); }
.pc-opts { display:grid; grid-template-columns:1fr 1fr; gap:7px; }
.pc-opt { border:1.5px solid var(--border); background:var(--surface); border-radius:11px; padding:8px 6px; font-size:11.5px; text-align:center; color:var(--text-muted); cursor:pointer; font-family:inherit; line-height:1.3; }
.pc-opt b { display:block; font-size:12.5px; color:var(--text); margin-bottom:1px; }
.pc-opt.on { border-color:var(--accent); background:var(--accent-a08,rgba(26,95,255,.08)); }
.pc-opt.on b { color:var(--accent); }
.pc-opt:disabled { opacity:.45; cursor:default; }
.pc-ref { font-size:11px; color:var(--text-muted); margin-top:8px; }
/* Bouton « remonter en haut » (global) */
#btn-top { position:fixed; right:20px; bottom:calc(150px + env(safe-area-inset-bottom,0px)); z-index:1130; width:44px; height:44px; border-radius:999px; border:1px solid var(--border); background:var(--surface); color:var(--accent); box-shadow:0 6px 18px rgba(13,20,36,.16); display:grid; place-items:center; cursor:pointer; opacity:0; pointer-events:none; transform:translateY(8px); transition:opacity .2s, transform .2s; }
#btn-top.on { opacity:1; pointer-events:auto; transform:none; }
#btn-top svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
body.onb-open #btn-top, body.xp-open #btn-top, body.jg-open #btn-top, body.gen-open #btn-top { display:none; }
@media (min-width:992px) { #btn-top { bottom:28px; right:28px; } }
/* « Ma semaine » (générateur / Construis ton programme / éditeur) — style des chips g2 */
.sem-box { margin:14px 0 4px; }
.pb-card .sem-box { margin:0; }
.sem-lab { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--text-subtle); margin:0 2px 7px; }
.sem-seg { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.sem-seg button { border:1.5px solid var(--border); background:var(--surface); border-radius:11px; padding:9px 6px; font:inherit; font-size:13px; font-weight:700; color:var(--text-muted); cursor:pointer; line-height:1.25; text-align:center; }
.sem-seg button small { display:block; font-size:10.5px; font-weight:600; color:var(--text-subtle); margin-top:1px; }
.sem-seg button.on { border-color:var(--accent); background:var(--accent-a08,rgba(26,95,255,.08)); color:var(--accent); }
.sem-seg button.on small { color:var(--accent); opacity:.8; }
.sem-hint { font-size:11.5px; color:var(--text-subtle); margin:7px 2px 0; line-height:1.45; }
/* 28/10 : boutons de rôle sans pictogramme (texte centré) */
.nv-role { justify-content:center; text-align:center; }
.nv-role .tx { align-items:center; }
/* Bandeau mobile : logo Novalyz à la place de l'haltère, à côté du nom de l'écran */
#app-header .hdr-logo { width:22px; height:24px; vertical-align:-5px; margin-right:9px; color:var(--text); }
/* Éditeur de programme : choix de la catégorie d'exercice (gros / moyen / petit) */
.pb-fld.pb-cat select{ min-width:148px; text-align:left; }
/* Réglages athlète (audit R6, 01/11) : tous les onglets visibles sur téléphone (retour à la ligne, plus de défilement caché). */
#tab-reglages .sub-tabs { flex-wrap:wrap; overflow:visible; gap:4px; }
#tab-reglages .sub-tab { flex:1 1 auto; padding:8px 6px; font-size:11.5px; }
/* Novalyz IA pas encore activée (audit I6, 01/11) : visible, marquée « bientôt », sans saisie ni suggestions. */
body.ia-bientot .nvz-ask-chips, body.ia-bientot .nvz-ask-field, body.ia-bientot #cv-ia-sugg, body.ia-bientot #cv-ia-dots { display:none !important; }
body.ia-bientot #cv-ia-view .cv-input .cv-send { opacity:.4; pointer-events:none; }

/* Audit coach S8 (04/11) : saisie en présentiel épurée — pas de régénération / édition du programme,
   ni analyses, agenda ou Hyrox pendant que le coach saisit la séance de l'athlète en salle. */
body.saisie-coach #en-gen, body.saisie-coach #en-creer, body.saisie-coach #en-suivi, body.saisie-coach #en-seg-hyrox,
body.saisie-coach #en-suivi ~ .v2-sec, body.saisie-coach [data-tour="ath-agenda"] { display: none !important; }

/* 04/11 — Agenda : semaine type en pointillé, statuts ; Aujourd'hui : caser une séance pas faite */
.cdag-ghost{background:transparent!important;border:2px dashed currentColor}
.cdag-ok{font-size:10.5px;font-weight:800;color:var(--good,#12B76A);margin-left:6px}
.cdag-ko{font-size:10.5px;font-weight:800;color:var(--warn,#E07800);margin-left:6px}
.cdag-annule{background:#94a3b8!important;opacity:.8;text-decoration:line-through}
.cdag-annule small{text-decoration:none}
.sj-mq{margin-top:6px;line-height:1.5}
.sj-ch{display:inline-block;border:1px solid #CFDCFF;background:#fff;border-radius:999px;padding:4px 10px;font:inherit;font-size:11.5px;font-weight:800;color:#1A5FFF;margin:6px 4px 0 0;cursor:pointer}
.sj-ch.sj-no{color:#55627E}

/* ===== Analyses équipe v3 (écran 7, 04/11) — mobile + bureau ===== */
.ae{display:flex;flex-direction:column;gap:12px}
.ae-kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.ae-k{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--c);border-radius:14px;padding:11px 13px}
.ae-k b{font-size:22px;font-weight:900;color:var(--c)}.ae-k small{font-size:12px;color:var(--text-muted)}
.ae-k div{font-size:12px;font-weight:800;margin-top:2px}.ae-k span{display:block;font-size:10.5px;color:var(--text-subtle);line-height:1.35;margin-top:2px}
.ae-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:12px 14px;box-shadow:var(--shadow-sm);min-width:0}
.ae-ct{display:flex;justify-content:space-between;gap:8px;align-items:baseline;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-subtle);font-weight:800;margin-bottom:6px}
.ae-ct i{font-style:normal;text-transform:none;letter-spacing:0;color:var(--accent);font-weight:700;text-align:right}
.ae-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--border);font-size:12.5px;cursor:pointer;flex-wrap:wrap}
.ae-card .ae-row:first-of-type{border-top:0}
.ae-nm{width:64px;flex:none;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ae-mid{flex:1;min-width:150px;line-height:1.45}
.ae-mut{color:var(--text-muted);font-size:11.5px}
.ae-chip{display:inline-block;font-size:10px;font-weight:800;border-radius:6px;padding:2px 7px;white-space:nowrap}
.ae-chip.ok,.ae-c.ok{background:var(--good-a12,#E7F8EF);color:var(--good,#0A8A55)}
.ae-chip.wa,.ae-c.wa{background:var(--warn-a,#FFF4E5);color:var(--warn,#B86E00)}
.ae-chip.ba,.ae-c.ba{background:var(--bad-a,#FDECEC);color:var(--danger,#C0303A)}
.ae-chip.gr,.ae-c.gr{background:var(--surface2);color:var(--text-muted)}
.ae-chip.bl{background:var(--accent-a12,#E8F0FF);color:var(--accent)}
.ae-btn{font:inherit;font-size:11px;font-weight:800;color:var(--accent);border:1px solid var(--accent-a25,#CFDCFF);border-radius:999px;padding:4px 10px;background:var(--surface);white-space:nowrap;cursor:pointer}
.ae-bar{height:8px;border-radius:99px;background:var(--surface2);overflow:hidden;width:56px;flex:none}
.ae-bar i{display:block;height:100%;border-radius:99px}.ae-bar i.ok{background:var(--good)}.ae-bar i.wa{background:var(--warn)}.ae-bar i.ba{background:var(--danger)}
.ae-ets{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.ae-et{font:inherit;text-align:left;border:0;border-radius:12px;padding:10px 12px;font-size:12px;font-weight:700;cursor:pointer;line-height:1.35}
.ae-et{display:flex;flex-direction:column;justify-content:flex-start}.ae-et b{display:block;font-size:20px;font-weight:900}.ae-et span{display:block;font-weight:600;font-size:11px;margin-top:3px;opacity:.95}
.ae-et.ok{background:var(--good-a12,#E7F8EF);color:var(--good,#0A8A55)}.ae-et.wa{background:var(--warn-a,#FFF4E5);color:var(--warn,#B86E00)}
.ae-et.gr{background:var(--surface2);color:var(--text-muted)}.ae-et.bl{background:var(--accent-a12,#E8F0FF);color:var(--accent)}
.ae-tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
.ae-t{width:100%;border-collapse:collapse;font-size:12px;min-width:560px}
.ae-t th{font-size:10px;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.04em;padding:4px;text-align:center;font-weight:800}
.ae-t th:first-child,.ae-t td:first-child{text-align:left;font-weight:800;white-space:nowrap}
.ae-t td{padding:5px 3px;border-top:1px solid var(--border);text-align:center}.ae-t tr{cursor:pointer}
.ae-c{display:block;border-radius:6px;padding:3px 2px;font-weight:800;font-size:11px;white-space:nowrap}
.ae-spark{display:flex;align-items:flex-end;gap:3px;height:26px;flex:none;margin-right:8px;vertical-align:bottom}
.ae-spark i{width:8px;background:var(--accent-dim,#9DB8FF);border-radius:2px;display:block}
.ae-mid .ae-spark{display:inline-flex}
.ae-vide{color:var(--text-muted);font-size:12.5px;padding:6px 0}
.ae-g2{display:grid;grid-template-columns:1fr;gap:12px}
@media (min-width:992px){ .ae-row{flex-wrap:nowrap} .ae-mid{min-width:0} .ae-kpis{grid-template-columns:repeat(4,1fr)} .ae-ets{grid-template-columns:repeat(4,1fr)} .ae-g2{grid-template-columns:1fr 1fr} }

.ae-exo{font-weight:700;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;cursor:pointer}

/* ===== Messagerie coach v2 (écran 8, 05/11) ===== */
.msgx-ctl{padding:2px 0 8px}
.msgx-s{width:100%;box-sizing:border-box;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:9px 12px;font:inherit;font-size:13px;color:var(--text);outline:none}
.msgx-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.msgx-f{font:inherit;font-size:11.5px;font-weight:800;border:1px solid var(--accent-a25,#CFDCFF);border-radius:999px;padding:5px 11px;background:var(--surface);color:var(--accent);cursor:pointer}
.msgx-f.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.msgx-it{display:flex;gap:11px;align-items:center;padding:10px;border-radius:12px;cursor:pointer}
.msgx-it.nl{background:var(--accent-a08,#EEF4FF)}
.msgx-c{flex:1;min-width:0}.msgx-n{font-size:14px;font-weight:700;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.msgx-b{background:var(--accent);color:#fff;font-size:9px;font-weight:800;min-width:16px;height:16px;border-radius:8px;line-height:16px;text-align:center;padding:0 3px}
.msgx-a{font-size:11.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.msgx-tm{font-size:10.5px;color:var(--text-muted);flex:none}
.msgx-vide{color:var(--text-muted);font-size:12.5px;padding:10px 4px}
.msgx-r{display:flex;align-items:center;gap:8px;padding:7px 0;border-top:1px solid var(--border);font-size:12.5px}
.msgx-r:first-child{border-top:0}.msgx-t{flex:1;min-width:0;line-height:1.4}
.msgx-qs{display:flex;gap:6px;overflow-x:auto;padding:8px 12px 0;border-top:1px solid var(--border);-webkit-overflow-scrolling:touch}
.msgx-q{flex:none;font:inherit;font-size:11.5px;font-weight:800;color:var(--accent);background:var(--accent-a08,#EEF4FF);border:1px solid var(--accent-a25,#CFDCFF);border-radius:999px;padding:5px 10px;cursor:pointer;white-space:nowrap}
.msgx-dh{font-size:13px;font-weight:800;margin-bottom:8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
#msgx-plus{display:none;position:fixed;inset:0;background:rgba(3,6,14,.55);z-index:1400;align-items:center;justify-content:center;padding:16px}
.msgx-mod{background:var(--surface);border-radius:18px;padding:16px;width:100%;max-width:420px;max-height:88vh;overflow:auto;box-shadow:0 18px 50px rgba(7,11,20,.4)}
.msgx-mt{display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:15px;margin-bottom:6px}
.msgx-mt button{background:none;border:0;font-size:16px;cursor:pointer;color:var(--text-muted)}
.msgx-ck{display:flex;gap:9px;align-items:center;padding:8px 0;border-top:1px solid var(--border);font-size:13px;cursor:pointer;text-transform:none;letter-spacing:0;font-weight:600;color:var(--text)}
.msgx-mod textarea{width:100%;box-sizing:border-box;margin-top:10px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:9px 11px;font:inherit;font-size:13px;color:var(--text);resize:vertical}
.msgx-send{width:100%;margin-top:10px;background:var(--accent);color:#fff;border:0;border-radius:12px;padding:11px;font:inherit;font-weight:800;font-size:13px;cursor:pointer}
.msgx-send:disabled{opacity:.5}
.msg2-ctx-pane{display:none}
@media (min-width:992px){
  body.coach-active #coach-msg2 .msg2-ctx-pane{display:block;width:290px;flex:none;border-left:1px solid var(--border);background:var(--surface);padding:16px;overflow:auto}
  body.coach-active #coach-msg2 .msg2-ctx-pane:empty{display:none}
}

/* ===== Réglages coach v2 (écran 9, 05/11) ===== */
.crgx-ban{display:flex;gap:10px;align-items:center;background:#FFF7EB;border:1px solid #F5D7A1;border-radius:14px;padding:10px 12px;font-size:12.5px;line-height:1.45;margin-bottom:12px;color:#5A3A00}
.crgx-ban button{flex:none;background:var(--accent);color:#fff;border:0;border-radius:9px;padding:7px 11px;font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.crgx-lab{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:4px 0 6px}
.crgx-card{padding:6px 16px 10px !important;margin:0 0 10px !important}
.crgx-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--border);font-size:13px}
.crgx-card .crgx-row:first-child{border-top:0}
.crgx-t{flex:1;min-width:0;line-height:1.35}.crgx-t small{display:block;color:var(--text-muted);font-size:11px;font-weight:500;margin-top:1px}
.crgx-sw{width:40px;height:22px;border-radius:99px;background:var(--border);position:relative;flex:none;border:0;cursor:pointer;padding:0}
.crgx-sw::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .15s}
.crgx-sw.on{background:var(--accent)}.crgx-sw.on::after{left:21px}
.crgx-sub{font-size:12.5px;font-weight:800;margin:8px 0 2px}
.crgx-rad{display:flex;gap:8px;align-items:center;padding:6px 0;font-size:13px;cursor:pointer}
.crgx-rad i{width:16px;height:16px;border-radius:50%;border:2px solid var(--border);flex:none;box-sizing:border-box}.crgx-rad i.on{border:5px solid var(--accent)}
.crgx-note{font-size:11px;color:var(--text-muted);line-height:1.45;margin:8px 0 2px}
.crgx-chip{font-size:10.5px;font-weight:800;border-radius:6px;padding:2px 7px;background:var(--surface2);color:var(--text-muted)}
.crgx-soon{background:rgba(122,90,248,.12);color:#7A5AF8}
.crgx-btn{width:100%;margin-top:8px;background:var(--accent);border:0;color:var(--on-accent);border-radius:10px;padding:11px;font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.crgx-btn2{width:100%;margin-top:8px;background:var(--surface);border:1px solid var(--accent-a25,#CFDCFF);color:var(--accent);border-radius:10px;padding:10px;font:inherit;font-size:13px;font-weight:800;cursor:pointer}
.crgx-sel{width:100%;background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:10px;font:inherit;font-size:13px;box-sizing:border-box}
.crgx-push{background:#1C2333;color:#fff;border-radius:14px;padding:10px 12px;font-size:12px;line-height:1.45;margin-bottom:6px}.crgx-push b{display:block;font-size:12.5px}
.crgx-grps{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}
/* 05/11 (retour porteur) : dans le tiroir Profil coach (colonne flex qui défile), la barre d'onglets et les
   panneaux ne doivent jamais rétrécir — sinon, quand le contenu dépasse la hauteur, les onglets s'écrasaient à 4 px. */
#coach-reglages-drawer .sub-tabs, #coach-reglages-drawer .crg-panel, #coach-reglages-drawer .crg-panel > * { flex-shrink:0; }

html.crg-open, html.crg-open body { overflow:hidden !important; }   /* Profil coach ouvert : pas de 2e barre de défilement (05/11) */

/* ===== Carte d'exercice commune + blocs enchaînés (05/11, maquette carte-exercice-programme.html) =====
   Ordi + mobile, coach + athlète. Aucune largeur fixe qui coupe le texte : grille auto qui passe à la ligne. */
.pbc, #prog-editor-overlay .pb-row.pbc { display:block !important; background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:11px 12px; margin-bottom:10px; box-sizing:border-box; min-width:0; }
.pbc-hd { display:flex; align-items:center; gap:8px; flex-wrap:wrap; min-width:0; }
.pbc-hd .prog-grip { display:inline-flex; color:var(--text-subtle); flex:none; }
.pbc-lab { flex:none; width:28px; height:28px; border-radius:8px; background:rgba(124,92,255,.12); color:#5B3DF0; font-weight:800; font-size:12px; display:flex; align-items:center; justify-content:center; }
.pbc-nm { flex:1 1 180px; min-width:0; }
.pbc-nm .pbc-exo { width:100%; max-width:100%; border:0; background:transparent; font:inherit; font-size:15px; font-weight:800; color:var(--text); padding:2px 0; cursor:pointer; text-overflow:ellipsis; -webkit-appearance:none; appearance:none; }
.pbc-nm small { display:block; font-size:10.5px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; margin-top:1px; }
.pbc-cats { display:flex; gap:6px; flex-wrap:wrap; }
.pbc-cat { font:inherit; font-size:11px; font-weight:800; border-radius:999px; padding:4px 10px; border:1px solid var(--border); background:var(--surface); color:var(--text-muted); cursor:pointer; white-space:nowrap; }
.pbc-cat.on { background:var(--accent); border-color:var(--accent); color:#fff; }
.pbc-dots { flex:none; width:32px; height:32px; border-radius:9px; border:1px solid var(--border); background:var(--surface); color:var(--text-muted); font-size:16px; font-weight:800; cursor:pointer; line-height:1; }
.pbc-pres { display:grid; grid-template-columns:repeat(auto-fit, minmax(118px, 1fr)); gap:8px; margin-top:10px; }
.pbc-f { background:var(--surface2); border:1px solid var(--border); border-radius:12px; padding:6px 8px 7px; text-align:center; min-width:0; box-sizing:border-box; }
.pbc-l { display:block; font-size:9.5px; font-weight:800; color:var(--text-subtle); text-transform:uppercase; letter-spacing:.05em; margin-bottom:3px; white-space:nowrap; }
.pbc-v { display:flex; align-items:center; justify-content:center; gap:6px; min-width:0; }
.pbc-v b { font-size:17px; min-width:18px; }
.pbc-v i { font-style:normal; color:var(--text-subtle); }
.pbc-st { width:26px; height:26px; border-radius:8px; border:1px solid var(--border); background:var(--surface); color:var(--accent); font:inherit; font-weight:800; font-size:15px; cursor:pointer; padding:0; flex:none; }
.pbc .pb-in { width:52px; min-width:0; box-sizing:border-box; text-align:center; font:inherit; font-size:15px; font-weight:800; color:var(--text); background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:5px 4px; }
.pbc-reps .pb-in { width:48px; }
.pbc-rpe.pb-in, select.pbc-rpe { width:100%; max-width:110px; font-size:14px; padding:5px 6px; }
.pbc-h { display:block; font-size:10px; color:var(--text-subtle); margin-top:3px; line-height:1.3; }
.pbc-repos { grid-column:span 2; }
.pbc-pus { display:flex; gap:4px; flex-wrap:wrap; justify-content:center; align-items:center; }
.pbc-pu { font:inherit; font-size:12px; font-weight:800; border:1px solid var(--border); background:var(--surface); color:var(--text-muted); border-radius:8px; padding:4px 7px; cursor:pointer; }
.pbc-pu.on { background:var(--accent); border-color:var(--accent); color:#fff; }
.pbc-pus .pb-in { width:56px; font-size:13px; }
.pbc-sum { margin-top:8px; font-size:12px; color:var(--text-muted); line-height:1.4; }
.pbc-sum b { color:var(--text); }
.pbc-link { display:inline-block; margin-top:8px; font:inherit; font-size:12px; font-weight:800; color:var(--accent); border:1px dashed var(--accent-a25,#9DB8FF); background:var(--accent-a08,#F7F9FF); border-radius:10px; padding:7px 10px; cursor:pointer; text-align:left; }
.pbc-link.pbc-gris { color:var(--text-muted); border-color:var(--border); background:var(--surface); border-style:solid; }
.pbc-advt { display:block; margin-top:8px; font:inherit; font-size:12px; font-weight:800; color:var(--accent); background:none; border:0; padding:0; cursor:pointer; text-align:left; }
.pbc-adv { margin-top:8px; padding-top:8px; border-top:1px dashed var(--border); display:flex; gap:10px; flex-wrap:wrap; align-items:flex-start; }
.pbc-adv > .pbc-f { flex:0 0 auto; }
.pbc-adv .sch-wrap { flex:1 1 240px; min-width:0; }
.pbc-blk { border-radius:16px; padding:10px; margin-bottom:12px; background:linear-gradient(180deg, rgba(124,92,255,.08), transparent); border:1px solid rgba(124,92,255,.28); }
.pbc-blkh { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 2px 8px; font-size:13px; font-weight:800; color:#5B3DF0; }
.pbc-blkl { background:#5B3DF0; color:#fff; border-radius:7px; padding:2px 8px; font-size:11px; }
.pbc-blkr { margin-left:auto; font-size:11px; font-weight:700; color:var(--text-muted); }
.pbc-blk .pbc { margin-bottom:4px; }
.pbc-arrow { text-align:center; color:#7C5CFF; font-size:11px; font-weight:800; margin:2px 0 6px; }
.pbc-blkf { display:flex; gap:8px; flex-wrap:wrap; }
#pbc-menu { position:fixed; z-index:1500; background:var(--surface); border:1px solid var(--border); border-radius:12px; box-shadow:0 12px 34px rgba(14,26,51,.18); padding:6px; min-width:210px; max-height:70vh; overflow:auto; }
#pbc-menu button { display:block; width:100%; text-align:left; font:inherit; font-size:13px; background:none; border:0; border-radius:8px; padding:8px 10px; cursor:pointer; color:var(--text); }
#pbc-menu button:hover { background:var(--surface2); }
#pbc-menu .pbc-sub { padding-left:22px; font-size:12.5px; color:var(--text-muted); }
#pbc-menu .pbc-mt { font-size:10.5px; font-weight:800; color:var(--text-subtle); text-transform:uppercase; letter-spacing:.05em; padding:6px 10px 2px; }
#pbc-menu .pbc-red { color:var(--danger); }
.pbc-it { display:flex; justify-content:space-between; gap:10px; width:100%; text-align:left; font:inherit; font-size:13px; padding:9px 4px; border:0; border-top:1px solid var(--border); background:none; cursor:pointer; color:var(--text); }
.pbc-itt { font-size:11px; font-weight:800; color:var(--text-muted); white-space:nowrap; }
@media (max-width:420px) { .pbc-pres { grid-template-columns:1fr 1fr; } .pbc-repos { grid-column:1 / -1; } }
/* 05/11 : RPE jamais coupé ; éditeur ordi étroit (coach : rail coach + fiche) → la colonne de droite passe sous le plan. */
select.pbc-rpe { width:auto !important; min-width:96px; max-width:100%; }
@media (min-width:992px) and (max-width:1359.98px) {
  #prog-editor-overlay .pb-builder { grid-template-columns:200px minmax(0,1fr) !important; }
  #prog-editor-overlay .pb-insp { grid-column:1 / -1; display:grid !important; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:12px; border-left:0 !important; border-top:1px solid var(--border); }
}

/* 05/11 (mobile) : ⋯ en haut à droite (plus seul sur sa ligne), nom sur la ligne de la poignée, RPE court. */
.pbc, #prog-editor-overlay .pb-row.pbc { position:relative; }
.pbc-hd { padding-right:40px; }
.pbc-dots { position:absolute; top:9px; right:9px; }
.pbc-nm { flex:1 1 0; }
.pbc-cats { flex:1 1 100%; }
@media (min-width:1100px) { .pbc-cats { flex:0 1 auto; } }
select.pbc-rpe { min-width:70px; font-size:16px !important; font-weight:800; }
/* Carte exercice — très petit écran (≤420px) : champs Reps jamais coupés */
@media (max-width:420px) {
  .pbc-f { padding:6px 5px 7px; }
  .pbc-reps .pbc-v { gap:3px; }
  .pbc-reps .pb-in { width:42px; padding:5px 2px; }
}
#coach-topbar #ct-brand-ico { width:26px; height:28px; flex-shrink:0; color:var(--text); }
/* 05/11 — Série par série (tous schémas) */
.sch-sets { margin-top:10px; display:flex; flex-direction:column; gap:6px; }
.sch-sets > .sch-l { display:block; font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--text-muted); }
.sch-l small { text-transform:none; letter-spacing:0; font-weight:600; color:var(--text-subtle); }
.sch-set { display:flex; flex-wrap:wrap; align-items:center; gap:8px; background:var(--surface2); border:1px solid var(--border); border-radius:12px; padding:7px 9px; }
.sch-set.top { background:rgba(245,159,0,.10); border-color:rgba(245,159,0,.40); }
.sch-k { font-weight:800; font-size:13px; color:var(--accent); width:24px; flex:none; }
.sch-set.top .sch-k { color:#C77700; }
.sch-rp { display:flex; align-items:center; gap:6px; flex:1 1 auto; min-width:0; flex-wrap:wrap; }
.sch-rp .sch-r { width:50px; box-sizing:border-box; text-align:center; font:inherit; font-size:16px; font-weight:800; color:var(--text); background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:4px 2px; }
.sch-rp .sch-r::placeholder { color:var(--text-subtle); font-weight:700; font-size:12px; }
.sch-u { font-size:12px; color:var(--text-muted); }
.sch-perso { font-size:10px; font-weight:800; color:#7C5CFF; background:rgba(124,92,255,.12); border-radius:999px; padding:2px 7px; }
.sch-plus { margin-left:auto; font:inherit; font-size:11.5px; font-weight:800; color:var(--accent); background:none; border:0; cursor:pointer; padding:4px 2px; white-space:nowrap; }
.sch-opt { flex:1 1 100%; display:flex; gap:10px; flex-wrap:wrap; padding-left:32px; }
.sch-opt label { display:flex; align-items:center; gap:6px; font-size:11.5px; font-weight:700; color:var(--text-muted); }
.sch-opt input { width:64px; box-sizing:border-box; font:inherit; font-size:16px; font-weight:800; text-align:center; color:var(--text); background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:4px; }
.sch-reset { align-self:flex-start; font:inherit; font-size:11.5px; font-weight:800; color:var(--text-muted); text-decoration:underline; background:none; border:0; cursor:pointer; padding:2px 0; }
/* 05/11 — « Enchaîner avec… » par muscle */
.pbc-muschips { margin-top:8px; }
.pbc-muschips .pbc-sug:not(.on) { border-color:rgba(124,92,255,.35); color:#5B3DF0; background:rgba(124,92,255,.08); }
.pbc-grp { margin-top:6px; }
.pbc-grph { display:flex; justify-content:space-between; font-size:10.5px; font-weight:800; color:var(--text-subtle); text-transform:uppercase; letter-spacing:.05em; padding:8px 4px 2px; }
@media (max-width:600px) { .pbc-muschips { flex-wrap:nowrap; overflow-x:auto; padding-bottom:4px; -webkit-overflow-scrolling:touch; } .pbc-muschips .msgx-f { flex:none; } }
.sch-rp { flex:1 1 0; }
@media (max-width:420px) {
  .sch-set { gap:6px; padding:6px 7px; }
  .sch-k { width:20px; }
  .sch-rp { gap:4px; }
  .sch-rp .sch-r { width:44px; }
  .sch-plus { flex:1 1 100%; text-align:left; margin-left:26px; padding:0; }
  .sch-opt { padding-left:26px; }
}
.sch-opt label { margin:0 !important; }
.sch-opt input, .sch-rp .sch-r { margin:0 !important; }
/* 05/11 — « Mon programme » athlète sur mobile : carte compacte (Séries · Reps · RPE sur une ligne, Repos dessous) */
@media (max-width:600px) {
  #prog-editor-overlay .pbc { padding:10px 10px; }
  #prog-editor-overlay .pbc-pres { grid-template-columns:1fr 1.35fr 1fr; gap:6px; margin-top:8px; }
  #prog-editor-overlay .pbc-repos { grid-column:1 / -1; }
  #prog-editor-overlay .pbc-f { padding:4px 4px 5px; border-radius:10px; }
  #prog-editor-overlay .pbc-l { font-size:8.5px; margin-bottom:2px; }
  #prog-editor-overlay .pbc-v { gap:3px; }
  #prog-editor-overlay .pbc-v b { font-size:15px; min-width:14px; }
  #prog-editor-overlay .pbc-st { width:24px; height:24px; font-size:14px; border-radius:7px; }
  #prog-editor-overlay .pbc .pb-in { width:40px; font-size:15px; padding:3px 2px; border-radius:7px; }
  #prog-editor-overlay .pbc-reps .pb-in { width:36px; }
  #prog-editor-overlay select.pbc-rpe { min-width:0 !important; width:100% !important; max-width:64px; padding:3px 2px; font-size:15px !important; }
  #prog-editor-overlay .pbc-h { font-size:9px; margin-top:2px; }
  #prog-editor-overlay .pbc-pus { gap:4px; }
  #prog-editor-overlay .pbc-pu { padding:3px 7px; font-size:12px; }
  #prog-editor-overlay .pbc-pus .pb-in { width:52px; }
  #prog-editor-overlay .pbc .pb-in { margin:0 !important; }
  #prog-editor-overlay .pbc-cat { padding:3px 9px; font-size:10.5px; }
  #prog-editor-overlay .pbc-nm .pbc-exo { font-size:14px; }
  /* la bulle « Novalyz IA » ne cache plus le bouton « + Ajouter » en bas de liste */
  #prog-editor-content { padding-bottom:96px; }
}
/* 05/11 — Coach mobile : Messages et Profil gardent la barre d'onglets du bas */
@media (max-width:991.98px) {
  body.coach-active.cb-panel #coach-bandeau { display:flex !important; z-index:1001; }
  body.coach-active.cb-panel #coach-messagerie-drawer,
  body.coach-active.cb-panel #coach-reglages-drawer { bottom:var(--cb-h, 62px) !important; }
}
/* 06/11 — Équipe mobile = mêmes infos que le tableau ordi (niveau · dernière activité), sans liseré */
.cae-stripe { display:none !important; }
.cae-top { padding-left:0; }
.cae-nm { flex-direction:column; align-items:flex-start; gap:1px; }
.cae-sub { font-size:11px; color:var(--text-muted); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
.cae-sub b { font-weight:800; }
.cae-chip { border-radius:999px !important; }
/* 06/11 — Analyses équipe : ligne rangée (avatar | nom … pastille/barre/bouton à droite ; détail dessous) */
.ae-right { display:flex; align-items:center; gap:8px; flex:none; }
@media (max-width:991.98px) {
  .ae-row { display:grid; grid-template-columns:30px minmax(0,1fr) auto; column-gap:10px; row-gap:3px; align-items:center; }
  .ae-row > :first-child { grid-row:1 / span 2; align-self:start; margin-top:1px; }
  .ae-row .ae-nm { width:auto; grid-column:2; grid-row:1; }
  .ae-row .ae-right { grid-column:3; grid-row:1; justify-self:end; }
  .ae-row .ae-mid { grid-column:2 / 4; grid-row:2; min-width:0; font-size:12px; color:var(--text-muted); }
  .ae-row .ae-mid b { color:var(--text); }
  .ae-ct { font-size:10px; }
  .ae-k b { font-size:20px; }
  .ae-card { padding:11px 12px; }
}
/* 06/11 (audit tablette paysage 992-1279 px) : dans les cartes à 2 colonnes, la ligne nom | détail | barre
   écrasait le détail (un mot par ligne). On reprend la ligne rangée du mobile ; ≥ 1280 px inchangé. */
@media (min-width:992px) and (max-width:1279.98px) {
  .ae-g2 .ae-row { display:grid; grid-template-columns:30px minmax(0,1fr) auto; column-gap:10px; row-gap:3px; align-items:center; }
  .ae-g2 .ae-row > :first-child { grid-row:1 / span 2; align-self:start; margin-top:1px; }
  .ae-g2 .ae-row .ae-nm { width:auto; grid-column:2; grid-row:1; }
  .ae-g2 .ae-row .ae-right { grid-column:3; grid-row:1; justify-self:end; }
  .ae-g2 .ae-row .ae-mid { grid-column:2 / 4; grid-row:2; min-width:0; }
}
/* 06/11 — Socle coach mobile : un seul en-tête blanc (logo + titre de la page + actions) */
#coach-topbar .ct-title { display:none; font-family:'Michroma',sans-serif; font-size:17px; font-weight:400; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media (max-width:991.98px) {
  #coach-topbar { border-top:0; background:var(--surface); border-bottom:1px solid var(--border); }
  #coach-topbar .ct-eyebrow, #coach-topbar .ct-name-row { display:none !important; }
  #coach-topbar .ct-title { display:block; }
  #coach-topbar .ct-id { display:flex; align-items:center; }
  /* Messages et Profil : même en-tête blanc (plus de bandeau bleu) */
  #coach-messagerie-drawer > div:first-child, #coach-reglages-drawer > header {
    background:var(--surface) !important; color:var(--text) !important; border-bottom:1px solid var(--border); justify-content:flex-start !important; }
  #coach-messagerie-drawer > div:first-child > button, #coach-reglages-drawer > header > button {
    background:var(--surface2) !important; border:1px solid var(--border) !important; color:var(--text) !important; }
  #coach-messagerie-drawer > div:first-child > svg, #coach-reglages-drawer > header > svg { display:none; }
  #coach-messagerie-drawer > div:first-child > div, #coach-reglages-drawer > header > div { font-family:'Michroma',sans-serif !important; font-size:17px !important; font-weight:400 !important; }
}
/* Police Quicksand partout (boutons et champs en police système auparavant) */
#coach-reglages-drawer button, #coach-reglages-drawer input, #coach-reglages-drawer select, #coach-reglages-drawer textarea,
#coach-messagerie-drawer button, #coach-messagerie-drawer input, #coach-messagerie-drawer textarea { font-family:inherit; }
/* ═══ 06/11 — Fiche athlète courte (maquette coach-fiche-courte) ═══ */
.cd-act3 { display:grid; grid-template-columns:1.25fr 1fr 1fr; gap:8px; margin:0 0 12px; }
.cd-act3 .cd-saisie-btn { margin:0 !important; padding:10px 8px !important; font-size:13px; flex-wrap:wrap; gap:4px !important; }
.cd-act3 .cd-saisie-btn span { display:none; }
.cd-act3-b { font:inherit; font-size:12.5px; font-weight:800; color:var(--accent); background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:10px 8px; cursor:pointer; line-height:1.25; }
.cdx-card { padding:13px 15px !important; margin-bottom:10px; }
.cdx-ct { display:flex; justify-content:space-between; align-items:baseline; gap:8px; font-size:10.5px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; color:var(--text-subtle); margin-bottom:8px; }
.cdx-ct a { color:var(--accent); text-transform:none; letter-spacing:0; font-size:11.5px; cursor:pointer; }
.cdx-l { font-size:13px; font-weight:700; line-height:1.5; }
.cdx-s { font-size:12px; color:var(--text-muted); margin-top:4px; line-height:1.45; }
.cdx-n { font-size:10.5px; color:var(--text-subtle); margin-top:6px; }
.cd-hero-ctx { display:inline-block; margin-top:8px; font:inherit; font-size:11px; font-weight:700; color:inherit; background:rgba(255,255,255,.18); border:0; border-radius:8px; padding:3px 8px; cursor:pointer; text-align:left; }
#cd-menu-fiche { position:fixed; z-index:1600; background:var(--surface); border:1px solid var(--border); border-radius:12px; box-shadow:0 12px 34px rgba(14,26,51,.18); padding:6px; min-width:230px; }
#cd-menu-fiche button { display:block; width:100%; text-align:left; font:inherit; font-size:13px; background:none; border:0; border-radius:8px; padding:9px 10px; cursor:pointer; color:var(--text); }
#cd-menu-fiche button:hover { background:var(--surface2); }
/* En-tête de la fiche : réglages et déconnexion sont dans « Profil » (barre / rail) → retirés ici */
@media (max-width:991.98px) {
  #cd-header .cd-hbtn[onclick^="ouvrirReglagesCoach"], #cd-header .cd-deco { display:none !important; }
  #cd-sport-ico { display:none !important; }
}
/* Mobile : onglets EN HAUT (comme sur ordi) + barre générale du bas conservée dans la fiche */
@media (max-width:991.98px) {
  body.coach-active.athlete-selected.cd-nav { padding-bottom:86px !important; }
  body.coach-active.athlete-selected #cd-header { transform:none !important; }
  #view-coach-detail .sub-tabs { display:flex !important; position:sticky !important; top:59px; bottom:auto !important; left:auto; right:auto; z-index:20; display:flex; gap:2px;
    margin:8px 0 10px; padding:3px !important; background:var(--surface); border:1px solid var(--border) !important; border-radius:12px; box-shadow:0 2px 10px rgba(14,26,51,.06); }
  #view-coach-detail .sub-tabs > * { max-width:none !important; }
  #view-coach-detail .sub-tab { flex:1 1 0; flex-direction:row !important; padding:8px 2px !important; font-size:11px !important; font-weight:800; border-radius:9px; color:var(--text-muted) !important; background:none !important; }
  #view-coach-detail .sub-tab .cd-ico { display:none !important; }
  #view-coach-detail .sub-tab.active { background:var(--accent) !important; color:#fff !important; }
  #view-coach-detail .sub-tab.active::before, #view-coach-detail .sub-tab.active::after { display:none !important; }
  body.coach-active.athlete-selected #coach-bandeau { display:flex !important; }
}
/* Onglet Forme (fiche courte) : ordi en 2 colonnes (courbe du poids à taille normale) */
#cdtab-forme .dash-card { margin-bottom:12px; }
@media (min-width:992px) {
  #cdtab-forme:not([style*="none"]) { display:grid !important; grid-template-columns:1fr 1fr; gap:0 14px; align-items:start; }
  #cdtab-forme > #cd-ia-card { grid-column:1 / -1; }
  #cdtab-forme #cd-etat-group > * { margin-bottom:12px; }
}
/* 06/11 — Lot 4 Programme : mêmes blocs ordi / mobile */
.pb-nvsem > div { margin:10px 22px 0 !important; }
.pb-vol-mob { display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:8px 0 10px; padding:9px 10px; background:var(--surface2); border-radius:11px; }
.pb-vol-mob .pb-vol-t { flex:1 1 100%; font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--text-subtle); }
.pb-vol-mob .pb-vol-t b { color:var(--text); }
.pb-vol-mob .pb-volchip { font-size:11.5px; font-weight:700; border:1px solid; border-radius:999px; padding:2px 9px; background:var(--surface); }

/* 06/11 (porteur) : la fiche athlète ORDI reste comme avant les lots ; la fiche courte est MOBILE seulement. */
@media (min-width:992px) { .cd-mob-only { display:none !important; } .lbl-m { display:none !important; } }
@media (max-width:991.98px) { .cd-desk-only { display:none !important; } .lbl-d { display:none !important; } }
/* 06/11 (porteur) — fiche courte MOBILE : un seul bloc « À décider » (diagnostics + alertes), puis Entraînement, Séries 7 j */
@media (max-width:991.98px) {
  .cd-num { display:none; }
  #cd-coupdoeil .cdcp-etat { display:none !important; }
  #cd-coupdoeil .cdcp-wrap { display:block !important; }
  #cd-coupdoeil .cdcp-entr, #cdtab-overview #cd-hub-volume { margin-bottom:10px; }
  #cd-decider { background:var(--surface); border:1px solid var(--border); border-radius:16px; padding:12px 13px 6px; margin-bottom:10px; }
  #cd-decider .cdcp-lab { font-size:10.5px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; color:var(--text-subtle); margin:0 0 8px; }
  #cd-decider .cdcp-tag { display:none; }
  #cd-decider-diags > .dash-card { box-shadow:none !important; border-top:0 !important; border-right:0 !important; border-bottom:1px solid var(--border) !important; border-radius:0 !important; padding:10px 0 12px 10px !important; margin:0 !important; background:none !important; }
  #cd-decider #cd-alertes-card { box-shadow:none !important; border:0 !important; border-radius:0 !important; padding:10px 0 4px !important; margin:0 !important; background:none !important; }
  #cd-decider #cd-alertes-card > .dash-label, #cd-decider .cda-head, #cd-decider .cda-breakdown { display:none !important; }
}
@media (max-width:991.98px) {
  body.cd-from-msg #view-coach-detail .sub-tabs, body.cd-from-msg #cd-hbtn-plus, body.cd-from-msg #cd-hbtn-msg { display:none !important; }
}

/* 06/11 — « Cette séance remplace laquelle ? » (fin de séance libre, « Changer ») */
.ratt-q{border:1.5px solid var(--accent);border-radius:14px;padding:11px 12px;display:flex;flex-direction:column;gap:7px}
.ratt-t{font-weight:800;font-size:13.5px;color:var(--text)}
.ratt-opt{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;border:1px solid var(--border);border-radius:11px;padding:8px 10px;background:var(--surface);color:var(--text);font:inherit;cursor:pointer}
.ratt-opt.on{border-color:var(--accent);background:var(--accent-a08,rgba(26,95,255,.08))}
.ratt-opt b{display:block;font-size:13px;font-weight:800}
.ratt-opt small{display:block;font-size:11px;color:var(--text-muted);line-height:1.35;margin-top:1px}
.ratt-rd{flex:none;width:17px;height:17px;border-radius:50%;border:2px solid var(--text-subtle);margin-top:1px}
.ratt-opt.on .ratt-rd{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3.5px var(--surface)}
.ratt-reco{font-size:9.5px;font-weight:800;color:var(--good);background:rgba(0,168,84,.12);border-radius:5px;padding:1px 5px;margin-left:4px;vertical-align:1px}
.ratt-n{font-size:11px;color:var(--text-muted);line-height:1.4}
.ma-hchg{flex:none;border:1px solid var(--border);background:var(--surface);color:var(--accent);font:inherit;font-size:11px;font-weight:800;border-radius:999px;padding:3px 9px;margin-right:6px;cursor:pointer}
.ma-hra{font-size:11.5px;font-weight:800;color:var(--accent);margin-top:1px}

/* 06/11 — Catalogue : filtre matériel, sous-titre d'exercice, création par le coach */
.exo-matchips{display:flex;gap:6px;overflow-x:auto;padding:6px 0 2px;scrollbar-width:none}
.exo-matchips::-webkit-scrollbar{display:none}
.exo-matc{flex:none;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font:inherit;font-size:12px;font-weight:700;border-radius:999px;padding:5px 11px;cursor:pointer;white-space:nowrap}
.exo-matc.on{border-color:var(--accent);background:var(--accent-a08,rgba(26,95,255,.08));color:var(--accent)}
.xp-mat{padding:0 16px}
.xp-st{display:block;font-size:11px;font-weight:600;color:var(--text-muted);margin-top:1px}
.xp-creer{display:block;width:calc(100% - 8px);margin:14px 4px 8px;border:1.5px dashed var(--accent);background:transparent;color:var(--accent);font:inherit;font-weight:800;font-size:13px;border-radius:12px;padding:11px;cursor:pointer}
.cx-sheet{width:100%;max-width:480px;background:var(--surface);border-radius:20px 20px 0 0;padding:18px 18px calc(22px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:6px;box-shadow:0 -8px 30px rgba(7,11,20,.18)}
.cx-grab{width:40px;height:4px;border-radius:4px;background:var(--border);margin:0 auto 8px}
.cx-t{font-size:16px;font-weight:800;margin-bottom:4px;color:var(--text)}
.cx-l{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-subtle);margin-top:6px}
.cx-i{width:100%;font:inherit;font-size:14px;padding:10px 12px;border:1.5px solid var(--border);border-radius:11px;background:var(--surface2);color:var(--text)}
.cx-err{color:var(--danger,#c43c3c);font-size:12.5px;font-weight:700;margin-top:4px}
.cx-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.cx-b{padding:12px;border-radius:12px;border:1.5px solid var(--border);background:var(--surface2);color:var(--text);font:inherit;font-weight:800;cursor:pointer}
.cx-b.p{background:var(--accent);border-color:var(--accent);color:#fff}

/* 06/11 — Montre : parcours guidé de connexion + dernière synchro */
.cm-ov{position:fixed;inset:0;background:rgba(7,11,20,.45);z-index:9400;display:flex;align-items:flex-end;justify-content:center}
.cm-sheet{width:100%;max-width:480px;max-height:92vh;overflow:auto;background:var(--surface);border-radius:20px 20px 0 0;padding:16px 18px calc(22px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:12px;box-shadow:0 -8px 30px rgba(7,11,20,.18)}
@media (min-width:992px){.cm-ov{align-items:center}.cm-sheet{border-radius:20px}}
.cm-hd{display:flex;align-items:center;gap:12px}
.cm-steps{flex:1;display:flex;gap:4px}
.cm-steps b{flex:1;height:4px;border-radius:4px;background:var(--border)}
.cm-steps b.on{background:var(--accent)}
.cm-x{margin-left:auto;border:0;background:var(--surface2);color:var(--text-muted);width:30px;height:30px;border-radius:9px;font:inherit;cursor:pointer}
.cm-t{font-size:16px;font-weight:800;color:var(--text)}
.cm-p{margin:0;font-size:13px;color:var(--text-muted);line-height:1.45}
.cm-note{margin:0;font-size:12px;color:var(--text-muted);background:var(--surface2);border-radius:10px;padding:9px 11px;line-height:1.45}
.cm-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cm-br{text-align:left;border:1.5px solid var(--border);border-radius:12px;padding:10px;background:var(--surface);color:var(--text);font:inherit;font-weight:800;font-size:13px;cursor:pointer;display:flex;flex-direction:column;gap:2px}
.cm-br small{font-weight:600;font-size:10.5px;color:var(--text-muted)}
.cm-br.on{border-color:var(--accent);background:var(--accent-a08,rgba(26,95,255,.08))}
.cm-ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:13px;color:var(--text);line-height:1.45}
.cm-chk{display:flex;flex-direction:column;gap:7px}
.cm-chk div{display:flex;justify-content:space-between;gap:8px;border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-size:13px;font-weight:700;color:var(--text)}
.cm-chk span{font-weight:600;color:var(--text-muted)}
.cm-chk span.ok{color:var(--good);font-weight:800}
.cm-chk span.ko{color:#B45F00;font-weight:800}
.cm-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cm-b{padding:12px;border-radius:12px;border:1.5px solid var(--border);background:var(--surface2);color:var(--text);font:inherit;font-weight:800;cursor:pointer}
.cm-b.p{background:var(--accent);border-color:var(--accent);color:#fff}
.montre-sync{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;font-weight:700;color:var(--good)}
.montre-sync.old{color:#B45F00}
.montre-ref{flex:none;border:1px solid var(--border);background:var(--surface);color:var(--accent);font:inherit;font-size:11.5px;font-weight:800;border-radius:999px;padding:4px 11px;cursor:pointer}
.montre-sync-aide{font-size:11.5px;color:var(--text-muted);margin-top:4px}
.montre-chg{display:block;margin-top:8px;border:0;background:none;padding:0;color:var(--accent);font:inherit;font-size:12px;font-weight:700;cursor:pointer;text-decoration:underline;text-underline-offset:2px}

/* 07/11 — fiche coach ▸ Analyses (ordi) : diagnostic dans la colonne de droite, collant */
@media (min-width:992px){ #tab-historique .ma-colrail.ma-rail-colle{position:sticky;top:112px;align-self:start} #tab-historique .ma-diag-rail > div{margin-top:0!important} }

/* Photo de profil (07/11) */
.pp-row { display:flex; align-items:center; gap:14px; margin-bottom:12px; }
.pp-row:empty { display:none; }
.pp-av { flex:none; border-radius:999px; overflow:hidden; background:var(--accent-a12, rgba(26,95,255,.12)); color:var(--accent); font-weight:800; display:flex; align-items:center; justify-content:center; }
.pp-av img { width:100%; height:100%; object-fit:cover; display:block; }
.pp-act { flex:1; min-width:0; }
.pp-t { font-weight:800; font-size:14px; }
.pp-s { font-size:11.5px; color:var(--text-muted); margin:2px 0 8px; }
.pp-btns { display:flex; gap:6px; flex-wrap:wrap; }
.pp-btns button { border:1px solid var(--border); background:var(--surface2); color:var(--accent); border-radius:9px; padding:7px 10px; font:inherit; font-size:12px; font-weight:700; cursor:pointer; }
.pp-btns button.pp-del { color:var(--danger); }

/* Onboarding partie 1 (07/11) */
.onb-steps { display:flex; gap:5px; flex:1; max-width:220px; }
.onb-steps b { flex:1; height:4px; border-radius:2px; background:var(--border); }
.onb-steps b.on { background:var(--accent); }
.onb-li { display:flex; gap:12px; align-items:flex-start; margin-bottom:13px; text-align:left; }
.onb-ic { flex:none; width:30px; height:30px; border-radius:10px; background:var(--accent-a12, rgba(26,95,255,.12)); color:var(--accent); font-weight:800; font-size:14px; display:grid; place-items:center; }
.onb-li-t { font-weight:800; font-size:14.5px; }
.onb-li-s { font-size:13px; color:var(--text-muted); line-height:1.45; }
.onb-ch { display:block; width:100%; text-align:left; padding:14px 15px; border:1.5px solid var(--border); background:var(--surface); border-radius:15px; margin-bottom:10px; cursor:pointer; font:inherit; color:var(--text); }
.onb-ch b { display:block; font-size:15px; font-weight:800; }
.onb-ch span { display:block; font-size:12.5px; color:var(--text-muted); margin-top:3px; line-height:1.4; }
.onb-ch .onb-then { color:var(--accent); font-weight:700; margin-top:6px; }
.onb-ch.on { border-color:var(--accent); background:var(--accent-a12, rgba(26,95,255,.08)); box-shadow:0 0 0 1px var(--accent) inset; }
.onb-prim { width:100%; margin-top:16px; padding:15px; border:none; border-radius:13px; background:var(--accent); color:var(--on-accent, #fff); font:inherit; font-size:15px; font-weight:800; cursor:pointer; box-shadow:0 6px 18px rgba(26,95,255,.3); }
.onb-row2 { display:flex; gap:8px; }
.onb-sec { flex:1; padding:12px; border:1px solid var(--border); background:var(--surface2); color:var(--accent); border-radius:12px; font:inherit; font-size:13.5px; font-weight:800; cursor:pointer; }
.onb-promo { position:relative; padding:15px; border-radius:15px; margin-bottom:14px; background:linear-gradient(135deg,rgba(26,95,255,.08),rgba(124,92,255,.12)); border:1px solid rgba(124,92,255,.25); }
.onb-promo b { display:block; font-size:15px; font-weight:800; margin-bottom:4px; padding-right:62px; }
.onb-promo span { display:block; font-size:12.5px; color:var(--text-muted); line-height:1.45; }
.onb-promo .onb-soon { position:absolute; top:13px; right:12px; display:inline-block; font-size:10.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--accent); background:var(--accent-a12, rgba(26,95,255,.12)); border-radius:999px; padding:4px 9px; }
.onb-promo .onb-sec { width:100%; }

/* Créer un exercice : « Il existe peut-être déjà » (07/11) */
.cx-sug { margin:8px 0 4px; padding:10px; border-radius:12px; background:var(--accent-a12, rgba(26,95,255,.08)); border:1px solid var(--border); }
.cx-sug-t { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--accent); margin-bottom:6px; }
.cx-sug-it { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:6px 0; border-top:1px solid var(--border); }
.cx-sug-it:first-of-type { border-top:0; }
.cx-sug-it span { min-width:0; font-size:13px; }
.cx-sug-it small { display:block; font-size:11px; color:var(--text-muted); }
.cx-sug-it button { flex:none; border:1px solid var(--accent); background:var(--surface); color:var(--accent); border-radius:9px; padding:6px 9px; font:inherit; font-size:12px; font-weight:700; cursor:pointer; }
.cx-info { font-size:11.5px; color:var(--text-muted); line-height:1.4; margin-top:10px; }

.onb-promo .onb-promo-l { margin:8px 0 6px; padding-left:18px; font-size:12.5px; color:var(--text); line-height:1.45; }
.onb-promo .onb-promo-l li { margin-bottom:4px; }
.onb-promo .onb-promo-r { color:var(--accent); font-weight:700; }
.onb-promo .onb-promo-l b { display:inline; font-size:inherit; margin:0; padding:0; }

/* Sac lesté : un bouton par poids (07/11) */
.fx-sac { margin-top:12px; }
.fx-sac-row { display:flex; flex-wrap:wrap; gap:6px; }
.fx-sac-row button { flex:1 0 calc(33% - 6px); min-width:64px; padding:9px 4px; border:1.5px solid var(--border); background:var(--surface2); color:var(--text); border-radius:10px; font:inherit; font-size:13px; font-weight:800; cursor:pointer; }
.fx-sac-row button.on { border-color:var(--accent); background:var(--accent); color:var(--on-accent, #fff); }
