/*
 * ══════════════════════════════════════════════════════════════
 * NEVO Design System v2
 * nevo.kwet.eu — Last War: Survival · Alliance NEVO
 * ══════════════════════════════════════════════════════════════
 *
 * SETUP — ajouter dans le <head> de votre base Jinja2 :
 *
 *   <link rel="preconnect" href="https://fonts.googleapis.com">
 *   <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
 *   <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
 *   <link rel="stylesheet" href="/static/nevo-styles.css">
 *
 * ══════════════════════════════════════════════════════════════ */

/* ─── TOKENS ─────────────────────────────────────────────────── */
:root {
  /* Backgrounds — 4 niveaux d'élévation */
  --bg:            #07080f;
  --bg-surface:    #0d0f1e;
  --bg-raised:     #131728;
  --bg-overlay:    #191d30;
  --bg-hover:      rgba(255,255,255,0.028);

  /* Bordures */
  --border:        rgba(255,255,255,0.068);
  --border-strong: rgba(255,255,255,0.12);

  /* Accent (teal-vert) */
  --accent:        #00dcab;
  --accent-soft:   rgba(0,220,171,0.11);
  --accent-glow:   0 0 30px rgba(0,220,171,0.18);

  /* Danger (rouge) */
  --danger:        #e84444;
  --danger-soft:   rgba(232,68,68,0.09);
  --danger-glow:   0 0 30px rgba(232,68,68,0.22);

  /* Warning (ambre) */
  --warning:       #f0a020;
  --warning-soft:  rgba(240,160,32,0.09);

  /* Texte — 3 niveaux */
  --text-1:        #d8dcf2;   /* principal */
  --text-2:        #5e6784;   /* secondaire · labels */
  --text-3:        #343b58;   /* discret · rangs */

  /* Typographie */
  --font-ui:   'Space Grotesk', system-ui, sans-serif;
  --font-mono: 'JetBrains Mono', monospace;

  /* Espacement — grille 4px */
  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px; --sp-4: 16px;
  --sp-5: 20px; --sp-6: 24px; --sp-8: 32px; --sp-10: 40px;

  /* Rayon */
  --r-sm: 4px;  --r: 6px;  --r-lg: 10px;
}


/* ─── BASE ───────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

body {
  background: var(--bg);
  color: var(--text-1);
  font-family: var(--font-ui);
  font-size: 14px;
  line-height: 1.55;
  margin: 0;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--accent); text-decoration: none; }
a:hover { opacity: 0.82; }

h1, h2, h3, h4 {
  font-family: var(--font-ui);
  font-weight: 700;
  color: var(--text-1);
  margin: 0;
  line-height: 1.25;
  letter-spacing: normal;
  text-transform: none;
  text-shadow: none;
}


/* ─── LAYOUT ─────────────────────────────────────────────────── */
.nevo-layout {
  display: flex;
  min-height: calc(100vh - 52px);
}

.nevo-sidebar {
  width: 210px;
  flex-shrink: 0;
  position: sticky;
  top: 52px;
  height: calc(100vh - 52px);
  overflow-y: auto;
  border-right: 1px solid var(--border);
  background: var(--bg-surface);
  padding: var(--sp-4) 0;
}

.nevo-main {
  flex: 1;
  min-width: 0;
  padding: var(--sp-6) var(--sp-8);
}

@media (max-width: 768px) {
  .nevo-sidebar { display: none; }
  .nevo-main    { padding: var(--sp-4); }
}


/* ─── TOP NAVIGATION ─────────────────────────────────────────── */
.nav-top {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  height: 52px;
  padding: 0 var(--sp-6);
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  z-index: 100;
}

.nav-top__brand {
  font-size: 14px;
  font-weight: 700;
  color: var(--accent);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-right: var(--sp-4);
  white-space: nowrap;
  display: flex;
  align-items: center;
  gap: 8px;
}

.nav-top__season {
  font-size: 10px;
  font-weight: 600;
  color: var(--text-3);
  letter-spacing: 0.06em;
  background: var(--bg-raised);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 2px 7px;
}

