/* ══════════════════════════════════════════════════════════════
   ✨ P'TITS VERTS — DESIGN SYSTEM (v7.0.0)
   Palette Louverné, tokens uniformes, composants standardisés.
   Toute règle qui apparaît ensuite DOIT hériter de ces variables.
   ══════════════════════════════════════════════════════════════ */
:root {
  /* ── PALETTE ── */
  --brand:            #009640;   /* Vert Louverné officiel */
  --brand-dark:       #007a34;
  --brand-darker:     #006e2f;
  --brand-soft:       #f0fdf4;   /* Fond très clair */
  --brand-soft-2:     #dcfce7;   /* Fond mise en avant */
  --brand-glow:       rgba(0, 150, 64, 0.14);

  /* Accents secondaires (usage parcimonieux) */
  --accent-info:      #0284c7;   /* Bleu ciel pour info neutre */
  --accent-warn:      #f59e0b;   /* Orange pour alerte modérée */
  --accent-danger:    #dc2626;   /* Rouge pour erreur/danger */
  --accent-success:   #16a34a;   /* Vert secondaire (nuance) */

  /* Neutres (texte, fonds, bordures) */
  --neutral-900:      #0f172a;   /* Texte principal */
  --neutral-700:      #475569;   /* Texte secondaire */
  --neutral-500:      #64748b;   /* Texte tertiaire / labels */
  --neutral-400:      #94a3b8;   /* Placeholder / muted */
  --neutral-300:      #cbd5e1;   /* Bordure marquée */
  --neutral-200:      #e5e7eb;   /* Bordure standard */
  --neutral-100:      #f1f5f9;   /* Fond léger */
  --neutral-50:       #f8fafc;   /* Fond très léger */
  --white:            #ffffff;

  /* ── TYPOGRAPHIE ── */
  --font-sans: 'Outfit', 'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono: 'DM Mono', ui-monospace, monospace;

  --text-xs:   10px;
  --text-sm:   12px;
  --text-base: 14px;
  --text-lg:   16px;
  --text-xl:   20px;
  --text-2xl:  26px;
  --text-3xl:  32px;

  /* ── ESPACES ── (multiples de 4px) */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 20px;
  --sp-6: 24px;
  --sp-8: 32px;

  /* ── RAYONS (3 tailles seulement, plus de chaos) ── */
  --r-sm: 6px;
  --r-md: 10px;
  --r-lg: 16px;
  --r-full: 999px;

  /* ── OMBRES (3 niveaux discrets) ── */
  --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.05);
  --shadow-md: 0 2px 8px rgba(15, 23, 42, 0.08);
  --shadow-lg: 0 8px 24px rgba(15, 23, 42, 0.12);
  --shadow-brand: 0 4px 12px rgba(0, 150, 64, 0.18);

  /* ── TRANSITIONS ── */
  --transition-fast: .12s ease;
  --transition-base: .18s ease;

  /* ── LEGACY (pour compat, on redirige vers la nouvelle palette) ── */
  --blue: var(--brand);
  --blue-dark: var(--brand-dark);
  --blue-light: var(--brand-soft);
  --green: var(--brand);
  --green-light: var(--brand-soft);
  --green-dark: var(--brand-darker);
  --text1: var(--neutral-900);
  --text2: var(--neutral-700);
  --text3: var(--neutral-500);
  --panel: var(--white);
  --border: var(--neutral-200);
}

/* ══════════════════════════════════════════════════════════════
   COMPOSANTS STANDARDISÉS (override propre des règles legacy)
   ══════════════════════════════════════════════════════════════ */

/* Reset universel */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* ── Boutons standardisés ── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-4);
  border: 1px solid var(--neutral-300);
  border-radius: var(--r-md);
  background: var(--white);
  color: var(--neutral-700);
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  font-weight: 600;
  line-height: 1.2;
  cursor: pointer;
  transition: all var(--transition-fast);
  white-space: nowrap;
}
.btn:hover { border-color: var(--brand); color: var(--brand); background: var(--brand-soft); }
.btn:active { transform: translateY(1px); }
.btn:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.btn:disabled { opacity: 0.5; cursor: not-allowed; }

.btn-primary {
  background: var(--brand); border-color: var(--brand); color: var(--white);
  box-shadow: var(--shadow-brand);
}
.btn-primary:hover { background: var(--brand-dark); border-color: var(--brand-dark); color: var(--white); }

.btn-ghost {
  background: transparent; border-color: transparent; color: var(--neutral-700);
  box-shadow: none;
}
.btn-ghost:hover { background: var(--brand-soft); color: var(--brand); }

.btn-danger {
  border-color: var(--accent-danger); color: var(--accent-danger);
}
.btn-danger:hover { background: #fee2e2; color: var(--accent-danger); border-color: var(--accent-danger); }

/* ── Cards standardisées ── */
.card, .detail-card, .dashboard-card {
  background: var(--white);
  border: 1px solid var(--neutral-200);
  border-radius: var(--r-md);
  padding: var(--sp-4);
  box-shadow: var(--shadow-sm);
}

/* ── Inputs standardisés ── */
.field-input, input[type="text"], input[type="number"], input[type="date"],
input[type="email"], input[type="password"], input[type="search"], select, textarea {
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  color: var(--neutral-900);
  background: var(--white);
  border: 1px solid var(--neutral-300);
  border-radius: var(--r-md);
  padding: var(--sp-2) var(--sp-3);
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
  outline: none;
}
.field-input:focus, input:focus, select:focus, textarea:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-glow);
}

/* ── Modals standardisées ── */
.modal-overlay {
  position: fixed; inset: 0;
  background: rgba(15, 23, 42, 0.5);
  backdrop-filter: blur(4px);
  z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  padding: var(--sp-4);
  animation: modalFadeIn var(--transition-base);
}
@keyframes modalFadeIn { from { opacity: 0 } to { opacity: 1 } }
.modal-box {
  background: var(--white);
  border-radius: var(--r-lg);
  padding: var(--sp-6);
  width: 100%;
  max-width: 560px;
  box-shadow: var(--shadow-lg);
  max-height: 92vh;
  overflow-y: auto;
}

/* ── Focus ring globale ── */
:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ══════════════════════════════════════════════════════════════
   Legacy CSS ci-dessous — hérite désormais des variables ci-dessus
   ══════════════════════════════════════════════════════════════ */
:root{
  --bg:#fcfaf6;
  --bg2:#f4efe7;
  --bg3:#ebe2d6;
  --panel:#ffffff;
  --border1:rgba(18,20,18,0.08);
  --border2:rgba(18,20,18,0.16);
  --border3:rgba(18,20,18,0.26);
  --text1:#181814;
  --text2:#5e5b54;
  --text3:#8d897f;
  --blue:#009640;
  --blue-dark:#006e2f;
  --blue-light:#f0fdf4;
  --green:#639922;
  --green-light:#eaf3de;
  --green-dark:#27500a;
  --amber:#ba7517;
  --amber-light:#faeeda;
  --amber-dark:#633806;
  --red:#d85a30;
  --red-light:#faece7;
  --red-dark:#712b13;
  --teal:#0f6e56;
  --pink:#993556;
  --gray:#5f5e5a;
  --radius:10px;
  --radius-lg:14px;
  --radius-xl:18px;
  --shadow:0 10px 30px rgba(26,31,36,0.08),0 2px 8px rgba(26,31,36,0.05);
}
html{scroll-behavior:smooth}
body{
  font-family:'Outfit',sans-serif;
  background:
    radial-gradient(circle at top left, rgba(24,95,165,0.08), transparent 30%),
    radial-gradient(circle at top right, rgba(99,153,34,0.08), transparent 28%),
    linear-gradient(180deg, #f6f1e8 0%, #f0ebe4 100%);
  color:var(--text1);
  min-height:100vh
}
button,input,select,textarea{font:inherit}
button{border:none;background:none}
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible{
  outline:3px solid rgba(24,95,165,0.22);
  outline-offset:2px
}
.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0
}

.app-shell{display:grid;grid-template-rows:auto 1fr;min-height:100vh}
.topnav{
  background:rgba(255,255,255,0.88);
  border-bottom:1px solid var(--border1);
  display:flex;
  align-items:center;
  padding:14px 20px;
  gap:14px;
  position:sticky;
  top:0;
  z-index:100;
  backdrop-filter:blur(16px);
  box-shadow:0 1px 6px rgba(0,0,0,0.04)
}
.nav-logo{font-size:15px;font-weight:700;color:var(--blue-dark);letter-spacing:-0.3px;margin-right:4px}
.nav-cat-tabs{display:flex;gap:4px;background:var(--bg2);border:1px solid var(--border1);border-radius:999px;padding:4px}
.nav-cat{
  font-size:13px;
  font-weight:600;
  padding:7px 15px;
  border-radius:999px;
  cursor:pointer;
  color:var(--text2);
  transition:all 0.15s ease
}
.nav-cat:hover{background:rgba(0,0,0,0.04)}
.nav-cat.on{background:#fff;color:var(--text1);box-shadow:0 1px 3px rgba(0,0,0,0.08)}
.nav-right{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.season-sel,.btn{
  font-size:12px;
  font-weight:600;
  padding:9px 14px;
  border-radius:10px;
  border:1px solid var(--border2);
  background:#fff;
  color:var(--text1);
  cursor:pointer;
  transition:transform 0.15s ease,background 0.15s ease,border-color 0.15s ease
}
.season-sel:hover,.btn:hover{background:var(--bg2);border-color:var(--border3)}
.btn:active{transform:translateY(1px)}
.btn:disabled{opacity:0.65;cursor:wait}
.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue)}
.btn-primary:hover{background:var(--blue-dark);border-color:var(--blue-dark)}
.btn-ghost{background:transparent}

.main-layout{display:grid;grid-template-columns:280px 1fr;min-height:calc(100vh - 71px)}
.sidebar{
  background:rgba(255,255,255,0.82);
  border-right:1px solid var(--border1);
  display:flex;
  flex-direction:column;
  overflow:hidden;
  backdrop-filter:blur(10px)
}
.sidebar.hidden{display:none}
.main-layout.dashboard-mode{grid-template-columns:1fr}
.sb-head{padding:14px;border-bottom:1px solid var(--border1);background:rgba(244,239,231,0.75)}
.sb-search-wrap{position:relative}
.sb-search{
  width:100%;
  padding:11px 40px 11px 12px;
  border-radius:10px;
  border:1px solid var(--border2);
  background:#fff;
  color:var(--text1);
  font-size:13px;
  transition:border-color 0.15s ease,box-shadow 0.15s ease
}
.sb-search:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(24,95,165,0.08)}
.search-clear{
  position:absolute;
  right:10px;
  top:50%;
  transform:translateY(-50%);
  width:24px;
  height:24px;
  border-radius:50%;
  color:var(--text3);
  cursor:pointer
}
.search-clear:hover{background:var(--bg2);color:var(--text1)}
.sb-meta{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:11px;color:var(--text3)}
.sb-filters{display:flex;gap:6px;padding:10px 12px;border-bottom:1px solid var(--border1);flex-wrap:wrap}
.ftag{
  font-size:11px;
  font-weight:600;
  padding:5px 10px;
  border-radius:999px;
  border:1px solid var(--border2);
  cursor:pointer;
  background:#fff;
  color:var(--text2);
  transition:all 0.12s ease
}
.ftag:hover{background:var(--bg2)}
.ftag.on{background:var(--text1);color:#fff;border-color:var(--text1)}
.player-list{flex:1;overflow-y:auto;padding:6px 0}
.pli{
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 14px;
  cursor:pointer;
  border-bottom:1px solid var(--border1);
  transition:background 0.12s ease,border-color 0.12s ease;
  border-left:3px solid transparent
}
.pli:hover{background:var(--bg2)}
.pli.on{background:var(--blue-light);border-left-color:var(--blue)}
.pli-av{
  width:38px;
  height:38px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:11px;
  font-weight:700;
  flex-shrink:0;
  overflow:hidden;
  border:2px solid rgba(255,255,255,0.72)
}
.pli-av img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.pli-info{flex:1;min-width:0}
.pli-name{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pli-sub{font-size:10px;color:var(--text3);margin-top:2px}

.main-content{overflow-y:auto;padding:22px}
.empty-state{
  background:linear-gradient(180deg, rgba(255,255,255,0.92), rgba(255,255,255,0.82));
  border:1px solid var(--border1);
  border-radius:var(--radius-xl);
  padding:4.5rem 2rem;
  text-align:center;
  color:var(--text2);
  box-shadow:var(--shadow)
}
.empty-state p{font-size:14px;max-width:420px;margin:0 auto;line-height:1.6}

.dashboard-shell,
.category-shell{display:grid;gap:16px}
.dashboard-hero,
.category-hero{
  background:linear-gradient(135deg,#0f365f 0%,#009640 58%,#4d9be0 100%);
  color:#fff;
  border-radius:18px;
  padding:24px;
  display:grid;
  grid-template-columns:1.3fr 1fr;
  gap:18px;
  box-shadow:var(--shadow)
}
.dashboard-hero h1,
.category-hero h1{font-size:30px;letter-spacing:-0.6px;margin-bottom:8px}
.dashboard-hero p,
.category-hero p{max-width:680px;color:rgba(255,255,255,0.8);line-height:1.55}
.dashboard-stats{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  align-self:start
}
.dash-stat{
  background:rgba(255,255,255,0.1);
  border:1px solid rgba(255,255,255,0.16);
  border-radius:14px;
  padding:14px
}
.dash-stat span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:0.45px;color:rgba(255,255,255,0.7);font-weight:700}
.dash-stat strong{display:block;font-size:24px;margin-top:6px;font-family:'DM Mono',monospace}

.dashboard-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px
}
.dashboard-card{
  background:rgba(255,255,255,0.92);
  border:1px solid var(--border1);
  border-radius:18px;
  padding:18px;
  box-shadow:var(--shadow);
  animation:riseIn 0.24s ease
}
.dashboard-card.span-2{grid-column:span 2}

/* Nouveau layout 3 colonnes pour le dashboard principal */
.dashboard-main-grid{
  display:grid;
  grid-template-columns:1fr 1.5fr 1.5fr;
  grid-template-rows:auto auto;
  gap:14px
}
.dash-card-info{grid-row:1 / 3}

/* Hero identity */
.dash-hero-main{display:flex;flex-direction:column;gap:10px}
.dash-identity-badge{
  display:inline-flex;
  align-items:center;
  font-size:11px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.5px;
  padding:5px 12px;
  border-radius:999px;
  width:fit-content
}

/* Sync badge */
.sync-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:11px;
  font-weight:700;
  padding:5px 11px;
  border-radius:999px;
  border:1px solid;
  width:fit-content
}
.sync-badge::before{
  content:'';
  width:6px;
  height:6px;
  border-radius:50%;
  background:currentColor;
  opacity:0.85
}
.sync-ok{color:var(--green-dark);background:var(--green-light);border-color:rgba(99,153,34,0.25)}
.sync-local{color:var(--text2);background:var(--bg2);border-color:var(--border2)}
.sync-warn{color:var(--amber-dark);background:var(--amber-light);border-color:rgba(186,117,23,0.25)}
.sync-refreshing{color:var(--blue-dark);background:var(--blue-light);border-color:rgba(24,95,165,0.25)}

/* États vides dans les cartes dashboard */
.dash-empty{
  padding:20px 16px;
  text-align:center;
  border:1px dashed var(--border2);
  border-radius:12px;
  background:var(--bg2)
}
.dash-empty-msg{font-size:13px;color:var(--text2);font-weight:600}
.dash-empty-hint{font-size:11px;color:var(--text3);margin-top:4px;line-height:1.5}

/* Standing row amélioré */
/* Bouton modifier sur les cartes */
.card-edit-btn{
  font-size:11px;
  font-weight:600;
  padding:6px 12px;
  border-radius:8px;
  border:1px solid var(--border2);
  background:#fff;
  color:var(--text2);
  cursor:pointer;
  white-space:nowrap;
  flex-shrink:0;
  transition:background 0.12s,color 0.12s
}
.card-edit-btn:hover{background:var(--bg2);color:var(--text1)}

/* Modale de saisie */
.modal-overlay{
  position:fixed;
  inset:0;
  background:rgba(15,20,30,0.5);
  backdrop-filter:blur(5px);
  z-index:200;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:20px;
  animation:fadeIn 0.15s ease
}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal-box{
  background:#fff;
  border-radius:18px;
  padding:24px;
  width:100%;
  max-width:600px;
  box-shadow:0 24px 60px rgba(0,0,0,0.22);
  animation:riseIn 0.2s ease
}
.modal-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin-bottom:14px
}
.modal-head h3{font-size:20px;letter-spacing:-0.4px;margin-top:4px}
.modal-close{
  font-size:22px;
  line-height:1;
  color:var(--text3);
  cursor:pointer;
  width:32px;
  height:32px;
  border-radius:8px;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0
}
.modal-close:hover{background:var(--bg2);color:var(--text1)}
.modal-hint{
  font-size:11px;
  color:var(--text3);
  background:var(--bg2);
  border:1px solid var(--border1);
  border-radius:8px;
  padding:8px 12px;
  margin-bottom:12px;
  line-height:1.6;
  word-break:break-all
}
.modal-hint code{font-family:'DM Mono',monospace;color:var(--blue-dark)}
.modal-textarea{
  width:100%;
  font-family:'DM Mono',monospace;
  font-size:12px;
  line-height:1.65;
  border:1px solid var(--border2);
  border-radius:10px;
  padding:12px;
  resize:vertical;
  color:var(--text1);
  background:var(--bg);
  display:block
}
.modal-textarea:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px rgba(24,95,165,0.1)}
.modal-footer{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:14px
}
.btn-ghost{
  font-size:13px;
  font-weight:600;
  padding:9px 16px;
  border-radius:10px;
  border:1px solid var(--border2);
  background:#fff;
  color:var(--text2);
  cursor:pointer
}
.btn-ghost:hover{background:var(--bg2)}
.btn-danger{color:var(--red-dark);border-color:rgba(216,90,48,0.3)}
.btn-danger:hover{background:var(--red-light)}
.btn-primary{
  font-size:13px;
  font-weight:600;
  padding:9px 16px;
  border-radius:10px;
  border:none;
  background:var(--blue);
  color:#fff;
  cursor:pointer
}
.btn-primary:hover{background:var(--blue-dark)}

.standing-info{flex:1;min-width:0}
.standing-pts{
  font-size:12px;
  font-weight:700;
  font-family:'DM Mono',monospace;
  white-space:nowrap;
  color:var(--blue-dark);
  background:var(--blue-light);
  padding:4px 9px;
  border-radius:999px
}

/* ── Classements groupés par championnat ──────────────────────────── */
.standings-group{margin-bottom:10px;border-radius:8px;overflow:hidden;border:1px solid var(--border1)}
.standings-group:last-child{margin-bottom:0}
.standings-group[open] .standings-comp-chevron{transform:rotate(180deg)}
.standings-comp-header{
  display:flex;
  align-items:center;
  gap:8px;
  padding:8px 12px;
  border-left:3px solid var(--comp-border,#007a34);
  background:var(--comp-bg,#E8F5E9);
  cursor:pointer;
  list-style:none;
  user-select:none
}
.standings-comp-header::-webkit-details-marker{display:none}
.standings-comp-header[data-level="district"]{
  --comp-bg:#E8F5E9;--comp-border:#007a34;--comp-text:#006e2f;--comp-badge-bg:#007a34
}
.standings-comp-header[data-level="ligue"]{
  --comp-bg:#E3F2FD;--comp-border:#1565C0;--comp-text:#0D47A1;--comp-badge-bg:#1565C0
}
.standings-comp-header[data-level="national"]{
  --comp-bg:#FCE4EC;--comp-border:#C2185B;--comp-text:#880E4F;--comp-badge-bg:#C2185B
}
.standings-comp-badge{
  font-size:9px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.6px;
  color:#fff;
  background:var(--comp-badge-bg,#007a34);
  padding:2px 7px;
  border-radius:999px;
  white-space:nowrap;
  flex-shrink:0
}
.standings-comp-name{
  font-size:11px;
  font-weight:600;
  color:var(--comp-text,#006e2f);
  flex:1;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap
}
.standings-comp-chevron{
  font-size:12px;
  color:var(--comp-text,#006e2f);
  transition:transform 0.2s ease;
  flex-shrink:0
}
.standings-table-wrap{overflow-x:auto}
.standings-table{
  width:100%;
  border-collapse:collapse;
  font-size:12px
}
.standings-table thead tr{background:var(--bg2)}
.standings-table th{
  padding:6px 8px;
  font-size:10px;
  font-weight:700;
  color:var(--text3);
  text-transform:uppercase;
  letter-spacing:0.4px;
  text-align:center;
  border-bottom:1px solid var(--border1);
  white-space:nowrap
}
.standings-table th.st-team{text-align:left}
.standings-table td{
  padding:8px 8px;
  text-align:center;
  border-bottom:1px solid var(--border1);
  color:var(--text1);
  white-space:nowrap
}
.standings-table tbody tr:last-child td{border-bottom:none}
.standings-table td.st-team{text-align:left;font-weight:600;min-width:120px}
.standings-table td.st-rank{
  font-weight:700;
  color:var(--text2);
  width:28px
}
.standings-table td.st-pts{
  font-weight:700;
  color:var(--blue-dark);
  background:var(--blue-light);
  border-radius:0
}
.standings-table td.st-dif{
  font-size:11px;
  color:var(--text2)
}
.standings-table tbody tr.standings-row--ours{background:rgba(15,110,86,0.06)}
.standings-table tbody tr.standings-row--ours td.st-team{color:#0F6E56;font-weight:700}
.standings-table tbody tr.standings-row--ours td.st-rank{color:#0F6E56}
.standings-table tbody tr.standings-row--ours td.st-pts{
  color:#0F6E56;
  background:rgba(15,110,86,0.12)
}

.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:14px}
.card-head h2{font-size:20px;letter-spacing:-0.4px}
.fixture-list,
.standings-list,
.info-list,
.team-list{display:grid;gap:8px}
.standing-row,
.info-item,
.team-item{
  background:#fff;
  border:1px solid var(--border1);
  border-radius:12px;
  padding:12px
}
.info-item strong{font-size:13px}

/* ── Carte match ──────────────────────────────────────────────────── */
.fixture-item{
  background:#fff;
  border:1px solid var(--border1);
  border-radius:12px;
  padding:10px 12px;
  display:flex;
  flex-direction:column;
  gap:6px
}
.fixture-item.fixture-win{border-left:3px solid #007a34}
.fixture-item.fixture-draw{border-left:3px solid #888}
.fixture-item.fixture-loss{border-left:3px solid #C62828}
.fixture-meta{
  display:flex;
  align-items:center;
  gap:6px
}
.fixture-date{
  font-size:11px;
  color:var(--text3);
  flex:1
}
.fixture-loc{
  font-size:9px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.5px;
  padding:2px 6px;
  border-radius:999px
}
.fixture-loc--home{background:#E8F5E9;color:#006e2f}
.fixture-loc--away{background:#E3F2FD;color:#0D47A1}
.fixture-team-badge{
  font-size:9px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.5px;
  padding:2px 7px;
  border-radius:999px;
  background:#0F6E56;
  color:#fff;
  flex-shrink:0
}
.fixture-result-badge{
  font-size:9px;
  font-weight:700;
  padding:2px 7px;
  border-radius:999px
}
.fixture-result-win{background:#E8F5E9;color:#006e2f}
.fixture-result-draw{background:#F5F5F5;color:#555}
.fixture-result-loss{background:#FFEBEE;color:#C62828}
.fixture-teams{
  display:flex;
  align-items:center;
  gap:8px
}
.fixture-team{
  flex:1;
  font-size:12px;
  font-weight:600;
  color:var(--text2);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap
}
.fixture-team:last-child{text-align:right}
.fixture-team--ours{color:#0F6E56;font-weight:700}
.fixture-score{
  font-family:'DM Mono',monospace;
  font-size:13px;
  font-weight:700;
  color:var(--text1);
  white-space:nowrap;
  padding:3px 10px;
  background:var(--bg2);
  border-radius:6px;
  border:1px solid var(--border1);
  flex-shrink:0
}
.fixture-item.fixture-win .fixture-score{background:#E8F5E9;color:#006e2f;border-color:#A5D6A7}
.fixture-item.fixture-draw .fixture-score{background:#F5F5F5;color:#555;border-color:#ddd}
.fixture-item.fixture-loss .fixture-score{background:#FFEBEE;color:#C62828;border-color:#FFCDD2}
.fixture-comp{
  font-size:10px;
  color:var(--text3)
}
.standing-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px
}
.standing-rank{
  font-size:12px;
  padding:7px 10px;
  border-radius:999px;
  background:var(--bg2);
  color:var(--text2);
  border:1px solid var(--border1);
  white-space:nowrap
}
.category-cards{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px
}
.category-card{
  border:1px solid var(--border1);
  border-radius:16px;
  padding:16px;
  background:linear-gradient(180deg,#ffffff,#f7f3ec);
  cursor:pointer;
  transition:transform 0.15s ease,border-color 0.15s ease,box-shadow 0.15s ease;
  text-align:left
}
.category-card:hover{
  transform:translateY(-2px);
  border-color:var(--border3);
  box-shadow:0 10px 18px rgba(26,31,36,0.08)
}
.category-card-top{
  display:flex;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px;
  align-items:center
}
.category-card-top strong{font-size:18px}
.category-card-top span{font-size:11px;color:var(--text3);text-transform:uppercase;letter-spacing:0.35px}
.category-card-body{display:grid;gap:6px;font-size:13px;color:var(--text2)}
.category-toolbar{display:flex;justify-content:flex-start}

.profile-card{
  background:rgba(255,255,255,0.9);
  border-radius:var(--radius-xl);
  border:1px solid var(--border1);
  overflow:hidden;
  box-shadow:var(--shadow)
}
.profile-hero{
  position:relative;
  padding:26px 24px 20px;
  background:
    radial-gradient(circle at top right, rgba(255,255,255,0.16), transparent 35%),
    linear-gradient(135deg,#0a3a6e 0%,#009640 55%,#2e80d4 100%);
  color:#fff;
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:18px;
  align-items:start
}
.hero-photo-wrap{position:relative}
.hero-photo{
  width:92px;
  height:92px;
  border-radius:18px;
  border:3px solid rgba(255,255,255,0.32);
  overflow:hidden;
  background:rgba(255,255,255,0.12);
  display:flex;
  align-items:center;
  justify-content:center
}
.hero-photo img{width:100%;height:100%;object-fit:cover}
.hero-photo-hint{font-size:11px;color:rgba(255,255,255,0.72);text-align:center;padding:8px;line-height:1.4}
.hero-photo-badge{
  position:absolute;
  right:-6px;
  bottom:-6px;
  width:28px;
  height:28px;
  border-radius:50%;
  background:#fff;
  color:var(--blue-dark);
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 4px 12px rgba(0,0,0,0.22);
  cursor:pointer
}
.hero-body{min-width:0}
.hero-name{font-size:28px;font-weight:700;letter-spacing:-0.6px;margin-bottom:8px}
.hero-topline{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}
.hero-actions{display:flex;gap:8px;flex-wrap:wrap}
.hero-actions .btn{background:rgba(255,255,255,0.12);color:#fff;border-color:rgba(255,255,255,0.24)}
.hero-actions .btn:hover{background:rgba(255,255,255,0.2)}
.hero-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.hero-tag{
  font-size:11px;
  font-weight:600;
  background:rgba(255,255,255,0.18);
  padding:4px 10px;
  border-radius:999px;
  backdrop-filter:blur(4px)
}
.hero-postes{display:flex;gap:8px;flex-wrap:wrap}
.poste-main,.poste-sec{
  font-size:12px;
  padding:6px 14px;
  border-radius:999px
}
.poste-main{font-weight:700;background:rgba(255,255,255,0.92);color:var(--blue-dark)}
.poste-sec{font-weight:500;border:1.5px solid rgba(255,255,255,0.45);color:#fff}
.hero-summary{
  display:grid;
  grid-template-columns:repeat(3,minmax(120px,1fr));
  gap:8px;
  margin-top:14px
}
.hero-summary-card{
  background:rgba(255,255,255,0.1);
  border:1px solid rgba(255,255,255,0.15);
  border-radius:12px;
  padding:10px 12px;
  animation:riseIn 0.26s ease
}
.hero-summary-card strong{display:block;font-size:13px}
.hero-summary-card span{font-size:10px;color:rgba(255,255,255,0.72);text-transform:uppercase;letter-spacing:0.4px}
.hero-radar{align-self:center}

.stats-row{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:10px;
  padding:16px 24px;
  background:var(--bg2);
  border-bottom:1px solid var(--border1)
}
.stats-row.compare-on{grid-template-columns:repeat(6,1fr)}
.stat-card{
  background:#fff;
  border:1px solid var(--border1);
  border-radius:12px;
  padding:14px 16px;
  text-align:center;
  box-shadow:0 1px 2px rgba(0,0,0,0.04);
  animation:riseIn 0.28s ease
}
.stat-val{font-size:22px;font-weight:600;line-height:1;font-family:'DM Mono',monospace;transition:transform 0.18s ease,color 0.18s ease}
.stat-card:hover .stat-val{transform:translateY(-1px)}
.stat-label{font-size:10px;color:var(--text3);margin-top:6px;font-weight:600;text-transform:uppercase;letter-spacing:0.4px}
.compare-card{border-color:rgba(92,104,124,0.18);background:linear-gradient(180deg,#ffffff,#f6f8fb)}

.section-tabs{
  display:flex;
  align-items:center;
  padding:0 24px;
  border-bottom:1px solid var(--border1);
  background:#fff;
  gap:4px;
  flex-wrap:wrap
}
.stab{
  font-size:13px;
  font-weight:600;
  padding:13px 18px;
  cursor:pointer;
  color:var(--text2);
  border-bottom:2px solid transparent;
  transition:all 0.15s ease
}
.stab:hover{color:var(--text1)}
.stab.on{color:var(--blue);border-bottom-color:var(--blue)}
.toolbar{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:16px 24px 0;
  flex-wrap:wrap
}
.toolbar-top{padding-bottom:8px}
.toolbar-right{display:flex;gap:8px;flex-wrap:wrap}
.toolbar-mini{align-items:center}
.toolbar .compare-select{min-width:220px}
.sec-body{padding:24px}
.view-switcher{display:flex;gap:6px;flex-wrap:wrap}
.view-chip{
  padding:8px 14px;
  border:1px solid var(--border2);
  border-radius:999px;
  background:#fff;
  color:var(--text2);
  cursor:pointer;
  font-size:12px;
  font-weight:600;
  transition:all 0.15s ease
}
.view-chip:hover{background:var(--bg2)}
.view-chip.on{background:var(--text1);border-color:var(--text1);color:#fff}
.mini-chip{
  padding:6px 10px;
  border-radius:999px;
  background:var(--bg2);
  border:1px solid var(--border1);
  font-size:11px;
  color:var(--text2);
  font-weight:600
}

.form-section-title{
  font-size:11px;
  font-weight:700;
  color:var(--text3);
  text-transform:uppercase;
  letter-spacing:0.65px;
  margin:22px 0 12px;
  padding-top:16px;
  border-top:1px solid var(--border1)
}
.form-section-title:first-child{margin-top:0;padding-top:0;border-top:none}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.field-group{display:flex;flex-direction:column;gap:5px}
.field-group.full{grid-column:1/-1}
.field-label{font-size:11px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:0.4px}
.field-input,.compare-select{
  width:100%;
  font-size:13px;
  padding:10px 12px;
  border-radius:10px;
  border:1px solid var(--border2);
  background:var(--bg2);
  color:var(--text1);
  transition:all 0.15s ease
}
.field-input:hover,.compare-select:hover{border-color:var(--border3)}
.field-input:focus,.compare-select:focus{border-color:var(--blue);background:#fff;box-shadow:0 0 0 4px rgba(24,95,165,0.08)}
.foot-row{display:flex;gap:8px;flex-wrap:wrap}
.foot-btn{
  flex:1;
  min-width:110px;
  padding:11px 8px;
  border-radius:10px;
  border:1.5px solid var(--border2);
  background:var(--bg2);
  cursor:pointer;
  font-size:12px;
  font-weight:600;
  color:var(--text2);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:6px;
  transition:all 0.15s ease
}
.foot-btn:hover{background:#fff;border-color:var(--border3)}
.foot-btn.on{border-color:var(--blue);background:var(--blue-light);color:var(--blue-dark)}
.foot-icon{font-size:20px}

.detail-grid,
.quick-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  margin-bottom:18px
}
.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.detail-card,
.quick-card{
  background:linear-gradient(180deg,#ffffff 0%,#faf7f1 100%);
  border:1px solid var(--border1);
  border-radius:16px;
  padding:16px 18px;
  box-shadow:0 8px 20px rgba(26,31,36,0.05);
  animation:riseIn 0.24s ease
}
.detail-card.span-2{grid-column:span 2}
.card-kicker{
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:0.6px;
  color:var(--text3);
  font-weight:700;
  margin-bottom:8px
}
.detail-card h3,
.quick-card h3{font-size:18px;letter-spacing:-0.3px;margin-bottom:12px}
.coach-insights{display:flex;flex-direction:column;gap:8px}
.insight-pill{
  padding:10px 12px;
  border-radius:12px;
  font-size:13px;
  line-height:1.45;
  border:1px solid var(--border1)
}
.insight-pill.alert{background:var(--red-light);border-color:rgba(216,90,48,0.22);color:var(--red-dark)}
.insight-pill.warn{background:var(--amber-light);border-color:rgba(186,117,23,0.22);color:var(--amber-dark)}
.insight-pill.good{background:var(--green-light);border-color:rgba(99,153,34,0.24);color:var(--green-dark)}
.insight-pill.neutral{background:var(--blue-light);border-color:rgba(24,95,165,0.18);color:var(--blue-dark)}
.quick-statline{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin-bottom:12px
}
.quick-statline div{
  background:#fff;
  border:1px solid var(--border1);
  border-radius:12px;
  padding:12px
}
.quick-statline span,
.summary-line span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:0.45px;color:var(--text3);font-weight:700}
.quick-statline strong{display:block;font-size:22px;font-family:'DM Mono',monospace;margin-top:5px}
.quick-summary{display:grid;gap:10px}
.summary-line{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  background:rgba(255,255,255,0.8);
  border:1px solid var(--border1);
  border-radius:10px;
  padding:10px 12px;
  font-size:13px
}
.summary-line strong{font-size:13px}
.priority-box{
  border:1px solid var(--border1);
  background:#fff;
  border-radius:14px;
  padding:14px
}
.priority-box strong{display:block;font-size:22px;letter-spacing:-0.4px;margin-bottom:8px}
.priority-box p{font-size:13px;color:var(--text2);line-height:1.5}
.priority-secondary{margin-top:10px;font-size:12px;color:var(--text3)}
.timeline-list{display:grid;gap:8px;margin-bottom:12px}
.timeline-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:10px 12px;
  border-radius:10px;
  background:#fff;
  border:1px solid var(--border1);
  font-size:13px
}
.timeline-row strong{font-family:'DM Mono',monospace}
.history-chart-wrap{
  height:170px;
  background:#fff;
  border:1px solid var(--border1);
  border-radius:14px;
  padding:10px
}

.insight-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  margin-top:14px
}
.insight-card{
  background:var(--bg2);
  border:1px solid var(--border1);
  border-radius:14px;
  padding:14px 16px
}
.insight-card h4{font-size:12px;margin-bottom:10px}
.insight-text{font-size:13px;color:var(--text2);line-height:1.55}
.gap-list{display:grid;gap:8px}
.gap-row{display:grid;grid-template-columns:100px 1fr auto;gap:8px;align-items:center}
.gap-row span,.gap-row strong{font-size:12px}
.gap-bar{height:8px;background:#fff;border-radius:999px;overflow:hidden;border:1px solid var(--border1)}
.gap-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--amber),var(--green))}
.gap-help{font-size:11px;color:var(--text3);margin-top:8px}

.obj-list{display:flex;flex-direction:column;gap:7px}
.obj-row{display:flex;gap:8px;align-items:center}
.obj-input{
  flex:1;
  font-size:13px;
  padding:10px 12px;
  border-radius:10px;
  border:1px solid var(--border2);
  background:var(--bg2);
  color:var(--text1)
}
.obj-del{
  width:30px;
  height:30px;
  border-radius:50%;
  border:1px solid var(--border2);
  background:transparent;
  cursor:pointer;
  color:var(--text3);
  font-size:16px;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  transition:all 0.12s ease
}
.obj-del:hover{background:var(--red-light);border-color:var(--red);color:var(--red-dark)}
.add-obj{
  width:100%;
  font-size:12px;
  font-weight:600;
  padding:9px;
  border-radius:10px;
  border:1.5px dashed var(--border2);
  background:transparent;
  color:var(--text3);
  cursor:pointer;
  margin-top:4px;
  transition:all 0.12s ease
}
.add-obj:hover{background:var(--bg2);color:var(--text2)}
.form-footer,.save-row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-top:20px;
  padding-top:16px;
  border-top:1px solid var(--border1);
  flex-wrap:wrap
}
.save-hint{font-size:12px;color:var(--text2);font-weight:600}
.save-hint.saved{color:var(--green)}

.jg-cards{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.jg-score-card{
  flex:1;
  min-width:220px;
  background:var(--bg2);
  border:1px solid var(--border1);
  border-radius:14px;
  padding:18px 20px
}
.jg-season-label{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:8px}
.jg-big-score{font-size:42px;font-weight:700;font-family:'DM Mono',monospace;line-height:1}
.jg-of{font-size:12px;color:var(--text3);margin-top:4px}
.jg-bar-bg{height:8px;border-radius:999px;background:var(--border1);margin:14px 0 10px;overflow:hidden}
.jg-bar-fill{height:100%;border-radius:999px;transition:width 0.5s ease}
.jg-status{display:inline-flex;font-size:11px;font-weight:700;padding:5px 12px;border-radius:999px}
.jg-absent{
  padding:2.6rem;
  text-align:center;
  color:var(--text2);
  font-size:13px;
  background:var(--bg2);
  border-radius:14px;
  border:1.5px dashed var(--border2)
}
.jg-hist-card{background:var(--bg2);border:1px solid var(--border1);border-radius:14px;padding:16px 20px;margin-top:4px}
.jg-hist-title{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:12px}
.hist-row{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.hist-s{font-size:11px;color:var(--text2);min-width:86px;font-family:'DM Mono',monospace}
.hist-bg{flex:1;height:6px;background:rgba(0,0,0,0.08);border-radius:999px;overflow:hidden}
.hist-fill{height:100%;border-radius:999px}
.hist-v{font-size:11px;font-family:'DM Mono',monospace;font-weight:500;min-width:24px;text-align:right}

.pillar-nav{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.ptab{
  font-size:12px;
  font-weight:600;
  padding:7px 14px;
  border-radius:999px;
  border:1.5px solid var(--border2);
  background:var(--bg2);
  cursor:pointer;
  color:var(--text2);
  transition:all 0.15s ease
}
.ptab:hover{background:#fff}
.ptab.on{color:#fff;border-color:transparent;box-shadow:0 2px 8px rgba(0,0,0,0.16)}
.legend-bar{
  display:flex;
  gap:16px;
  flex-wrap:wrap;
  margin-bottom:14px;
  padding:12px 14px;
  background:var(--bg2);
  border-radius:10px;
  border:1px solid var(--border1)
}
.litem{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text2)}
.ldot{width:12px;height:12px;border-radius:50%}
.crit-list{border:1px solid var(--border1);border-radius:12px;overflow:hidden}
.crit-row{border-bottom:1px solid var(--border1);padding:13px 16px;transition:background 0.1s ease}
.crit-row:last-child{border-bottom:none}
.crit-row:nth-child(even){background:var(--bg2)}
.crit-row:hover{background:rgba(24,95,165,0.03)}
.crit-top{display:flex;align-items:center;gap:12px}
.crit-name{font-size:13px;font-weight:600;flex:1;color:var(--text1)}
.dots{display:flex;gap:5px;flex-wrap:wrap}
.dot{
  width:28px;
  height:28px;
  border-radius:50%;
  border:1.5px solid var(--border2);
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:10px;
  font-weight:700;
  color:var(--text3);
  background:#fff;
  transition:all 0.12s ease
}
.dot:hover{transform:scale(1.08);box-shadow:0 2px 6px rgba(0,0,0,0.12)}
.dot.on-1{background:#faece7;border-color:#d85a30;color:#712b13;animation:popIn 0.18s ease}
.dot.on-2{background:#faeeda;border-color:#ba7517;color:#633806;animation:popIn 0.18s ease}
.dot.on-3{background:#eaf3de;border-color:#639922;color:#27500a;animation:popIn 0.18s ease}
.dot.on-4{background:#f0fdf4;border-color:#009640;color:#006e2f;animation:popIn 0.18s ease}
.crit-note{font-size:10px;color:var(--text3);margin-top:4px;font-style:italic}
.crit-comment,.fc-block textarea{
  width:100%;
  margin-top:8px;
  padding:8px 10px;
  border-radius:9px;
  border:1px solid var(--border2);
  background:#fff;
  color:var(--text1);
  font-size:12px;
  resize:vertical;
  line-height:1.5;
  transition:all 0.15s ease
}
.crit-comment:focus,.fc-block textarea:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(24,95,165,0.08)}
.eval-footer{margin-top:20px;padding-top:16px;border-top:1px solid var(--border1)}
.footer-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
.fc-block label{display:block;font-size:10px;font-weight:700;color:var(--text3);margin-bottom:5px;text-transform:uppercase;letter-spacing:0.4px}
.fc-block textarea{background:var(--bg2);min-height:84px}

.toast{
  position:fixed;
  right:18px;
  bottom:18px;
  z-index:200;
  background:#181814;
  color:#fff;
  padding:11px 14px;
  border-radius:12px;
  font-size:12px;
  font-weight:600;
  box-shadow:0 12px 30px rgba(0,0,0,0.22);
  opacity:0;
  transform:translateY(10px);
  pointer-events:none;
  transition:opacity 0.2s ease,transform 0.2s ease
}
.toast.show{opacity:1;transform:translateY(0)}

@keyframes riseIn{
  from{opacity:0;transform:translateY(6px)}
  to{opacity:1;transform:translateY(0)}
}

@keyframes popIn{
  0%{transform:scale(0.88)}
  60%{transform:scale(1.08)}
  100%{transform:scale(1)}
}

::-webkit-scrollbar{width:7px;height:7px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:999px}

@media (max-width: 1100px){
  .dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-main-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto}
  .dash-card-info{grid-row:auto}
  .category-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-hero,.category-hero{grid-template-columns:1fr}
  .profile-hero{grid-template-columns:auto 1fr}
  .hero-radar{grid-column:1/-1;justify-self:start}
  .stats-row{grid-template-columns:repeat(3,1fr)}
  .stats-row.compare-on{grid-template-columns:repeat(3,1fr)}
}

@media (max-width: 860px){
  .main-layout{grid-template-columns:1fr}
  .sidebar{border-right:none;border-bottom:1px solid var(--border1);max-height:none}
  .main-content{padding:16px}
  .form-grid,.footer-grid,.insight-grid,.hero-summary,.detail-grid,.quick-grid,.quick-statline{grid-template-columns:1fr}
  .dashboard-grid,.dashboard-main-grid,.category-cards,.dashboard-stats{grid-template-columns:1fr}
  .dash-card-info{grid-row:auto}
  .stats-row{grid-template-columns:repeat(2,1fr);padding:14px 16px}
  .stats-row.compare-on{grid-template-columns:repeat(2,1fr)}
  .section-tabs,.toolbar,.sec-body{padding-left:16px;padding-right:16px}
  .detail-card.span-2{grid-column:auto}
}

@media (max-width: 640px){
  .topnav{padding:12px;align-items:flex-start;flex-wrap:wrap}
  .nav-right{margin-left:0;width:100%}
  .profile-hero{padding:20px 16px;grid-template-columns:1fr}
  .hero-photo-wrap{justify-self:start}
  .hero-topline{flex-direction:column;align-items:flex-start}
  .toolbar-right{width:100%}
  .toolbar .compare-select{min-width:0;flex:1}
  .stats-row{grid-template-columns:1fr}
  .stats-row.compare-on{grid-template-columns:1fr}
  .dashboard-card.span-2{grid-column:auto}
  .fixture-item{grid-template-columns:1fr;gap:8px}
  .foot-row{flex-direction:column}
  .quick-statline strong{font-size:18px}
}

@media print{
  body{background:#fff}
  .sidebar,.topnav,.pillar-nav,.legend-bar,.toolbar,.hero-actions,.hero-photo-badge,.toast{display:none!important}
  .main-layout{grid-template-columns:1fr!important}
  .main-content{overflow:visible!important;height:auto!important;padding:0!important}
  .profile-card{box-shadow:none;border:none}
  .stats-row{background:#fff}
}

/* ══════════════════════════════════════════════════════════
   MODULE : SÉANCES D'ÉVALUATION
   ══════════════════════════════════════════════════════════ */

.seance-module{display:grid;gap:18px}
.seance-intro p{font-size:12px;color:var(--text3);margin-top:4px;line-height:1.5}

.seance-slots{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px
}
@media(max-width:900px){.seance-slots{grid-template-columns:1fr}}

.seance-slot{
  background:#fff;
  border:1px solid var(--border1);
  border-radius:var(--radius-lg);
  padding:16px;
  box-shadow:var(--shadow)
}
.seance-slot--empty{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  gap:10px;
  min-height:130px;
  background:var(--bg2);
  border-style:dashed
}
.seance-slot-label{
  font-size:11px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.5px;
  color:var(--text2)
}
.seance-slot-hint{font-size:11px;color:var(--text3)}
.seance-slot--filled{}
.seance-slot-head{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:12px
}
.seance-slot-head>div:first-child{flex:1}
.seance-slot-date{font-size:11px;color:var(--text3);margin-top:2px}
.seance-slot-score{
  font-size:22px;
  font-weight:700;
  font-family:'DM Mono',monospace;
  flex-shrink:0
}

.seance-ateliers{display:grid;gap:5px}
.seance-atelier-row{
  display:flex;
  align-items:center;
  gap:6px;
  font-size:11px;
  padding:3px 0;
  border-bottom:1px solid var(--border1)
}
.seance-atelier-row:last-child{border-bottom:none}
.seance-atelier-name{flex:1;color:var(--text2)}
.seance-atelier-val{
  font-weight:600;
  font-family:'DM Mono',monospace;
  min-width:56px;
  text-align:right;
  font-size:11px
}
.seance-atelier-score{
  font-size:10px;
  color:var(--text3);
  min-width:30px;
  text-align:right
}
.seance-atelier-status{
  font-size:9px;
  font-weight:700;
  padding:1px 6px;
  border-radius:4px;
  white-space:nowrap
}

.perf-excellent{color:var(--green-dark);background:var(--green-light)}
.perf-bien{color:var(--amber-dark);background:var(--amber-light)}
.perf-travailler{color:var(--red-dark);background:var(--red-light)}

/* Formulaire séance */
.seance-slot--form{grid-column:1 / -1}
.seance-form-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:16px
}
.seance-form-footer{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:16px;
  padding-top:14px;
  border-top:1px solid var(--border1)
}

/* Graphiques séances */
.seance-charts-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px
}
@media(max-width:800px){.seance-charts-row{grid-template-columns:1fr}}

.chart-wrap-220{
  position:relative;
  height:220px
}
.chart-wrap-220 canvas{
  position:absolute;
  inset:0;
  width:100%!important;
  height:100%!important
}

/* Helpers form */
.field-unit{
  font-size:10px;
  color:var(--text3);
  font-weight:400;
  margin-left:4px
}
.field-hint{
  font-size:10px;
  color:var(--text3);
  margin-top:3px;
  line-height:1.45
}

/* ══════════════════════════════════════════════════════════
   MODULE : OBSERVATIONS MATCH
   ══════════════════════════════════════════════════════════ */

.obs-module{display:grid;gap:18px}
.obs-header{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap
}
.obs-header h3{margin-top:2px}

/* Formulaire observation */
.obs-form{
  background:#fff;
  border:1px solid var(--border2);
  border-radius:var(--radius-lg);
  padding:18px;
  box-shadow:var(--shadow);
  animation:riseIn 0.18s ease
}
.obs-form-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:16px
}
.obs-form-footer{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:16px;
  padding-top:14px;
  border-top:1px solid var(--border1)
}

/* Dimensions */
.obs-dims{display:grid;gap:8px}
.obs-dim-row{
  display:flex;
  align-items:center;
  gap:12px;
  padding:9px 10px;
  background:var(--bg2);
  border-radius:8px
}
.obs-dim-info{flex:1;min-width:0}
.obs-dim-info strong{
  display:block;
  font-size:12px;
  font-weight:700
}
.obs-dim-info span{
  font-size:10px;
  color:var(--text3);
  display:block;
  margin-top:1px
}
.obs-dim-btns{display:flex;gap:5px;flex-shrink:0}
.obs-dim-btn{
  width:34px;
  height:34px;
  border-radius:8px;
  border:1px solid var(--border2);
  background:#fff;
  font-size:14px;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:all 0.12s
}
.obs-dim-btn:hover{background:var(--bg2)}
.obs-dim-btn.on{font-weight:700}

/* Cartes observation */
.obs-timeline{display:grid;gap:10px}
.obs-card{
  background:#fff;
  border:1px solid var(--border1);
  border-radius:var(--radius-lg);
  padding:14px;
  box-shadow:var(--shadow);
  animation:riseIn 0.18s ease
}
.obs-card-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px
}
.obs-card-meta strong{
  display:block;
  font-size:13px;
  font-weight:700
}
.obs-card-meta span{
  font-size:11px;
  color:var(--text3)
}
.obs-dim-badges{display:flex;flex-wrap:wrap;gap:5px}
.obs-dim-badge{
  font-size:10px;
  font-weight:700;
  padding:3px 8px;
  border-radius:999px;
  border:1px solid
}
.obs-commentaire{
  font-size:11px;
  color:var(--text2);
  margin-top:8px;
  padding-top:8px;
  border-top:1px solid var(--border1);
  line-height:1.55
}
.obs-educator{
  font-size:10px;
  color:var(--text3);
  padding:3px 8px;
  background:var(--bg2);
  border:1px solid var(--border1);
  border-radius:999px;
  white-space:nowrap
}

/* Stats radar + synthèse */
.obs-stats-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px
}
@media(max-width:800px){.obs-stats-row{grid-template-columns:1fr}}

.obs-dim-summary{display:grid;gap:8px;margin-top:8px}
.obs-dim-summary-row{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:12px
}
.obs-dim-summary-row>span:first-child{
  min-width:90px;
  color:var(--text2)
}
.obs-dim-bar-bg{
  flex:1;
  height:6px;
  background:var(--bg3);
  border-radius:999px;
  overflow:hidden
}
.obs-dim-bar-fill{
  height:100%;
  border-radius:999px;
  transition:width 0.35s ease
}
.obs-meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-top:12px;
  font-size:11px;
  color:var(--text3)
}
.obs-trend{font-weight:700}

/* ══════════════════════════════════════════════════════════
   MODULE : BADGE ÉDUCATEUR
   ══════════════════════════════════════════════════════════ */

.educator-badge{
  display:flex;
  align-items:center;
  gap:6px;
  font-size:12px;
  font-weight:600;
  padding:7px 12px;
  border-radius:10px;
  border:1.5px solid var(--border2);
  background:#fff;
  color:var(--text2);
  cursor:pointer;
  transition:all 0.12s;
  white-space:nowrap
}
.educator-badge:hover{background:var(--bg2)}
.educator-dot{
  width:8px;
  height:8px;
  border-radius:50%;
  flex-shrink:0
}
.educator-color-btn{
  width:26px;
  height:26px;
  border-radius:50%;
  border:2.5px solid transparent;
  cursor:pointer;
  transition:all 0.12s
}
.educator-color-btn:hover{opacity:0.85}
.educator-color-btn.on{
  border-color:#fff;
  box-shadow:0 0 0 2px var(--text1)
}

/* ════════════════════════════════════════════════════════════
   Phase 1 additions
   ──────────────────────────────────────────────────────────── */

/* Menu actions secondaires (topnav ⋯) */
.more-menu{
  position:absolute;
  top:60px;
  right:20px;
  z-index:200;
  background:#fff;
  border:1px solid var(--border2);
  border-radius:12px;
  box-shadow:var(--shadow);
  padding:6px;
  min-width:200px;
  display:flex;
  flex-direction:column;
  gap:2px
}
.more-menu-item{
  text-align:left;
  font-size:13px;
  font-weight:500;
  padding:9px 12px;
  border-radius:8px;
  color:var(--text1);
  cursor:pointer;
  transition:background 0.12s ease
}
.more-menu-item:hover{background:var(--bg2)}

/* Bandeau « lecture coach » permanent */
.coach-banner{
  margin-top:14px;
  background:linear-gradient(180deg, rgba(255,255,255,0.95), rgba(252,250,246,0.85));
  border:1px solid var(--border1);
  border-radius:14px;
  padding:14px 16px;
  box-shadow:0 1px 6px rgba(0,0,0,0.04);
  display:flex;
  flex-direction:column;
  gap:10px
}
.coach-banner-stats{
  display:grid;
  grid-template-columns:repeat(7, minmax(0, 1fr));
  gap:10px
}
@media (max-width: 1100px){
  .coach-banner-stats{ grid-template-columns:repeat(4, minmax(0, 1fr)); }
}
.cb-stat{
  display:flex;
  flex-direction:column;
  padding:6px 10px;
  border-radius:10px;
  background:var(--bg2);
  min-width:0
}
.cb-stat span{
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:0.4px;
  color:var(--text3);
  font-weight:700
}
.cb-stat strong{
  font-size:15px;
  margin-top:2px;
  color:var(--text1);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap
}
.coach-banner-insights{
  display:flex;
  gap:8px;
  flex-wrap:wrap
}

/* Boutons d'action permanents dans le header de la sidebar */
.sb-actions{
  display:flex;
  gap:6px;
  margin-top:10px
}
.sb-action-btn{
  flex:1;
  font-size:11px;
  font-weight:600;
  padding:7px 10px;
  border-radius:8px;
  border:1px solid var(--blue);
  background:var(--blue);
  color:#fff;
  cursor:pointer;
  transition:all 0.12s ease;
  white-space:nowrap
}
.sb-action-btn:hover{ background:var(--blue-dark); border-color:var(--blue-dark) }
.sb-action-btn--ghost{
  background:#fff;
  color:var(--blue);
  border-color:var(--border2)
}
.sb-action-btn--ghost:hover{
  background:var(--blue-light);
  border-color:var(--blue);
  color:var(--blue-dark)
}

/* Filtres sidebar enrichis */
.sb-filters{ flex-direction:column; align-items:stretch; gap:8px }
.ftag-row{ display:flex; gap:6px; flex-wrap:wrap; align-items:center }
.ftag-label{ font-size:11px; color:var(--text3); font-weight:600; margin-right:4px }
.ftag-select{
  font-size:11px;
  padding:5px 8px;
  border-radius:999px;
  border:1px solid var(--border2);
  background:#fff;
  color:var(--text2);
  font-weight:600;
  flex:1;
  min-width:80px;
  cursor:pointer
}
.ftag-sm{ font-size:10px; padding:4px 8px }
.ftag-sort-row{ padding-top:6px; border-top:1px dashed var(--border1) }
.ftag-reset{
  margin-left:auto;
  width:26px;
  height:26px;
  padding:0;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center
}

/* Tableau joueurs catégorie */
.cat-table-card{ grid-column:1/-1 }
.cat-table-wrap{ overflow-x:auto; margin-top:6px }
.cat-table{
  width:100%;
  border-collapse:collapse;
  font-size:13px
}
.cat-table thead th{
  text-align:left;
  font-size:11px;
  font-weight:700;
  color:var(--text3);
  text-transform:uppercase;
  letter-spacing:0.5px;
  padding:10px 12px;
  border-bottom:1px solid var(--border1);
  background:var(--bg2);
  position:sticky;
  top:0
}
.th-sort{
  font:inherit;
  color:inherit;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:0
}
.th-sort:hover{ color:var(--text1) }
.sort-ico{ opacity:0.4; font-size:11px }
.sort-ico.on{ opacity:1; color:var(--blue) }
.cat-table tbody td{
  padding:10px 12px;
  border-bottom:1px solid var(--border1);
  vertical-align:middle
}
.cat-table-row{ cursor:pointer; transition:background 0.12s }
.cat-table-row:hover{ background:var(--blue-light) }
.cat-table-name{ display:flex; align-items:center; gap:10px; font-weight:600 }
.cat-table-av{
  width:30px;
  height:30px;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:11px;
  font-weight:700;
  overflow:hidden;
  flex-shrink:0
}
.cat-table-av img{ width:100%; height:100%; object-fit:cover; border-radius:50% }

/* Toolbar étendue catégorie */
.category-toolbar{ display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap }
.category-toolbar .toolbar-right{ display:flex; gap:8px; flex-wrap:wrap }

/* Modal — variantes pour les nouveaux flux */
.modal-box--xl{
  max-width:min(1100px, 95vw);
  width:100%;
  max-height:90vh;
  display:flex;
  flex-direction:column
}

/* Roster modal */
.roster-list{
  flex:1;
  overflow-y:auto;
  margin-top:8px;
  margin-bottom:12px;
  padding-right:6px
}
.roster-row{
  display:flex;
  align-items:center;
  gap:10px;
  padding:8px 10px;
  border:1px solid var(--border1);
  border-radius:10px;
  margin-bottom:6px;
  background:#fff;
  transition:background 0.12s
}
.roster-row:hover{ background:var(--bg2) }
.roster-row--edit{ background:var(--blue-light); border-color:var(--blue) }
.roster-name{ flex:1; font-weight:600; font-size:13px }
.roster-row .btn-danger{ color:var(--red) }

/* Post-match modal */
.postmatch-meta{
  display:grid;
  grid-template-columns:repeat(5, minmax(0,1fr));
  gap:10px;
  padding:8px 0 14px;
  border-bottom:1px solid var(--border1)
}
@media (max-width: 900px){ .postmatch-meta{ grid-template-columns:repeat(2, minmax(0,1fr)) } }

.postmatch-legend{
  display:flex;
  gap:6px;
  padding:10px 0 6px;
  flex-wrap:wrap
}
.postmatch-legend-item{
  font-size:11px;
  font-weight:600;
  padding:3px 8px;
  border-radius:999px;
  border:1px solid;
  background:#fff
}

.postmatch-lines-header{
  display:grid;
  grid-template-columns:50px 1fr 60px 220px 1fr;
  gap:10px;
  font-size:10px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.5px;
  color:var(--text3);
  padding:8px 4px;
  border-bottom:1px solid var(--border1)
}
.postmatch-lines-header .pm-col-dims{ display:flex; gap:8px; justify-content:space-between }

.postmatch-lines{
  flex:1;
  overflow-y:auto;
  margin-bottom:12px;
  padding-right:6px
}
.postmatch-line{
  display:grid;
  grid-template-columns:50px 1fr 60px 220px 1fr;
  gap:10px;
  align-items:center;
  padding:6px 4px;
  border-bottom:1px solid var(--border1);
  opacity:0.55;
  transition:opacity 0.12s
}
.postmatch-line.is-present{ opacity:1 }
.postmatch-presence{ display:flex; justify-content:center }
.postmatch-presence input[type=checkbox]{ width:18px; height:18px; cursor:pointer }
.postmatch-name{ font-weight:600; font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.postmatch-temps{
  width:54px;
  padding:5px 7px;
  border-radius:6px;
  border:1px solid var(--border2);
  font-size:12px;
  text-align:center
}
.postmatch-dims{ display:flex; gap:6px; justify-content:space-between }
.postmatch-dim-group{ display:flex; gap:2px }
.postmatch-dim-btn{
  width:22px;
  height:22px;
  border:1px solid var(--border2);
  background:#fff;
  color:var(--text2);
  border-radius:6px;
  font-size:12px;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:transform 0.1s
}
.postmatch-dim-btn:hover{ transform:scale(1.1) }
.postmatch-dim-btn.on{ font-weight:700 }
.postmatch-comment{
  padding:6px 10px;
  border-radius:8px;
  border:1px solid var(--border2);
  font-size:12px
}

@media (max-width: 900px){
  .postmatch-lines-header,
  .postmatch-line{
    grid-template-columns:auto 1fr auto;
    grid-template-areas:
      "presence name temps"
      "dims dims dims"
      "comment comment comment"
  }
  .postmatch-presence{ grid-area:presence }
  .postmatch-name{ grid-area:name }
  .postmatch-temps{ grid-area:temps }
  .postmatch-dims{ grid-area:dims }
  .postmatch-comment{ grid-area:comment }
  .postmatch-lines-header{ display:none }
}

/* Feeds form table */
.ff-table-wrap{ flex:1; overflow:auto; margin:10px 0 }
.ff-table{ width:100%; border-collapse:collapse; font-size:12px }
.ff-table thead th{
  text-align:left;
  font-size:10px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.5px;
  color:var(--text3);
  padding:8px 6px;
  background:var(--bg2);
  border-bottom:1px solid var(--border1);
  white-space:nowrap
}
.ff-table tbody td{
  padding:5px 6px;
  border-bottom:1px solid var(--border1);
  vertical-align:middle
}
.ff-rownum{
  width:30px;
  text-align:center;
  color:var(--text3);
  font-weight:600;
  font-size:11px
}
.ff-cell-input{
  width:100%;
  padding:6px 8px;
  border:1px solid var(--border2);
  border-radius:6px;
  font-size:12px;
  background:#fff
}
.ff-cell-input:focus{ border-color:var(--blue); outline:none }
.ff-empty{
  text-align:center;
  padding:24px 12px;
  color:var(--text3);
  font-size:13px
}
.ff-actions button.btn-danger{
  font-size:14px;
  width:24px;
  height:24px;
  padding:0;
  border-radius:50%
}

/* ════════════════════════════════════════════════════════════
   Phase 2.1 — Analyse match enrichie
   ──────────────────────────────────────────────────────────── */

/* Pill note de match */
.obs-note-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:12px;
  font-weight:700;
  padding:3px 9px;
  border-radius:999px;
  min-width:46px;
  text-align:center
}
.obs-poste-chip{
  font-size:11px;
  font-weight:600;
  padding:3px 9px;
  border-radius:999px;
  background:var(--bg2);
  color:var(--text2);
  border:1px solid var(--border2)
}

/* Statline sous la card observation */
.obs-statline{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  margin-top:8px;
  padding-top:8px;
  border-top:1px dashed var(--border1)
}
.stat-pill{
  font-size:11px;
  font-weight:700;
  padding:3px 9px;
  border-radius:8px;
  border:1px solid;
  font-family:'DM Mono', monospace
}
.stat-pill--off{
  background:var(--blue-light);
  color:var(--blue-dark);
  border-color:rgba(24,95,165,0.25)
}
.stat-pill--neutral{
  background:var(--bg2);
  color:var(--text2);
  border-color:var(--border2)
}
.stat-pill--yellow{
  background:#fff9d6;
  color:#7a5500;
  border-color:#e2c84d
}
.stat-pill--red{
  background:#fde4dd;
  color:var(--red-dark);
  border-color:var(--red)
}

/* Formulaire observation - section stats */
.stats-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:8px;
  padding:8px 10px;
  border:1px solid var(--border1);
  border-radius:10px;
  background:var(--bg2);
  margin-top:6px
}
.stats-grid .field-group{ margin:0 }
.stats-grid .field-input{ padding:5px 8px; font-size:13px }
.stats-grid .field-label{ font-size:10px; color:var(--text3) }
.stats-grid-label{
  grid-column:1 / -1;
  font-size:10px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.5px;
  color:var(--text3);
  padding-bottom:4px;
  border-bottom:1px dashed var(--border1);
  margin-bottom:4px
}
@media (max-width: 700px){
  .stats-grid{ grid-template-columns:repeat(2, minmax(0,1fr)) }
}

/* Récap saison */
.season-recap{ margin-top:14px }
.recap-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:10px;
  margin-top:10px
}
@media (max-width: 900px){ .recap-grid{ grid-template-columns:repeat(2, minmax(0,1fr)) } }
.recap-block{
  display:flex;
  flex-direction:column;
  background:var(--bg2);
  border:1px solid var(--border1);
  border-radius:10px;
  padding:10px 12px;
  min-width:0
}
.recap-label{
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:0.4px;
  color:var(--text3);
  font-weight:700
}
.recap-value{
  font-size:20px;
  font-family:'DM Mono', monospace;
  color:var(--text1);
  margin-top:2px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap
}
.recap-sub{
  font-size:10px;
  color:var(--text3);
  margin-top:2px
}

/* Timeline */
.timeline-card{ margin-top:14px }
.timeline-chart-wrap{
  position:relative;
  height:220px;
  margin-top:10px
}

/* Bilans croisés */
.obs-breakdowns{
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr;
  gap:14px;
  margin-top:14px
}
@media (max-width: 1100px){ .obs-breakdowns{ grid-template-columns:1fr } }

.breakdown-table-wrap{ overflow-x:auto; margin-top:8px }
.breakdown-table{ width:100%; border-collapse:collapse; font-size:12px }
.breakdown-table thead th{
  text-align:left;
  font-size:10px;
  font-weight:700;
  text-transform:uppercase;
  color:var(--text3);
  padding:6px 8px;
  border-bottom:1px solid var(--border1)
}
.breakdown-table tbody td{
  padding:6px 8px;
  border-bottom:1px solid var(--border1)
}
.breakdown-table tbody tr:hover{ background:var(--bg2) }

.bd-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin-top:8px
}
.bd-col{
  background:var(--bg2);
  border:1px solid var(--border1);
  border-radius:10px;
  padding:10px 12px
}
.bd-col-head{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:0.4px;
  color:var(--text2);
  font-weight:700;
  margin-bottom:6px;
  display:flex;
  justify-content:space-between;
  align-items:center
}
.bd-count{
  font-size:10px;
  color:var(--text3);
  font-weight:600;
  font-family:'DM Mono', monospace
}
.bd-row{
  display:flex;
  justify-content:space-between;
  font-size:12px;
  padding:3px 0;
  color:var(--text2)
}
.bd-row strong{ color:var(--text1); font-family:'DM Mono', monospace }
.bd-empty{
  font-size:11px;
  color:var(--text3);
  font-style:italic;
  padding:4px 0
}

/* Post-match : expansion + mini-résumé */
.postmatch-line{
  position:relative;
  grid-template-columns:50px 1fr 60px 220px 1fr 36px
}
.postmatch-lines-header{ grid-template-columns:50px 1fr 60px 220px 1fr 36px }
.postmatch-toggle{
  font-size:12px;
  font-weight:700;
  width:32px;
  height:28px;
  border-radius:8px;
  border:1px solid var(--border2);
  background:#fff;
  color:var(--text2);
  cursor:pointer;
  transition:all 0.12s
}
.postmatch-toggle:hover{ background:var(--bg2); color:var(--text1) }
.postmatch-toggle.on{
  background:var(--blue);
  color:#fff;
  border-color:var(--blue)
}
.postmatch-toggle.has-data{
  border-color:var(--blue);
  color:var(--blue)
}
.pm-mini-summary{
  display:inline-flex;
  gap:4px;
  margin-left:6px;
  vertical-align:middle
}
.pm-mini-note{
  font-size:10px;
  font-weight:700;
  padding:1px 5px;
  border-radius:6px;
  font-family:'DM Mono', monospace
}
.pm-mini-stat{
  font-size:10px;
  font-weight:700;
  padding:1px 5px;
  border-radius:6px;
  background:var(--blue-light);
  color:var(--blue-dark);
  font-family:'DM Mono', monospace
}

.postmatch-expansion{
  grid-column:1 / -1;
  margin-top:8px;
  padding:10px 12px;
  background:var(--bg2);
  border:1px solid var(--border1);
  border-radius:10px;
  display:grid;
  gap:8px
}
.pm-exp-row{
  display:grid;
  grid-template-columns:120px 1fr;
  gap:10px
}
.pm-exp-field{
  display:flex;
  flex-direction:column;
  font-size:11px;
  color:var(--text3);
  font-weight:600
}
.pm-exp-field input,
.pm-exp-field select{
  padding:5px 8px;
  border:1px solid var(--border2);
  border-radius:6px;
  font-size:12px;
  background:#fff;
  margin-top:3px
}
.pm-stat-block{
  background:#fff;
  border:1px solid var(--border1);
  border-radius:8px;
  padding:6px 10px
}
.pm-stat-block-label{
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:0.4px;
  color:var(--text3);
  font-weight:700;
  margin-bottom:4px
}
.pm-stat-row{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:6px
}
.pm-stat-field{
  display:flex;
  align-items:center;
  gap:5px;
  font-size:11px;
  color:var(--text2);
  background:var(--bg2);
  padding:3px 6px;
  border-radius:6px
}
.pm-stat-label{
  font-weight:700;
  min-width:24px;
  font-family:'DM Mono', monospace
}
.pm-stat-field input{
  width:42px;
  padding:3px 5px;
  border:1px solid var(--border2);
  border-radius:5px;
  font-size:11px;
  text-align:center
}
@media (max-width: 900px){
  .postmatch-line,
  .postmatch-lines-header{
    grid-template-columns:auto 1fr auto;
    grid-template-areas:
      "presence name temps"
      "dims dims dims"
      "comment comment toggle"
      "expansion expansion expansion"
  }
  .postmatch-toggle{ grid-area:toggle }
  .postmatch-expansion{ grid-area:expansion }
  .pm-stat-row{ grid-template-columns:repeat(2, minmax(0,1fr)) }
  .pm-exp-row{ grid-template-columns:1fr }
}

/* ════════════════════════════════════════════════════════════
   Phase 2 — Vue Équipe, Analyses transverses, Présence,
   Croissance physique, Joueur vs catégorie
   ──────────────────────────────────────────────────────────── */

/* Vue Équipe — liste */
.team-shell{ display:flex; flex-direction:column; gap:16px }
.team-toolbar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  flex-wrap:wrap
}
.team-toolbar .toolbar-right{ display:flex; gap:8px; flex-wrap:wrap }
.team-listing-hero{
  background:linear-gradient(135deg,#0f365f 0%,#009640 58%,#4d9be0 100%);
  color:#fff;
  border-radius:18px;
  padding:24px;
  box-shadow:var(--shadow)
}
.team-listing-hero h1{ font-size:30px; margin:6px 0 8px }
.team-listing-hero p{ color:rgba(255,255,255,0.8); max-width:680px; line-height:1.55 }

.team-list-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(240px, 1fr));
  gap:14px
}
.team-card{
  background:#fff;
  border:1px solid var(--border1);
  border-radius:16px;
  padding:16px;
  text-align:left;
  cursor:pointer;
  transition:transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
  display:flex;
  flex-direction:column;
  gap:10px
}
.team-card:hover{
  transform:translateY(-2px);
  border-color:var(--blue);
  box-shadow:0 6px 18px rgba(24,95,165,0.12)
}
.team-card-head{
  display:flex;
  justify-content:space-between;
  align-items:baseline
}
.team-card-head strong{ font-size:18px; color:var(--text1) }
.team-card-effectif{ font-size:11px; color:var(--text3); font-weight:600 }
.team-card-stats{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:8px;
  font-size:11px
}
.team-card-stats > div{
  background:var(--bg2);
  border-radius:8px;
  padding:7px 6px;
  display:flex;
  flex-direction:column;
  align-items:center
}
.team-card-stats span{ color:var(--text3); font-weight:600; font-size:10px; text-transform:uppercase }
.team-card-stats strong{ font-size:14px; margin-top:2px }
.team-card-footer{
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-size:11px;
  padding-top:8px;
  border-top:1px dashed var(--border1)
}
.team-winpct{ color:var(--text2); font-weight:600 }
.team-streak{
  font-weight:700;
  padding:3px 9px;
  border-radius:999px;
  background:var(--bg2);
  color:var(--text2)
}
.streak-win{  background:var(--green-light);  color:var(--green-dark) }
.streak-draw{ background:var(--amber-light);  color:var(--amber-dark) }
.streak-loss{ background:var(--red-light);    color:var(--red-dark) }

.unassigned-list{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-bottom:10px
}
.unassigned-chip{
  padding:6px 10px;
  border-radius:999px;
  border:1px solid var(--border2);
  background:#fff;
  font-size:12px;
  font-weight:600;
  color:var(--text2);
  cursor:pointer;
  transition:all 0.12s
}
.unassigned-chip:hover{ background:var(--blue-light); color:var(--blue-dark); border-color:var(--blue) }
.unassigned-more{ font-size:11px; color:var(--text3); padding:6px 4px }

/* Vue Équipe — page détail */
.team-hero{
  background:linear-gradient(135deg,#0f6e56 0%,#27500a 100%);
  color:#fff;
  border-radius:18px;
  padding:24px;
  display:grid;
  grid-template-columns:1.3fr 1fr;
  gap:18px;
  box-shadow:var(--shadow)
}
.team-hero h1{ font-size:30px; margin:6px 0 8px }
.team-hero p{ color:rgba(255,255,255,0.85); line-height:1.55 }
.team-hero-stats{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:10px;
  align-self:start
}
.team-hero-stats .dash-stat.streak-win  { background:rgba(99,153,34,0.25)  }
.team-hero-stats .dash-stat.streak-loss { background:rgba(215,90,48,0.25)  }
.team-hero-stats .dash-stat.streak-draw { background:rgba(186,117,23,0.25) }

.team-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:14px
}
.team-grid .span-2{ grid-column:span 2 }
@media (max-width: 1100px){ .team-grid{ grid-template-columns:repeat(2, minmax(0,1fr)) } .team-grid .span-2{ grid-column:span 2 } }
@media (max-width: 720px){  .team-grid{ grid-template-columns:1fr } .team-grid .span-2{ grid-column:span 1 } }

/* Tables leaders (top buteurs, passeurs, notes) */
.leader-table{
  width:100%;
  border-collapse:collapse;
  font-size:13px
}
.leader-table thead th{
  text-align:left;
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:0.5px;
  color:var(--text3);
  font-weight:700;
  padding:8px 6px;
  border-bottom:1px solid var(--border1)
}
.leader-table tbody td{
  padding:8px 6px;
  border-bottom:1px solid var(--border1);
  vertical-align:middle
}
.leader-table tbody tr:last-child td{ border-bottom:none }
.rank-cell{
  width:24px;
  text-align:center;
  color:var(--text3);
  font-weight:700
}
.player-link{
  font-weight:600;
  color:var(--blue);
  cursor:pointer;
  text-decoration:none;
  font-size:13px
}
.player-link:hover{ color:var(--blue-dark); text-decoration:underline }

/* Carte temps de jeu cumulé */
.minutes-list{ display:flex; flex-direction:column; gap:8px; margin-top:8px }
.minutes-row{
  display:grid;
  grid-template-columns:160px 1fr 110px;
  gap:10px;
  align-items:center;
  font-size:12px
}
.minutes-name{
  font-weight:600;
  color:var(--text1);
  text-align:left;
  font-size:12px;
  cursor:pointer;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap
}
.minutes-name:hover{ color:var(--blue) }
.minutes-bar-bg{
  height:10px;
  border-radius:6px;
  background:var(--bg2);
  overflow:hidden
}
.minutes-bar-fill{
  height:100%;
  background:linear-gradient(90deg, #009640, #4d9be0);
  border-radius:6px;
  transition:width 0.3s
}
.minutes-value{ font-weight:700; color:var(--text1); font-size:12px }
.minutes-meta{ color:var(--text3); font-weight:500 }

/* Matchs équipe */
.team-matches-list{ display:flex; flex-direction:column; gap:6px; margin-top:6px }
.team-match-row{
  display:grid;
  grid-template-columns:90px 50px 1fr 90px 32px 70px;
  gap:10px;
  align-items:center;
  padding:8px 10px;
  border-radius:10px;
  background:var(--bg2);
  font-size:12px;
  border-left:3px solid transparent
}
.team-match-row.fixture-win  { border-left-color:var(--green) }
.team-match-row.fixture-loss { border-left-color:var(--red)   }
.team-match-row.fixture-draw { border-left-color:var(--amber) }
.tm-date{ color:var(--text3); font-weight:600 }
.tm-loc{ font-weight:700; color:var(--text2); font-size:11px }
.tm-opp{ font-weight:600; color:var(--text1); overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.tm-score{ font-weight:700; text-align:center; color:var(--text1) }
.tm-badge{
  width:26px;
  height:26px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:11px;
  font-weight:700;
  background:#fff;
  border:1px solid var(--border2);
  color:var(--text2)
}
.team-match-row.fixture-win  .tm-badge{ background:var(--green-light); color:var(--green-dark); border-color:var(--green) }
.team-match-row.fixture-loss .tm-badge{ background:var(--red-light);   color:var(--red-dark);   border-color:var(--red)   }
.team-match-row.fixture-draw .tm-badge{ background:var(--amber-light); color:var(--amber-dark); border-color:var(--amber) }
.tm-obs{ font-size:11px; color:var(--text3); text-align:right }

/* Effectif équipe */
.team-roster{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:6px
}
.team-roster-chip{
  padding:8px 12px;
  border-radius:10px;
  border:1px solid var(--border1);
  background:#fff;
  cursor:pointer;
  text-align:left;
  display:flex;
  flex-direction:column;
  gap:2px;
  min-width:140px;
  transition:all 0.12s
}
.team-roster-chip:hover{ border-color:var(--blue); background:var(--blue-light) }
.team-roster-chip strong{ font-size:12px; color:var(--text1) }
.team-roster-chip span{ font-size:10px; color:var(--text3); text-transform:uppercase; font-weight:600; letter-spacing:0.4px }

/* Comparaison équipes */
.compare-table tbody tr{ cursor:pointer }
.compare-table tbody tr:hover{ background:var(--blue-light) }

/* Vue Analyses transverses */
.transverse-shell{ display:flex; flex-direction:column; gap:16px }
.transverse-hero{
  background:linear-gradient(135deg,#854f0b 0%,#ba7517 60%,#e0a85e 100%);
  color:#fff;
  border-radius:18px;
  padding:24px;
  display:grid;
  grid-template-columns:1.3fr 1fr;
  gap:18px;
  box-shadow:var(--shadow)
}
.transverse-hero h1{ font-size:30px; margin:6px 0 8px }
.transverse-hero p{ color:rgba(255,255,255,0.85); max-width:680px; line-height:1.55 }

.transverse-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:14px
}
.transverse-grid .span-2{ grid-column:span 2 }
@media (max-width: 1100px){ .transverse-grid{ grid-template-columns:repeat(2, minmax(0,1fr)) } }
@media (max-width: 720px){  .transverse-grid{ grid-template-columns:1fr } .transverse-grid .span-2{ grid-column:span 1 } }

.delta-up{ color:var(--green) }
.delta-down{ color:var(--red) }
.delta-flat{ color:var(--text2) }

/* Moyennes piliers catégorie */
.pillar-avg-list{ display:flex; flex-direction:column; gap:8px; margin-top:8px }
.pillar-avg-row{
  display:grid;
  grid-template-columns:130px 1fr 110px;
  gap:10px;
  align-items:center;
  font-size:13px
}
.pillar-avg-name{ font-weight:600; color:var(--text1) }
.pillar-avg-bar-bg{
  height:10px;
  border-radius:6px;
  background:var(--bg2);
  overflow:hidden
}
.pillar-avg-bar-fill{
  height:100%;
  border-radius:6px;
  transition:width 0.3s
}
.pillar-avg-val{ font-size:12px; color:var(--text2); text-align:right }

/* Histogramme distribution */
.histo-list{ display:flex; flex-direction:column; gap:6px; margin-top:6px }
.histo-row{
  display:grid;
  grid-template-columns:70px 1fr 40px;
  gap:8px;
  align-items:center;
  font-size:12px
}
.histo-label{ color:var(--text2); font-weight:600 }
.histo-bar-bg{ height:14px; border-radius:6px; background:var(--bg2); overflow:hidden }
.histo-bar-fill{ height:100%; border-radius:6px; transition:width 0.3s }
.histo-count{ text-align:right; font-weight:700; color:var(--text1) }

/* Joueur vs moyenne catégorie (sur fiche) */
.vsavg-card{ margin-top:14px }
.vsavg-list{ display:flex; flex-direction:column; gap:6px; margin-top:6px }
.vsavg-row{
  display:grid;
  grid-template-columns:140px 90px 1fr 70px 100px;
  gap:10px;
  align-items:center;
  padding:6px 8px;
  border-radius:8px;
  background:var(--bg2);
  font-size:12px
}
.vsavg-name{ font-weight:600 }
.vsavg-mine{ color:var(--text1) }
.vsavg-avg{ color:var(--text3); font-size:11px }
.vsavg-delta{ text-align:center; font-weight:700 }
.vsavg-pct{ color:var(--text2); font-size:11px; text-align:right }

/* Présence / assiduité */
.att-card{ margin-top:14px }
.att-rates{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:10px;
  margin:10px 0
}
.att-rate-block{
  background:var(--bg2);
  border-radius:10px;
  padding:10px 12px;
  display:flex;
  flex-direction:column
}
.att-rate-block span{
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:0.5px;
  color:var(--text3);
  font-weight:700
}
.att-rate-block strong{ font-size:20px; margin-top:2px; font-family:'DM Mono', monospace }

.att-recent{ display:flex; flex-direction:column; gap:4px }
.att-row{
  display:grid;
  grid-template-columns:90px 110px 1fr auto 24px;
  gap:8px;
  align-items:center;
  padding:6px 10px;
  border-radius:8px;
  background:#fff;
  border:1px solid var(--border1);
  font-size:12px
}
.att-date{ color:var(--text3); font-weight:600 }
.att-type{ color:var(--text2); font-weight:500 }
.att-status{
  padding:3px 8px;
  border-radius:999px;
  font-weight:700;
  font-size:11px;
  justify-self:start
}
.att-note{
  color:var(--text2);
  font-style:italic;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  grid-column:3
}
.att-del{
  width:22px;
  height:22px;
  border-radius:50%;
  color:var(--red);
  background:transparent;
  border:1px solid transparent;
  cursor:pointer;
  font-size:14px;
  line-height:1
}
.att-del:hover{ background:var(--red-light); border-color:var(--red) }

.att-status-row{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:6px;
  margin-top:6px
}
.att-status-btn{
  padding:8px 10px;
  border-radius:8px;
  border:1px solid var(--border2);
  background:#fff;
  color:var(--text2);
  font-weight:600;
  font-size:12px;
  cursor:pointer;
  transition:all 0.12s
}
.att-status-btn:hover{ background:var(--bg2) }
.att-status-btn.on{ border-width:2px }

/* Croissance physique */
.morpho-history-card{
  margin-top:14px;
  background:#fff;
  border:1px solid var(--border1);
  border-radius:14px;
  padding:14px 16px;
  box-shadow:0 1px 6px rgba(0,0,0,0.04)
}
.morpho-history-card h3{ margin:4px 0 10px; font-size:15px }
.morpho-spark{
  width:100%;
  height:120px;
  border-radius:10px;
  background:var(--bg2);
  margin-bottom:8px
}
.morpho-legend{
  display:flex;
  gap:14px;
  font-size:11px;
  color:var(--text3);
  font-weight:600;
  margin-bottom:8px
}
.morpho-dot{
  display:inline-block;
  width:10px;
  height:10px;
  border-radius:2px;
  margin-right:6px;
  vertical-align:middle
}
.morpho-list{ display:flex; flex-direction:column; gap:4px }
.morpho-row{
  display:grid;
  grid-template-columns:90px 90px 90px auto 24px;
  gap:8px;
  align-items:center;
  padding:6px 10px;
  border-radius:8px;
  background:var(--bg2);
  font-size:12px
}
.morpho-date{ color:var(--text3); font-weight:600 }
.morpho-val{ font-weight:600; color:var(--text1) }
.morpho-imc{ font-size:11px; color:var(--text3); font-weight:600 }


/* Saisie rapide du score */
.fixture-score-btn{
  font-size:11px;
  font-weight:700;
  padding:4px 10px;
  border-radius:8px;
  border:1px dashed var(--border2);
  background:#fff;
  color:var(--blue);
  cursor:pointer;
  transition:all 0.12s;
  white-space:nowrap
}
.fixture-score-btn:hover{
  background:var(--blue-light);
  border-color:var(--blue);
  border-style:solid
}
.fixture-auto-moved{
  font-size:10px;
  font-weight:600;
  color:var(--amber-dark);
  background:var(--amber-light);
  border:1px solid rgba(186,117,23,0.3);
  padding:2px 7px;
  border-radius:999px;
  white-space:nowrap
}

/* PWA — encart "Installer l'app" */
#install-pwa-item {
  background: linear-gradient(135deg, #009640, #4d9be0);
  color: #fff;
  font-weight: 700;
  border-radius: 8px;
  padding: 10px 12px;
  margin-bottom: 4px;
  transition: filter 0.12s ease;
}
#install-pwa-item:hover {
  filter: brightness(1.08);
  background: linear-gradient(135deg, #009640, #4d9be0);
}

/* Indispo / blessure */
.inj-card { margin-top: 14px }
.inj-status-current { margin: 8px 0 12px }
.inj-status-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 700;
  padding: 5px 12px;
  border-radius: 999px;
  border: 1px solid;
}
.inj-status-pill--ok {
  background: var(--green-light);
  color: var(--green-dark);
  border-color: var(--green);
}
.inj-recent { display: flex; flex-direction: column; gap: 4px }
.inj-row {
  display: grid;
  grid-template-columns: 24px 140px 1fr 90px 50px 24px;
  gap: 8px;
  align-items: center;
  padding: 6px 10px;
  border-radius: 8px;
  background: var(--bg2);
  font-size: 12px;
}
.inj-icon { text-align: center; font-size: 14px }
.inj-period { color: var(--text3); font-weight: 600 }
.inj-type { color: var(--text1); font-weight: 600 }
.inj-sev { font-weight: 700 }
.inj-days { text-align: right; color: var(--text3); font-weight: 600 }

.cat-table-inj,
.pli-inj,
.pm-inj-badge {
  display: inline-block;
  margin-left: 6px;
  font-size: 13px;
  vertical-align: middle;
}

/* Profilage automatique */
.profiling-card { margin-top: 14px }
.profiling-empty {
  padding: 14px;
  color: var(--text3);
  font-size: 13px;
  font-style: italic;
  text-align: center;
}
.profiling-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
}
.profiling-tag {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 12px;
  border: 1px solid;
  border-radius: 10px;
  font-size: 11px;
  min-width: 160px;
  background: var(--bg2);
  cursor: help;
}
.profiling-tag strong { font-size: 12px; font-weight: 700 }
.profiling-tag span { font-size: 10px; opacity: 0.85; line-height: 1.4 }

/* Vue Analyses : groupage par profil */
.profile-groups {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
  margin-top: 10px;
}
.profile-group {
  background: #fff;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid var(--border1);
}
.profile-group-head {
  padding: 8px 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 12px;
  font-weight: 700;
}
.profile-group-count {
  background: rgba(255, 255, 255, 0.6);
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
}
.profile-group-list {
  padding: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.profile-player-chip {
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--border2);
  background: #fff;
  font-size: 11px;
  font-weight: 600;
  color: var(--text2);
  cursor: pointer;
  transition: all 0.12s ease;
}
.profile-player-chip:hover {
  background: var(--blue-light);
  border-color: var(--blue);
  color: var(--blue-dark);
}

/* Dashboard responsable technique */
.directeur-shell { display: flex; flex-direction: column; gap: 16px }
.directeur-hero {
  background: linear-gradient(135deg, #006e2f 0%, #009640 60%, #4d9be0 100%);
  color: #fff;
  border-radius: 18px;
  padding: 24px;
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 18px;
  box-shadow: var(--shadow);
}
.directeur-hero h1 { font-size: 30px; margin: 6px 0 8px }
.directeur-hero p { color: rgba(255,255,255,0.8); max-width: 680px; line-height: 1.55 }
.directeur-alert-counter strong { color: var(--text1); }
.directeur-alert-counter.has-alerts strong { color: #d85a30 }

.directeur-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
@media (max-width: 900px){ .directeur-grid { grid-template-columns: 1fr } }
.directeur-grid .span-2 { grid-column: span 2 }
@media (max-width: 900px){ .directeur-grid .span-2 { grid-column: span 1 } }

/* Alertes */
.directeur-alerts-card.directeur-alerts-active {
  border-left: 4px solid #d85a30;
}
.alert-rows { display: flex; flex-direction: column; gap: 10px; margin-top: 6px }
.alert-row {
  background: var(--bg2);
  border-radius: 10px;
  padding: 10px 12px;
}
.alert-row-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 6px;
  font-size: 13px;
}
.alert-row-head strong { color: var(--text1) }
.alert-row-head span { color: var(--text3); font-weight: 700 }
.alert-chips { display: flex; flex-wrap: wrap; gap: 6px }
.alert-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  border-radius: 999px;
  border: 1px solid var(--border2);
  background: #fff;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.12s;
}
.alert-chip:hover { border-color: var(--blue); background: var(--blue-light); color: var(--blue-dark) }
.alert-chip-cat {
  background: var(--bg2);
  padding: 1px 6px;
  border-radius: 6px;
  font-size: 10px;
  color: var(--text3);
}
.alert-more { font-size: 11px; color: var(--text3); padding: 5px; align-self: center }

/* Détail blessures */
.injury-detail-list { display: flex; flex-direction: column; gap: 6px; margin-top: 6px }
.injury-detail-row {
  display: grid;
  grid-template-columns: 28px 1fr auto 50px;
  gap: 10px;
  align-items: center;
  padding: 8px 12px;
  border-radius: 10px;
  background: var(--bg2);
  border: 1px solid var(--border1);
  cursor: pointer;
  text-align: left;
  transition: all 0.12s;
}
.injury-detail-row:hover { background: var(--red-light); border-color: var(--red) }
.injury-detail-icon { font-size: 18px; text-align: center }
.injury-detail-name strong { display: block; font-size: 13px }
.injury-detail-name small { display: block; font-size: 10px; color: var(--text3); text-transform: uppercase; font-weight: 600 }
.injury-detail-zone { font-size: 12px; color: var(--text2); font-weight: 600 }
.injury-detail-dur { text-align: right; font-weight: 700; color: var(--red-dark); font-size: 12px }

/* Assiduité catégorie */
.att-cat-list { display: flex; flex-direction: column; gap: 8px; margin-top: 6px }
.att-cat-row {
  display: grid;
  grid-template-columns: 80px 1fr 140px;
  gap: 10px;
  align-items: center;
  font-size: 13px;
}
.att-cat-name { font-weight: 700; color: var(--text1) }
.att-cat-bar-bg { height: 12px; border-radius: 6px; background: var(--bg2); overflow: hidden }
.att-cat-bar-fill { height: 100%; border-radius: 6px; transition: width 0.3s }
.att-cat-val { text-align: right; font-weight: 700 }
.att-cat-meta { font-size: 11px; color: var(--text3); font-weight: 500 }

/* Pépites */
.pepites-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 8px;
  margin-top: 6px;
}
.pepite-card {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid var(--border1);
  background: linear-gradient(135deg, #f0fdf4 0%, #fff 100%);
  cursor: pointer;
  text-align: left;
  transition: all 0.12s ease;
}
.pepite-card:hover {
  transform: translateY(-2px);
  border-color: var(--blue);
  box-shadow: 0 4px 12px rgba(24,95,165,0.12);
}
.pepite-score {
  font-size: 18px;
  font-weight: 700;
  color: var(--blue);
  font-family: 'DM Mono', monospace;
}
.pepite-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 }
.pepite-info strong { font-size: 13px; color: var(--text1); overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.pepite-info small { font-size: 10px; color: var(--text3); text-transform: uppercase; font-weight: 600 }

/* Vue carrière joueur (modal multi-saisons) */
.career-section-title {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--text3);
  font-weight: 700;
  margin: 14px 0 8px;
}
.career-cumul,
.career-block { margin-bottom: 14px }

.career-stat-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
@media (max-width: 720px) { .career-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) } }
.career-stat {
  background: var(--bg2);
  border-radius: 10px;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.career-stat span {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  color: var(--text3);
  font-weight: 700;
}
.career-stat strong {
  font-size: 18px;
  color: var(--text1);
  font-family: 'DM Mono', monospace;
}
.career-stat small {
  font-size: 10px;
  color: var(--text3);
  font-weight: 500;
  margin-top: 2px;
}

/* Timeline */
.career-timeline {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.career-timeline-row {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 12px;
  padding: 10px 12px;
  background: linear-gradient(90deg, var(--bg2), transparent);
  border-left: 3px solid var(--blue);
  border-radius: 6px;
}
.career-timeline-row.is-empty {
  border-left-color: var(--border2);
  opacity: 0.5;
}
.career-season-label strong {
  font-size: 14px;
  color: var(--text1);
  font-family: 'DM Mono', monospace;
}
.career-season-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: center;
}
.career-season-stats > span {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 70px;
}
.career-season-stats strong {
  font-size: 14px;
  font-weight: 700;
}
.career-season-stats small {
  font-size: 10px;
  color: var(--text3);
  text-transform: uppercase;
  letter-spacing: 0.3px;
  font-weight: 600;
}
.career-season-empty {
  color: var(--text3);
  font-style: italic;
  font-size: 12px;
}

/* Tableau évolution piliers */
.career-pillar-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.career-pillar-table th,
.career-pillar-table td {
  padding: 8px 10px;
  text-align: center;
  border-bottom: 1px solid var(--border1);
}
.career-pillar-table thead th {
  background: var(--bg2);
  text-transform: uppercase;
  font-size: 10px;
  letter-spacing: 0.5px;
  color: var(--text3);
}
.career-pillar-table tbody th {
  text-align: left;
  font-weight: 700;
  color: var(--text1);
  background: var(--bg2);
}

/* Évolution jonglerie */
.career-juggle-bars {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.career-juggle-row {
  display: grid;
  grid-template-columns: 90px 1fr 50px;
  gap: 10px;
  align-items: center;
  font-size: 13px;
}
.career-juggle-season {
  font-family: 'DM Mono', monospace;
  font-weight: 700;
  color: var(--text2);
}
.career-juggle-bar-bg {
  height: 12px;
  border-radius: 6px;
  background: var(--bg2);
  overflow: hidden;
}
.career-juggle-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, #009640, #4d9be0);
  border-radius: 6px;
  transition: width 0.4s;
}
.career-juggle-val {
  text-align: right;
  font-weight: 700;
  color: var(--text1);
  font-family: 'DM Mono', monospace;
}

/* ──────────────────────────────────────────────────────────────────
   Weekly focus — Grille hebdo éditable
   ────────────────────────────────────────────────────────────────── */

.weekly-wrap {
  padding: 16px 20px 80px;
  max-width: 1400px;
  margin: 0 auto;
}

.weekly-head {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 20px;
  padding: 16px;
  background: var(--surface-2, #f5f7fb);
  border-radius: 12px;
}

.weekly-nav {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.weekly-title { flex: 1; min-width: 0; }
.weekly-label { font-weight: 600; font-size: 18px; }
.weekly-sub { font-size: 12px; opacity: 0.7; }

.weekly-theme-input {
  width: 100%;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid var(--border, #d8dde7);
  font-size: 15px;
  background: var(--surface, #fff);
}

/* Items editor */
.weekly-items {
  background: var(--surface, #fff);
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 20px;
  border: 1px solid var(--border, #e2e6ee);
}

.weekly-items-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}

.weekly-items-head h3 { margin: 0; font-size: 16px; }

.weekly-items-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}

.weekly-item-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  background: #e6f0ff;
  border-radius: 999px;
  font-size: 13px;
  border: 1px solid #c8dcff;
}

.weekly-item-chip.is-custom { background: #fff3e0; border-color: #ffd9a8; }

.weekly-item-pillar {
  font-weight: 600;
  text-transform: uppercase;
  font-size: 10px;
  opacity: 0.75;
}

.weekly-item-scale { opacity: 0.6; font-size: 11px; }

.weekly-item-rm {
  width: 22px; height: 22px;
  border-radius: 50%;
  border: none;
  background: rgba(0,0,0,0.08);
  cursor: pointer;
  font-weight: bold;
  padding: 0;
  line-height: 1;
}
.weekly-item-rm:hover { background: rgba(239,68,68,0.2); color: #b91c1c; }

.weekly-add { margin-top: 8px; }
.weekly-add summary {
  cursor: pointer;
  padding: 8px 12px;
  background: #f0f3f9;
  border-radius: 8px;
  font-weight: 500;
}
.weekly-add-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  padding: 12px 0;
}
.weekly-add-label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  margin-bottom: 4px;
  opacity: 0.75;
}
.weekly-add-select,
.weekly-add-custom input {
  width: 100%;
  padding: 8px 10px;
  border-radius: 6px;
  border: 1px solid var(--border, #d8dde7);
}
.weekly-add-custom {
  display: flex;
  gap: 6px;
  align-items: stretch;
}
.weekly-add-custom input { flex: 1; }

.weekly-empty {
  padding: 24px;
  text-align: center;
  color: var(--text2, #6b7280);
  background: var(--surface, #fff);
  border-radius: 12px;
  border: 1px dashed var(--border, #d8dde7);
}
.weekly-empty-hint { font-size: 13px; opacity: 0.7; margin-top: 4px; }

/* Grid table (desktop) */
.weekly-grid-wrap h3 {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 0 0 12px;
}
.weekly-grid-hint { font-size: 12px; font-weight: normal; opacity: 0.6; }

.weekly-grid-table-wrap { overflow-x: auto; }

.weekly-grid-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--surface, #fff);
  border-radius: 8px;
  overflow: hidden;
}
.weekly-grid-table th,
.weekly-grid-table td {
  padding: 6px 8px;
  text-align: center;
  border-bottom: 1px solid var(--border, #eef1f6);
}
.weekly-th-player, .weekly-td-player {
  text-align: left;
  font-weight: 500;
  white-space: nowrap;
  position: sticky;
  left: 0;
  background: var(--surface, #fff);
  z-index: 1;
}
.weekly-th-crit {
  background: var(--surface-2, #f5f7fb);
  font-weight: 500;
  font-size: 12px;
}
.weekly-th-pillar { font-size: 10px; opacity: 0.6; text-transform: uppercase; }
.weekly-th-name { font-size: 13px; line-height: 1.2; }
.weekly-td-avg { font-weight: 600; }
.weekly-note-input {
  width: 100%; max-width: 200px;
  padding: 4px 6px;
  font-size: 12px;
  border: 1px solid var(--border, #d8dde7);
  border-radius: 4px;
}

/* Boutons de note */
.weekly-rate {
  width: 36px; height: 36px;
  border-radius: 50%;
  border: 2px solid var(--border, #d8dde7);
  background: var(--surface, #fff);
  font-weight: 600;
  font-size: 15px;
  cursor: pointer;
  transition: all 0.15s;
  padding: 0;
}
.weekly-rate:hover { transform: scale(1.08); border-color: #009640; }
.weekly-rate.is-set { color: #fff; border-color: transparent; }
.weekly-rate.rate-excellent { background: #16a34a; }
.weekly-rate.rate-good      { background: #65a30d; }
.weekly-rate.rate-mid       { background: #eab308; color: #1f2937; }
.weekly-rate.rate-low       { background: #f97316; }
.weekly-rate.rate-poor      { background: #dc2626; }

/* Vue mobile : cartes par joueur */
.weekly-cards { display: none; }

.weekly-card {
  background: var(--surface, #fff);
  border-radius: 12px;
  padding: 12px 14px;
  margin-bottom: 12px;
  border: 1px solid var(--border, #e2e6ee);
}
.weekly-card-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}
.weekly-card-name { font-weight: 600; }
.weekly-card-avg {
  font-weight: 700;
  font-size: 16px;
  padding: 4px 10px;
  background: #f0f3f9;
  border-radius: 999px;
}
.weekly-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.weekly-card-crit {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 10px 8px;
  border-radius: 10px;
  border: 1px solid var(--border, #d8dde7);
  background: var(--surface, #fff);
  cursor: pointer;
  font: inherit;
  text-align: center;
  transition: all 0.15s;
}
.weekly-card-crit:active { transform: scale(0.96); }
.weekly-card-crit.is-set { color: #fff; border-color: transparent; }
.weekly-card-crit.rate-excellent { background: #16a34a; }
.weekly-card-crit.rate-good      { background: #65a30d; }
.weekly-card-crit.rate-mid       { background: #eab308; color: #1f2937; }
.weekly-card-crit.rate-low       { background: #f97316; }
.weekly-card-crit.rate-poor      { background: #dc2626; }
.weekly-card-label { font-size: 11px; line-height: 1.2; opacity: 0.9; }
.weekly-card-value { font-weight: 700; font-size: 16px; }

.weekly-card-note {
  width: 100%;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid var(--border, #d8dde7);
  font-size: 13px;
}

.weekly-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 16px;
  flex-wrap: wrap;
}

/* Section "Cette semaine" sur la fiche joueur */
.player-weekly-card {
  background: linear-gradient(135deg, #eff6ff 0%, #f0fdf4 100%);
  border-radius: 12px;
  padding: 14px 16px;
  margin: 12px 0;
  border: 1px solid #cbd5ff;
}
.player-weekly-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.player-weekly-title { font-weight: 600; font-size: 14px; }
.player-weekly-theme { font-size: 12px; opacity: 0.75; font-style: italic; }
.player-weekly-avg {
  padding: 4px 12px;
  background: #009640;
  color: #fff;
  border-radius: 999px;
  font-weight: 700;
  font-size: 13px;
}
.player-weekly-items {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.player-weekly-item {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  background: rgba(255,255,255,0.7);
  border-radius: 999px;
  font-size: 12px;
  border: 1px solid rgba(0,0,0,0.06);
}
.player-weekly-item-val { font-weight: 700; }
.player-weekly-item-val.is-na { opacity: 0.4; }
.player-weekly-note {
  margin-top: 8px;
  font-size: 13px;
  font-style: italic;
  color: #1f2937;
}

/* Responsive : bascule en cartes en mobile */
@media (max-width: 768px) {
  .weekly-wrap { padding: 12px 12px 80px; }
  .weekly-grid-table-wrap { display: none; }
  .weekly-cards { display: block; }
  .weekly-add-body { grid-template-columns: 1fr; }
  .weekly-head { padding: 12px; }
}

/* ──────────────────────────────────────────────────────────────────
   Voice input — bouton micro sur les champs texte
   ────────────────────────────────────────────────────────────────── */

.voice-wrap {
  display: inline-flex;
  align-items: stretch;
  position: relative;
  width: 100%;
}
.voice-wrap > input,
.voice-wrap > textarea {
  flex: 1;
  padding-right: 44px;
}

.voice-btn {
  position: absolute;
  right: 6px;
  top: 6px;
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 50%;
  background: rgba(24, 95, 165, 0.08);
  cursor: pointer;
  font-size: 16px;
  padding: 0;
  transition: all 0.2s;
  display: flex;
  align-items: center;
  justify-content: center;
}
.voice-btn:hover { background: rgba(24, 95, 165, 0.18); }
.voice-btn.is-recording {
  background: #dc2626;
  color: #fff;
  animation: voice-pulse 1.2s ease-in-out infinite;
}
@keyframes voice-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(220, 38, 38, 0.6); }
  50%      { box-shadow: 0 0 0 8px rgba(220, 38, 38, 0); }
}

/* ──────────────────────────────────────────────────────────────────
   Mode Terrain — overlay plein écran
   ────────────────────────────────────────────────────────────────── */

.live-overlay {
  position: fixed;
  inset: 0;
  z-index: 9000;
  background: #f5f7fb;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

body.live-training-active { overflow: hidden; }

.live-shell {
  min-height: 100%;
  display: flex;
  flex-direction: column;
}

.live-head {
  position: sticky;
  top: 0;
  z-index: 10;
  background: linear-gradient(135deg, #009640 0%, #009640 100%);
  color: #fff;
  padding: 12px 16px;
  padding-top: max(12px, env(safe-area-inset-top));
  display: flex;
  align-items: center;
  gap: 12px;
  box-shadow: 0 2px 12px rgba(0,0,0,0.15);
}

.live-close {
  width: 38px;
  height: 38px;
  border: none;
  border-radius: 10px;
  background: rgba(255,255,255,0.18);
  color: #fff;
  font-size: 22px;
  cursor: pointer;
  padding: 0;
  flex-shrink: 0;
}
.live-close:hover { background: rgba(255,255,255,0.28); }

.live-title { flex: 1; min-width: 0; }
.live-cat { font-weight: 600; font-size: 15px; }
.live-week { font-size: 11px; opacity: 0.85; }

.live-team-filter {
  padding: 6px 12px;
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.3);
  background: rgba(255,255,255,0.15);
  color: #fff;
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
}

.live-legend {
  display: flex;
  justify-content: center;
  gap: 12px;
  padding: 8px 16px;
  font-size: 12px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: wrap;
}
.live-leg { padding: 2px 8px; border-radius: 999px; }
.live-leg-plus { background: #dcfce7; color: #166534; }
.live-leg-minus { background: #fee2e2; color: #991b1b; }
.live-leg-note { background: #fef3c7; color: #92400e; }

.live-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
  padding: 12px;
  flex: 1;
}

.live-tile {
  background: #fff;
  border-radius: 12px;
  padding: 10px;
  border: 1px solid #e5e7eb;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.live-tile-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 4px;
}
.live-tile-name {
  font-weight: 600;
  font-size: 14px;
  line-height: 1.2;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
}
.live-tile-last { font-size: 14px; opacity: 0.7; }

.live-tile-stats {
  display: flex;
  gap: 4px;
  min-height: 22px;
  flex-wrap: wrap;
}
.live-stat {
  padding: 1px 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
}
.live-stat-plus { background: #dcfce7; color: #166534; }
.live-stat-minus { background: #fee2e2; color: #991b1b; }
.live-stat-note { background: #fef3c7; color: #92400e; }
.live-stat-empty { opacity: 0.3; font-size: 16px; }

.live-tile-actions {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 4px;
}

.live-btn {
  height: 44px;
  border-radius: 10px;
  border: 2px solid;
  background: #fff;
  font-size: 20px;
  cursor: pointer;
  padding: 0;
  transition: all 0.12s;
  -webkit-tap-highlight-color: transparent;
}
.live-btn:active { transform: scale(0.92); }
.live-btn-plus { border-color: #16a34a; }
.live-btn-plus:hover { background: #dcfce7; }
.live-btn-minus { border-color: #dc2626; }
.live-btn-minus:hover { background: #fee2e2; }
.live-btn-note { border-color: #d97706; }
.live-btn-note:hover { background: #fef3c7; }

.live-pulse {
  animation: live-pulse-anim 0.3s ease-out;
}
@keyframes live-pulse-anim {
  0%   { transform: scale(0.92); }
  50%  { transform: scale(1.08); }
  100% { transform: scale(1); }
}

.live-summary {
  position: sticky;
  bottom: 0;
  background: #fff;
  border-top: 1px solid #e5e7eb;
  padding: 10px 16px;
  padding-bottom: max(10px, env(safe-area-inset-bottom));
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  box-shadow: 0 -2px 12px rgba(0,0,0,0.06);
}
.live-sum {
  padding: 4px 10px;
  border-radius: 999px;
  font-weight: 600;
  font-size: 13px;
}
.live-sum-plus { background: #dcfce7; color: #166534; }
.live-sum-minus { background: #fee2e2; color: #991b1b; }
.live-sum-note { background: #fef3c7; color: #92400e; }
.live-sum-spacer { flex: 1; }

/* Vue note */
.live-note-shell { padding-bottom: 40px; }

.live-note-form {
  background: #fff;
  margin: 16px;
  padding: 16px;
  border-radius: 12px;
  border: 1px solid #e5e7eb;
}
.live-note-label {
  font-weight: 600;
  font-size: 14px;
  display: block;
  margin-bottom: 8px;
}
.live-note-input {
  width: 100%;
  padding: 12px;
  border-radius: 8px;
  border: 1px solid #d1d5db;
  font-size: 15px;
  font-family: inherit;
  resize: vertical;
  min-height: 100px;
}
.live-note-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 12px;
  flex-wrap: wrap;
}

.live-history {
  margin: 0 16px 16px;
  background: #fff;
  padding: 12px 16px;
  border-radius: 12px;
  border: 1px solid #e5e7eb;
}
.live-history h4 { margin: 0 0 8px; font-size: 14px; }
.live-history-list { list-style: none; padding: 0; margin: 0; }
.live-history-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 0;
  border-bottom: 1px solid #f3f4f6;
  font-size: 13px;
}
.live-history-item:last-child { border-bottom: none; }
.live-h-icon { font-size: 16px; flex-shrink: 0; }
.live-h-time { font-size: 11px; opacity: 0.6; flex-shrink: 0; }
.live-h-text { flex: 1; }
.live-h-rm {
  width: 24px; height: 24px;
  border: none;
  border-radius: 50%;
  background: #f3f4f6;
  cursor: pointer;
  font-size: 13px;
  padding: 0;
}
.live-h-rm:hover { background: #fee2e2; color: #b91c1c; }

/* Carte "terrain" sur la fiche joueur */
.player-live-card {
  background: linear-gradient(135deg, #fff7ed 0%, #fef3c7 100%);
  border-radius: 12px;
  padding: 12px 14px;
  margin: 12px 0;
  border: 1px solid #fed7aa;
}
.player-live-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.player-live-title { font-weight: 600; font-size: 14px; }
.player-live-stats { display: flex; gap: 4px; }
.player-live-notes {
  margin: 4px 0 0;
  padding-left: 18px;
  font-size: 13px;
  font-style: italic;
}
.player-live-notes li { margin: 2px 0; }

/* Indicateur "boost semaine" sur les onglets piliers */
.ptab-boost {
  display: inline-block;
  margin-left: 4px;
  padding: 1px 6px;
  border-radius: 6px;
  background: rgba(245, 158, 11, 0.15);
  color: #b45309;
  font-size: 11px;
  font-weight: 600;
  vertical-align: middle;
}
.ptab.on .ptab-boost {
  background: rgba(255,255,255,0.25);
  color: #fff;
}

/* ──────────────────────────────────────────────────────────────────
   Plan de saison — vue principes × semaines
   ────────────────────────────────────────────────────────────────── */

.plan-wrap { padding: 20px; max-width: 1300px; margin: 0 auto; }

.plan-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.plan-title { margin: 0; font-size: 22px; }
.plan-season {
  font-weight: 400;
  font-size: 14px;
  color: var(--text2, #6b7280);
  margin-left: 8px;
}
.plan-subtitle { margin: 4px 0 0; color: var(--text2, #6b7280); font-size: 13px; }
.plan-actions { display: flex; gap: 8px; }

.plan-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}
.plan-stat {
  background: var(--surface, #fff);
  border-radius: 12px;
  padding: 12px 14px;
  border: 1px solid var(--border, #e2e6ee);
  text-align: center;
}
.plan-stat-val { font-size: 28px; font-weight: 700; line-height: 1.1; }
.plan-stat-lbl { font-size: 11px; color: var(--text2, #6b7280); text-transform: uppercase; margin-top: 4px; }
.plan-stat-good .plan-stat-val { color: #16a34a; }
.plan-stat-warn .plan-stat-val { color: #d97706; }
.plan-stat-info .plan-stat-val { color: #009640; }

.plan-filters {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.plan-filter {
  padding: 6px 14px;
  border-radius: 999px;
  border: 1px solid var(--border, #d8dde7);
  background: var(--surface, #fff);
  cursor: pointer;
  font-weight: 500;
  font-size: 13px;
}
.plan-filter.on {
  background: #009640;
  color: #fff;
  border-color: #009640;
}

.plan-list { display: flex; flex-direction: column; gap: 10px; }

.plan-row {
  background: var(--surface, #fff);
  border-radius: 12px;
  padding: 12px 16px;
  border: 1px solid var(--border, #e2e6ee);
}
.plan-row-untouched { border-left: 4px solid #dc2626; }
.plan-row-underworked { border-left: 4px solid #d97706; }
.plan-row-ok { border-left: 4px solid #16a34a; }

.plan-row-head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.plan-row-num {
  font-size: 22px;
  font-weight: 700;
  color: #009640;
  min-width: 38px;
}
.plan-row-info { flex: 1; min-width: 0; }
.plan-row-title {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-bottom: 6px;
}
.plan-row-label { font-weight: 600; font-size: 15px; }
.plan-row-phase { font-size: 11px; color: var(--text2, #6b7280); }
.plan-row-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  font-size: 12px;
  align-items: center;
}
.plan-row-prio { font-weight: 500; }
.plan-row-weeks { color: var(--text2, #6b7280); }
.plan-row-avg {
  font-weight: 700;
  background: rgba(24, 95, 165, 0.08);
  padding: 2px 8px;
  border-radius: 999px;
}

.plan-status {
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 999px;
}
.plan-status-untouched { background: #fee2e2; color: #991b1b; }
.plan-status-warn { background: #fef3c7; color: #92400e; }
.plan-status-ok { background: #dcfce7; color: #166534; }

.plan-timeline {
  display: flex;
  gap: 2px;
  margin-top: 10px;
  flex-wrap: wrap;
}
.plan-cell {
  width: 18px;
  height: 18px;
  border-radius: 3px;
  display: inline-block;
}
.plan-cell-empty { background: #f3f4f6; }
.plan-cell-good { background: #16a34a; }
.plan-cell-mid { background: #eab308; }
.plan-cell-low { background: #dc2626; }

.plan-empty { text-align: center; color: var(--text2, #6b7280); padding: 24px; font-style: italic; }

.plan-reco {
  margin-top: 20px;
  background: linear-gradient(135deg, #eff6ff 0%, #fef3c7 100%);
  border-radius: 12px;
  padding: 14px 18px;
  border: 1px solid #cbd5ff;
}
.plan-reco h3 { margin: 0 0 8px; font-size: 15px; }
.plan-reco ul { margin: 0; padding-left: 20px; }
.plan-reco li { margin: 4px 0; font-size: 13px; }

/* Badge sync icon dans la nav */
.educator-badge { display: inline-flex; align-items: center; gap: 6px; }
.educator-sync-icon { font-size: 11px; opacity: 0.8; margin-left: 4px; }

/* ──────────────────────────────────────────────────────────────────
   Stats avancées — par poste / par phase
   ────────────────────────────────────────────────────────────────── */

.advstats-wrap { padding: 20px; max-width: 1300px; margin: 0 auto; }

.advstats-head h2 { margin: 0 0 4px; font-size: 22px; }
.advstats-head p { margin: 0 0 16px; color: var(--text2, #6b7280); font-size: 13px; }

.advstats-tabs {
  display: flex;
  gap: 6px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--border, #e5e7eb);
}
.advstats-tab {
  padding: 10px 18px;
  border: none;
  background: transparent;
  cursor: pointer;
  font-weight: 500;
  font-size: 14px;
  color: var(--text2, #6b7280);
  border-bottom: 3px solid transparent;
  margin-bottom: -1px;
}
.advstats-tab.on {
  color: #009640;
  border-bottom-color: #009640;
}

/* Vue Phase */
.advstats-phases {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-bottom: 20px;
}
.advstats-phase {
  background: var(--surface, #fff);
  border-radius: 12px;
  padding: 16px 18px;
  border: 1px solid var(--border, #e2e6ee);
}
.advstats-phase.phase-avec { border-top: 4px solid #2563eb; }
.advstats-phase.phase-sans { border-top: 4px solid #dc2626; }

.advstats-phase-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 14px;
}
.advstats-phase-head h3 { margin: 0; font-size: 17px; }
.advstats-phase-meta { font-size: 11px; color: var(--text2, #6b7280); }
.advstats-phase-avg { font-size: 32px; font-weight: 700; line-height: 1; }

.advstats-subs { display: flex; flex-direction: column; gap: 10px; }
.advstats-sub {
  background: #f9fafb;
  border-radius: 8px;
  padding: 8px 12px;
}
.advstats-sub-head {
  display: flex;
  justify-content: space-between;
  margin-bottom: 4px;
  font-size: 13px;
}
.advstats-sub-label { font-weight: 500; }
.advstats-sub-val { font-weight: 700; }
.advstats-bar-bg {
  height: 6px;
  background: #e5e7eb;
  border-radius: 3px;
  overflow: hidden;
}
.advstats-bar-fill {
  height: 100%;
  border-radius: 3px;
  transition: width 0.3s;
}
.advstats-sub-meta {
  font-size: 10px;
  color: var(--text2, #6b7280);
  margin-top: 4px;
}

/* Vue Poste */
.advstats-poste-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--surface, #fff);
  border-radius: 8px;
  overflow: hidden;
  margin-bottom: 20px;
  font-size: 13px;
}
.advstats-poste-table th,
.advstats-poste-table td {
  padding: 8px 10px;
  text-align: center;
  border-bottom: 1px solid var(--border, #f3f4f6);
}
.advstats-poste-table th { background: #f9fafb; font-weight: 600; }
.adv-th-poste, .adv-td-poste { text-align: left; }
.adv-td-global { font-weight: 700; }
.adv-na { color: #9ca3af; }

.advstats-poste-details {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 10px;
}
.advstats-poste-card {
  background: var(--surface, #fff);
  border-radius: 10px;
  padding: 12px 14px;
  border: 1px solid var(--border, #e2e6ee);
}
.advstats-poste-card header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}
.advstats-poste-card h4 { margin: 0; font-size: 14px; }
.adv-count { color: var(--text2, #6b7280); font-weight: 400; font-size: 11px; }
.adv-global { font-size: 18px; font-weight: 700; }
.adv-player-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.adv-player-list li {
  display: flex;
  justify-content: space-between;
  padding: 3px 0;
  font-size: 12px;
  border-bottom: 1px dashed #f3f4f6;
}
.adv-player-list li:last-child { border-bottom: none; }
.adv-player-list li.adv-more { color: var(--text2, #6b7280); font-style: italic; }

.advstats-empty {
  text-align: center;
  padding: 20px;
  color: var(--text2, #6b7280);
  font-style: italic;
  background: var(--surface, #fff);
  border-radius: 8px;
}

/* Recommandations */
.advstats-reco {
  margin-top: 20px;
  background: linear-gradient(135deg, #f0f9ff 0%, #fef3c7 100%);
  border-radius: 12px;
  padding: 16px 20px;
  border: 1px solid #cbd5ff;
}
.advstats-reco h3 { margin: 0 0 8px; font-size: 16px; }
.advstats-reco ul { margin: 0; padding-left: 20px; }
.advstats-reco li { margin: 6px 0; font-size: 13px; line-height: 1.5; }
.advstats-reco li.reco-warn { color: #991b1b; }
.advstats-reco li.reco-info { color: #1e40af; }

@media (max-width: 768px) {
  .advstats-phases { grid-template-columns: 1fr; }
  .advstats-wrap { padding: 12px; }
}

/* ──────────────────────────────────────────────────────────────────
   UX Polish
   ────────────────────────────────────────────────────────────────── */

/* FAB Mode Terrain — bouton flottant bas-droite */
.fab {
  position: fixed;
  bottom: 24px;
  right: 24px;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  border: none;
  cursor: pointer;
  font-size: 24px;
  z-index: 100;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);
  transition: all 0.2s;
  -webkit-tap-highlight-color: transparent;
}
.fab:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0, 0, 0, 0.22); }
.fab:active { transform: scale(0.95); }

.fab-live {
  background: linear-gradient(135deg, #009640 0%, #009640 100%);
  color: #fff;
}

/* Cacher le FAB quand le mode terrain est ouvert ou en mobile portrait < 380px */
body.live-training-active .fab,
body.weekly-fullscreen .fab { display: none; }

@media (max-width: 380px) {
  .fab { bottom: 12px; right: 12px; width: 48px; height: 48px; font-size: 20px; }
}

/* Tap feedback animation */
.ux-tap {
  animation: ux-tap-anim 0.25s ease-out !important;
}
@keyframes ux-tap-anim {
  0%   { transform: scale(1); }
  35%  { transform: scale(0.93); }
  100% { transform: scale(1); }
}

/* Empêcher la double anim sur certains boutons déjà animés */
.live-btn.ux-tap, .weekly-rate.ux-tap, .weekly-card-crit.ux-tap {
  animation: none !important;
}

/* ── Navigation horizontale scrollable sur petit écran ── */
.nav-cat-tabs {
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
}
.nav-cat-tabs::-webkit-scrollbar { height: 4px; }
.nav-cat-tabs::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 4px; }

.nav-cat {
  flex-shrink: 0;
  white-space: nowrap;
}

/* Onglet actif visible : ombre douce + scale léger */
.nav-cat.on {
  position: relative;
  font-weight: 600;
}

@media (max-width: 768px) {
  .nav-cat { font-size: 13px; padding: 8px 12px; }
  .topnav { padding-left: 8px; padding-right: 8px; }
}

/* ── Tap targets sidebar plus larges ── */
.player-list .player-row,
.player-list > * {
  min-height: 48px;
}

@media (max-width: 768px) {
  .player-list .player-row,
  .player-list > * { min-height: 52px; padding-top: 10px; padding-bottom: 10px; }
  .sb-search { font-size: 16px; padding: 10px 12px; } /* iOS no-zoom */
  .field-input { font-size: 16px; } /* iOS no-zoom */
}

/* ── Empty state amélioré ── */
.empty-state {
  text-align: center;
  padding: 60px 24px;
  color: var(--text2, #6b7280);
}
.empty-state p {
  font-size: 16px;
  line-height: 1.6;
  max-width: 480px;
  margin: 0 auto;
}

/* ── Toast au-dessus du FAB ── */
.toast { bottom: 90px !important; }
@media (max-width: 380px) { .toast { bottom: 72px !important; } }

/* ── Empty state rich (vue Joueurs sans sélection) ── */
.empty-state-rich {
  max-width: 600px;
  margin: 40px auto;
  padding: 40px 24px;
}
.empty-icon {
  font-size: 48px;
  margin-bottom: 8px;
}
.empty-recent {
  margin-top: 28px;
  padding-top: 20px;
  border-top: 1px solid var(--border, #e5e7eb);
}
.empty-recent-title,
.empty-shortcut-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text2, #6b7280);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 10px;
}
.quick-players {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
}
.quick-player-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid var(--border, #d8dde7);
  background: var(--surface, #fff);
  cursor: pointer;
  font-size: 13px;
  font-weight: 500;
  transition: all 0.15s;
}
.quick-player-btn:hover {
  background: #f0f9ff;
  border-color: #009640;
  color: #009640;
}
.quick-player-initials {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: linear-gradient(135deg, #009640 0%, #009640 100%);
  color: #fff;
  font-weight: 700;
  font-size: 11px;
}
.empty-shortcuts {
  margin-top: 28px;
  padding-top: 20px;
  border-top: 1px solid var(--border, #e5e7eb);
}
.empty-shortcuts-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
}
.empty-tip {
  margin-top: 16px;
  font-size: 12px;
  color: var(--text2, #6b7280);
}
.empty-tip kbd {
  display: inline-block;
  padding: 1px 6px;
  background: #f3f4f6;
  border: 1px solid #d1d5db;
  border-bottom-width: 2px;
  border-radius: 4px;
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  color: #374151;
}

/* ──────────────────────────────────────────────────────────────────
   Polish global — Nav bar revisitée + cohérence couleurs
   ────────────────────────────────────────────────────────────────── */

/* Topnav modernisée : ombre douce, glassmorphism amélioré */
.topnav {
  background: rgba(255, 255, 255, 0.92) !important;
  border-bottom: 1px solid rgba(18, 20, 18, 0.06) !important;
  box-shadow: 0 2px 12px rgba(26, 31, 36, 0.04), 0 1px 0 rgba(255, 255, 255, 0.5) inset !important;
}

/* Logo plus subtil */
.nav-logo {
  background: linear-gradient(135deg, #006e2f 0%, #009640 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent !important;
}

/* Onglets nav-cat : meilleur état actif avec indicateur visuel */
.nav-cat-tabs {
  background: rgba(244, 239, 231, 0.6) !important;
  border-color: rgba(18, 20, 18, 0.05) !important;
}

.nav-cat {
  position: relative;
  overflow: visible !important;
  transition: all 0.18s ease !important;
}

.nav-cat:hover {
  background: rgba(24, 95, 165, 0.08) !important;
  color: #009640 !important;
}

.nav-cat.on {
  background: linear-gradient(135deg, #009640 0%, #009640 100%) !important;
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(24, 95, 165, 0.25), 0 1px 0 rgba(255,255,255,0.2) inset !important;
}

/* Couleurs métier : saisie = vert, analyses = violet, alerte = rouge */
.nav-cat.on[data-view="weekly"],
.nav-cat.on[data-view="plan"] {
  background: linear-gradient(135deg, #ba7517 0%, #d4881e 100%) !important;
  box-shadow: 0 2px 8px rgba(186, 117, 23, 0.25) !important;
}

.nav-cat.on[data-view="analyses"] {
  background: linear-gradient(135deg, #5b21b6 0%, #7c3aed 100%) !important;
  box-shadow: 0 2px 8px rgba(91, 33, 182, 0.25) !important;
}

.nav-cat.on[data-view="direction"] {
  background: linear-gradient(135deg, #b91c1c 0%, #dc2626 100%) !important;
  box-shadow: 0 2px 8px rgba(185, 28, 28, 0.25) !important;
}

/* Badge avec compteur (Direction (X)) plus lisible */
.nav-cat.on::after { content: ''; }

/* Boutons primary plus modernes */
.btn-primary {
  background: linear-gradient(135deg, #009640 0%, #009640 100%) !important;
  box-shadow: 0 2px 6px rgba(24, 95, 165, 0.22), 0 1px 0 rgba(255,255,255,0.2) inset !important;
}
.btn-primary:hover {
  box-shadow: 0 4px 10px rgba(24, 95, 165, 0.3) !important;
  transform: translateY(-1px);
}

/* Educator badge plus visible */
.educator-badge {
  background: rgba(255, 255, 255, 0.7);
  border: 1px solid var(--border1);
  border-radius: 999px;
  padding: 6px 12px 6px 8px;
  cursor: pointer;
  transition: all 0.15s;
  font-size: 12px;
  font-weight: 500;
}
.educator-badge:hover {
  background: #fff;
  border-color: #009640;
  transform: translateY(-1px);
  box-shadow: 0 2px 6px rgba(24,95,165,0.12);
}
.educator-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }

/* Dash stat avec accent custom (utilisé sur la vue Catégorie pour Score moyen) */
.dash-stat-accent {
  border: 1px solid var(--accent, #009640) !important;
  background: linear-gradient(135deg,
    color-mix(in srgb, var(--accent, #009640) 5%, transparent),
    color-mix(in srgb, var(--accent, #009640) 12%, transparent)) !important;
}
.dash-stat-accent strong { color: var(--accent, #009640) !important; }

/* Équipes cliquables sur vue Catégorie */
.team-item-clickable {
  border: none;
  cursor: pointer;
  font: inherit;
  text-align: left;
  width: 100%;
  background: var(--bg2);
  padding: 10px 14px;
  border-radius: 8px;
  font-weight: 500;
  color: var(--text1);
  transition: all 0.15s;
}
.team-item-clickable:hover {
  background: var(--blue-light);
  color: var(--blue);
  transform: translateX(2px);
}

/* Info items dans vue Catégorie avec icône de statut */
.info-list .info-item {
  padding: 8px 12px;
  border-radius: 8px;
  background: var(--bg2);
  margin-bottom: 6px;
  font-size: 13px;
}
.info-list .info-item strong { font-weight: 600; }

/* Cartes dashboard plus modernes : ombre douce + hover lift */
.dashboard-card {
  transition: all 0.2s ease;
}
.dashboard-card:hover {
  box-shadow: 0 4px 16px rgba(26, 31, 36, 0.08), 0 1px 0 rgba(255,255,255,0.5) inset;
  transform: translateY(-1px);
}

/* Categories hero : touche subtile */
.category-hero {
  background: linear-gradient(135deg, rgba(24,95,165,0.04) 0%, rgba(45,125,210,0.06) 100%);
  border: 1px solid rgba(24,95,165,0.1);
  border-radius: var(--radius-lg);
  padding: 18px 22px;
  margin-bottom: 16px;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  flex-wrap: wrap;
}
.category-hero h1 {
  margin: 4px 0;
  background: linear-gradient(135deg, #006e2f 0%, #009640 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.category-hero p { color: var(--text2); margin: 4px 0 0; }

/* Cohérence onglets internes (piliers, advstats, etc.) avec gradient actif */
.ptab.on,
.advstats-tab.on,
.plan-filter.on {
  background: linear-gradient(135deg, #009640 0%, #009640 100%) !important;
  color: #fff !important;
}

/* Plus de spacing dans le main-content */
.main-content { padding: 20px; }
@media (max-width: 768px) { .main-content { padding: 12px; } }

/* Scrollbar plus discrète et moderne */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 5px; border: 2px solid #fcfaf6; }
::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.25); }

/* Boutons radio piliers (.dot) : code couleur plus net */
.dot {
  transition: all 0.15s;
}
.dot:hover { transform: scale(1.15); }

/* ──────────────────────────────────────────────────────────────────
   Sidebar conditionnelle : visible uniquement sur la vue Joueurs
   ────────────────────────────────────────────────────────────────── */

.main-layout.no-sidebar .sidebar { display: none !important; }
.main-layout.no-sidebar { grid-template-columns: 1fr !important; }
.main-layout.no-sidebar .main-content { width: 100% !important; max-width: 1400px; margin: 0 auto; }

/* ── Accueil compact ── */
.dashboard-main-grid-compact {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important;
}

.dashboard-matches-toggle {
  margin-top: 18px;
  background: var(--panel);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border1);
  overflow: hidden;
}
.dashboard-matches-toggle > summary {
  cursor: pointer;
  padding: 14px 20px;
  font-weight: 600;
  font-size: 15px;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: linear-gradient(135deg, rgba(24,95,165,0.04) 0%, rgba(45,125,210,0.06) 100%);
  transition: background 0.15s;
}
.dashboard-matches-toggle > summary::-webkit-details-marker { display: none; }
.dashboard-matches-toggle > summary::after {
  content: '▼';
  font-size: 11px;
  color: var(--text2);
  transition: transform 0.2s;
}
.dashboard-matches-toggle:not([open]) > summary::after { transform: rotate(-90deg); }
.dashboard-matches-toggle > summary:hover { background: rgba(24,95,165,0.08); }
.dashboard-matches-counter {
  font-weight: 400;
  font-size: 12px;
  color: var(--text2);
  margin-left: auto;
  margin-right: 12px;
}
.dashboard-matches-grid {
  padding: 14px 16px 18px;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)) !important;
}

/* Compacter les cartes match : plus d'éléments visibles */
.dashboard-matches-grid .match-card,
.dashboard-matches-grid .dashboard-card {
  font-size: 13px;
}
.dashboard-matches-grid .match-row,
.dashboard-matches-grid .dashboard-card li {
  padding: 6px 0;
}

/* ── Section FFF dans Vue Équipe ── */
.team-fff-section {
  margin: 18px 0;
  padding: 16px 18px;
  background: linear-gradient(135deg, rgba(24,95,165,0.03) 0%, rgba(45,125,210,0.05) 100%);
  border: 1px solid rgba(24,95,165,0.08);
  border-radius: var(--radius-lg);
}
.team-section-title {
  margin: 0 0 12px;
  font-size: 15px;
  font-weight: 600;
  color: var(--blue-dark);
}

/* ──────────────────────────────────────────────────────────────────
   Menu "..." nettoyé : sous-menu Avancé + état "vide"
   ────────────────────────────────────────────────────────────────── */

/* Texte d'aide quand il n'y a rien d'autre que le sous-menu */
.more-menu-empty {
  padding: 12px 14px;
  text-align: center;
  border-bottom: 1px solid var(--border1);
  margin: 4px 6px 8px;
}
.more-menu-empty span {
  display: block;
  font-size: 13px;
  color: var(--text1);
  font-weight: 500;
}
.more-menu-empty small {
  display: block;
  margin-top: 4px;
  font-size: 11px;
  color: var(--text2);
  line-height: 1.4;
}

/* Si Installer est visible → cacher le message d'état "vide" */
#install-pwa-item:not([hidden]) ~ #more-menu-empty { display: none; }

/* Sous-menu Avancé replié par défaut */
.more-menu-submenu {
  margin: 4px 6px 6px;
  border-top: 1px solid var(--border1);
  padding-top: 4px;
}
.more-menu-submenu > summary {
  padding: 8px 10px;
  cursor: pointer;
  font-size: 12px;
  font-weight: 600;
  color: var(--text2);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  list-style: none;
  display: flex;
  align-items: center;
  border-radius: 6px;
  transition: background 0.15s;
}
.more-menu-submenu > summary::-webkit-details-marker { display: none; }
.more-menu-submenu > summary::after {
  content: '▾';
  margin-left: auto;
  font-size: 10px;
  transition: transform 0.18s;
}
.more-menu-submenu[open] > summary::after { transform: rotate(180deg); }
.more-menu-submenu > summary:hover { background: rgba(0,0,0,0.04); }

.more-menu-submenu .more-menu-item {
  padding-left: 18px !important;
  font-size: 12px !important;
}

/* ── Vue Semaine : pièce jointe séance ── */
.weekly-attachment {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  background: var(--surface-2, #f5f7fb);
  padding: 10px 14px;
  border-radius: 10px;
  border: 1px dashed var(--border, #d8dde7);
  margin-top: 12px;
}
.weekly-attachment-set {
  border-style: solid;
  background: linear-gradient(135deg, #eff6ff 0%, #f0fdf4 100%);
  border-color: #93c5fd;
}
.wa-icon { font-size: 28px; flex-shrink: 0; }
.wa-info { flex: 1; min-width: 140px; }
.wa-name { font-weight: 600; font-size: 14px; color: var(--text1); }
.wa-meta { font-size: 11px; color: var(--text2); }
.wa-actions { display: flex; gap: 4px; }
.wa-actions .btn { padding: 6px 10px; font-size: 12px; }
.wa-remove { color: #b91c1c; }
.wa-remove:hover { background: #fee2e2; }
.wa-upload-btn { cursor: pointer; }
.wa-hint { font-size: 11px; color: var(--text2); flex: 1; min-width: 180px; }

/* ── Vue Semaine : séances multiples ── */
.weekly-seances {
  margin-top: 12px;
  background: var(--surface-2, #f5f7fb);
  border-radius: 12px;
  padding: 14px 16px;
  border: 1px solid var(--border, #e2e6ee);
}
.weekly-seances-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.weekly-seances-head h4 {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
}
.seances-count {
  display: inline-block;
  background: rgba(24, 95, 165, 0.12);
  color: #009640;
  padding: 1px 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  margin-left: 6px;
}
.seances-empty {
  font-style: italic;
  color: var(--text2, #6b7280);
  font-size: 13px;
  margin: 6px 0 0;
}

.seances-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 10px;
}
.seance-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  background: #fff;
  border-radius: 10px;
  border: 1px solid var(--border, #e2e6ee);
  flex-wrap: wrap;
}
.seance-main {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  min-width: 200px;
}
.seance-icon { font-size: 24px; flex-shrink: 0; }
.seance-info { flex: 1; min-width: 0; }
.seance-title { font-weight: 600; font-size: 14px; }
.seance-meta {
  font-size: 11px;
  color: var(--text2, #6b7280);
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  margin-top: 2px;
}
.seance-date {
  font-weight: 600;
  color: var(--blue, #009640);
  text-transform: capitalize;
}
.seance-actions {
  display: flex;
  gap: 4px;
  flex-shrink: 0;
}
.seance-actions .btn { padding: 5px 10px; font-size: 12px; }
.seance-actions label.btn { cursor: pointer; }
.seance-rm { color: #b91c1c; }
.seance-rm:hover { background: #fee2e2; }

/* Formulaire ajout séance */
.seance-form {
  background: #fff;
  border-radius: 10px;
  padding: 12px 14px;
  border: 1px dashed var(--blue, #009640);
}
.seance-form-row {
  display: flex;
  gap: 10px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.seance-form-row label {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  font-weight: 500;
  min-width: 140px;
}
.seance-form-title { flex: 2; }
.seance-form-row input {
  padding: 8px 10px;
  border-radius: 6px;
  border: 1px solid var(--border, #d8dde7);
  font-size: 13px;
}
.seance-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

/* ──────────────────────────────────────────────────────────────────
   Méga-vue Bilans (regroupe Équipes + Plan saison + Analyses + Direction)
   ────────────────────────────────────────────────────────────────── */

.bilans-shell {
  padding: 20px;
  max-width: 1400px;
  margin: 0 auto;
}

.bilans-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.bilans-title {
  margin: 0;
  font-size: 26px;
  background: linear-gradient(135deg, #006e2f 0%, #009640 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.bilans-cat {
  font-size: 14px;
  font-weight: 500;
  color: var(--text2, #6b7280);
  margin-left: 6px;
  -webkit-text-fill-color: initial;
}
.bilans-sub {
  margin: 4px 0 0;
  color: var(--text2, #6b7280);
  font-size: 13px;
}

.bilans-subtabs {
  display: flex;
  gap: 4px;
  margin-bottom: 20px;
  border-bottom: 2px solid var(--border, #e5e7eb);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.bilans-subtab {
  padding: 10px 20px;
  border: none;
  background: transparent;
  cursor: pointer;
  font-weight: 500;
  font-size: 14px;
  color: var(--text2, #6b7280);
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  white-space: nowrap;
  transition: all 0.15s;
}
.bilans-subtab:hover {
  color: #009640;
  background: rgba(24, 95, 165, 0.05);
}
.bilans-subtab.on {
  color: #009640;
  border-bottom-color: #009640;
  font-weight: 600;
}

.bilans-body {
  min-height: 400px;
}
/* Retirer le padding interne des sous-modules qui font déjà leur propre padding */
.bilans-body .plan-wrap,
.bilans-body .advstats-wrap {
  padding: 0;
}

@media (max-width: 768px) {
  .bilans-shell { padding: 12px; }
  .bilans-title { font-size: 22px; }
  .bilans-subtab { padding: 8px 14px; font-size: 13px; }
}

/* ── Fiche joueur : sections repliables ── */
.player-collapsible {
  background: var(--panel, #fff);
  border-radius: 12px;
  border: 1px solid var(--border, #e5e7eb);
  margin: 10px 0;
  overflow: hidden;
  transition: all 0.15s;
}
.player-collapsible[open] {
  box-shadow: 0 2px 8px rgba(24, 95, 165, 0.06);
}
.player-collapsible-summary {
  cursor: pointer;
  padding: 14px 18px;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: 600;
  font-size: 14px;
  color: var(--text1, #181814);
  transition: background 0.15s;
}
.player-collapsible-summary::-webkit-details-marker { display: none; }
.player-collapsible-summary:hover {
  background: rgba(24, 95, 165, 0.03);
}
.player-collapsible-chevron {
  font-size: 12px;
  color: var(--text2, #6b7280);
  transition: transform 0.2s;
}
.player-collapsible[open] .player-collapsible-chevron {
  transform: rotate(180deg);
}
.player-collapsible-body {
  padding: 4px 18px 16px;
  border-top: 1px solid var(--border, #f3f4f6);
}
.collapsible-empty {
  color: var(--text2, #6b7280);
  font-style: italic;
  font-size: 13px;
  margin: 8px 0;
  padding: 12px;
  background: var(--bg2, #f9fafb);
  border-radius: 8px;
  text-align: center;
}

/* ═══════════════════════════════════════════════════════════════════════
   ✨ REDESIGN 2026 — nouvelle identité visuelle
   Charte : neutre chaud + accent bleu profond, cartes très aérées,
   ombres minimales, typo Outfit avec vraie hiérarchie.
   ═══════════════════════════════════════════════════════════════════════ */

:root {
  /* Palette neutre chaude */
  --rd-bg: #f9f8f4;
  --rd-bg-soft: #f3f1ea;
  --rd-surface: #ffffff;
  --rd-surface-hover: #faf9f5;

  /* Bordures ultra-discrètes */
  --rd-border: rgba(15, 23, 42, 0.06);
  --rd-border-strong: rgba(15, 23, 42, 0.12);

  /* Texte */
  --rd-text: #0f172a;
  --rd-text-muted: #64748b;
  --rd-text-light: #94a3b8;

  /* Accent principal — bleu profond, moins criard */
  --rd-accent: #1e40af;
  --rd-accent-hover: #1e3a8a;
  --rd-accent-soft: #eff6ff;
  --rd-accent-glow: rgba(30, 64, 175, 0.10);

  /* Sémantique */
  --rd-success: #059669;
  --rd-success-soft: #ecfdf5;
  --rd-warning: #d97706;
  --rd-warning-soft: #fef3c7;
  --rd-danger: #dc2626;
  --rd-danger-soft: #fef2f2;

  /* Radius cohérents */
  --rd-r-sm: 8px;
  --rd-r-md: 12px;
  --rd-r-lg: 16px;
  --rd-r-xl: 24px;

  /* Ombres subtiles */
  --rd-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04);
  --rd-shadow: 0 1px 3px rgba(15, 23, 42, 0.05), 0 1px 2px rgba(15, 23, 42, 0.04);
  --rd-shadow-md: 0 4px 12px rgba(15, 23, 42, 0.06), 0 1px 3px rgba(15, 23, 42, 0.04);
  --rd-shadow-lg: 0 8px 24px rgba(15, 23, 42, 0.08), 0 2px 6px rgba(15, 23, 42, 0.05);
}

/* Base body */
body {
  background: var(--rd-bg) !important;
  color: var(--rd-text) !important;
  font-family: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
  font-feature-settings: 'ss01', 'cv01', 'cv11';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Nav bar allégée */
.topnav {
  background: rgba(249, 248, 244, 0.85) !important;
  border-bottom: 1px solid var(--rd-border) !important;
  box-shadow: none !important;
  padding: 12px 24px !important;
  backdrop-filter: blur(20px) saturate(180%) !important;
}
.nav-logo {
  font-family: 'Outfit', sans-serif !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  color: var(--rd-text) !important;
  background: none !important;
  -webkit-text-fill-color: initial !important;
}

/* Onglets nav plus élégants */
.nav-cat-tabs {
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  gap: 2px !important;
}
.nav-cat {
  font-size: 13px !important;
  font-weight: 500 !important;
  padding: 8px 16px !important;
  border-radius: var(--rd-r-md) !important;
  color: var(--rd-text-muted) !important;
  transition: all 0.15s ease !important;
  border: none !important;
  background: transparent !important;
}
.nav-cat:hover {
  color: var(--rd-text) !important;
  background: rgba(15, 23, 42, 0.04) !important;
}
.nav-cat.on {
  color: var(--rd-text) !important;
  background: var(--rd-surface) !important;
  box-shadow: var(--rd-shadow-sm) !important;
  font-weight: 600 !important;
}

/* Boutons uniformisés */
.btn, .season-sel {
  font-family: 'Outfit', sans-serif !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  padding: 8px 14px !important;
  border-radius: var(--rd-r-md) !important;
  border: 1px solid var(--rd-border-strong) !important;
  background: var(--rd-surface) !important;
  color: var(--rd-text) !important;
  transition: all 0.15s ease !important;
  cursor: pointer;
}
.btn:hover {
  background: var(--rd-surface-hover) !important;
  border-color: var(--rd-border-strong) !important;
  transform: none !important;
}
.btn-primary {
  background: var(--rd-accent) !important;
  border-color: var(--rd-accent) !important;
  color: #fff !important;
  box-shadow: none !important;
}
.btn-primary:hover {
  background: var(--rd-accent-hover) !important;
  transform: none !important;
  box-shadow: 0 2px 8px var(--rd-accent-glow) !important;
}
.btn-ghost {
  background: transparent !important;
  border-color: transparent !important;
  color: var(--rd-text-muted) !important;
}
.btn-ghost:hover {
  background: rgba(15, 23, 42, 0.04) !important;
  color: var(--rd-text) !important;
}

/* Sidebar plus douce */
.sidebar {
  background: rgba(249, 248, 244, 0.6) !important;
  border-right: 1px solid var(--rd-border) !important;
}
.sb-head {
  padding: 16px !important;
  border-bottom: 1px solid var(--rd-border) !important;
}
.sb-search {
  background: var(--rd-surface) !important;
  border: 1px solid var(--rd-border-strong) !important;
  border-radius: var(--rd-r-md) !important;
  padding: 9px 14px !important;
  font-size: 14px !important;
  font-family: 'Outfit', sans-serif !important;
}
.sb-search:focus {
  outline: none !important;
  border-color: var(--rd-accent) !important;
  box-shadow: 0 0 0 3px var(--rd-accent-glow) !important;
}

/* Cards : ombre douce, plus d'espace, moins de bordure */
.dashboard-card,
.dashboard-section,
.detail-card {
  background: var(--rd-surface) !important;
  border-radius: var(--rd-r-lg) !important;
  border: 1px solid var(--rd-border) !important;
  box-shadow: var(--rd-shadow-sm) !important;
  padding: 20px !important;
  transition: box-shadow 0.15s ease !important;
}
.dashboard-card:hover,
.dashboard-section:hover {
  box-shadow: var(--rd-shadow) !important;
  transform: none !important;
}
.card-head {
  margin-bottom: 12px !important;
}
.card-kicker {
  font-size: 10px !important;
  font-weight: 700 !important;
  color: var(--rd-text-light) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.08em !important;
  margin-bottom: 4px !important;
}
.dashboard-card h2, .dashboard-section h2 {
  font-family: 'Outfit', sans-serif !important;
  font-size: 18px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  color: var(--rd-text) !important;
  margin: 0 !important;
}

/* Hero d'accueil : plus léger, moins massif */
.dashboard-hero {
  background: var(--rd-surface) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-lg) !important;
  box-shadow: var(--rd-shadow-sm) !important;
  padding: 28px 32px !important;
  margin-bottom: 20px !important;
  color: var(--rd-text) !important;
}

/* ── Switch catégorie prominent en haut du dashboard ── */
.dash-cat-switcher {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
  margin-bottom: 20px;
  padding: 10px;
  background: var(--rd-surface);
  border: 1px solid var(--rd-border);
  border-radius: var(--rd-r-lg);
  box-shadow: var(--rd-shadow-sm);
}
.dash-cat-chip {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 14px 12px;
  background: #f8fafc;
  border: 2px solid #e2e8f0;
  border-radius: 12px;
  cursor: pointer;
  transition: all .15s ease;
  font-family: inherit;
  text-align: center;
  min-height: 56px;
}
.dash-cat-chip:hover {
  background: #f1f5f9;
  border-color: #cbd5e1;
  transform: translateY(-1px);
}
.dash-cat-chip.on {
  background: #009640;
  border-color: #006e2f;
  color: #fff;
  box-shadow: 0 4px 10px rgba(0,150,64,0.25);
}
.dash-cat-chip.on:hover {
  background: #007a34;
  transform: translateY(-1px);
}
.dash-cat-chip-label {
  font-size: 22px;
  font-weight: 800;
  letter-spacing: .5px;
  line-height: 1;
}

/* Mobile : plus compact */
@media (max-width: 640px) {
  .dash-cat-switcher {
    grid-template-columns: repeat(4, 1fr);
    gap: 6px;
    padding: 6px;
  }
  .dash-cat-chip { padding: 12px 4px; min-height: 48px; }
  .dash-cat-chip-label { font-size: 18px; }
}
.dashboard-hero h1 {
  font-family: 'Outfit', sans-serif !important;
  font-size: 28px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  color: var(--rd-text) !important;
  margin: 8px 0 4px !important;
}
.dashboard-hero p {
  color: var(--rd-text-muted) !important;
  font-size: 14px !important;
  margin: 4px 0 12px !important;
}
.dash-identity-badge {
  display: inline-block;
  font-size: 11px !important;
  font-weight: 600 !important;
  padding: 4px 10px !important;
  border-radius: 999px !important;
  background: var(--rd-accent-soft) !important;
  color: var(--rd-accent) !important;
  border: none !important;
  letter-spacing: 0.02em;
}

/* Stats cards */
.dashboard-stats {
  gap: 12px !important;
}
.dash-stat {
  background: var(--rd-bg-soft) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-md) !important;
  padding: 14px 16px !important;
}
.dash-stat span {
  font-size: 10px !important;
  font-weight: 700 !important;
  color: var(--rd-text-light) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.08em !important;
}
.dash-stat strong {
  font-family: 'Outfit', sans-serif !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  color: var(--rd-text) !important;
  letter-spacing: -0.02em !important;
  display: block;
  margin-top: 4px;
}

/* Sync badges */
.sync-badge {
  font-size: 10px !important;
  padding: 3px 8px !important;
  border-radius: 999px !important;
  background: var(--rd-bg-soft) !important;
  color: var(--rd-text-muted) !important;
  border: 1px solid var(--rd-border) !important;
  font-weight: 500 !important;
}

/* Educator badge */
.educator-badge {
  background: var(--rd-surface) !important;
  border: 1px solid var(--rd-border-strong) !important;
  padding: 6px 12px 6px 10px !important;
  border-radius: 999px !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  color: var(--rd-text) !important;
}
.educator-badge:hover {
  background: var(--rd-surface-hover) !important;
  border-color: var(--rd-accent) !important;
  transform: none !important;
  box-shadow: 0 2px 8px var(--rd-accent-glow) !important;
}

/* Bilans mega-view : sous-onglets style pilule */
.bilans-shell { padding: 24px 28px !important; }
.bilans-title {
  font-family: 'Outfit', sans-serif !important;
  font-size: 28px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  background: none !important;
  -webkit-text-fill-color: initial !important;
  color: var(--rd-text) !important;
}
.bilans-cat {
  color: var(--rd-text-muted) !important;
  font-weight: 500 !important;
}
.bilans-subtabs {
  border-bottom: 1px solid var(--rd-border) !important;
  gap: 4px !important;
}
.bilans-subtab {
  font-family: 'Outfit', sans-serif !important;
  padding: 12px 18px !important;
  border-bottom: 2px solid transparent !important;
  color: var(--rd-text-muted) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
}
.bilans-subtab:hover {
  color: var(--rd-text) !important;
  background: transparent !important;
}
.bilans-subtab.on {
  color: var(--rd-accent) !important;
  border-bottom-color: var(--rd-accent) !important;
  background: none !important;
  font-weight: 600 !important;
}

/* Onglets piliers sur la fiche joueur */
.pillar-nav {
  gap: 4px !important;
  padding: 4px !important;
  background: var(--rd-bg-soft) !important;
  border-radius: var(--rd-r-md) !important;
  border: 1px solid var(--rd-border) !important;
}
.ptab {
  font-family: 'Outfit', sans-serif !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  padding: 8px 14px !important;
  border-radius: 8px !important;
  color: var(--rd-text-muted) !important;
  background: transparent !important;
}
.ptab:hover {
  color: var(--rd-text) !important;
  background: rgba(15, 23, 42, 0.04) !important;
}
.ptab.on {
  background: var(--rd-surface) !important;
  color: var(--rd-text) !important;
  box-shadow: var(--rd-shadow-sm) !important;
  font-weight: 600 !important;
}

/* Sections repliables fiche joueur : plus douces */
.player-collapsible {
  background: var(--rd-surface) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-md) !important;
  box-shadow: none !important;
  margin: 8px 0 !important;
}
.player-collapsible[open] {
  box-shadow: var(--rd-shadow-sm) !important;
}
.player-collapsible-summary {
  padding: 14px 18px !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  color: var(--rd-text) !important;
}
.player-collapsible-summary:hover {
  background: var(--rd-surface-hover) !important;
}
.player-collapsible-chevron { color: var(--rd-text-light) !important; }

/* Section principes de jeu vue Semaine */
.weekly-wrap { padding: 24px 28px !important; }
.weekly-head {
  background: var(--rd-surface) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-lg) !important;
  box-shadow: var(--rd-shadow-sm) !important;
  padding: 20px !important;
}
.weekly-label {
  font-family: 'Outfit', sans-serif !important;
  font-size: 18px !important;
  font-weight: 600 !important;
  color: var(--rd-text) !important;
  letter-spacing: -0.01em !important;
}
.weekly-sub {
  font-size: 11px !important;
  color: var(--rd-text-light) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  font-weight: 600 !important;
}
.weekly-theme-input {
  background: var(--rd-bg-soft) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-md) !important;
  padding: 10px 14px !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 14px !important;
}
.weekly-theme-input:focus {
  outline: none !important;
  background: var(--rd-surface) !important;
  border-color: var(--rd-accent) !important;
  box-shadow: 0 0 0 3px var(--rd-accent-glow) !important;
}

/* Séances (upload de fichier) */
.weekly-seances {
  background: var(--rd-surface) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-lg) !important;
  padding: 20px !important;
  margin-top: 16px !important;
  box-shadow: var(--rd-shadow-sm) !important;
}
.seance-row {
  background: var(--rd-bg) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-md) !important;
}

/* Weekly items */
.weekly-items {
  background: var(--rd-surface) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-lg) !important;
  padding: 20px !important;
  box-shadow: var(--rd-shadow-sm) !important;
  margin-top: 16px !important;
}
.weekly-item-chip {
  background: var(--rd-bg-soft) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: 999px !important;
  padding: 6px 12px !important;
  font-size: 12px !important;
}
.weekly-item-chip.is-avec {
  background: var(--rd-accent-soft) !important;
  border-color: rgba(30, 64, 175, 0.15) !important;
  color: var(--rd-accent) !important;
}
.weekly-item-chip.is-sans {
  background: var(--rd-danger-soft) !important;
  border-color: rgba(220, 38, 38, 0.15) !important;
  color: var(--rd-danger) !important;
}
.weekly-item-chip.is-custom {
  background: var(--rd-warning-soft) !important;
  border-color: rgba(217, 119, 6, 0.15) !important;
  color: var(--rd-warning) !important;
}
.weekly-add-select {
  background: var(--rd-bg-soft) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-md) !important;
  padding: 10px 14px !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 13px !important;
}

/* Ratings buttons (grille semaine) */
.weekly-rate {
  border-radius: 50% !important;
  border: 1px solid var(--rd-border-strong) !important;
  background: var(--rd-surface) !important;
  width: 32px !important;
  height: 32px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  transition: all 0.15s !important;
}
.weekly-rate:hover {
  border-color: var(--rd-accent) !important;
  transform: scale(1.08) !important;
}
.weekly-rate.rate-excellent { background: #dcfce7 !important; color: #14532d !important; border-color: transparent !important; }
.weekly-rate.rate-good      { background: #d9f99d !important; color: #365314 !important; border-color: transparent !important; }
.weekly-rate.rate-mid       { background: #fef3c7 !important; color: #78350f !important; border-color: transparent !important; }
.weekly-rate.rate-low       { background: #fed7aa !important; color: #7c2d12 !important; border-color: transparent !important; }
.weekly-rate.rate-poor      { background: #fecaca !important; color: #7f1d1d !important; border-color: transparent !important; }

/* FAB Mode Terrain plus discret */
.fab-live {
  background: var(--rd-accent) !important;
  box-shadow: 0 4px 16px rgba(30, 64, 175, 0.25) !important;
}
.fab-live:hover {
  background: var(--rd-accent-hover) !important;
  box-shadow: 0 6px 20px rgba(30, 64, 175, 0.35) !important;
}

/* Empty state amélioré */
.empty-state {
  color: var(--rd-text-muted) !important;
  padding: 60px 20px !important;
}
.empty-state p {
  font-size: 15px !important;
  line-height: 1.6 !important;
}

/* Toast plus doux */
.toast {
  background: var(--rd-text) !important;
  color: var(--rd-bg) !important;
  border-radius: var(--rd-r-md) !important;
  padding: 12px 20px !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  box-shadow: var(--rd-shadow-lg) !important;
  border: none !important;
}

/* Menu ⋯ */
.more-menu {
  background: var(--rd-surface) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-md) !important;
  box-shadow: var(--rd-shadow-lg) !important;
  padding: 6px !important;
}
.more-menu-item {
  border-radius: var(--rd-r-sm) !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 13px !important;
  color: var(--rd-text) !important;
  padding: 8px 12px !important;
}
.more-menu-item:hover {
  background: var(--rd-surface-hover) !important;
}
.more-menu-submenu > summary {
  border-radius: var(--rd-r-sm) !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  color: var(--rd-text-muted) !important;
  padding: 8px 12px !important;
}

/* Grid principal du dashboard : plus d'espace */
.dashboard-main-grid { gap: 16px !important; }

/* Empty state fiche joueur (empty-state-rich) */
.empty-state-rich {
  background: var(--rd-surface) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-lg) !important;
  box-shadow: var(--rd-shadow-sm) !important;
  padding: 48px 32px !important;
}
.empty-icon {
  font-size: 40px !important;
  margin-bottom: 12px !important;
  opacity: 0.6;
}
.empty-state-rich h2 {
  font-family: 'Outfit', sans-serif !important;
  font-size: 22px !important;
  font-weight: 600 !important;
  color: var(--rd-text) !important;
  letter-spacing: -0.01em !important;
}
.quick-player-btn {
  border-radius: 999px !important;
  border: 1px solid var(--rd-border-strong) !important;
  background: var(--rd-surface) !important;
  font-family: 'Outfit', sans-serif !important;
  padding: 8px 14px !important;
  transition: all 0.15s !important;
}
.quick-player-btn:hover {
  background: var(--rd-accent-soft) !important;
  border-color: var(--rd-accent) !important;
  color: var(--rd-accent) !important;
  transform: none !important;
}
.quick-player-initials {
  background: var(--rd-accent) !important;
}

/* Sidebar : lignes joueurs plus élégantes */
.player-list .pli,
.player-list .player-row {
  padding: 12px 16px !important;
  border-radius: var(--rd-r-md) !important;
  margin: 2px 8px !important;
  transition: background 0.12s !important;
}
.player-list .pli:hover,
.player-list .player-row:hover {
  background: var(--rd-surface) !important;
}
.player-list .pli.on {
  background: var(--rd-accent-soft) !important;
  color: var(--rd-accent) !important;
  font-weight: 500 !important;
}

/* Scrollbars extra fines */
::-webkit-scrollbar { width: 8px !important; height: 8px !important; }
::-webkit-scrollbar-thumb {
  background: rgba(15, 23, 42, 0.15) !important;
  border-radius: 4px !important;
  border: none !important;
}
::-webkit-scrollbar-thumb:hover {
  background: rgba(15, 23, 42, 0.3) !important;
}

/* Formulaires généraux */
.field-label {
  font-size: 11px !important;
  font-weight: 700 !important;
  color: var(--rd-text-muted) !important;
  text-transform: uppercase !important;
  letter-spacing: 0.06em !important;
  margin-bottom: 4px !important;
}
.field-input {
  background: var(--rd-bg-soft) !important;
  border: 1px solid var(--rd-border-strong) !important;
  border-radius: var(--rd-r-md) !important;
  padding: 10px 14px !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 14px !important;
}
.field-input:focus {
  outline: none !important;
  background: var(--rd-surface) !important;
  border-color: var(--rd-accent) !important;
  box-shadow: 0 0 0 3px var(--rd-accent-glow) !important;
}

/* Team cards */
.team-card {
  background: var(--rd-surface) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-lg) !important;
  box-shadow: var(--rd-shadow-sm) !important;
  padding: 20px !important;
  transition: all 0.15s !important;
}
.team-card:hover {
  transform: translateY(-2px) !important;
  box-shadow: var(--rd-shadow-md) !important;
  border-color: var(--rd-border-strong) !important;
}

/* Player emptyState personnalisation */
.player-collapsible-body { padding: 8px 20px 18px !important; }

/* Mobile */
@media (max-width: 768px) {
  .topnav { padding: 10px 14px !important; }
  .bilans-shell { padding: 14px !important; }
  .weekly-wrap { padding: 14px !important; }
  .dashboard-hero { padding: 20px !important; }
  .dashboard-hero h1 { font-size: 22px !important; }
}

/* ═══════════════════════════════════════════════════════════════════════
   🌿 IDENTITÉ LOUVERNÉ SPORTS — vert #009640 + noir + rouge
   ═══════════════════════════════════════════════════════════════════════ */

:root {
  /* Override de l'accent : vert Louverné officiel */
  --rd-accent: #009640;
  --rd-accent-hover: #007a34;
  --rd-accent-soft: #e8f5ec;
  --rd-accent-glow: rgba(0, 150, 64, 0.15);

  /* Couleurs secondaires officielles */
  --lsp-green: #009640;
  --lsp-green-dark: #006e2f;
  --lsp-red: #E30613;
  --lsp-black: #0f0f0f;
}

/* Logo dans la nav */
.nav-logo {
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  text-decoration: none !important;
  padding: 4px 8px;
  border-radius: var(--rd-r-md) !important;
  transition: background 0.15s !important;
}
.nav-logo:hover {
  background: rgba(0, 150, 64, 0.06) !important;
}
.nav-logo-img {
  height: 34px;
  width: auto;
  display: block;
}
.nav-logo-text {
  font-family: 'Outfit', sans-serif;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--rd-text);
  line-height: 1;
}

@media (max-width: 768px) {
  .nav-logo-text { display: none; }
  .nav-logo-img { height: 30px; }
}

/* Hero accueil : bande verte discrète en haut + logo GJ LSCA en accent */
.dashboard-hero {
  position: relative;
  overflow: hidden;
  padding-top: 32px !important;
}
.dashboard-hero::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--lsp-green) 0%, var(--lsp-green-dark) 100%);
}
.dashboard-hero .dash-identity-badge {
  background: var(--lsp-green) !important;
  color: #fff !important;
  padding: 5px 12px !important;
  font-weight: 700 !important;
  border: none !important;
}

/* Bouton primary → vert Louverné */
.btn-primary {
  background: var(--lsp-green) !important;
  border-color: var(--lsp-green) !important;
}
.btn-primary:hover {
  background: var(--lsp-green-dark) !important;
  box-shadow: 0 2px 8px rgba(0, 150, 64, 0.25) !important;
}

/* FAB Mode Terrain vert */
.fab-live {
  background: var(--lsp-green) !important;
  box-shadow: 0 4px 16px rgba(0, 150, 64, 0.3) !important;
}
.fab-live:hover {
  background: var(--lsp-green-dark) !important;
  box-shadow: 0 6px 20px rgba(0, 150, 64, 0.4) !important;
}

/* Onglet actif nav → soulignement vert au lieu du fond blanc */
.nav-cat.on {
  color: var(--lsp-green) !important;
  background: var(--rd-accent-soft) !important;
  box-shadow: none !important;
}

/* Bilans subtabs en vert */
.bilans-subtab.on {
  color: var(--lsp-green) !important;
  border-bottom-color: var(--lsp-green) !important;
}

/* Sync badge accent vert */
.dash-identity-badge {
  background: var(--lsp-green) !important;
  color: #fff !important;
  border: none !important;
}

/* Focus / bordures en vert */
.sb-search:focus,
.weekly-theme-input:focus,
.field-input:focus {
  border-color: var(--lsp-green) !important;
  box-shadow: 0 0 0 3px rgba(0, 150, 64, 0.15) !important;
}

/* Player list sélection en vert */
.player-list .pli.on {
  background: rgba(0, 150, 64, 0.08) !important;
  color: var(--lsp-green-dark) !important;
  font-weight: 500 !important;
}

/* Onglets piliers actif en vert */
.ptab.on {
  background: var(--rd-surface) !important;
  color: var(--lsp-green-dark) !important;
  box-shadow: 0 1px 3px rgba(0, 150, 64, 0.15) !important;
}

/* Quick player buttons hover vert */
.quick-player-btn:hover {
  background: var(--rd-accent-soft) !important;
  border-color: var(--lsp-green) !important;
  color: var(--lsp-green-dark) !important;
}
.quick-player-initials {
  background: var(--lsp-green) !important;
}

/* Chip avec ballon (principe FFF avec ballon) → touche verte pour cohérence */
.weekly-item-chip.is-avec {
  background: var(--rd-accent-soft) !important;
  border-color: rgba(0, 150, 64, 0.2) !important;
  color: var(--lsp-green-dark) !important;
}

/* ═══════════════════════════════════════════════════════════════════════
   💚 SWAP TOUS LES BLEUS RÉSIDUELS → VERT LOUVERNÉ
   ═══════════════════════════════════════════════════════════════════════ */

:root {
  /* Réassigner les tokens legacy pour que TOUT hérite du vert */
  --blue: #009640 !important;
  --blue-dark: #006e2f !important;
  --blue-light: #e8f5ec !important;
}

/* Tout gradient bleu → gradient vert */
[style*="linear-gradient(135deg, #009640"],
[style*="linear-gradient(135deg,#009640"] {
  background: linear-gradient(135deg, #009640 0%, #007a34 100%) !important;
}

/* Overrides ciblés par sélecteur — tous les fonds/borders/couleurs bleus */
.btn-primary,
.sync-badge.sync-refreshing,
.plan-filter.on,
.advstats-tab.on,
.ptab.on,
.nav-cat.on {
  background: var(--lsp-green) !important;
  border-color: var(--lsp-green) !important;
  color: #fff !important;
}
.nav-cat.on { background: rgba(0, 150, 64, 0.10) !important; color: var(--lsp-green-dark) !important; }
.ptab.on { background: var(--rd-surface) !important; color: var(--lsp-green-dark) !important; }
.plan-filter.on, .advstats-tab.on { color: var(--lsp-green) !important; background: rgba(0, 150, 64, 0.08) !important; border-color: transparent !important; }

/* Textes en bleu → vert */
.card-kicker,
.dash-hero-main h1,
.category-hero h1,
.plan-title,
.bilans-title,
.weekly-label {
  color: var(--rd-text) !important;
  background: none !important;
  -webkit-text-fill-color: initial !important;
}

/* Bordures bleues actives */
.pillar-nav .on,
.player-collapsible[open] .player-collapsible-summary {
  border-color: var(--lsp-green) !important;
}

/* Sync badge scrape ok */
.sync-badge {
  background: var(--rd-accent-soft) !important;
  color: var(--lsp-green-dark) !important;
  border-color: rgba(0, 150, 64, 0.2) !important;
}

/* Boutons d'action sidebar */
.sb-action-btn {
  background: var(--lsp-green) !important;
  color: #fff !important;
  border-color: var(--lsp-green) !important;
}
.sb-action-btn:hover { background: var(--lsp-green-dark) !important; }
.sb-action-btn--ghost {
  background: transparent !important;
  color: var(--lsp-green-dark) !important;
  border-color: rgba(0, 150, 64, 0.3) !important;
}
.sb-action-btn--ghost:hover { background: var(--rd-accent-soft) !important; }

/* Chips filtres sidebar */
.chip.on, .filter-chip.on, .view-chip.on {
  background: var(--lsp-green) !important;
  color: #fff !important;
  border-color: var(--lsp-green) !important;
}

/* Bouton "+" et actions rouges qui restaient bleus */
.btn.btn-primary, button.btn-primary, .btn-primary {
  background: var(--lsp-green) !important;
  border-color: var(--lsp-green) !important;
  color: #fff !important;
}

/* Éléments de progression bleus (barres, ronds, badges) */
.progress-bar-fill,
.pillar-bar,
.dot.on-4 {
  background: var(--lsp-green) !important;
}

/* Standings card équipe LSCA highlight */
.standings-table tr.our-team {
  background: rgba(0, 150, 64, 0.08) !important;
}
.standings-table tr.our-team td {
  color: var(--lsp-green-dark) !important;
  font-weight: 600 !important;
}

/* Cellules chart nombres bleus */
.stat-value.blue,
[style*="color:#009640"],
[style*="color: #009640"] {
  color: var(--lsp-green-dark) !important;
}

/* Hero d'accueil : le fond était encore bleu ? Sécurité */
.dashboard-shell > .dashboard-hero,
.dashboard-hero {
  background: var(--rd-surface) !important;
  color: var(--rd-text) !important;
}
.dashboard-hero h1 {
  color: var(--rd-text) !important;
  background: none !important;
  -webkit-text-fill-color: initial !important;
}
.dashboard-hero p { color: var(--rd-text-muted) !important; }

/* Onglet actif nav-cat : cas spécial pour certains data-view qui avaient des surcharges */
.nav-cat.on,
.nav-cat.on[data-view="weekly"],
.nav-cat.on[data-view="plan"],
.nav-cat.on[data-view="bilans"],
.nav-cat.on[data-view="analyses"],
.nav-cat.on[data-view="direction"] {
  background: var(--rd-accent-soft) !important;
  color: var(--lsp-green-dark) !important;
  box-shadow: none !important;
}

/* Focus rings partout en vert */
*:focus-visible {
  outline-color: var(--lsp-green) !important;
}
input:focus, select:focus, textarea:focus {
  outline: none !important;
  border-color: var(--lsp-green) !important;
  box-shadow: 0 0 0 3px rgba(0, 150, 64, 0.15) !important;
}

/* ═══════════════════════════════════════════════════════════════════════
   💚 SWAP CIBLÉ VUE JOUEUR + CARTES + BILAN
   ═══════════════════════════════════════════════════════════════════════ */

/* Fiche joueur — hero et actions */
.player-hero,
.player-view .hero-actions,
.player-view .btn,
.hero-actions .btn {
  border-color: var(--lsp-green) !important;
}
.player-hero .btn-primary,
.hero-actions .btn-primary,
.player-view .btn-primary {
  background: var(--lsp-green) !important;
  border-color: var(--lsp-green) !important;
  color: #fff !important;
}
.player-hero .btn:not(.btn-primary):not(.btn-ghost),
.hero-actions .btn:not(.btn-primary):not(.btn-ghost) {
  background: var(--rd-surface) !important;
  color: var(--lsp-green-dark) !important;
  border: 1px solid rgba(0, 150, 64, 0.3) !important;
}
.player-hero .btn:not(.btn-primary):not(.btn-ghost):hover,
.hero-actions .btn:not(.btn-primary):not(.btn-ghost):hover {
  background: var(--rd-accent-soft) !important;
  border-color: var(--lsp-green) !important;
}

/* Onglets piliers — priorité absolue, même sur inline style */
.pillar-nav .ptab.on,
.player-view .ptab.on {
  background: var(--lsp-green) !important;
  color: #fff !important;
  border-color: var(--lsp-green) !important;
  box-shadow: 0 2px 6px rgba(0, 150, 64, 0.25) !important;
}
.pillar-nav .ptab,
.player-view .ptab {
  border: 1px solid transparent !important;
  transition: all 0.15s !important;
}

/* Sidebar : cartes joueurs (.pli) */
.player-list .pli,
.player-list .player-row {
  border: 1px solid transparent !important;
  transition: all 0.12s !important;
}
.player-list .pli:hover,
.player-list .player-row:hover {
  background: var(--rd-accent-soft) !important;
  border-color: rgba(0, 150, 64, 0.15) !important;
}
.player-list .pli.on,
.player-list .player-row.on {
  background: var(--lsp-green) !important;
  color: #fff !important;
  border-color: var(--lsp-green) !important;
  font-weight: 500 !important;
}
.player-list .pli.on *,
.player-list .player-row.on * {
  color: #fff !important;
}

/* Score badges dans les cartes joueur */
.pli-score,
.pli-badge,
.player-score-badge {
  background: var(--rd-accent-soft) !important;
  color: var(--lsp-green-dark) !important;
  border-color: transparent !important;
}
.player-list .pli.on .pli-score,
.player-list .pli.on .pli-badge {
  background: rgba(255, 255, 255, 0.2) !important;
  color: #fff !important;
}

/* Radar & progression : filaire vert */
.progress-bar-fill,
.pillar-bar-fill,
.progress-fill,
.bar-fill {
  background: var(--lsp-green) !important;
}

/* Dots des évaluations (1-4) */
.dot.on-1 { background: #fee2e2 !important; color: #7f1d1d !important; }
.dot.on-2 { background: #fed7aa !important; color: #7c2d12 !important; }
.dot.on-3 { background: #d9f99d !important; color: #365314 !important; }
.dot.on-4 { background: var(--lsp-green) !important; color: #fff !important; }

/* Bouton "+ Ajouter objectif" */
.add-obj {
  background: var(--rd-surface) !important;
  border: 1px dashed rgba(0, 150, 64, 0.4) !important;
  color: var(--lsp-green-dark) !important;
}
.add-obj:hover {
  background: var(--rd-accent-soft) !important;
  border-style: solid !important;
}

/* Champs texte comments joueur */
.crit-comment,
.main-comment,
.self-comment {
  border: 1px solid var(--rd-border-strong) !important;
}
.crit-comment:focus,
.main-comment:focus,
.self-comment:focus {
  border-color: var(--lsp-green) !important;
  box-shadow: 0 0 0 3px rgba(0, 150, 64, 0.12) !important;
}

/* Compare select dropdown */
#compare-select,
select#compare-select {
  border: 1px solid var(--rd-border-strong) !important;
}
#compare-select:focus {
  border-color: var(--lsp-green) !important;
}

/* Bilan PDF — tout ce qui est action bilan */
[data-action="print-report"],
.btn-print-report,
.bilan-action {
  background: var(--lsp-green) !important;
  color: #fff !important;
  border-color: var(--lsp-green) !important;
}
[data-action="print-report"]:hover,
.btn-print-report:hover {
  background: var(--lsp-green-dark) !important;
}

/* Section Objectifs + Photos — headers */
.form-section-title {
  color: var(--rd-text) !important;
  border-bottom: 2px solid rgba(0, 150, 64, 0.15) !important;
}

/* Filtres sidebar (chips "Tous / Évalués / Non évalués") */
.sb-filters .chip.on,
.sb-filters .filter-chip.on,
.sb-filters button.on {
  background: var(--lsp-green) !important;
  color: #fff !important;
  border-color: var(--lsp-green) !important;
}

/* Card kickers */
.card-kicker { color: var(--rd-text-light) !important; }

/* Bandeau infos scrape */
.dash-hero-main .dash-identity-badge,
.dash-identity-badge {
  background: var(--lsp-green) !important;
  color: #fff !important;
  border: none !important;
}

/* Actions cards blessures / assiduité (widgets) */
.att-card .btn-primary,
.injury-card .btn-primary,
.detail-card .btn-primary {
  background: var(--lsp-green) !important;
  border-color: var(--lsp-green) !important;
}

/* Player weekly card (widget "Cette semaine" repliable) */
.player-weekly-card {
  background: linear-gradient(135deg, #f0f9f2 0%, #ffffff 100%) !important;
  border: 1px solid rgba(0, 150, 64, 0.15) !important;
}
.player-weekly-avg {
  background: var(--lsp-green) !important;
  color: #fff !important;
}

/* ═══════════════════════════════════════════════════════════════════════
   💚 Hero joueur + Hero équipe : suppression du bandeau bleu massif
   ═══════════════════════════════════════════════════════════════════════ */

/* Fiche joueur — bandeau du haut (nom + photo) */
.player-hero,
.player-view .player-hero,
.player-hero-wrapper {
  background: var(--rd-surface) !important;
  background-image: none !important;
  color: var(--rd-text) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-lg) !important;
  box-shadow: var(--rd-shadow-sm) !important;
  position: relative;
  overflow: hidden;
  padding: 24px 28px !important;
}
.player-hero::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--lsp-green) 0%, var(--lsp-green-dark) 100%);
}
.player-hero *,
.player-hero h1,
.player-hero h2,
.player-hero .player-name,
.player-hero .player-title {
  color: var(--rd-text) !important;
}
.player-hero .player-subtitle,
.player-hero p {
  color: var(--rd-text-muted) !important;
}
/* Chips dans le hero joueur */
.player-hero .chip,
.player-hero .badge,
.player-hero .tag,
.player-hero span.pill {
  background: var(--rd-bg-soft) !important;
  color: var(--rd-text-muted) !important;
  border: 1px solid var(--rd-border) !important;
  padding: 4px 10px !important;
  border-radius: 999px !important;
  font-size: 12px !important;
  font-weight: 500 !important;
}
/* Boutons hero-actions : outline vert */
.player-hero .btn,
.hero-actions .btn {
  background: var(--rd-surface) !important;
  color: var(--rd-text) !important;
  border: 1px solid var(--rd-border-strong) !important;
}
.player-hero .btn:hover,
.hero-actions .btn:hover {
  background: var(--rd-accent-soft) !important;
  border-color: var(--lsp-green) !important;
  color: var(--lsp-green-dark) !important;
}
/* Photo joueur placeholder */
.player-photo-placeholder,
.photo-placeholder {
  background: var(--rd-bg-soft) !important;
  color: var(--rd-text-muted) !important;
  border: 2px dashed rgba(0, 150, 64, 0.3) !important;
}

/* Vue Équipes — hero "X équipes" */
.team-hero,
.team-list-hero,
.category-hero,
.dashboard-shell > .dashboard-hero + .team-hero {
  background: var(--rd-surface) !important;
  background-image: none !important;
  color: var(--rd-text) !important;
  border: 1px solid var(--rd-border) !important;
  border-radius: var(--rd-r-lg) !important;
  box-shadow: var(--rd-shadow-sm) !important;
  position: relative;
  overflow: hidden;
  padding: 24px 28px !important;
}
.team-hero::before,
.team-list-hero::before,
.category-hero::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--lsp-green) 0%, var(--lsp-green-dark) 100%);
}
.team-hero h1,
.team-hero h2,
.team-hero p,
.category-hero h1,
.category-hero h2,
.category-hero p,
.team-list-hero *,
.team-hero * {
  color: var(--rd-text) !important;
  background: none !important;
  -webkit-text-fill-color: initial !important;
}
.team-hero p,
.category-hero p { color: var(--rd-text-muted) !important; }

/* Card équipe individuelles (U13 A, U13 B, U12, etc.) — pastilles chiffres */
.team-card .stat,
.team-card [class*="stat"] {
  background: var(--rd-bg-soft) !important;
}

/* Boutons pilule chips équipes en bas (U13 U11 U9) */
.view-chip,
.cat-chip {
  border-radius: 999px !important;
  padding: 6px 14px !important;
  border: 1px solid var(--rd-border-strong) !important;
  background: var(--rd-surface) !important;
  color: var(--rd-text-muted) !important;
  font-weight: 500 !important;
}
.view-chip.on,
.cat-chip.on {
  background: var(--lsp-green) !important;
  color: #fff !important;
  border-color: var(--lsp-green) !important;
}

/* Bouton Retour catégorie */
.btn-back,
[data-action="back-teams"],
[data-action="back-team-list"] {
  background: var(--rd-surface) !important;
  color: var(--rd-text) !important;
  border: 1px solid var(--rd-border-strong) !important;
}
.btn-back:hover,
[data-action="back-teams"]:hover {
  background: var(--rd-accent-soft) !important;
  border-color: var(--lsp-green) !important;
  color: var(--lsp-green-dark) !important;
}

/* Tous les containers qui ont un gradient bleu direct (fallback inline) */
[style*="linear-gradient(135deg, #009640"],
[style*="linear-gradient(135deg,#009640"],
[style*="background: #009640"],
[style*="background:#009640"],
[style*="background-color:#009640"],
[style*="background-color: #009640"] {
  background: var(--rd-surface) !important;
  color: var(--rd-text) !important;
}

/* Menu ⋯ : positionnement à droite pour ne pas recouvrir les boutons hero */
.nav-right { position: relative; }
.more-menu {
  position: absolute !important;
  top: calc(100% + 8px) !important;
  right: 0 !important;
  left: auto !important;
  min-width: 220px;
  z-index: 200 !important;
}

/* Chip "Installer l'application" en permanence dans la nav */
.install-chip {
  background: linear-gradient(135deg, #009640 0%, #007a34 100%) !important;
  color: #fff !important;
  border: none !important;
  font-weight: 600 !important;
  padding: 8px 14px !important;
  border-radius: 999px !important;
  box-shadow: 0 2px 6px rgba(0, 150, 64, 0.25) !important;
  transition: all 0.15s !important;
}
.install-chip:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 150, 64, 0.35) !important;
}

/* Menu ⋯ : mieux dimensionné (plus petit vu qu'il ne contient que 2 items) */
.more-menu {
  min-width: 180px !important;
  padding: 4px !important;
}

/* Mobile : cacher le mot "Installer" et ne garder que 📱 */
@media (max-width: 480px) {
  .install-chip {
    font-size: 0 !important;
    padding: 8px 12px !important;
  }
  .install-chip::before {
    content: '📱';
    font-size: 16px;
  }
}

/* ══════════════════════════════════════════════════════════════════
   Reprise de saison — overlay
   ══════════════════════════════════════════════════════════════════ */

.stx-overlay {
  position: fixed; inset: 0; z-index: 9500;
  background: rgba(15, 23, 42, 0.5);
  backdrop-filter: blur(4px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 24px 20px;
}
body.season-transition-active { overflow: hidden; }

.stx-shell {
  max-width: 900px;
  margin: 0 auto;
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  overflow: hidden;
  border-top: 4px solid #009640;
}

.stx-head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 20px 24px;
  border-bottom: 1px solid #f3f4f6;
}
.stx-close {
  width: 36px; height: 36px;
  border-radius: 50%;
  border: none;
  background: #f3f4f6;
  cursor: pointer;
  font-size: 20px;
  color: #666;
  flex-shrink: 0;
}
.stx-close:hover { background: #e5e7eb; }

.stx-title h2 {
  margin: 0 0 4px;
  font-size: 20px;
  font-weight: 700;
  color: #0f172a;
  letter-spacing: -0.01em;
}
.stx-title p {
  margin: 0;
  color: #64748b;
  font-size: 13px;
}
.stx-title strong { color: #009640; }

.stx-summary {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
  padding: 16px 24px;
  background: #f9fafb;
  border-bottom: 1px solid #f3f4f6;
}
.stx-stat {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 10px;
  text-align: center;
}
.stx-stat-val { font-size: 22px; font-weight: 700; color: #0f172a; line-height: 1; }
.stx-stat-lbl { font-size: 10px; color: #64748b; text-transform: uppercase; letter-spacing: 0.05em; margin-top: 4px; font-weight: 600; }
.stx-stat-ok { border-color: #009640; background: #e8f5ec; }
.stx-stat-ok .stx-stat-val { color: #006e2f; }
.stx-stat-up { border-color: #2563eb; background: #eff6ff; }
.stx-stat-up .stx-stat-val { color: #1e40af; }
.stx-stat-out { border-color: #dc2626; background: #fee2e2; }
.stx-stat-out .stx-stat-val { color: #991b1b; }
.stx-stat-in { border-color: #d97706; background: #fef3c7; }
.stx-stat-in .stx-stat-val { color: #92400e; }

.stx-section {
  padding: 16px 24px;
  border-bottom: 1px solid #f3f4f6;
}
.stx-section-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
  flex-wrap: wrap;
  gap: 8px;
}
.stx-section-head h3 {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  color: #0f172a;
}
.stx-count {
  display: inline-block;
  background: #f3f4f6;
  color: #64748b;
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 999px;
  margin-left: 6px;
  font-weight: 600;
}
.stx-bulk { display: flex; gap: 6px; }
.stx-bulk .btn { font-size: 11px; padding: 4px 10px; }

.stx-empty {
  padding: 20px;
  text-align: center;
  color: #94a3b8;
  font-style: italic;
  font-size: 13px;
}

.stx-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 400px;
  overflow-y: auto;
}
.stx-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 12px;
  background: #fff;
  border: 1px solid #f3f4f6;
  border-radius: 8px;
  transition: all 0.12s;
}
.stx-row:hover { border-color: #e5e7eb; background: #f9fafb; }
.stx-row-stay { border-left: 3px solid #009640; }
.stx-row-up   { border-left: 3px solid #2563eb; }
.stx-row-leave { border-left: 3px solid #dc2626; opacity: 0.6; }

.stx-row-name { flex: 1; font-weight: 500; font-size: 13px; color: #0f172a; }
.stx-row-actions { display: flex; gap: 4px; flex-shrink: 0; }

.stx-btn {
  padding: 5px 12px;
  border-radius: 6px;
  border: 1px solid #e5e7eb;
  background: #fff;
  cursor: pointer;
  font-size: 12px;
  font-weight: 500;
  color: #64748b;
  transition: all 0.12s;
}
.stx-btn:hover { border-color: #cbd5e1; color: #0f172a; }
.stx-btn.on.stay { background: #009640; border-color: #009640; color: #fff; }
.stx-btn.on.up { background: #2563eb; border-color: #2563eb; color: #fff; }
.stx-btn.on.leave { background: #dc2626; border-color: #dc2626; color: #fff; }

.stx-list-promote { max-height: 300px; }
.stx-promote-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: #fff;
  border: 1px solid #f3f4f6;
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
  transition: all 0.12s;
}
.stx-promote-row:hover { border-color: #d97706; background: #fefce8; }
.stx-promote-row.on { border-color: #d97706; background: #fef3c7; }
.stx-promote-row input { margin: 0; flex-shrink: 0; }
.stx-promote-row span { flex: 1; color: #0f172a; font-weight: 500; }
.stx-promote-from { font-size: 10px; color: #64748b; font-weight: 600; text-transform: uppercase; }

.stx-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 24px;
  background: #f9fafb;
  border-top: 1px solid #f3f4f6;
  gap: 12px;
  flex-wrap: wrap;
}
.stx-footer-summary { color: #0f172a; font-size: 13px; }
.stx-footer-summary strong { color: #009640; font-size: 16px; font-weight: 700; }
.stx-footer-actions { display: flex; gap: 8px; }

@media (max-width: 640px) {
  .stx-summary { grid-template-columns: repeat(2, 1fr); }
  .stx-row-actions { flex-wrap: wrap; }
  .stx-btn { flex: 1; }
}

/* ══════════════════════════════════════════════════════════════════
   Sidebar sticky + scroll interne + index alphabétique
   ══════════════════════════════════════════════════════════════════ */

/* Sidebar : hauteur = viewport moins topnav, scroll interne */
.main-layout .sidebar {
  position: sticky !important;
  top: 60px !important; /* hauteur topnav */
  height: calc(100vh - 60px) !important;
  align-self: start;
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
  padding-right: 24px !important; /* place pour l'index alpha */
  position: relative !important;
}

/* Sticky header dans la sidebar (search + count + actions) */
.sidebar .sb-head {
  position: sticky !important;
  top: 0 !important;
  z-index: 5;
  background: var(--rd-bg, #f9f8f4) !important;
  border-bottom: 1px solid var(--rd-border, rgba(15,23,42,0.06)) !important;
  padding-bottom: 12px !important;
  margin-bottom: 4px !important;
  flex-shrink: 0;
}

/* Filtres aussi sticky, juste sous le head */
.sidebar .sb-filters {
  position: sticky !important;
  top: 0 !important;
  z-index: 4;
  background: var(--rd-bg, #f9f8f4);
  padding: 8px 12px !important;
  border-bottom: 1px solid var(--rd-border, rgba(15,23,42,0.06));
  flex-shrink: 0;
}

/* Liste joueurs : prend le reste, scroll indépendant */
.sidebar .player-list {
  flex: 1 !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  padding: 4px 4px 40px !important;
  scroll-behavior: smooth;
  min-height: 0;
}

/* Boutons d'action sidebar : plus compact + wrap responsive */
.sb-actions {
  display: flex !important;
  gap: 4px !important;
  flex-wrap: wrap !important;
  margin-top: 8px;
}
.sb-action-btn {
  flex: 1 1 auto !important;
  padding: 6px 10px !important;
  font-size: 12px !important;
  white-space: nowrap !important;
  min-width: 0 !important;
}

/* Flash au scroll-to-alpha */
.pli-flash {
  animation: pli-flash-anim 0.9s ease-out;
}
@keyframes pli-flash-anim {
  0%   { background: rgba(0, 150, 64, 0.35) !important; }
  100% { background: transparent; }
}

/* ── Index alphabétique à droite de la sidebar ── */
.sb-alpha-index {
  position: absolute !important;
  top: 220px; /* sous le header + filtres */
  right: 4px;
  bottom: 20px;
  width: 18px;
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  z-index: 3;
  pointer-events: auto;
}
.alpha-btn {
  border: none;
  background: transparent;
  color: var(--rd-text-muted, #64748b);
  font-size: 9px;
  font-weight: 700;
  padding: 0;
  cursor: pointer;
  line-height: 1.1;
  transition: color 0.1s;
  font-family: 'Outfit', sans-serif;
}
.alpha-btn.on { color: #009640; }
.alpha-btn.off { color: rgba(100, 116, 139, 0.3); cursor: not-allowed; }
.alpha-btn:hover:not(:disabled) {
  color: #006e2f;
  transform: scale(1.4);
}

/* Sur mobile / vue non-Joueur, on cache l'index (pas de sidebar visible) */
.main-layout.no-sidebar .sb-alpha-index { display: none; }
@media (max-width: 768px) {
  .sb-alpha-index { display: none; }
  .main-layout .sidebar { padding-right: 0 !important; }
}

/* Ajuster l'offset top du index alpha selon la présence de filtres */
@media (min-width: 769px) {
  .sb-alpha-index {
    top: 260px;
  }
}

/* Retirer l'index alphabétique (trop chargé) */
.sb-alpha-index { display: none !important; }

/* Compacter la sidebar : retirer l'espace blanc en haut */
.main-layout .sidebar {
  padding-top: 0 !important;
  padding-right: 0 !important;
}
.sidebar .sb-head {
  padding-top: 12px !important;
  padding-bottom: 8px !important;
  margin-bottom: 0 !important;
}
.sidebar .sb-search-wrap {
  margin-bottom: 6px !important;
}
.sidebar .sb-meta {
  margin-bottom: 6px !important;
  font-size: 12px !important;
}
.sidebar .sb-filters {
  padding: 6px 12px !important;
}
.sidebar .player-list {
  padding-top: 4px !important;
}

/* Retirer l'espace vertical entre la topnav et le début de la sidebar */
.main-layout {
  padding-top: 0 !important;
  margin-top: 0 !important;
}
.main-layout .sidebar {
  top: 0 !important;
  padding-top: 0 !important;
}
.sidebar .sb-head {
  padding-top: 8px !important;
}

/* Retirer TOUS les espaces vides entre topnav et sidebar/main-content */
.main-layout {
  padding: 0 !important;
  margin: 0 !important;
}
.main-layout > .sidebar {
  padding: 0 !important;
  margin: 0 !important;
  top: 0 !important; /* pas d'offset sticky, la topnav est déjà sticky */
}
.main-layout > .main-content {
  padding-top: 0 !important;
}
/* Le contenu interne de la sidebar peut garder un léger padding */
.sidebar .sb-head {
  padding: 12px 12px 8px !important;
  margin: 0 !important;
}

/* ══════════════════════════════════════════════════════════════════
   Mode Terrain — améliorations (undo, plein soleil, recherche, XL)
   ══════════════════════════════════════════════════════════════════ */

/* Head actions : groupe de boutons à droite */
.live-head-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}

.live-icon-btn {
  width: 40px; height: 40px;
  border-radius: 10px;
  border: none;
  background: rgba(255, 255, 255, 0.15);
  color: #fff;
  font-size: 20px;
  cursor: pointer;
  transition: all 0.15s;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.live-icon-btn:hover:not(:disabled) { background: rgba(255, 255, 255, 0.28); transform: translateY(-1px); }
.live-icon-btn.on { background: #fbbf24; color: #78350f; }
.live-icon-btn.is-disabled, .live-icon-btn:disabled { opacity: 0.35; cursor: not-allowed; }

/* Barre outils (search + legend) */
.live-toolbar {
  display: flex;
  gap: 10px;
  padding: 10px 16px;
  background: #fff;
  border-bottom: 1px solid #e5e7eb;
  align-items: center;
  flex-wrap: wrap;
}
.live-search {
  flex: 1;
  min-width: 200px;
  padding: 10px 14px;
  border-radius: 999px;
  border: 1px solid #e5e7eb;
  background: #f9fafb;
  font-size: 14px;
  font-family: 'Outfit', sans-serif;
}
.live-search:focus {
  outline: none;
  border-color: #009640;
  background: #fff;
  box-shadow: 0 0 0 3px rgba(0, 150, 64, 0.12);
}
.live-toolbar .live-legend {
  padding: 0;
  background: transparent;
  border: none;
  gap: 8px;
}

/* Tuiles agrandies par défaut */
.live-grid {
  padding: 14px;
  gap: 12px;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
}
.live-tile {
  padding: 12px;
  border-radius: 14px;
  border: 1px solid #e5e7eb;
}
.live-tile-name { font-size: 15px !important; }
.live-tile-actions .live-btn {
  height: 52px;
  font-size: 22px;
  border-width: 2px;
}
.live-empty {
  grid-column: 1 / -1;
  text-align: center;
  padding: 40px 20px;
  color: #94a3b8;
  font-style: italic;
}

/* ── MODE PLEIN SOLEIL — fond sombre, boutons XL, textes agrandis ── */
.live-overlay-sun {
  background: #0f172a;
}
.live-overlay-sun .live-shell { background: #0f172a; }
.live-overlay-sun .live-head {
  background: linear-gradient(135deg, #000 0%, #1a1a1a 100%);
  border-bottom: 2px solid #009640;
}
.live-overlay-sun .live-cat { font-size: 18px; }
.live-overlay-sun .live-week { font-size: 13px; }

.live-overlay-sun .live-toolbar {
  background: #1a1a1a;
  border-bottom: 1px solid #333;
}
.live-overlay-sun .live-search {
  background: #262626;
  border-color: #444;
  color: #fff;
  font-size: 16px;
}
.live-overlay-sun .live-search::placeholder { color: #999; }
.live-overlay-sun .live-legend { color: #eaeaea; font-size: 13px; }

.live-overlay-sun .live-tile {
  background: #1a1a1a;
  border: 2px solid #333;
}
.live-overlay-sun .live-tile-name { color: #fff; font-size: 17px; font-weight: 700; }
.live-overlay-sun .live-tile-last { color: #fff; font-size: 18px; }

.live-overlay-sun .live-tile-actions .live-btn {
  height: 64px;
  font-size: 28px;
  border-width: 3px;
  background: #262626;
  color: #fff;
}
.live-overlay-sun .live-btn-plus { border-color: #22c55e !important; }
.live-overlay-sun .live-btn-plus:hover { background: rgba(34, 197, 94, 0.2); }
.live-overlay-sun .live-btn-minus { border-color: #ef4444 !important; }
.live-overlay-sun .live-btn-minus:hover { background: rgba(239, 68, 68, 0.2); }
.live-overlay-sun .live-btn-note { border-color: #f59e0b !important; }
.live-overlay-sun .live-btn-note:hover { background: rgba(245, 158, 11, 0.2); }

.live-overlay-sun .live-stat { font-size: 13px; padding: 2px 10px; }
.live-overlay-sun .live-stat-plus { background: #14532d; color: #86efac; }
.live-overlay-sun .live-stat-minus { background: #7f1d1d; color: #fca5a5; }
.live-overlay-sun .live-stat-note { background: #78350f; color: #fcd34d; }

.live-overlay-sun .live-summary {
  background: #1a1a1a;
  border-top: 2px solid #333;
  color: #fff;
}
.live-overlay-sun .live-sum { font-size: 15px; padding: 6px 14px; }
.live-overlay-sun .live-empty { color: #666; }

/* Grille encore plus lisible en plein soleil */
.live-overlay-sun .live-grid {
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 14px;
  padding: 16px;
}

/* Mobile */
@media (max-width: 640px) {
  .live-search { min-width: 140px; }
  .live-toolbar { padding: 8px 12px; gap: 6px; }
  .live-icon-btn { width: 36px; height: 36px; font-size: 18px; }
}

/* ══════════════════════════════════════════════════════════════════
   Mode Terrain — Onglets + Vue Jonglerie + Placeholder Ressenti
   ══════════════════════════════════════════════════════════════════ */

.live-tabs {
  display: flex;
  gap: 2px;
  background: #fff;
  padding: 6px 12px 0;
  border-bottom: 2px solid #e5e7eb;
  overflow-x: auto;
}
.live-tab {
  border: none;
  background: transparent;
  padding: 12px 20px;
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  font-weight: 500;
  color: #64748b;
  cursor: pointer;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  white-space: nowrap;
  transition: all 0.15s;
}
.live-tab:hover { color: #0f172a; background: #f9fafb; }
.live-tab.on {
  color: #009640;
  border-bottom-color: #009640;
  font-weight: 600;
}

/* Mode plein soleil : onglets sombres */
.live-overlay-sun .live-tabs { background: #1a1a1a; border-bottom-color: #333; }
.live-overlay-sun .live-tab { color: #94a3b8; font-size: 15px; }
.live-overlay-sun .live-tab:hover { color: #fff; background: #262626; }
.live-overlay-sun .live-tab.on { color: #22c55e; border-bottom-color: #22c55e; }

/* ── Vue Jonglerie ── */
.live-juggle-legend {
  font-size: 11px;
  color: #64748b;
  font-style: italic;
}
.live-juggle-list {
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.live-juggle-row {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  padding: 12px 14px;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 10px 14px;
  align-items: center;
}
.live-juggle-name {
  font-weight: 600;
  font-size: 15px;
  color: #0f172a;
  min-width: 140px;
}
.live-juggle-inputs {
  display: flex;
  gap: 8px;
  align-items: center;
}
.live-juggle-input-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  position: relative;
}
.live-juggle-lbl {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #64748b;
}
.live-juggle-input {
  width: 76px;
  padding: 10px 8px;
  font-size: 18px;
  font-weight: 700;
  text-align: center;
  border-radius: 10px;
  border: 2px solid #e5e7eb;
  background: #f9fafb;
  font-family: 'Outfit', sans-serif;
  color: #0f172a;
  transition: all 0.12s;
}
.live-juggle-input:focus {
  outline: none;
  border-color: #009640;
  background: #fff;
  box-shadow: 0 0 0 3px rgba(0, 150, 64, 0.15);
}
.live-juggle-input::placeholder { color: #cbd5e1; font-weight: 500; }
.live-juggle-trend {
  position: absolute;
  right: -8px;
  top: 26px;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 999px;
  background: #f3f4f6;
  color: #64748b;
}
.live-juggle-trend.trend-up { background: #dcfce7; color: #166534; }
.live-juggle-trend.trend-down { background: #fee2e2; color: #991b1b; }
.live-juggle-trend.trend-flat { background: #f3f4f6; color: #64748b; }
.live-juggle-last {
  grid-column: 1 / -1;
  font-size: 11px;
  color: #94a3b8;
  font-style: italic;
  border-top: 1px dashed #f3f4f6;
  padding-top: 6px;
  margin-top: 2px;
}

/* Mode plein soleil : jonglerie */
.live-overlay-sun .live-juggle-row {
  background: #1a1a1a;
  border-color: #333;
}
.live-overlay-sun .live-juggle-name { color: #fff; font-size: 17px; }
.live-overlay-sun .live-juggle-lbl { color: #94a3b8; }
.live-overlay-sun .live-juggle-input {
  background: #262626;
  border-color: #444;
  color: #fff;
  font-size: 22px;
  width: 90px;
  padding: 14px 8px;
}
.live-overlay-sun .live-juggle-input:focus {
  background: #333;
  border-color: #22c55e;
  box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.25);
}
.live-overlay-sun .live-juggle-last { color: #666; }
.live-overlay-sun .live-juggle-legend { color: #94a3b8; }

/* ── Placeholder Ressenti ── */
.live-placeholder {
  padding: 60px 24px;
  text-align: center;
  color: #64748b;
  max-width: 500px;
  margin: 0 auto;
}
.live-placeholder-icon {
  font-size: 56px;
  margin-bottom: 12px;
  opacity: 0.6;
}
.live-placeholder h3 {
  color: #0f172a;
  font-size: 20px;
  font-weight: 700;
  margin-bottom: 10px;
}
.live-placeholder p {
  font-size: 14px;
  line-height: 1.6;
  margin: 8px 0;
}
.live-placeholder ul {
  text-align: left;
  display: inline-block;
  margin: 12px 0;
  padding-left: 22px;
}
.live-placeholder ul li { margin: 4px 0; font-size: 14px; }
.live-placeholder-hint {
  font-style: italic;
  color: #94a3b8;
  font-size: 13px;
  margin-top: 20px;
}
.live-overlay-sun .live-placeholder,
.live-overlay-sun .live-placeholder p { color: #cbd5e1; }
.live-overlay-sun .live-placeholder h3 { color: #fff; }
.live-overlay-sun .live-placeholder-hint { color: #64748b; }

/* Mobile : layout jonglerie en colonne */
@media (max-width: 640px) {
  .live-juggle-row { grid-template-columns: 1fr; }
  .live-juggle-inputs { justify-content: space-around; }
  .live-juggle-input { width: 68px; font-size: 16px; }
}

/* ══════════════════════════════════════════════════════════════════
   Mode Terrain V2 — Bouton Présents + Modal + Onglet Objectifs
   ══════════════════════════════════════════════════════════════════ */

/* Bouton Présents dans le header */
.live-presents-btn {
  background: rgba(255, 255, 255, 0.18);
  color: #fff;
  border: none;
  padding: 8px 14px;
  border-radius: 999px;
  cursor: pointer;
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  font-weight: 600;
  transition: all 0.15s;
}
.live-presents-btn:hover { background: rgba(255,255,255,0.28); transform: translateY(-1px); }
.live-presents-btn.has-selection { background: rgba(34, 197, 94, 0.35); }

/* Modal Présents */
.live-present-picker {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.65);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  backdrop-filter: blur(4px);
}
.live-present-box {
  background: #fff;
  border-radius: 16px;
  max-width: 500px;
  width: 100%;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: 0 20px 60px rgba(0,0,0,0.4);
}
.live-present-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 20px;
  border-bottom: 1px solid #e5e7eb;
}
.live-present-head h3 { margin: 0; font-size: 17px; font-weight: 700; color: #0f172a; }
.live-present-head .live-close {
  background: #f3f4f6;
  border: none;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  font-size: 18px;
  cursor: pointer;
  color: #64748b;
}
.live-present-bulk {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  background: #f9fafb;
  border-bottom: 1px solid #e5e7eb;
  font-size: 13px;
  color: #64748b;
}
.live-present-bulk span { flex: 1; font-weight: 600; color: #0f172a; }
.live-present-bulk .btn { padding: 4px 10px; font-size: 11px; }

.live-present-list {
  overflow-y: auto;
  padding: 8px 12px;
  flex: 1;
}
.live-present-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.1s;
  font-size: 14px;
  color: #0f172a;
}
.live-present-row:hover { background: #f9fafb; }
.live-present-row.on { background: #e8f5ec; color: #006e2f; font-weight: 500; }
.live-present-row input { margin: 0; width: 18px; height: 18px; accent-color: #009640; }

.live-present-foot {
  padding: 12px 20px;
  border-top: 1px solid #e5e7eb;
  display: flex;
  justify-content: flex-end;
}

/* ── Objectifs séance ── */

.live-obj-summary {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  padding: 12px 16px;
  background: #f9fafb;
  border-bottom: 1px solid #e5e7eb;
}
.live-obj-stat {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 10px;
  text-align: center;
}
.live-obj-stat strong {
  display: block;
  font-size: 20px;
  font-weight: 700;
  color: #009640;
  line-height: 1;
}
.live-obj-stat span {
  display: block;
  font-size: 10px;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 600;
  margin-top: 4px;
}

.live-obj-list {
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.live-obj-card {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  padding: 14px 16px;
  transition: all 0.15s;
}
.live-obj-card.is-acquis {
  background: linear-gradient(135deg, #e8f5ec 0%, #f0fdf4 100%);
  border-color: #86efac;
}

.live-obj-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 8px;
  margin-bottom: 12px;
}
.live-obj-title {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  flex: 1;
  font-weight: 600;
  font-size: 14px;
  color: #0f172a;
}
.live-obj-num {
  background: #009640;
  color: #fff;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
}
.live-obj-tag {
  background: #fef3c7;
  color: #92400e;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
}
.live-obj-rm {
  background: #f3f4f6;
  border: none;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  cursor: pointer;
  font-size: 16px;
  color: #64748b;
  padding: 0;
}
.live-obj-rm:hover { background: #fee2e2; color: #b91c1c; }

.live-obj-counters {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: 10px;
  margin-bottom: 12px;
  align-items: end;
}
.live-obj-counter {
  background: #f9fafb;
  border-radius: 10px;
  padding: 10px;
  text-align: center;
}
.live-obj-counter-val {
  font-size: 28px;
  font-weight: 700;
  color: #0f172a;
  line-height: 1;
}
.live-obj-counter-lbl {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #64748b;
  font-weight: 600;
  margin: 4px 0 8px;
}
.live-obj-counter-btns {
  display: flex;
  gap: 4px;
  justify-content: center;
}
.live-obj-btn {
  border: none;
  border-radius: 8px;
  padding: 8px 12px;
  cursor: pointer;
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  font-weight: 600;
  transition: all 0.1s;
}
.live-obj-btn.inc {
  background: #009640;
  color: #fff;
}
.live-obj-btn.inc:hover { background: #006e2f; transform: translateY(-1px); }
.live-obj-btn.inc.tentative { background: #d97706; }
.live-obj-btn.inc.tentative:hover { background: #b45309; }
.live-obj-btn.dec {
  background: #f3f4f6;
  color: #64748b;
  width: 32px;
  padding: 8px 0;
}
.live-obj-btn.dec:hover { background: #e5e7eb; color: #0f172a; }

.live-obj-ratio {
  padding: 10px 14px;
  border-radius: 10px;
  background: #f9fafb;
  text-align: center;
  min-width: 70px;
}
.live-obj-ratio-val { font-size: 22px; font-weight: 700; line-height: 1; }
.live-obj-ratio-lbl { font-size: 10px; text-transform: uppercase; color: #94a3b8; font-weight: 600; margin-top: 4px; }

.live-obj-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}
.live-obj-acquis-toggle {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: 999px;
  background: #f3f4f6;
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
  color: #64748b;
  transition: all 0.15s;
}
.live-obj-acquis-toggle:hover { background: #e5e7eb; }
.live-obj-acquis-toggle input { margin: 0; accent-color: #009640; }
.live-obj-card.is-acquis .live-obj-acquis-toggle {
  background: #009640;
  color: #fff;
}

.live-obj-note {
  flex: 1;
  min-width: 200px;
  padding: 6px 10px;
  border-radius: 8px;
  border: 1px solid #e5e7eb;
  background: #fff;
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
}

.live-obj-add {
  display: flex;
  gap: 8px;
  padding: 12px 16px;
  border-top: 1px solid #e5e7eb;
  background: #f9fafb;
}
.live-obj-add input {
  flex: 1;
  padding: 10px 14px;
  border-radius: 8px;
  border: 1px solid #e5e7eb;
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
}
.live-obj-add input:focus {
  outline: none;
  border-color: #009640;
  box-shadow: 0 0 0 3px rgba(0,150,64,0.12);
}

/* Mode plein soleil : objectifs */
.live-overlay-sun .live-obj-summary { background: #1a1a1a; border-color: #333; }
.live-overlay-sun .live-obj-stat { background: #262626; border-color: #444; }
.live-overlay-sun .live-obj-stat strong { color: #22c55e; }
.live-overlay-sun .live-obj-stat span { color: #94a3b8; }
.live-overlay-sun .live-obj-card { background: #1a1a1a; border-color: #333; }
.live-overlay-sun .live-obj-title { color: #fff; }
.live-overlay-sun .live-obj-counter { background: #262626; }
.live-overlay-sun .live-obj-counter-val { color: #fff; font-size: 32px; }
.live-overlay-sun .live-obj-counter-lbl { color: #94a3b8; }
.live-overlay-sun .live-obj-ratio { background: #262626; }
.live-overlay-sun .live-obj-btn.inc { font-size: 15px; padding: 10px 16px; }
.live-overlay-sun .live-obj-btn.dec { background: #333; color: #fff; }
.live-overlay-sun .live-obj-note { background: #262626; border-color: #444; color: #fff; }
.live-overlay-sun .live-obj-add { background: #1a1a1a; border-color: #333; }
.live-overlay-sun .live-obj-add input { background: #262626; border-color: #444; color: #fff; }
.live-overlay-sun .live-obj-acquis-toggle { background: #262626; color: #94a3b8; }
.live-overlay-sun .live-obj-card.is-acquis {
  background: #14532d;
  border-color: #22c55e;
}
.live-overlay-sun .live-obj-card.is-acquis .live-obj-title { color: #86efac; }

/* Mobile */
@media (max-width: 640px) {
  .live-obj-counters { grid-template-columns: 1fr 1fr; gap: 6px; }
  .live-obj-ratio { grid-column: 1 / -1; }
  .live-obj-summary { grid-template-columns: repeat(2, 1fr); }
  .live-present-box { max-height: 92vh; }
}

/* ══════════════════════════════════════════════════════════════════
   Objectif précis par principe (Semaine + Mode Terrain)
   ══════════════════════════════════════════════════════════════════ */

/* Chip principe en bloc (plus grand pour héberger l'objectif) */
.weekly-item-chip-block {
  flex-direction: column !important;
  align-items: stretch !important;
  padding: 10px 12px !important;
  gap: 6px !important;
}
.weekly-item-chip-top {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.weekly-item-objective {
  display: flex;
  align-items: center;
  gap: 6px;
  background: rgba(255, 255, 255, 0.6);
  border-radius: 6px;
  padding: 4px 8px;
  border: 1px dashed rgba(15, 23, 42, 0.15);
}
.weekly-item-chip-block.is-avec .weekly-item-objective { background: rgba(255,255,255,0.7); }
.weekly-item-chip-block.is-sans .weekly-item-objective { background: rgba(255,255,255,0.7); }
.weekly-item-obj-lbl {
  font-size: 10px;
  font-weight: 700;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  flex-shrink: 0;
}
.weekly-item-obj-input {
  flex: 1;
  border: none;
  background: transparent;
  padding: 2px 4px;
  font-size: 13px;
  font-weight: 500;
  color: #0f172a;
  font-family: 'Outfit', sans-serif;
  min-width: 100px;
}
.weekly-item-obj-input:focus {
  outline: none;
  background: #fff;
  border-radius: 4px;
  box-shadow: 0 0 0 2px rgba(0, 150, 64, 0.15);
}

/* Popup obligatoire pour objectif à l'ajout d'un principe */
.weekly-principle-popup {
  background: linear-gradient(135deg, #fef3c7 0%, #fef9c3 100%);
  border: 2px solid #f59e0b;
  border-radius: 12px;
  padding: 16px 20px;
  margin: 12px 0;
  box-shadow: 0 4px 12px rgba(245, 158, 11, 0.15);
}
.weekly-principle-popup-title {
  font-size: 15px;
  color: #78350f;
  margin-bottom: 6px;
}
.weekly-principle-popup-title strong { color: #78350f; }
.weekly-principle-popup-hint {
  font-size: 12px;
  color: #92400e;
  margin: 0 0 10px;
  line-height: 1.4;
}
.weekly-principle-popup-form {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}
.weekly-principle-popup-form input {
  flex: 1;
  min-width: 200px;
  padding: 10px 14px;
  border-radius: 8px;
  border: 1px solid #f59e0b;
  background: #fff;
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  font-weight: 500;
}
.weekly-principle-popup-form input:focus {
  outline: none;
  border-color: #d97706;
  box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.2);
}
.weekly-principle-popup-actions { display: flex; gap: 6px; }

/* Objectif dans Mode Terrain > Objectifs séance */
.live-obj-objective {
  background: #eff6ff;
  border-left: 3px solid #009640;
  padding: 8px 12px;
  border-radius: 8px;
  font-size: 13px;
  color: #0f172a;
  margin-bottom: 10px;
  font-weight: 500;
}
.live-overlay-sun .live-obj-objective {
  background: #1e3a5f;
  border-left-color: #22c55e;
  color: #e0f2fe;
  font-size: 14px;
}

/* Objectif dans PDF Bilan */
.pdf-principle-obj {
  font-size: 10px;
  color: #64748b;
  font-style: italic;
  margin-top: 2px;
}

/* ══════════════════════════════════════════════════════════════════
   Historique séances + Widget jonglerie fiche joueur
   ══════════════════════════════════════════════════════════════════ */

.sh-wrap { padding: 8px 0; }

.sh-empty {
  padding: 60px 24px;
  text-align: center;
  color: #64748b;
  background: #fff;
  border-radius: 12px;
  border: 1px dashed #e5e7eb;
}
.sh-empty-icon { font-size: 48px; margin-bottom: 12px; opacity: 0.5; }
.sh-empty h3 { color: #0f172a; font-size: 18px; margin-bottom: 6px; }

.sh-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-bottom: 18px;
}
.sh-stat {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  padding: 14px;
  text-align: center;
}
.sh-stat strong {
  display: block;
  font-size: 24px;
  font-weight: 700;
  color: #009640;
  line-height: 1;
}
.sh-stat span {
  display: block;
  font-size: 10px;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-top: 4px;
  font-weight: 600;
}

.sh-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sh-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  cursor: pointer;
  transition: all 0.15s;
}
.sh-row:hover {
  border-color: #009640;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 150, 64, 0.08);
}
.sh-row-date {
  min-width: 100px;
  flex-shrink: 0;
}
.sh-row-day {
  font-size: 16px;
  font-weight: 700;
  color: #009640;
}
.sh-row-full {
  font-size: 11px;
  color: #94a3b8;
  text-transform: capitalize;
}
.sh-row-stats {
  display: flex;
  gap: 20px;
  flex: 1;
  flex-wrap: wrap;
}
.sh-row-stat {
  display: flex;
  flex-direction: column;
}
.sh-row-stat strong {
  font-size: 16px;
  font-weight: 700;
  color: #0f172a;
  line-height: 1;
}
.sh-row-stat span {
  font-size: 10px;
  color: #64748b;
  margin-top: 3px;
}
.sh-row-arrow {
  font-size: 20px;
  color: #94a3b8;
  flex-shrink: 0;
}
.sh-row:hover .sh-row-arrow { color: #009640; }

/* Détail */
.sh-back {
  margin-bottom: 16px;
  font-size: 13px;
}
.sh-detail-head {
  background: linear-gradient(135deg, #e8f5ec 0%, #f0fdf4 100%);
  border-radius: 12px;
  padding: 18px 22px;
  margin-bottom: 18px;
  border-left: 4px solid #009640;
}
.sh-detail-head h2 {
  margin: 0 0 8px;
  font-size: 20px;
  color: #0f172a;
  text-transform: capitalize;
}
.sh-detail-meta {
  display: flex;
  gap: 14px;
  font-size: 13px;
  color: #64748b;
  flex-wrap: wrap;
}
.sh-detail-meta span { display: inline-flex; align-items: center; gap: 4px; }

.sh-section {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  padding: 16px 20px;
  margin-bottom: 12px;
}
.sh-section h3 {
  margin: 0 0 12px;
  font-size: 14px;
  color: #0f172a;
  font-weight: 700;
}
.sh-muted {
  color: #94a3b8;
  font-style: italic;
  font-size: 13px;
  margin: 8px 0;
}

.sh-presents {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.sh-present-chip {
  background: #e8f5ec;
  color: #006e2f;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 500;
}

.sh-obj-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sh-obj-card {
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 12px 14px;
}
.sh-obj-card.is-acquis {
  background: linear-gradient(135deg, #e8f5ec 0%, #f0fdf4 100%);
  border-color: #86efac;
}
.sh-obj-head {
  margin-bottom: 8px;
}
.sh-obj-title {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  font-weight: 600;
  font-size: 13px;
  color: #0f172a;
}
.sh-obj-num {
  background: #009640;
  color: #fff;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 700;
}
.sh-obj-tag {
  background: #fef3c7;
  color: #92400e;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
}
.sh-obj-badge-acquis {
  background: #009640;
  color: #fff;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  margin-left: auto;
}
.sh-obj-objective {
  background: #eff6ff;
  border-left: 3px solid #009640;
  padding: 6px 10px;
  border-radius: 6px;
  font-size: 12px;
  color: #0f172a;
  margin-bottom: 8px;
}
.sh-obj-numbers {
  display: flex;
  gap: 12px;
  margin-bottom: 6px;
}
.sh-obj-num-box {
  background: #fff;
  border-radius: 8px;
  padding: 8px 12px;
  text-align: center;
  min-width: 60px;
}
.sh-obj-num-box strong {
  display: block;
  font-size: 18px;
  font-weight: 700;
  color: #0f172a;
  line-height: 1;
}
.sh-obj-num-box span {
  display: block;
  font-size: 10px;
  color: #64748b;
  text-transform: uppercase;
  margin-top: 3px;
}
.sh-obj-notes {
  font-style: italic;
  color: #64748b;
  font-size: 12px;
  padding: 6px 10px;
  background: #fff;
  border-radius: 6px;
  border-left: 2px solid #e5e7eb;
}

.sh-delete {
  margin-top: 16px;
  color: #b91c1c;
  border-color: #fecaca;
}
.sh-delete:hover {
  background: #fee2e2;
}

/* Widget jonglerie fiche joueur */
.juggle-widget {
  padding: 4px 0;
}
.juggle-widget-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr) repeat(3, 1fr);
  gap: 6px;
  margin-bottom: 14px;
}
.jw-stat {
  background: #f9fafb;
  border-radius: 8px;
  padding: 8px 6px;
  text-align: center;
}
.jw-stat span {
  display: block;
  font-size: 9px;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  font-weight: 600;
  margin-bottom: 2px;
}
.jw-stat strong {
  display: block;
  font-size: 18px;
  font-weight: 700;
  color: #0f172a;
}
.juggle-widget-chart {
  width: 100%;
  height: auto;
  max-height: 200px;
  background: #fff;
  border-radius: 8px;
  padding: 8px;
  border: 1px solid #f3f4f6;
  margin-bottom: 12px;
}
.juggle-widget-history {
  background: #f9fafb;
  border-radius: 8px;
  padding: 8px 12px;
}
.juggle-widget-history summary {
  cursor: pointer;
  font-size: 12px;
  font-weight: 600;
  color: #64748b;
  padding: 4px 0;
}
.juggle-widget-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 8px;
  font-size: 12px;
}
.juggle-widget-table th {
  background: #fff;
  color: #64748b;
  padding: 6px 10px;
  text-align: left;
  font-weight: 700;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.juggle-widget-table td {
  padding: 5px 10px;
  border-top: 1px solid #f3f4f6;
}
.juggle-widget-table td:first-child { color: #64748b; }
.jw-more {
  font-size: 11px;
  color: #94a3b8;
  font-style: italic;
  text-align: center;
  margin-top: 8px;
}

@media (max-width: 640px) {
  .sh-stats { grid-template-columns: repeat(2, 1fr); }
  .sh-row { flex-direction: column; align-items: flex-start; }
  .sh-row-stats { width: 100%; }
  .juggle-widget-stats { grid-template-columns: repeat(3, 1fr); }
}

/* ══════════════════════════════════════════════════════════
   Historique séances V2 — édition + stats catégorie
   ══════════════════════════════════════════════════════════ */

.sh-section-block {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  padding: 16px 18px;
  margin-bottom: 18px;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.sh-section-title {
  margin: 0 0 12px;
  font-size: 16px;
  font-weight: 700;
  color: #0f172a;
  display: flex;
  align-items: center;
  gap: 8px;
}

.sh-toggle-wrap { margin-top: 12px; text-align: center; }
.sh-toggle {
  font-size: 13px;
  color: #009640;
  border: 1px dashed #009640;
  background: #f0fdf4;
  padding: 8px 14px;
  border-radius: 20px;
}
.sh-toggle:hover { background: #dcfce7; }

/* ── Chip Modifier icon ── */
.sh-row-arrow {
  font-size: 18px;
  color: #009640;
  padding-left: 8px;
  align-self: center;
}

/* ── Stats catégorie ── */
.sh-cat-stats { }
.sh-cat-chart-wrap {
  background: #fafafa;
  border-radius: 10px;
  padding: 10px 12px 6px;
  margin-bottom: 16px;
}
.sh-cat-chart-label {
  font-size: 12px;
  color: #64748b;
  font-weight: 600;
  margin-bottom: 4px;
}
.sh-cat-chart { width: 100%; height: auto; display: block; }

.sh-cat-tops {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
@media (max-width: 640px) {
  .sh-cat-tops { grid-template-columns: 1fr; }
}
.sh-cat-top h4 {
  margin: 0 0 8px;
  font-size: 14px;
  font-weight: 700;
  color: #0f172a;
}
.sh-cat-top-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.sh-cat-top-item {
  display: grid;
  grid-template-columns: 24px 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  background: #f8fafc;
  border-radius: 8px;
  font-size: 13px;
}
.sh-cat-top-item:nth-child(1) { background: #fef9c3; }
.sh-cat-top-item:nth-child(2) { background: #f1f5f9; }
.sh-cat-top-item:nth-child(3) { background: #fed7aa; }
.sh-cat-top-rank {
  font-weight: 800;
  color: #64748b;
  text-align: center;
}
.sh-cat-top-item:nth-child(1) .sh-cat-top-rank { color: #a16207; }
.sh-cat-top-name {
  font-weight: 600;
  color: #0f172a;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sh-cat-top-score {
  font-weight: 800;
  color: #009640;
  font-size: 15px;
}
.sh-cat-top-score em { font-style: normal; font-size: 10px; opacity: .6; font-weight: 600; }
.sh-cat-top-delta { color: #16a34a; }

/* ── Détail éditable ── */
.sh-detail-prev {
  color: #64748b;
  font-size: 12px;
  font-style: italic;
}
.sh-detail-help {
  margin: 6px 0 0;
  font-size: 12px;
  color: #64748b;
  font-style: italic;
}
.sh-section-title-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
}
.sh-section-title-row h3 { margin: 0; }
.sh-edit-btn {
  font-size: 12px;
  padding: 6px 12px;
  border-radius: 16px;
  border: 1px solid #009640;
  color: #009640;
  background: #fff;
}
.sh-edit-btn:hover { background: #f0fdf4; }

.sh-edit-present-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 6px;
}
.sh-edit-present-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  cursor: pointer;
  background: #fff;
  font-size: 13px;
}
.sh-edit-present-row.on {
  background: #f0fdf4;
  border-color: #009640;
  font-weight: 600;
}
.sh-edit-present-row input[type="checkbox"] {
  width: 18px; height: 18px;
  accent-color: #009640;
  cursor: pointer;
}

/* ── Section jonglerie éditable ── */
.sh-juggle-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sh-jg-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  background: #f8fafc;
  border-radius: 10px;
  border: 1px solid #e5e7eb;
}
@media (max-width: 640px) {
  .sh-jg-row { grid-template-columns: 1fr; }
}
.sh-jg-name {
  font-weight: 600;
  color: #0f172a;
  font-size: 14px;
}
.sh-jg-inputs {
  display: flex;
  gap: 8px;
  align-items: flex-end;
}
.sh-jg-field {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  position: relative;
}
.sh-jg-field-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .5px;
  color: #64748b;
  font-weight: 700;
}
.sh-jg-input {
  width: 70px;
  padding: 6px 4px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  text-align: center;
  font-size: 14px;
  font-weight: 700;
  color: #0f172a;
}
.sh-jg-input:focus {
  outline: 2px solid #009640;
  border-color: #009640;
}

.sh-delta {
  position: absolute;
  bottom: -14px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 10px;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 8px;
  white-space: nowrap;
}
.sh-delta-up   { background: #dcfce7; color: #15803d; }
.sh-delta-down { background: #fee2e2; color: #b91c1c; }
.sh-delta-eq   { background: #f1f5f9; color: #64748b; }
.sh-delta-new  { background: #fef3c7; color: #92400e; }

/* ── Objectifs éditables ── */
.sh-obj-acquis-toggle {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  color: #64748b;
  cursor: pointer;
}
.sh-obj-acquis-toggle input {
  width: 18px; height: 18px;
  accent-color: #009640;
  cursor: pointer;
}
.sh-obj-editor {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: 12px;
  align-items: end;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed #e5e7eb;
}
@media (max-width: 640px) {
  .sh-obj-editor { grid-template-columns: 1fr; }
}
.sh-obj-editor-group { display: flex; flex-direction: column; gap: 4px; }
.sh-obj-editor-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .5px;
  color: #64748b;
  font-weight: 700;
}
.sh-obj-editor-btns { display: flex; gap: 4px; align-items: center; }
.sh-obj-editor-input {
  flex: 1;
  min-width: 40px;
  padding: 6px 4px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  text-align: center;
  font-size: 14px;
  font-weight: 700;
}
.sh-obj-bmn, .sh-obj-bpl {
  width: 32px; height: 32px;
  font-size: 18px;
  font-weight: 700;
  padding: 0;
  border-radius: 6px;
}
.sh-obj-bpl { color: #009640; border-color: #009640; }
.sh-obj-bmn { color: #dc2626; border-color: #dc2626; }
.sh-obj-editor-ratio {
  text-align: center;
  padding: 6px 12px;
  border-radius: 8px;
  background: #f8fafc;
}
.sh-obj-editor-ratio strong { display: block; font-size: 18px; }
.sh-obj-editor-ratio span { font-size: 10px; text-transform: uppercase; color: #64748b; }

.sh-detail-actions {
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid #e5e7eb;
  text-align: right;
}

/* ── Stats jonglerie catégorie : 3 blocs par type de pied ── */
.sh-cat-foot-blocks {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.sh-cat-foot-block {
  padding: 12px 14px 14px;
  background: #fafafa;
  border-radius: 10px;
  border-left: 4px solid transparent;
}
.sh-cat-foot-title {
  margin: 0 0 12px;
  padding-left: 8px;
  border-left: 4px solid #009640;
  font-size: 14px;
  font-weight: 700;
  color: #0f172a;
  display: flex;
  align-items: center;
  gap: 8px;
}
.sh-cat-foot-swatch {
  display: inline-block;
  width: 12px; height: 12px;
  border-radius: 50%;
}
.sh-cat-top h5 {
  margin: 0 0 8px;
  font-size: 13px;
  font-weight: 600;
  color: #475569;
}

/* ══════════════════════════════════════════════════════════
   Sous-onglets de la vue Semaine (Cette semaine / Vue saison)
   Style aligné sur bilans-subtabs mais en vert Louverné
   ══════════════════════════════════════════════════════════ */

.weekly-shell {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.weekly-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 20px;
  border-bottom: 2px solid #e5e7eb;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  padding: 0;
  background: transparent;
}
.weekly-tab {
  padding: 12px 22px;
  border: none;
  background: transparent;
  cursor: pointer;
  font-weight: 500;
  font-size: 14px;
  color: #6b7280;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  white-space: nowrap;
  transition: color .15s, border-color .15s, background .15s;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border-radius: 0;
  box-shadow: none;
}
.weekly-tab:hover {
  color: #009640;
  background: rgba(0, 150, 64, .05);
}
.weekly-tab.on {
  color: #009640;
  border-bottom-color: #009640;
  font-weight: 700;
  background: transparent;
}
.weekly-tab-body {
  animation: fadeInWeekly .18s ease-out;
}
@keyframes fadeInWeekly {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}

@media (max-width: 768px) {
  .weekly-tab { padding: 10px 14px; font-size: 13px; }
}

/* ══════════════════════════════════════════════════════════
   Fiche joueur → Bloc "Suivi joueur" (mini-onglets)
   Semaine / Jonglerie / Blessures / Assiduité
   ══════════════════════════════════════════════════════════ */

.player-followup {
  margin: 20px 0 24px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  padding: 14px 16px 16px;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.player-followup-header {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 12px;
}
.player-followup-tabs {
  display: flex;
  gap: 2px;
  border-bottom: 2px solid #e5e7eb;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.player-followup-tab {
  padding: 10px 14px;
  border: none;
  background: transparent;
  cursor: pointer;
  font-weight: 500;
  font-size: 13px;
  color: #6b7280;
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  white-space: nowrap;
  transition: color .15s, border-color .15s, background .15s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.player-followup-tab:hover {
  color: #009640;
  background: rgba(0, 150, 64, .05);
}
.player-followup-tab.on {
  color: #009640;
  border-bottom-color: #009640;
  font-weight: 700;
}
.pft-icon { font-size: 15px; }
.pft-label { }
@media (max-width: 640px) {
  .pft-label { display: none; }
  .player-followup-tab { padding: 10px 12px; }
  .pft-icon { font-size: 17px; }
}

.player-followup-body {
  padding: 14px 4px 4px;
  animation: fadeInFollowup .18s ease-out;
  min-height: 100px;
}
@keyframes fadeInFollowup {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ══════════════════════════════════════════════════════════
   Fiche joueur — mise en page compacte
   ══════════════════════════════════════════════════════════ */

/* Grille 3 colonnes pour la fiche joueur (plus dense que 2 cols) */
.form-grid-3col {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 10px !important;
}
@media (max-width: 900px) {
  .form-grid-3col { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media (max-width: 560px) {
  .form-grid-3col { grid-template-columns: 1fr !important; }
}

/* Detail-grid compact : cartes plus petites, moins d'air */
.detail-grid-compact {
  gap: 10px !important;
  margin-top: 16px !important;
}
.detail-grid-compact .detail-card {
  padding: 12px 14px !important;
  min-height: auto !important;
}
.detail-grid-compact .detail-card h3 {
  font-size: 14px !important;
  margin: 4px 0 6px !important;
}
.detail-grid-compact .card-kicker {
  font-size: 10px !important;
}
.detail-grid-compact .priority-box strong {
  font-size: 14px !important;
}
.detail-grid-compact .priority-box p {
  font-size: 12px !important;
  margin-top: 4px !important;
}

/* ══════════════════════════════════════════════════════════
   Menu unifié ⋯ (barre nav droite regroupée)
   ══════════════════════════════════════════════════════════ */

.nav-right {
  display: flex;
  align-items: center;
  gap: 8px;
  position: relative;
}
.more-actions-btn {
  padding: 8px 14px !important;
  font-size: 20px !important;
  line-height: 1 !important;
  border-radius: 10px !important;
  min-width: 44px;
}
.mab-icon { font-weight: 700; letter-spacing: 2px; }

.more-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  min-width: 260px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  box-shadow: 0 10px 30px rgba(0,0,0,.12);
  padding: 8px 6px;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  gap: 2px;
  animation: fadeMenu .15s ease-out;
}
@keyframes fadeMenu {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.more-menu[hidden] { display: none; }

.more-menu-slot { padding: 4px 8px 6px; }
.more-menu-slot .educator-badge {
  width: 100%;
  justify-content: flex-start;
  padding: 8px 10px !important;
  border-radius: 8px !important;
}

.more-menu-section {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 6px 8px 8px;
}
.more-menu-label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .5px;
  color: #6b7280;
}
.more-menu-section .season-sel {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  font-size: 13px;
  background: #fff;
  cursor: pointer;
}

.more-menu-divider {
  height: 1px;
  background: #f1f5f9;
  margin: 4px 8px;
}

.more-menu-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: calc(100% - 8px);
  margin: 0 4px;
  padding: 10px 12px;
  border: none;
  background: transparent;
  color: #0f172a;
  font-size: 13px;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  border-radius: 8px;
  transition: background .12s;
}
.more-menu-item:hover:not(:disabled) {
  background: rgba(0, 150, 64, .08);
  color: #009640;
}
.more-menu-item:disabled {
  opacity: .5;
  cursor: default;
}
.more-menu-item span { flex: 1; }

/* ══════════════════════════════════════════════════════════
   Bandeau rappel auto-backup (Sauvegarde JSON)
   ══════════════════════════════════════════════════════════ */

.backup-banner {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 16px;
  background: linear-gradient(90deg, #fef3c7, #fde68a);
  border-bottom: 1px solid #f59e0b;
  color: #78350f;
  font-size: 13px;
  font-weight: 500;
  animation: slideDownBackup .25s ease-out;
}
.backup-banner[hidden] { display: none; }
@keyframes slideDownBackup {
  from { transform: translateY(-100%); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}
.backup-banner-icon { font-size: 18px; }
.backup-banner-msg  { flex: 1; }
.backup-banner-btn {
  padding: 6px 14px;
  border: none;
  border-radius: 8px;
  background: #d97706;
  color: #fff;
  font-weight: 600;
  font-size: 12px;
  cursor: pointer;
  transition: background .15s;
}
.backup-banner-btn:hover { background: #b45309; }
.backup-banner-close {
  width: 28px; height: 28px;
  border: none;
  background: transparent;
  color: #78350f;
  font-size: 18px;
  cursor: pointer;
  border-radius: 50%;
  transition: background .12s;
}
.backup-banner-close:hover { background: rgba(120, 53, 15, .1); }
@media (max-width: 640px) {
  .backup-banner-msg { font-size: 12px; }
  .backup-banner-btn { padding: 5px 10px; font-size: 11px; }
}

/* ══════════════════════════════════════════════════════════
   Bilan de séance (détail + badge liste + courbe pliable)
   ══════════════════════════════════════════════════════════ */

/* Badge dans la liste des séances */
.sh-bilan-badge {
  display: inline-block;
  margin-top: 4px;
  font-size: 10px;
  font-weight: 700;
  padding: 3px 8px;
  border-radius: 10px;
  white-space: nowrap;
}
.sh-bilan-badge-done { background: #dcfce7; color: #15803d; }
.sh-bilan-badge-todo { background: #fef3c7; color: #92400e; }

/* Section bilan dans le détail */
.sh-bilan-section {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  padding: 14px 16px 16px;
  margin-bottom: 16px;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.sh-bilan-section.is-done {
  border-color: #16a34a;
  background: linear-gradient(180deg, #f0fdf4 0%, #fff 40%);
}
.sh-bilan-tag {
  font-size: 11px;
  font-weight: 700;
  padding: 3px 8px;
  border-radius: 10px;
  background: #dcfce7;
  color: #15803d;
  margin-left: 8px;
}
.sh-bilan-tag-todo { background: #fef3c7; color: #92400e; }

.sh-bilan-grid {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 14px;
}
.sh-bilan-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 12px;
  padding: 8px 10px;
  background: #f8fafc;
  border-radius: 8px;
}
@media (max-width: 640px) {
  .sh-bilan-row { grid-template-columns: 1fr; gap: 6px; }
}
.sh-bilan-label {
  font-size: 13px;
  color: #0f172a;
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: 8px;
}
.sh-bilan-icon { font-size: 16px; }

/* Étoiles cliquables */
.sh-stars {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.sh-star {
  width: 30px; height: 30px;
  border: none;
  background: transparent;
  color: #d1d5db;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  transition: color .12s, transform .12s;
}
.sh-star:hover { transform: scale(1.15); }
.sh-star.on { color: #f59e0b; }
.sh-star-val {
  margin-left: 6px;
  font-size: 12px;
  font-weight: 700;
  color: #64748b;
}

/* Notes libres */
.sh-bilan-notes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
@media (max-width: 640px) {
  .sh-bilan-notes { grid-template-columns: 1fr; }
}
.sh-bilan-note-block {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.sh-bilan-note-label {
  font-size: 11px;
  font-weight: 700;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: .4px;
}
.sh-bilan-textarea {
  padding: 8px 10px;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  font-family: inherit;
  font-size: 13px;
  resize: vertical;
  min-height: 60px;
}
.sh-bilan-textarea:focus {
  outline: 2px solid #009640;
  border-color: #009640;
}

/* Bloc courbe évolution ressentis (pliable) */
.sh-ressentis-block {
  margin-bottom: 18px;
}
.sh-ressentis-toggle {
  width: 100%;
  padding: 8px 12px;
  border: 1px dashed #cbd5e1;
  background: #f8fafc;
  color: #475569;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  border-radius: 8px;
  transition: background .15s, border-color .15s;
}
.sh-ressentis-toggle:hover {
  background: #f0fdf4;
  border-color: #009640;
  color: #009640;
}
.sh-ressentis-chart-wrap {
  margin-top: 8px;
  padding: 8px 10px;
  background: #fafafa;
  border-radius: 8px;
  animation: fadeInRess .18s ease-out;
}
@keyframes fadeInRess {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.sh-ressentis-chart { width: 100%; height: auto; display: block; }

/* ══════════════════════════════════════════════════════════
   Splash screen (visible avant l'exécution de app.js)
   ══════════════════════════════════════════════════════════ */

.boot-splash {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  background: linear-gradient(135deg, #fafaf7 0%, #f0fdf4 100%);
  transition: opacity .35s ease-out;
}
.boot-splash.is-hidden { opacity: 0; pointer-events: none; }
.boot-splash-logo {
  width: 120px; height: 120px;
  border-radius: 22px;
  background: #fff;
  box-shadow: 0 8px 30px rgba(0, 150, 64, .15);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  animation: bootPop .35s ease-out;
}
.boot-splash-logo img { width: 90%; height: 90%; object-fit: contain; }
@keyframes bootPop {
  from { transform: scale(.85); opacity: 0; }
  to   { transform: scale(1);   opacity: 1; }
}
.boot-splash-title {
  font-family: 'Outfit', sans-serif;
  font-size: 22px;
  font-weight: 700;
  color: #0f172a;
  letter-spacing: -.02em;
}
.boot-splash-sub {
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  color: #64748b;
  font-weight: 500;
}
.boot-splash-spinner {
  display: flex;
  gap: 6px;
  margin-top: 12px;
}
.boot-splash-spinner div {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: #009640;
  animation: bootDot 1.2s infinite ease-in-out both;
}
.boot-splash-spinner div:nth-child(1) { animation-delay: -0.32s; }
.boot-splash-spinner div:nth-child(2) { animation-delay: -0.16s; }
@keyframes bootDot {
  0%, 80%, 100% { transform: scale(0.6); opacity: .5; }
  40%           { transform: scale(1);   opacity: 1; }
}

/* ── Bouton "Séance terminée" dans le header Mode Terrain ── */
.live-finish-btn {
  padding: 8px 14px;
  border: none;
  border-radius: 10px;
  background: #16a34a;
  color: #fff;
  font-weight: 700;
  font-size: 13px;
  cursor: pointer;
  transition: background .15s, transform .1s;
  box-shadow: 0 2px 8px rgba(22, 163, 74, .3);
}
.live-finish-btn:hover  { background: #15803d; transform: translateY(-1px); }
.live-finish-btn:active { transform: translateY(0); }
@media (max-width: 640px) {
  .live-finish-btn { padding: 8px 10px; font-size: 12px; }
}

/* ── 5e dot (nouvelle échelle 1-5) ── */
.dot.on-5 {
  background: #dcf7e4 !important;
  border-color: #009640 !important;
  color: #006e2f !important;
  animation: popIn 0.18s ease;
}

/* ══════════════════════════════════════════════════════════
   Sync Supabase — indicateur dans menu + modal config
   ══════════════════════════════════════════════════════════ */

.more-menu-sync {
  padding: 4px 6px;
}
.sync-status-line {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  font-size: 11px;
  color: #64748b;
  font-weight: 600;
}
.sync-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.sync-dot-off { background: #cbd5e1; }
.sync-dot-ok  { background: #16a34a; box-shadow: 0 0 6px rgba(22,163,74,.5); animation: pulseDot 2s infinite; }
.sync-dot-err { background: #dc2626; }
@keyframes pulseDot {
  0%, 100% { opacity: 1; }
  50%      { opacity: .5; }
}
.more-menu-item-sub {
  font-size: 12px !important;
  color: #64748b !important;
}
.more-menu-item-sub:hover {
  color: #009640 !important;
}

.sync-info-box {
  background: #f8fafc;
  border-radius: 8px;
  padding: 10px 12px;
  font-size: 12px;
  color: #475569;
  display: flex;
  flex-direction: column;
  gap: 4px;
  border: 1px solid #e5e7eb;
}

/* ── Boutons sync compacts dans le menu ⋯ ── */
.sync-actions-row {
  display: flex;
  gap: 4px;
  padding: 4px 10px 6px;
}
.sync-mini-btn {
  flex: 1;
  padding: 6px 8px;
  border: 1px solid #e5e7eb;
  background: #fff;
  color: #475569;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  border-radius: 6px;
  transition: all .12s;
}
.sync-mini-btn:hover {
  border-color: #009640;
  color: #009640;
  background: #f0fdf4;
}

/* ══════════════════════════════════════════════════════════
   Fiche pré-séance — modal éditeur
   ══════════════════════════════════════════════════════════ */

/* Container thème + bouton pré-séance en flex pour aligner sur une ligne */
.weekly-theme {
  display: flex;
  gap: 10px;
  align-items: stretch;
  margin: 8px 0 12px;
  flex-wrap: wrap;
}
.weekly-theme .weekly-theme-input {
  flex: 1;
  min-width: 220px;
}
.weekly-preseance-btn {
  padding: 10px 16px !important;
  font-size: 13px !important;
  white-space: nowrap;
  flex-shrink: 0;
}
@media (max-width: 640px) {
  .weekly-preseance-btn { width: 100%; }
}

.ps-box {
  max-width: 960px !important;
  max-height: 92vh;
  display: flex;
  flex-direction: column;
  padding: 20px 20px 0 !important;
  overflow: hidden;
}
.ps-box > .modal-head { flex-shrink: 0; }
.ps-box > .ps-scroll {
  flex: 1 1 auto;
  overflow-y: auto;
  min-height: 0;
  padding-right: 4px;
  margin-right: -4px;
}
.ps-box > .ps-footer {
  flex-shrink: 0;
  background: #fff;
  border-top: 1px solid #e5e7eb;
  margin: 0 -20px 0;
  padding: 14px 20px;
}

.ps-editor-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin: 12px 0 18px;
}
@media (max-width: 780px) {
  .ps-editor-grid { grid-template-columns: 1fr; }
}
.ps-panel {
  background: #f8fafc;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 12px 14px;
}
.ps-panel h4 {
  margin: 0 0 10px;
  font-size: 13px;
  font-weight: 700;
  color: #009640;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.ps-row { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
.ps-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  color: #64748b;
  letter-spacing: .04em;
  min-width: 130px;
}
.ps-btn-group { display: flex; gap: 4px; flex-wrap: wrap; }
.ps-btn {
  padding: 6px 10px;
  border: 1px solid #d1d5db;
  background: #fff;
  color: #475569;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: all .12s;
}
.ps-btn:hover { border-color: #009640; color: #009640; }
.ps-btn.on { background: #009640; color: #fff; border-color: #009640; }
.ps-hint {
  font-size: 11px;
  color: #64748b;
  font-style: italic;
  margin-top: 6px;
}

.ps-content-actions { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; flex-wrap: wrap; }
.ps-file-btn {
  display: inline-block;
  padding: 6px 12px;
  border: 1px dashed #009640;
  border-radius: 6px;
  color: #009640;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  background: #f0fdf4;
}
.ps-file-btn:hover { background: #dcfce7; }
.ps-file-info { font-size: 11px; color: #64748b; }
.ps-textarea {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-family: inherit;
  font-size: 12px;
  resize: vertical;
  min-height: 100px;
}
.ps-content-preview {
  max-height: 180px;
  overflow-y: auto;
  padding: 8px 10px;
  background: #fff;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-size: 12px;
}
.ps-content-preview-inner { color: #0f172a; }

.ps-groups-section h4 {
  margin: 0 0 10px;
  font-size: 13px;
  font-weight: 700;
  color: #009640;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.ps-unassigned {
  background: #fef3c7;
  border: 1px solid #fbbf24;
  border-radius: 8px;
  padding: 8px 12px;
  margin-bottom: 12px;
  font-size: 12px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.ps-unassigned-empty {
  background: #dcfce7;
  border: 1px solid #16a34a;
  color: #15803d;
  border-radius: 8px;
  padding: 8px 12px;
  margin-bottom: 12px;
  font-size: 12px;
  text-align: center;
  font-weight: 600;
}
.ps-groups-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
}
.ps-group-card {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 10px;
  min-height: 140px;
}
.ps-group-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid #f1f5f9;
}
.ps-group-head strong { font-size: 13px; color: #0f172a; }
.ps-group-count { font-size: 11px; color: #64748b; }
.ps-group-list {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  min-height: 60px;
  margin-bottom: 8px;
}
.ps-empty { color: #94a3b8; font-style: italic; font-size: 11px; padding: 6px; }

.ps-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px;
  border: none;
  border-radius: 12px;
  color: #fff;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: transform .1s;
}
.ps-chip:hover { transform: scale(1.05); }
.ps-chip-move { display: inline-flex; }
.ps-chip-move select {
  background: rgba(255,255,255,.85);
  border: none;
  border-radius: 8px;
  padding: 1px 3px;
  font-size: 10px;
  color: #0f172a;
  cursor: pointer;
}
.ps-move-select {
  width: 100%;
  padding: 5px 6px;
  border: 1px dashed #cbd5e1;
  border-radius: 6px;
  font-size: 11px;
  background: #fff;
  cursor: pointer;
}
.ps-move-select:hover { border-color: #009640; }

.ps-info { color: #64748b; font-size: 12px; font-weight: 500; }

/* ══════════════════════════════════════════════════════════
   Pré-séance v6 : éditeur drag & drop + équipes fixes
   ══════════════════════════════════════════════════════════ */

/* Pool des joueurs non affectés */
.ps-pool-section {
  background: #fefce8;
  border: 2px dashed #fbbf24;
  border-radius: 10px;
  padding: 10px 14px;
  margin-bottom: 14px;
  transition: background .12s, border-color .12s;
}
.ps-pool-section h4 {
  margin: 0 0 8px; font-size: 13px; font-weight: 700; color: #92400e;
}
.ps-pool-count { color: #a16207; font-weight: 500; font-size: 11px; }
.ps-pool-chips {
  display: flex; flex-wrap: wrap; gap: 6px; min-height: 30px;
}
.ps-pool-empty {
  color: #16a34a; font-weight: 600; font-size: 12px; padding: 6px;
}
.ps-pool-section.drop-hover {
  background: #fef3c7; border-color: #f59e0b;
}

/* Chip draggable */
.ps-dnd-chip {
  padding: 5px 10px;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 14px;
  font-size: 12px; font-weight: 600;
  cursor: grab;
  user-select: none;
  transition: transform .1s, box-shadow .12s;
  box-shadow: 0 1px 2px rgba(0,0,0,.06);
}
.ps-dnd-chip:hover {
  transform: translateY(-1px);
  box-shadow: 0 3px 8px rgba(0,150,64,.15);
  border-color: #009640;
}
.ps-dnd-chip:active { cursor: grabbing; }
.ps-dnd-chip.dragging {
  opacity: 0.4;
  cursor: grabbing;
}

/* Grille des groupes */
.ps-groups-section h4 {
  margin: 0 0 10px; font-size: 13px; font-weight: 700; color: #009640;
  text-transform: uppercase; letter-spacing: .04em;
}
.ps-groups-grid {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
.ps-group-card {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 10px;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.ps-group-head {
  display: flex; justify-content: space-between; align-items: baseline;
  margin-bottom: 8px; padding-bottom: 6px;
  border-bottom: 1px solid #f1f5f9;
}
.ps-group-head strong { font-size: 13px; color: #0f172a; }
.ps-group-count { font-size: 11px; color: #64748b; }

/* 2 équipes par groupe */
.ps-group-teams {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
}
.ps-team-box {
  border: 2px solid;
  border-radius: 8px;
  min-height: 120px;
  display: flex; flex-direction: column;
  transition: background .15s;
}
.ps-team-box.drop-hover {
  border-style: dashed;
  background: rgba(0,150,64,.15) !important;
}
.ps-team-head {
  padding: 4px 8px;
  border-radius: 6px 6px 0 0;
  font-size: 11px; font-weight: 700; text-align: center;
}
.ps-team-count { font-weight: 500; opacity: .8; }
.ps-team-chips {
  padding: 6px;
  flex: 1;
  display: flex; flex-direction: column; gap: 4px;
}
.ps-team-empty {
  color: #94a3b8; font-style: italic; font-size: 11px;
  text-align: center; padding: 12px 4px;
}

/* ── Preview des principes FFF dans la modal pré-séance ── */
.ps-principes-preview {
  margin-top: 10px;
  padding: 8px 12px;
  background: #f0fdf4;
  border-left: 3px solid #009640;
  border-radius: 6px;
}
.ps-principes-preview-label {
  font-size: 10px;
  text-transform: uppercase;
  color: #009640;
  font-weight: 700;
  letter-spacing: .04em;
  margin-bottom: 6px;
}
.ps-principes-preview-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.ps-principes-preview-list li {
  font-size: 11px;
  color: #0f172a;
  padding-left: 4px;
}
.ps-principes-preview-list strong {
  background: #009640;
  color: #fff;
  padding: 1px 6px;
  border-radius: 8px;
  font-size: 9px;
  margin-right: 4px;
}
.ps-principe-obj {
  color: #64748b;
  font-style: italic;
  font-size: 10px;
  margin-top: 2px;
  padding-left: 12px;
}

/* ══════════════════════════════════════════════════════════
   Bloc "Préparation" dans le détail d'une séance (Bilans → Séances)
   ══════════════════════════════════════════════════════════ */

.sh-prep-section {
  background: linear-gradient(180deg, #f0fdf4 0%, #fff 60%);
  border: 1px solid #86efac;
  border-left: 4px solid #009640;
}
.sh-prep-block {
  margin-bottom: 10px;
}
.sh-prep-label {
  font-size: 11px;
  text-transform: uppercase;
  color: #009640;
  font-weight: 800;
  letter-spacing: .04em;
  margin-bottom: 4px;
}
.sh-prep-value {
  font-size: 14px;
  color: #0f172a;
  font-weight: 500;
  background: #fff;
  padding: 6px 10px;
  border-radius: 6px;
  border-left: 3px solid #009640;
}
.sh-prep-objectif .sh-prep-value {
  font-size: 15px;
  font-weight: 600;
}

.sh-prep-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 10px;
}
@media (max-width: 640px) {
  .sh-prep-grid { grid-template-columns: 1fr; }
}
.sh-prep-timing-block {
  background: #f0f9ff;
  border-left: 3px solid #0284c7;
  padding: 8px 12px;
  border-radius: 6px;
}
.sh-prep-timing-block .sh-prep-label { color: #0284c7; }
.sh-prep-timing-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.sh-prep-timing-list li {
  display: flex;
  justify-content: space-between;
  padding: 2px 0;
  font-size: 12px;
  border-bottom: 1px dotted rgba(2,132,199,.2);
}
.sh-prep-timing-list li:last-child { border: none; }
.sh-prep-timing-list li strong {
  color: #0284c7;
  font-weight: 700;
  font-size: 11px;
}

.sh-prep-rappels-block {
  background: #fef3c7;
  border-left: 3px solid #f59e0b;
  padding: 8px 12px;
  border-radius: 6px;
}
.sh-prep-rappels-block .sh-prep-label { color: #b45309; }
.sh-prep-rappels-list {
  list-style: disc;
  padding-left: 18px;
  margin: 0;
}
.sh-prep-rappels-list li {
  font-size: 12px;
  color: #0f172a;
  padding: 1px 0;
}

.sh-prep-groups {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 8px;
}
.sh-prep-group {
  border: 1.5px solid #009640;
  border-radius: 6px;
  overflow: hidden;
  background: #fff;
}
.sh-prep-group-head {
  background: #009640;
  color: #fff;
  padding: 4px 8px;
  font-weight: 800;
  font-size: 12px;
}
.sh-prep-group-head span {
  color: #d1fae5;
  font-weight: 500;
  font-size: 10px;
  margin-left: 4px;
}
.sh-prep-teams {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px;
  padding: 3px;
}
.sh-prep-team {
  border: 1px solid;
  border-radius: 4px;
  overflow: hidden;
}
.sh-prep-team-head {
  color: #fff;
  padding: 2px 6px;
  font-size: 10px;
  font-weight: 800;
  text-align: center;
}
.sh-prep-team-list {
  padding: 3px 5px;
}
.sh-prep-player {
  font-size: 10px;
  color: #0f172a;
  line-height: 1.4;
}

.sh-prep-image {
  margin-top: 10px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 6px;
  padding: 8px 12px;
}
.sh-prep-image summary {
  cursor: pointer;
  font-size: 12px;
  color: #009640;
  font-weight: 600;
}
.sh-prep-image-wrap {
  margin-top: 8px;
  text-align: center;
}
.sh-prep-image-wrap img {
  max-width: 100%;
  max-height: 300px;
  border-radius: 4px;
}

/* ══════════════════════════════════════════════════════════
   Pré-séance v6.7 : barre config + grille 2x2 champs
   ══════════════════════════════════════════════════════════ */

/* Barre config compacte en haut */
.ps-config-bar {
  background: linear-gradient(90deg, #f0fdf4 0%, #fff 100%);
  border: 1px solid #d1fae5;
  border-radius: 10px;
  padding: 10px 14px;
  margin-bottom: 14px;
}
.ps-config-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.ps-config-row .ps-label {
  min-width: auto !important;
  font-size: 11px !important;
}
.ps-config-sep {
  color: #cbd5e1;
  font-weight: 700;
  font-size: 16px;
  margin: 0 2px;
}
.ps-file-btn-inline {
  padding: 5px 10px;
  font-size: 11px;
}

/* Grille 2x2 des 4 champs */
.ps-fields-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 14px;
}
@media (max-width: 780px) {
  .ps-fields-grid { grid-template-columns: 1fr; }
}
.ps-field-panel {
  display: flex;
  flex-direction: column;
}
.ps-field-panel h4 small {
  color: #94a3b8;
  font-size: 10px;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
  margin-left: 4px;
}
.ps-field-panel .ps-textarea {
  flex: 1;
  min-height: 90px;
}
.ps-field-panel .ps-principes-preview-list {
  flex: 1;
  overflow: auto;
  max-height: 130px;
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

/* ── Sélection des joueurs présents (dans la pré-séance) ── */
.ps-presents-section {
  background: #f8fafc;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 12px;
}
.ps-presents-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 10px;
}
.ps-presents-head h4 {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
  color: #0f172a;
}
.ps-presents-count {
  color: #009640;
  font-weight: 800;
  font-size: 14px;
  margin-left: 6px;
}
.ps-presents-actions {
  display: flex;
  gap: 4px;
}
.ps-presents-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}
.ps-present-chip {
  padding: 5px 10px;
  background: #fff;
  border: 1.5px solid #cbd5e1;
  border-radius: 14px;
  font-size: 11px;
  font-weight: 600;
  color: #64748b;
  cursor: pointer;
  transition: all .12s;
  user-select: none;
}
.ps-present-chip:hover {
  border-color: #94a3b8;
  color: #0f172a;
}
.ps-present-chip.on {
  background: #dcfce7;
  border-color: #009640;
  color: #009640;
  font-weight: 700;
}
.ps-present-chip.on:hover {
  background: #bbf7d0;
}

/* ── Filtre par équipe dans la section présents ── */
.ps-team-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 8px 0 10px;
  padding: 6px 8px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
}
.ps-team-chip {
  padding: 4px 10px;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 600;
  color: #475569;
  cursor: pointer;
  transition: all .12s;
}
.ps-team-chip:hover {
  border-color: #94a3b8;
  color: #0f172a;
}
.ps-team-chip.on {
  background: #0f172a;
  border-color: #0f172a;
  color: #fff;
}
.ps-team-chip-nt {
  font-style: italic;
  color: #94a3b8;
  margin-left: auto;
}

/* ── Chip de l'équipe principale affichée dans un ps-present-chip ── */
.ps-chip-team {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  background: #e2e8f0;
  color: #475569;
  border-radius: 8px;
  font-size: 10px;
  font-weight: 600;
}
.ps-present-chip.on .ps-chip-team {
  background: #bbf7d0;
  color: #166534;
}

/* ── Chip de poste affiché dans ps-dnd-chip (compo équipes) ── */
.ps-dnd-chip .ps-chip-poste {
  display: inline-block;
  min-width: 22px;
  padding: 1px 5px;
  margin-right: 6px;
  background: #0f172a;
  color: #fff;
  border-radius: 6px;
  font-size: 10px;
  font-weight: 700;
  text-align: center;
  letter-spacing: .3px;
}
.ps-dnd-chip .ps-chip-name {
  font-weight: 600;
}

/* ── Sélecteur de compo tactique par équipe ── */
.ps-formation-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 8px 4px;
  background: rgba(255,255,255,0.6);
  border-bottom: 1px solid rgba(0,0,0,0.08);
}
.ps-formation-label {
  font-size: 11px;
  font-weight: 600;
  color: #475569;
  text-transform: uppercase;
  letter-spacing: .3px;
}
.ps-formation-sel {
  flex: 1;
  padding: 3px 6px;
  font-size: 11px;
  font-weight: 600;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  background: #fff;
  cursor: pointer;
}
.ps-formation-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 3px;
  padding: 4px 8px 6px;
  background: rgba(255,255,255,0.6);
  border-bottom: 1px solid rgba(0,0,0,0.08);
}
.ps-formation-slot {
  display: inline-block;
  padding: 1px 6px;
  background: #0f172a;
  color: #fff;
  border-radius: 5px;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .3px;
}

/* ── Grid 2 colonnes pour section FFF Données (classement + matchs) ── */
.team-fff-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
@media (max-width: 920px) {
  .team-fff-grid { grid-template-columns: 1fr; }
}

/* ── Lignes de matchs FFF compactes ── */
.fixture-list { padding: 4px 0; }
.fixture-group-head {
  padding: 10px 14px 6px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .5px;
  color: #64748b;
  border-top: 1px solid #e2e8f0;
}
.fixture-group-head:first-child { border-top: 0; }
.fixture-row {
  display: grid;
  grid-template-columns: 60px 44px 1fr auto auto;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  font-size: 13px;
  border-bottom: 1px solid #f1f5f9;
}
.fixture-row:last-child { border-bottom: 0; }
.fx-date { font-weight: 600; color: #475569; font-size: 12px; }
.fx-loc  { font-weight: 600; color: #94a3b8; font-size: 11px; }
.fx-opp  { color: #0f172a; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fx-score { font-weight: 700; color: #0f172a; min-width: 40px; text-align: center; }
.fx-badge {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border-radius: 50%;
  font-size: 11px; font-weight: 800;
  background: #e2e8f0; color: #475569;
}
.fx-V { background: #dcfce7; color: #166534; }
.fx-N { background: #fef3c7; color: #92400e; }
.fx-D { background: #fee2e2; color: #991b1b; }
.fixture-row.fixture-win  { background: linear-gradient(90deg, rgba(220,252,231,0.4), transparent 60%); }
.fixture-row.fixture-loss { background: linear-gradient(90deg, rgba(254,226,226,0.4), transparent 60%); }
.fixture-row.fixture-draw { background: linear-gradient(90deg, rgba(254,243,199,0.4), transparent 60%); }

/* ── Toggles principes dans la Fiche pré-séance ── */
.ps-principes-actions {
  display: flex; gap: 4px;
  margin-bottom: 8px;
}
.ps-principes-toggle-list {
  list-style: none;
  padding: 0; margin: 0;
  display: flex; flex-direction: column;
  gap: 5px;
  max-height: 200px;
  overflow-y: auto;
}
.ps-principe-toggle {
  display: block;
  width: 100%;
  text-align: left;
  padding: 8px 10px;
  background: #fff;
  border: 1.5px solid #cbd5e1;
  border-radius: 6px;
  cursor: pointer;
  font-size: 12px;
  color: #64748b;
  transition: all .12s;
}
.ps-principe-toggle:hover {
  border-color: #94a3b8;
  background: #f8fafc;
}
.ps-principe-toggle.on {
  background: #dcfce7;
  border-color: #009640;
  color: #0f172a;
}
.ps-principe-toggle strong {
  background: #009640;
  color: #fff;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 10px;
  margin-right: 4px;
}
.ps-principe-toggle.on strong {
  background: #009640;
}
.ps-principe-toggle-label {
  font-weight: 600;
}
.ps-principe-toggle-obj {
  font-size: 11px;
  color: #64748b;
  font-style: italic;
  margin-top: 3px;
  padding-left: 4px;
}
.ps-principe-toggle.on .ps-principe-toggle-obj {
  color: #009640;
}

/* ══════════════════════════════════════════════════════════
   Widget anniversaires sur le dashboard
   ══════════════════════════════════════════════════════════ */

.birthday-card {
  margin-bottom: var(--sp-4);
}
.birthday-today {
  background: linear-gradient(90deg, #fef3c7, #fef9c3);
  border-left: 4px solid var(--accent-warn);
  padding: var(--sp-3);
  border-radius: var(--r-md);
  margin-bottom: var(--sp-3);
  font-size: var(--text-sm);
  color: #92400e;
}
.birthday-today strong { margin-right: var(--sp-2); }
.bday-chip-today {
  display: inline-block;
  background: var(--accent-warn);
  color: white;
  padding: 2px var(--sp-2);
  border-radius: var(--r-full);
  font-size: var(--text-sm);
  font-weight: 600;
  margin: 2px;
}

.birthday-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.bday-row {
  display: grid;
  grid-template-columns: 60px 1fr 50px 60px 90px;
  gap: var(--sp-2);
  align-items: center;
  padding: 6px var(--sp-3);
  background: var(--neutral-50);
  border-radius: var(--r-sm);
  font-size: var(--text-sm);
  transition: background var(--transition-fast);
}
.bday-row:hover { background: var(--brand-soft); }
.bday-date { font-weight: 700; color: var(--brand); font-family: var(--font-mono); }
.bday-name { font-weight: 600; color: var(--neutral-900); }
.bday-cat {
  font-size: var(--text-xs);
  background: var(--neutral-200);
  color: var(--neutral-700);
  padding: 2px 6px;
  border-radius: var(--r-full);
  text-align: center;
  font-weight: 700;
}
.bday-age { color: var(--neutral-500); font-size: var(--text-xs); }
.bday-in { color: var(--neutral-500); font-size: var(--text-xs); text-align: right; font-style: italic; }
@media (max-width: 640px) {
  .bday-row { grid-template-columns: 50px 1fr 60px; }
  .bday-row .bday-cat, .bday-row .bday-age { display: none; }
}