.nav-top__links {
  display: flex;
  gap: 2px;
  flex: 1;
}

.nav-top__link {
  padding: 5px var(--sp-3);
  border-radius: var(--r-sm);
  color: var(--text-2);
  font-size: 13px;
  font-weight: 500;
  transition: color .12s, background .12s;
  white-space: nowrap;
}
.nav-top__link:hover       { color: var(--text-1); background: var(--bg-hover); opacity: 1; }
.nav-top__link--active     { color: var(--text-1); background: var(--bg-overlay); }

.nav-top__right {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: var(--sp-3);
}

.nav-top__member-count {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-3);
}

/* ── Nav mobile — placé APRÈS les règles de base pour gagner la cascade ── */
@media (max-width: 768px) {
  .nav-top {
    height: auto;        /* écrase height:52px */
    flex-wrap: wrap;
    padding: 0 var(--sp-3);
    gap: 0;
    align-items: stretch;
  }
  /* Ligne 1 : brand à gauche, icônes à droite */
  .nav-top__brand {
    flex: 1;
    margin-right: 0;
    height: 48px;
    align-items: center;
    display: flex;
  }
  .nav-top__right {
    height: 48px;
    margin-left: 0;
    gap: var(--sp-2);
  }
  /* Ligne 2 : tous les liens sur toute la largeur */
  .nav-top__links {
    flex-basis: 100%;
    order: 10;           /* passe après brand (0) et right (0) */
    gap: 2px;
    padding: 4px 0 6px;
    border-top: 1px solid var(--border);
    flex-wrap: wrap;
  }
  .nav-top__link { font-size: 12px; padding: 4px 8px; }
  /* Masquer les drapeaux (langue persiste via cookie) et chip joueur */
  .language-flags       { display: none; }
  .tracked-player-chip  { display: none !important; }
  /* thead non-sticky → rien à ajuster ici */
}

/* ─── SIDEBAR NAVIGATION ─────────────────────────────────────── */
.nav-sidebar__section {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-3);
  padding: var(--sp-3) var(--sp-4) var(--sp-1);
  margin-top: var(--sp-2);
}

.nav-sidebar__link {
  display: block;
  padding: 7px var(--sp-4);
  font-size: 13px;
  font-weight: 500;
  color: var(--text-2);
  border-left: 2px solid transparent;
  transition: color .12s, border-color .12s, background .12s;
}
.nav-sidebar__link:hover        { color: var(--text-1); background: var(--bg-hover); opacity: 1; }
.nav-sidebar__link--active      { color: var(--text-1); border-left-color: var(--accent); background: var(--accent-soft); }


/* ─── EYEBROW ────────────────────────────────────────────────── */
.eyebrow {
  display: block;
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--text-2);
  margin-bottom: var(--sp-1);
  /* neutralise l'ancien styles.css : rotate(-1.5deg) + text-shadow + font-tag */
  transform: none;
  text-shadow: none;
  font-family: var(--font-ui);
}
.eyebrow::before,
.eyebrow::after { display: none; content: none; }
.eyebrow--accent { color: var(--accent); }
.eyebrow--danger { color: var(--danger); }


/* ─── PANEL ──────────────────────────────────────────────────── */
.panel {
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  overflow: visible; /* visible pour que les tooltips ne soient pas coupés */
  padding: 0;
  margin-bottom: 0;
}
.panel + .panel { margin-top: var(--sp-5); }

.panel--danger {
  border-color: rgba(232,68,68,0.28);
  box-shadow: var(--danger-glow);
}
.panel--accent {
  border-color: rgba(0,220,171,0.2);
  box-shadow: var(--accent-glow);
}

.panel__header {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
  border-bottom: 1px solid var(--border);
  border-radius: var(--r-lg) var(--r-lg) 0 0; /* correspond aux coins du .panel sans overflow:hidden */
}
.panel--danger .panel__header {
  background: rgba(232,68,68,0.05);
  border-bottom-color: rgba(232,68,68,0.14);
}

.panel__title-group  { flex: 1; min-width: 0; }
.panel__title        { font-size: 14px; font-weight: 600; color: var(--text-1); }
.panel--danger .panel__title { color: var(--danger); }
.panel--accent .panel__title { color: var(--accent); }
.panel__subtitle     { font-size: 12px; color: var(--text-2); margin-top: 1px; }

.panel__pill {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-2);
  background: var(--bg-raised);
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 2px 10px;
  white-space: nowrap;
}
.panel--danger .panel__pill {
  color: var(--danger);
  background: var(--danger-soft);
  border-color: rgba(232,68,68,0.2);
}

.panel__footer {
  padding: var(--sp-3) var(--sp-5);
  border-top: 1px solid var(--border);
  font-size: 12px;
  color: var(--text-2);
}


/* ─── SELLETTE (CHOPPING BLOCK) ──────────────────────────────── */
.sellette__cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-3);
  padding: var(--sp-4);
}
@media (max-width: 700px) {
  .sellette__cards { grid-template-columns: 1fr; }
}

.sellette__card {
  background: rgba(232,68,68,0.05);
  border: 1px solid rgba(232,68,68,0.16);
  border-radius: var(--r);
  padding: var(--sp-4);
  transition: background .15s;
}
.sellette__card:hover { background: rgba(232,68,68,0.09); }

.sellette__card__rank {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: rgba(232,68,68,0.4);
  margin-bottom: var(--sp-1);
}
.sellette__card__name {
  font-size: 15px;
  font-weight: 700;
  color: var(--text-1);
  margin-bottom: var(--sp-3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sellette__card__score {
  font-family: var(--font-mono);
  font-size: 40px;
  font-weight: 700;
  color: var(--danger);
  line-height: 1;
}
.sellette__card__score-label {
  font-size: 10px;
  color: var(--text-3);
  margin-top: 2px;
  margin-bottom: var(--sp-3);
}
.sellette__card__flags { display: flex; flex-wrap: wrap; gap: 5px; }


/* ─── BADGES & FLAGS ─────────────────────────────────────────── */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: var(--r-sm);
  line-height: 1.4;
  white-space: nowrap;
}
.badge--alert   { background: var(--danger-soft);  color: var(--danger);  border: 1px solid rgba(232,68,68,0.2); }
.badge--warning { background: var(--warning-soft); color: var(--warning); border: 1px solid rgba(240,160,32,0.2); }
.badge--ok      { background: var(--accent-soft);  color: var(--accent);  border: 1px solid rgba(0,220,171,0.2); }
.badge--neutral { background: rgba(255,255,255,0.04); color: var(--text-2); border: 1px solid var(--border); }

/* Flags inline dans les cellules de tableau */
.player-flag {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: 10px;
  font-weight: 600;
  padding: 1px 5px;
  border-radius: 3px;
  vertical-align: middle;
  margin-left: 5px;
}
.player-flag--vs    { background: var(--danger-soft);  color: var(--danger); }
.player-flag--kills { background: var(--warning-soft); color: var(--warning); }


/* ─── DATA TABLE ─────────────────────────────────────────────── */
.data-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  background: transparent; /* neutralise gradient rose de styles.css */
}
.data-table thead { background: none; } /* neutralise gradient thead de styles.css */
.data-table tbody tr:nth-child(even) { background: transparent; } /* neutralise striping alternée */
.data-table--fixed { table-layout: fixed; }

.data-table thead th {
  padding: 10px 12px;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--text-2) !important; /* neutralise color:#9ff7ff !important de styles.css */
  font-family: var(--font-ui);     /* neutralise font-family:var(--font-display) */
  text-shadow: none;               /* neutralise le glow cyan */
  border-bottom: 1px solid var(--border-strong);
  text-align: right;
  white-space: nowrap;
  background: var(--bg-raised);
  user-select: none;
  position: static !important; /* désactive le sticky de styles.css — couvrait la 1ère ligne */
  top: auto;
  z-index: auto;
}
.data-table thead th:first-child { text-align: left; border-top-left-radius: calc(var(--r-lg) - 1px); }
.data-table thead th:last-child  { border-top-right-radius: calc(var(--r-lg) - 1px); }

.data-table tbody tr {
  border-bottom: 1px solid rgba(255,255,255,0.035);
  transition: background .1s;
}
.data-table tbody tr:last-child { border-bottom: none; }
.data-table tbody tr:hover td  { background: var(--bg-raised); }

.data-table tbody tr.is-alert td       { background: rgba(232,68,68,0.03); }
.data-table tbody tr.is-alert:hover td { background: rgba(232,68,68,0.07); }

.data-table td {
  padding: 9px 12px;
  text-align: right;
  vertical-align: middle;
}
.data-table td:first-child { text-align: left; }

/* Liens de tri */
.data-table__sort {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  color: inherit;
  cursor: pointer;
}
.data-table__sort:hover          { color: var(--text-1); opacity: 1; }
.data-table__sort--asc::after    { content: '↑'; color: var(--accent); font-size: 10px; }
.data-table__sort--desc::after   { content: '↓'; color: var(--accent); font-size: 10px; }

/* Cellule joueur */
.data-table__player {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 600;
  color: var(--text-1);
}
.data-table__player a       { color: inherit; }
.data-table__player a:hover { color: var(--accent); opacity: 1; }

.data-table__rank {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-3);
  width: 18px;
  text-align: right;
  flex-shrink: 0;
}


/* ─── POINTS CELLS ───────────────────────────────────────────── */
.pts      { font-family: var(--font-mono); font-size: 13px; font-weight: 500; }
.pts--pos  { color: var(--accent); }
.pts--neg  { color: var(--danger); }
.pts--warn { color: var(--warning); }
.pts--zero { color: var(--text-3); font-style: italic; }


/* ─── SCORE CHIP + BARRE ─────────────────────────────────────── */
.score-chip {
  display: inline-flex;
  align-items: baseline;
  gap: 2px;
  font-family: var(--font-mono);
  font-weight: 700;
}
.score-chip__num   { font-size: 15px; }
.score-chip__denom { font-size: 10px; color: var(--text-3); }
.score-chip--hi  .score-chip__num { color: var(--accent); }
.score-chip--mid .score-chip__num { color: var(--warning); }
.score-chip--lo  .score-chip__num { color: var(--danger); }

.score-bar { height: 3px; background: rgba(255,255,255,0.06); border-radius: 2px; overflow: hidden; margin-top: 3px; }
.score-bar__fill          { height: 100%; border-radius: 2px; }
.score-bar__fill--hi      { background: var(--accent); }
.score-bar__fill--mid     { background: var(--warning); }
.score-bar__fill--lo      { background: var(--danger); }


/* ─── METRIC CARDS ───────────────────────────────────────────── */
.metrics-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(155px, 1fr));
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
}
.metric-card {
  background: var(--bg-raised);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: var(--sp-4);
}
/* neutralise les nth-child rose/teal/or de styles.css (spécificité 0,2,0 — même niveau, nevo gagne car chargé après) */
.metric-card:nth-child(n) {
  background: var(--bg-raised);
  border-color: var(--border);
  box-shadow: none;
  transform: none;
}
/* neutralise hover scale + glow rose de styles.css */
@media (hover: hover) {
  .metric-card:hover { transform: none; box-shadow: none; }
}
.metric-card--accent { border-color: rgba(0,220,171,0.18);  background: rgba(0,220,171,0.04); }
.metric-card--danger { border-color: rgba(232,68,68,0.18);  background: rgba(232,68,68,0.04); }

.metric-card__value {
  font-family: var(--font-mono);
  font-size: 26px;
  font-weight: 700;
  color: var(--text-1);
  line-height: 1;
  margin-bottom: 4px;
}
.metric-card--accent .metric-card__value { color: var(--accent); }
.metric-card--danger .metric-card__value { color: var(--danger); }
.metric-card__label { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .07em; color: var(--text-2); }
.metric-card__sub   { font-size: 11px; color: var(--text-3); margin-top: 5px; }


/* ─── PLAYER PROFILE ─────────────────────────────────────────── */
.player-header {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: start;
  gap: var(--sp-6);
  padding: var(--sp-6) var(--sp-6) var(--sp-5);
  border-bottom: 1px solid var(--border);
}
.player-header__name { font-size: 22px; font-weight: 700; color: var(--text-1); margin-bottom: 5px; }
.player-header__meta { font-size: 12px; color: var(--text-2); display: flex; gap: var(--sp-4); }

.player-score-big__num   { font-family: var(--font-mono); font-size: 52px; font-weight: 700; line-height: 1; }
.player-score-big__label { font-size: 11px; color: var(--text-2); text-align: right; margin-top: 2px; }

.player-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--border);
}
.player-stat { background: var(--bg-surface); padding: var(--sp-4) var(--sp-5); text-align: center; }
.player-stat__val   { font-family: var(--font-mono); font-size: 20px; font-weight: 700; color: var(--text-1); margin-bottom: 2px; }
.player-stat__label { font-size: 11px; color: var(--text-2); font-weight: 500; }


/* ─── BOUTONS ────────────────────────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 16px;
  border-radius: var(--r);
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  border: 1px solid transparent;
  transition: opacity .15s, background .15s, color .15s, border-color .15s;
  white-space: nowrap;
  text-decoration: none;
  text-transform: none;  /* neutralise button { text-transform: uppercase } de styles.css */
  min-width: 0;          /* neutralise button { min-width: 170px } */
  width: auto;           /* neutralise input/button { width: 100% } */
  min-height: 0;         /* neutralise button { min-height: 40px } */
  letter-spacing: normal;
  /* Defaut neutre : neutralise le degrade rose de button {} dans styles.css
     pour tout .btn sans variante. Les variantes ci-dessous l'ecrasent. */
  background: var(--bg-raised);
  color: var(--text-1);
  border-color: var(--border-strong);
  box-shadow: none;
}
.btn:hover { transform: none; filter: none; background: var(--bg-hover); } /* neutralise button:hover { transform: translateY(-1px) } */
.btn--primary { background: var(--accent); color: #07080f; border-color: var(--accent); }
.btn--primary:hover { background: #00f0c0; border-color: #00f0c0; opacity: 1; }
.btn--ghost   { background: transparent; color: var(--text-2); border-color: var(--border-strong); }
.btn--ghost:hover { color: var(--text-1); background: var(--bg-hover); opacity: 1; }
.btn--danger  { background: var(--danger-soft); color: var(--danger); border-color: rgba(232,68,68,0.22); }
.btn--danger:hover { background: rgba(232,68,68,0.18); opacity: 1; }
.btn--sm { padding: 4px 10px; font-size: 12px; }

/* ─── Season phase meta (opponent + result per day) ──────────────── */
.season-meta-row th {
  font-weight: 500;
  padding-top: 4px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--border);
}
.season-meta-cell {
  display: table-cell;
  text-align: center;
  line-height: 1.25;
}
.season-meta-opponent {
  display: block;
  font-size: 10px;
  color: var(--text-2);
  max-width: 84px;
  margin: 0 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.season-meta-outcome {
  display: block;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-3);
}
.season-meta-cell.is-win  .season-meta-outcome { color: var(--accent); }
.season-meta-cell.is-loss .season-meta-outcome { color: var(--danger); }

.season-meta-editor {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  gap: var(--sp-2);
  margin-top: var(--sp-3);
}
.season-meta-form {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  background: var(--bg-raised);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  padding: 5px 8px;
}
.season-meta-form__label {
  font-size: 11px;
  font-weight: 700;
  color: var(--text-2);
  flex: 0 0 34px;
}
.season-meta-form input[type="text"],
.season-meta-form select {
  font-size: 11px;
  padding: 3px 6px;
  background: var(--bg-surface);
  color: var(--text-1);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  min-width: 0;
  min-height: 0;
  width: auto;
  margin: 0;
}
.season-meta-form input[type="text"] { flex: 1 1 auto; }
.season-meta-form select { flex: 0 0 84px; }
.season-meta-form .btn { flex: 0 0 auto; }
.btn--xs { padding: 1px 6px; font-size: 10px; line-height: 1.5; }
.btn--warning { background: rgba(255,196,60,0.10); color: var(--warning, #f0a020); border-color: rgba(255,196,60,0.22); }
.btn--warning:hover { background: rgba(255,196,60,0.18); opacity: 1; }


/* ─── FORMULAIRES ────────────────────────────────────────────── */
.form-group { margin-bottom: var(--sp-5); }
.form-label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  color: var(--text-2);
  margin-bottom: var(--sp-2);
  text-transform: uppercase;
  letter-spacing: .06em;
}
.form-input, .form-select, .form-textarea {
  width: 100%;
  background: var(--bg-raised);
  border: 1px solid var(--border-strong);
  border-radius: var(--r);
  color: var(--text-1);
  font-family: var(--font-ui);
  font-size: 14px;
  padding: 8px 12px;
  outline: none;
  transition: border-color .15s;
}
.form-input:focus, .form-select:focus, .form-textarea:focus { border-color: var(--accent); }
.form-textarea { resize: vertical; font-family: var(--font-mono); font-size: 12px; }


/* ─── TRAINS ─────────────────────────────────────────────────── */
.train-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(175px, 1fr));
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
}
.train-slot { background: var(--bg-raised); border: 1px solid var(--border); border-radius: var(--r); padding: var(--sp-3) var(--sp-4); }
.train-slot--assigned { border-color: rgba(0,220,171,0.2); }
.train-slot__title  { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: var(--text-3); margin-bottom: var(--sp-2); }
.train-slot__player { font-size: 14px; font-weight: 600; color: var(--accent); }
.train-slot__player--empty { color: var(--text-3); font-style: italic; font-weight: 400; }


/* ─── BRIDGE — classes héritées de l'ancien styles.css ──────── */

/* Secondary-nav sans .panel : donne un fond et une bordure basse */
.secondary-nav {
  background: var(--bg-surface);
  border-bottom: 1px solid var(--border);
  padding-left: var(--sp-6) !important;
  padding-right: var(--sp-6) !important;
}

/* Footer */
.site-credit {
  margin-top: var(--sp-10);
  padding: var(--sp-6) 0;
  border-top: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-size: 11px;
  color: var(--text-3);
}

/* Tooltips via data-tooltip */
[data-tooltip] { position: relative; cursor: help; }
[data-tooltip]::before {
  content: attr(data-tooltip);
  position: absolute; bottom: calc(100% + 8px); left: 50%;
  transform: translateX(-50%);
  background: var(--bg-overlay);
  color: var(--text-1);
  font-size: 11px; padding: 7px 11px; border-radius: var(--r);
  border: 1px solid var(--border-strong);
  white-space: normal; width: max-content; max-width: 230px;
  pointer-events: none; z-index: 200; opacity: 0;
  transition: opacity 0.15s ease;
}
[data-tooltip]::after {
  content: ''; position: absolute; bottom: calc(100% + 2px); left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent; border-top: 6px solid var(--bg-overlay);
  pointer-events: none; z-index: 200; opacity: 0;
  transition: opacity 0.15s ease;
}
[data-tooltip]:hover::before,
[data-tooltip]:hover::after { opacity: 1; }


/* ─── UTILITAIRES ────────────────────────────────────────────── */
.text-accent  { color: var(--accent)  !important; }
.text-danger  { color: var(--danger)  !important; }
.text-warning { color: var(--warning) !important; }
.text-muted   { color: var(--text-2)  !important; }
.text-dim     { color: var(--text-3)  !important; }
.text-right   { text-align: right; }
.text-center  { text-align: center; }
.font-mono    { font-family: var(--font-mono); }
