/* ═══════════════════════════════════════════════════════════════════════════════════════════════
   SPORT (js/183-sport.js, 10.10.2026)
   Blason du club favori dans le bandeau d'accueil, page Sport (clubs, championnats, sports de
   combat) et réglages. Tout passe par les jetons du thème : les seules couleurs propres sont le
   fond blanc des blasons (un écusson se pose sur blanc, comme sur un maillot) et viennent des
   images elles-mêmes.
   ═══════════════════════════════════════════════════════════════════════════════════════════════ */

.spt, .spt-hero, .spt-modale { --spt-fond-blason: #fff; }

.spt-lecteur { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ── Bandeau d'accueil ─────────────────────────────────────────────────────────────────────────
   Petit, discret, cliquable. La couleur du texte est HÉRITÉE du bandeau (blanc sur le marine du
   thème clair, marine sur le bleu ciel des thèmes sombres) et le verre vient de .dbx-btn-verre :
   rien ici ne choisit de couleur. */
.spt-hero { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; min-height: 38px; }
.dbx-hero .spt-hero-club, .dbx-hero .spt-hero-mini, .dbx-hero .spt-hero-ajout {
  display: inline-flex; align-items: center; color: inherit; font-family: inherit; line-height: 1.15;
  border-radius: var(--r-rond, 999px); cursor: pointer;
}
.dbx-hero .spt-hero-club { gap: 9px; padding: 4px 13px 4px 4px; max-width: 280px; text-align: left; }
.dbx-hero .spt-hero-mini { justify-content: center; width: 36px; height: 36px; padding: 0; }
.dbx-hero .spt-hero-ajout { gap: 6px; padding: 6px 12px; font-size: var(--t-xs, 11px); font-weight: 600; opacity: .9; }
.dbx-hero .spt-hero-ajout:hover { opacity: 1; }
.spt-hero-blason, .spt-hero-mini img {
  border-radius: 50%; background: var(--spt-fond-blason); object-fit: contain; flex-shrink: 0;
}
.spt-hero-blason { width: 30px; height: 30px; padding: 3px; }
.spt-hero-mini img { width: 26px; height: 26px; padding: 2px; }
.spt-hero-ico { font-size: 17px; line-height: 1; width: 30px; text-align: center; }
.spt-hero-info { display: flex; flex-direction: column; min-width: 0; }
.spt-hero-info b { font-size: var(--t-s, 12.5px); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spt-hero-info small { font-size: var(--t-xs, 11px); opacity: .78; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-flex; align-items: center; }
.dbx-hero .spt-hero-club:focus-visible, .dbx-hero .spt-hero-mini:focus-visible, .dbx-hero .spt-hero-ajout:focus-visible {
  outline: 2px solid currentColor; outline-offset: 2px;
}

.spt-point-direct { display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 5px; flex-shrink: 0;
  background: var(--c-danger, #EF4444); animation: spt-pouls 1.6s ease-in-out infinite; }
@keyframes spt-pouls { 50% { opacity: .35; } }

@media (max-width: 760px) {
  .spt-hero { min-height: 34px; }
  .dbx-hero .spt-hero-club { max-width: 230px; padding: 3px 11px 3px 3px; }
  .spt-hero-blason { width: 26px; height: 26px; }
  .dbx-hero .spt-hero-mini { width: 32px; height: 32px; }
  .spt-hero-mini img { width: 22px; height: 22px; }
}

/* ── Page ────────────────────────────────────────────────────────────────────────────────────── */
.spt { max-width: 1400px; margin: 0 auto; }
.spt-tete-actions { flex-wrap: wrap; }

.spt-selecteur { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 6px; margin: 0 0 14px; scrollbar-width: thin; }
.spt-choix {
  display: inline-flex; align-items: center; gap: 8px; flex-shrink: 0;
  padding: 6px 14px 6px 6px; border-radius: var(--r-rond, 999px); cursor: pointer; white-space: nowrap;
  border: 1px solid var(--border); background: var(--surface); color: var(--text-muted);
  font-family: inherit; font-size: var(--t-m, 13.5px); font-weight: 600;
  transition: border-color var(--v-court, .15s), background var(--v-court, .15s), color var(--v-court, .15s);
}
.spt-choix:hover { color: var(--text); border-color: var(--accent-border); }
.spt-choix.actif { color: var(--text); background: var(--accent-dim); border-color: var(--accent-border); box-shadow: inset 0 0 0 1px var(--accent-border); }
.spt-choix img { width: 28px; height: 28px; padding: 2px; border-radius: 50%; background: var(--spt-fond-blason); object-fit: contain; }
.spt-choix-ico { width: 28px; text-align: center; font-size: 17px; }
/* Logos de championnats (11.10.2026, à la place des émojis drapeaux) : posés sur blanc comme les blasons. */
.spt-choix-ligue { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%;
  background: var(--spt-fond-blason); flex-shrink: 0; }
.spt-choix-ligue img { width: 20px; height: 20px; object-fit: contain; }
.spt-identite-ligue { display: inline-flex; align-items: center; justify-content: center; height: 72px; border-radius: 50%;
  background: var(--spt-fond-blason); box-shadow: 0 0 0 1px var(--border); flex-shrink: 0; }
.spt-identite-ligue img { width: 48px; height: 48px; object-fit: contain; }
.spt-puce .spt-ligue-logo { width: 16px; height: 16px; padding: 1px; margin-right: 2px; border-radius: 3px; background: #fff; object-fit: contain; vertical-align: -4px; }
.spt-etoile { font-size: 12px; }
.spt :is(button, a, summary, input):focus-visible, .spt-modale :is(button, a, input, label):focus-visible {
  outline: 2px solid var(--accent); outline-offset: 2px;
}

.spt-carte {
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-l, 18px);
  padding: var(--e-4, 16px); box-shadow: var(--o-1); color: var(--text); min-width: 0;
}
.spt-carte + .spt-carte { margin-top: 0; }
.spt-carte-tete { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.spt-carte-tete h3 { margin: 0; font-size: var(--t-l, 15px); font-weight: 600; color: var(--text); }
.spt-carte-sous { font-size: var(--t-xs, 11px); letter-spacing: .06em; text-transform: uppercase; color: var(--text-muted); font-weight: 600; }
.spt-attente { display: flex; align-items: center; justify-content: center; min-height: 120px; }

/* 11.10.2026 : « il y a des trous et des espaces ». La grille alignait les cartes par rangées : une
   carte courte à côté d'une longue laissait un grand vide dessous. Les cartes s'empilent désormais en
   colonnes indépendantes, équilibrées par le navigateur (2 colonnes au-delà de ~690 px, 1 en dessous). */
.spt-grille { display: block; columns: 2 330px; column-gap: 14px; }
.spt-grille > .spt-carte { break-inside: avoid; page-break-inside: avoid; display: block; width: 100%; margin: 0 0 14px; }
.spt-grille-2 { display: grid; columns: auto; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: 14px; align-items: start; }
.spt-grille-2 > .spt-carte { margin: 0; }

/* Identité du club */
.spt-identite { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 10px; }
.spt-identite-blason { width: 72px; height: 72px; padding: 6px; border-radius: 50%; background: var(--spt-fond-blason); object-fit: contain;
  box-shadow: 0 0 0 1px var(--border); flex-shrink: 0; }
.spt-identite-drapeau { font-size: 40px; line-height: 1; width: 72px; text-align: center; }
.spt-identite-texte { flex: 1 1 220px; min-width: 0; }
.spt-identite-texte h3 { margin: 0; font-size: var(--t-xl, 19px); font-weight: 600; color: var(--text); }
.spt-identite-texte p { margin: 3px 0 0; font-size: var(--t-m, 13.5px); color: var(--text-muted); }
.spt-identite-texte p b { color: var(--text); }
.spt-identite-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.spt-forme { display: inline-flex; align-items: center; gap: 4px; margin-top: 8px; }
.spt-forme small { margin-left: 4px; font-size: var(--t-xs, 11px); color: var(--text-muted); }

.spt-res { display: inline-flex; align-items: center; justify-content: center; min-width: 21px; height: 21px; padding: 0 4px;
  border-radius: 6px; font-size: var(--t-xs, 11px); font-weight: 700; }
.spt-res-V { background: var(--c-succes-fond); color: var(--c-succes-texte); }
.spt-res-N { background: var(--c-neutre-fond); color: var(--c-neutre-texte); }
.spt-res-D { background: var(--c-danger-fond); color: var(--c-danger-texte); }

/* Rubriques */
.spt-onglets { display: flex; align-items: flex-end; gap: 2px; overflow-x: auto; margin: 4px 0 14px; border-bottom: 1px solid var(--border); scrollbar-width: none; }
.spt-onglets::-webkit-scrollbar { display: none; }
.spt-onglets [role="tab"] {
  flex-shrink: 0; background: none; border: 0; border-bottom: 2px solid transparent; margin-bottom: -1px;
  padding: 9px 13px; font-family: inherit; font-size: var(--t-m, 13.5px); font-weight: 600; color: var(--text-muted); cursor: pointer;
  transition: color var(--v-court, .15s), border-color var(--v-court, .15s);
}
.spt-onglets [role="tab"]:hover { color: var(--text); }
.spt-onglets [role="tab"].actif { color: var(--text); border-bottom-color: var(--accent); }
.spt-actualiser { margin-left: auto; flex-shrink: 0; background: none; border: 1px solid var(--border); border-radius: var(--r-s, 10px);
  width: 32px; height: 32px; margin-bottom: 5px; color: var(--text-muted); cursor: pointer; font-size: 15px; }
.spt-actualiser:hover { color: var(--text); border-color: var(--accent-border); }

/* Chiffres de la saison */
.spt-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--e-2, 8px); }
.spt-kpi { display: flex; flex-direction: column; gap: 1px; padding: 10px 12px; border-radius: var(--r-s, 10px); background: var(--surface-alt); border: 1px solid var(--border); }
.spt-kpi b { font-size: 19px; font-weight: 600; color: var(--text); letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.spt-kpi small { font-size: var(--t-xs, 11px); color: var(--text-muted); }

/* Articles */
.spt-articles { list-style: none; margin: 0; padding: 0; }
.spt-articles li { display: flex; flex-direction: column; gap: 3px; padding: 9px 0; border-bottom: 1px solid var(--border); }
.spt-articles li:last-child { border-bottom: none; }
.spt-articles a { color: var(--text); font-size: var(--t-m, 13.5px); font-weight: 500; line-height: 1.4; text-decoration: none; text-wrap: pretty; }
.spt-articles a:hover { color: var(--accent); text-decoration: underline; }
.spt-article-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-langue { display: inline-block; padding: 0 5px; border-radius: 4px; border: 1px solid var(--border); font-size: 10px; font-weight: 700; letter-spacing: .04em; color: var(--text-muted); }

/* Matchs */
.spt-matchs { list-style: none; margin: 0; padding: 0; }
.spt-match { display: grid; grid-template-columns: 70px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 9px 0; border-bottom: 1px solid var(--border); }
.spt-match:last-child { border-bottom: none; }
.spt-match-date { display: flex; flex-direction: column; font-variant-numeric: tabular-nums; }
.spt-match-date b { font-size: var(--t-s, 12.5px); font-weight: 600; color: var(--text); text-transform: capitalize; }
.spt-match-date small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-match-adv { display: flex; align-items: center; gap: 9px; min-width: 0; }
.spt-match-adv > span { display: flex; flex-direction: column; min-width: 0; }
.spt-match-adv b { font-size: var(--t-m, 13.5px); font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spt-match-adv small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-match-score { display: inline-flex; align-items: center; gap: 7px; font-variant-numeric: tabular-nums; }
.spt-match-score b { font-size: var(--t-l, 15px); font-weight: 700; color: var(--text); }
.spt-match-neutre { grid-template-columns: 70px minmax(0, 1fr) auto minmax(0, 1fr); }
.spt-match-eq { display: flex; align-items: center; gap: 7px; min-width: 0; font-size: var(--t-m, 13.5px); color: var(--text); }
.spt-match-eq b { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spt-match-eq-ext { justify-content: flex-end; text-align: right; }
.spt-match-neutre .spt-match-score { flex-direction: column; gap: 0; justify-content: center; }
.spt-match-neutre .spt-match-score small { font-size: 10px; color: var(--text-muted); }
.spt-blason { width: 22px; height: 22px; object-fit: contain; flex-shrink: 0; }
.spt-direct { display: inline-flex; align-items: center; font-size: var(--t-xs, 11px); font-weight: 700; color: var(--c-danger-texte); }
.spt-statut { font-size: var(--t-xs, 11px); color: var(--c-alerte-texte); font-weight: 600; }

/* Classement */
.spt-table-enveloppe { overflow-x: auto; }
.spt-table { width: 100%; border-collapse: collapse; font-size: var(--t-s, 12.5px); font-variant-numeric: tabular-nums; }
.spt-table th { padding: 0; border-bottom: 1px solid var(--border); text-align: center; }
.spt-table th > span { display: block; padding: 7px 6px; font-size: var(--t-xs, 11px); font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--text-muted); }
.spt-table th:nth-child(2) > span { text-align: left; }
.spt-table td { padding: 7px 6px; border-bottom: 1px solid var(--border); text-align: center; color: var(--text); }
.spt-table tr:last-child td { border-bottom: none; }
.spt-table .spt-equipe { text-align: left; }
.spt-table .spt-equipe { display: flex; align-items: center; gap: 8px; }
.spt-table .spt-equipe span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spt-table .spt-rang { width: 32px; font-weight: 600; color: var(--text-muted); }
.spt-table .spt-pts { font-weight: 700; }
.spt-table tr.spt-favori td { background: var(--accent-dim); font-weight: 600; }
.spt-table tr.spt-favori .spt-rang { color: var(--text); }
.spt-table tr.spt-suivi td { background: var(--surface-alt); }
.spt-table tr.spt-zone-ldc .spt-rang { box-shadow: inset 3px 0 0 var(--c-succes); }
.spt-table tr.spt-zone-le .spt-rang { box-shadow: inset 3px 0 0 var(--c-info); }
.spt-table tr.spt-zone-lc .spt-rang { box-shadow: inset 3px 0 0 var(--accent); }
.spt-table tr.spt-zone-barrage .spt-rang { box-shadow: inset 3px 0 0 var(--c-alerte); }
.spt-table tr.spt-zone-rel .spt-rang { box-shadow: inset 3px 0 0 var(--c-danger); }
.spt-legende { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 10px; font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-legende span { display: inline-flex; align-items: center; gap: 6px; }
.spt-legende span::before { content: ''; width: 3px; height: 12px; border-radius: 2px; background: var(--text-dim); }
.spt-legende .spt-legende-ldc::before { background: var(--c-succes); }
.spt-legende .spt-legende-le::before { background: var(--c-info); }
.spt-legende .spt-legende-lc::before { background: var(--accent); }
.spt-legende .spt-legende-barrage::before { background: var(--c-alerte); }
.spt-legende .spt-legende-rel::before { background: var(--c-danger); }

/* Effectif */
.spt-poste { margin: 14px 0 8px; font-size: var(--t-xs, 11px); font-weight: 600; letter-spacing: .07em; text-transform: uppercase; color: var(--text-muted); }
.spt-poste:first-child { margin-top: 0; }
.spt-poste span { margin-left: 4px; color: var(--text-dim); }
.spt-joueurs { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); gap: 8px; }
.spt-joueur { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--r-m, 14px); background: var(--surface-alt); min-width: 0; }
.spt-photo { position: relative; width: 46px; height: 46px; flex-shrink: 0; border-radius: 50%; overflow: hidden;
  display: inline-flex; align-items: center; justify-content: center; background: var(--surface); border: 1px solid var(--border);
  font-size: var(--t-s, 12.5px); font-weight: 700; color: var(--text-muted); }
.spt-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: top center; background: var(--surface); }
.spt-joueur-info { display: flex; flex-direction: column; min-width: 0; }
.spt-joueur-info b { font-size: var(--t-m, 13.5px); font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spt-joueur-info small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-stats { color: var(--text) !important; }
.spt-numero { display: inline-block; min-width: 22px; margin-right: 6px; padding: 0 4px; border-radius: 5px; text-align: center;
  font-size: var(--t-xs, 11px); background: var(--accent-dim); color: var(--accent); }

/* Sports de combat */
.spt-gala { border: 1px solid var(--border); border-radius: var(--r-m, 14px); background: var(--surface-alt); margin-bottom: 8px; }
.spt-gala summary { display: flex; gap: 12px; align-items: center; padding: 10px 12px; cursor: pointer; list-style: none; }
.spt-gala summary::-webkit-details-marker { display: none; }
.spt-gala summary::after { content: '▾'; margin-left: auto; color: var(--text-muted); transition: transform var(--v-court, .15s); }
.spt-gala[open] summary::after { transform: rotate(180deg); }
.spt-gala-date { display: flex; flex-direction: column; min-width: 62px; }
.spt-gala-date b { font-size: var(--t-s, 12.5px); color: var(--text); text-transform: capitalize; }
.spt-gala-date small, .spt-gala-nom small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-gala-nom { display: flex; flex-direction: column; min-width: 0; }
.spt-gala-nom b { font-size: var(--t-m, 13.5px); color: var(--text); }
.spt-combats { list-style: none; margin: 0; padding: 0 12px 6px; }
.spt-combat { padding: 8px 0; border-top: 1px solid var(--border); }
.spt-categorie { display: block; font-size: 10.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--text-muted); margin-bottom: 4px; }
.spt-affiche { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.spt-combattant { display: inline-flex; align-items: center; gap: 6px; font-size: var(--t-m, 13.5px); color: var(--text); }
.spt-combattant img { border-radius: 2px; }
.spt-combattant small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-combattant.spt-vainqueur b { color: var(--c-succes-texte); }
.spt-combattant.spt-vainqueur b::after { content: ' ✓'; }
.spt-vs { font-size: var(--t-xs, 11px); font-weight: 700; color: var(--text-dim); text-transform: uppercase; }
.spt-combat-fin { display: block; margin-top: 3px; font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-boxe { display: flex; gap: 12px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--border); }
.spt-boxe:last-of-type { border-bottom: none; }
.spt-boxe img { width: 96px; height: 54px; object-fit: cover; border-radius: var(--r-xs, 6px); flex-shrink: 0; }
.spt-boxe > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.spt-boxe b { font-size: var(--t-m, 13.5px); color: var(--text); }
.spt-boxe small { font-size: var(--t-xs, 11px); color: var(--text-muted); }

/* États, notes, liens */
.spt-vide { display: flex; flex-direction: column; gap: 3px; padding: 14px 4px; color: var(--text-muted); font-size: var(--t-s, 12.5px); }
.spt-vide b { color: var(--text); font-weight: 600; font-size: var(--t-m, 13.5px); }
.spt-note { margin: 8px 0 0; font-size: var(--t-xs, 11px); color: var(--text-muted); line-height: 1.5; text-wrap: pretty; }
.spt-sources { margin: 14px 2px 0; font-size: var(--t-xs, 11px); color: var(--text-dim); }
.spt-lien { display: inline-block; margin-top: 8px; padding: 4px 0; background: none; border: 0; cursor: pointer; font-family: inherit;
  font-size: var(--t-s, 12.5px); font-weight: 600; color: var(--accent); text-decoration: none; }
.spt-lien:hover { text-decoration: underline; }
.spt-actions-bas { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }
.spt-actions-bas a.btn-secondary { text-decoration: none; display: inline-flex; align-items: center; }
.spt-bienvenue { text-align: center; padding: 32px 20px; }
.spt-bienvenue-ico { font-size: 38px; }
.spt-bienvenue h3 { margin: 8px 0 6px; font-size: var(--t-xl, 19px); color: var(--text); }
.spt-bienvenue p { margin: 0 auto; max-width: 520px; color: var(--text-muted); font-size: var(--t-m, 13.5px); line-height: 1.55; }
.spt-bienvenue .spt-actions-bas { justify-content: center; }

/* ── Réglages ─────────────────────────────────────────────────────────────────────────────────── */
.spt-modale { background: var(--surface); color: var(--text); border: 1px solid var(--border); border-radius: 16px; padding: 20px;
  width: min(660px, 100%); max-height: 88vh; overflow-y: auto; box-shadow: var(--o-3); }
.spt-modale-petite { width: min(460px, 100%); }
.spt-modale h3 { margin: 0; font-size: var(--t-xl, 19px); font-weight: 600; color: var(--text); }
.spt-modale p { color: var(--text-muted); font-size: var(--t-m, 13.5px); line-height: 1.55; }
.spt-modale-tete { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.spt-fermer { background: none; border: 1px solid var(--border); border-radius: var(--r-s, 10px); width: 34px; height: 34px; font-size: 20px; line-height: 1;
  color: var(--text-muted); cursor: pointer; }
.spt-fermer:hover { color: var(--text); }
.spt-modale-note { margin: 6px 0 4px; font-size: var(--t-s, 12.5px) !important; }
.spt-reg-bloc { margin-top: 16px; }
.spt-reg-bloc h4 { margin: 0 0 8px; font-size: var(--t-s, 12.5px); font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--text-muted); }
.spt-reg-bloc h4 small { margin-left: 6px; text-transform: none; letter-spacing: 0; font-weight: 400; color: var(--text-dim); }
.spt-reg-sports { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 8px; }
.spt-reg-sport { display: flex; align-items: flex-start; gap: 10px; padding: 12px; border: 1px solid var(--border); border-radius: var(--r-m, 14px); cursor: pointer; background: var(--surface-alt); }
.spt-reg-sport.actif { border-color: var(--accent-border); background: var(--accent-dim); }
.spt-reg-sport input { margin-top: 3px; accent-color: var(--accent); }
.spt-reg-sport-ico { font-size: 22px; line-height: 1; }
.spt-reg-sport b { display: block; font-size: var(--t-m, 13.5px); color: var(--text); }
.spt-reg-sport small { display: block; font-size: var(--t-xs, 11px); color: var(--text-muted); line-height: 1.45; }
.spt-reg-puces { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.spt-puce { position: relative; display: inline-flex; cursor: pointer; }
.spt-puce input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.spt-puce span { padding: 6px 12px; border-radius: var(--r-rond, 999px); border: 1px solid var(--border); background: var(--surface-alt);
  font-size: var(--t-s, 12.5px); font-weight: 500; color: var(--text-muted); white-space: nowrap; }
.spt-puce input:checked + span { background: var(--accent-dim); border-color: var(--accent-border); color: var(--text); font-weight: 600; }
.spt-puce input:checked + span::before { content: '✓ '; }
.spt-puce input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.spt-reg-equipes, .spt-reg-resultats { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.spt-reg-equipes li, .spt-reg-resultats li { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--r-s, 10px); background: var(--surface-alt); }
.spt-reg-resultats { margin-top: 10px; max-height: 280px; overflow-y: auto; }
.spt-reg-nom { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.spt-reg-nom b { font-size: var(--t-m, 13.5px); color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spt-reg-nom small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-reg-fav { position: relative; display: inline-flex; cursor: pointer; }
.spt-reg-fav input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.spt-reg-fav span { font-size: 17px; filter: grayscale(1); opacity: .35; transition: opacity var(--v-court, .15s); }
.spt-reg-fav input:checked + span { filter: none; opacity: 1; }
.spt-reg-fav input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.spt-retirer { background: none; border: 1px solid var(--border); border-radius: 8px; width: 30px; height: 30px; color: var(--text-muted); cursor: pointer; }
.spt-retirer:hover { color: var(--c-danger-texte); border-color: var(--c-danger); }
#spt-reg-q { width: 100%; }
.spt-petit { padding: 6px 11px !important; font-size: var(--t-s, 12.5px) !important; white-space: nowrap; }
.spt-modale-actions { display: flex; justify-content: flex-end; gap: 10px; flex-wrap: wrap; margin-top: 18px; }

/* ── Organisations de combat (11.10.2026) ───────────────────────────────────────────────────────
   Logo du domaine public posé sur blanc (comme un écusson) ; à défaut, sigle blanc sur la couleur
   de l'organisation (contraste ≥ 4,5:1 vérifié pour chaque fond, voir SPT_ORGS). */
.spt-org { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; height: var(--spt-org-h, 22px);
  vertical-align: middle; border-radius: 5px; }
.spt-org.spt-org-logo { background: #fff; padding: 2px 6px; box-shadow: 0 0 0 1px var(--border); }
.spt-org img { height: calc(var(--spt-org-h, 22px) - 4px); width: auto; display: block; }
.spt-org.spt-org-logo .spt-org-sigle { display: none; }
.spt-org-sigle { display: inline-flex; align-items: center; height: var(--spt-org-h, 22px); padding: 0 6px; border-radius: 5px;
  color: #fff; font-size: max(9.5px, calc(var(--spt-org-h, 22px) * .46)); font-weight: 800; letter-spacing: .05em; line-height: 1;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .28); }   /* les fonds presque noirs (PFL, The Ring) se détachent du fond sombre */
.spt-date-titre { white-space: nowrap; }
.spt-mobile-seul { display: none; }
.spt-carte-tete h3 { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.spt-gala summary .spt-org { margin-right: -2px; }
.spt-identite-orgs { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.spt-ceinture { display: inline-flex; align-items: center; gap: 3px; margin-left: 8px; padding: 1px 7px; border-radius: var(--r-rond, 999px);
  background: var(--c-alerte-fond, rgba(237, 187, 0, .16)); color: var(--c-alerte-texte, #92400E); font-size: 10.5px; font-weight: 700;
  letter-spacing: 0; text-transform: none; vertical-align: 1px; }

/* Ceintures */
.spt-table-ceintures th[scope="row"], .spt-table-boxe th[scope="row"] { padding: 7px 8px 7px 2px; border-bottom: 1px solid var(--border);
  text-align: left; font-size: var(--t-s, 12.5px); font-weight: 600; color: var(--text); white-space: nowrap; }
.spt-table-ceintures th[scope="row"] small { color: var(--text-muted); font-weight: 500; }
.spt-table-ceintures td.spt-champion { text-align: left; }
.spt-table-ceintures td.spt-champion i, .spt-vacant { color: var(--text-muted); font-style: normal; }
.spt-table .spt-sous-tete th { padding: 12px 2px 5px; text-align: left; font-size: var(--t-xs, 11px); font-weight: 600; letter-spacing: .06em;
  text-transform: uppercase; color: var(--text-muted); border-bottom: 1px solid var(--border); }
.spt-table-boxe { min-width: 760px; }
.spt-table-boxe thead th { padding: 6px 4px; }
.spt-table-boxe td { text-align: left; vertical-align: top; min-width: 118px; }
.spt-table-boxe td b { display: block; font-weight: 600; line-height: 1.3; }
.spt-table-boxe td small { display: block; font-size: 10.5px; color: var(--text-muted); }
.spt-table-boxe td small.spt-note-titre { color: var(--c-alerte-texte, #92400E); font-weight: 600; text-transform: lowercase; }
.spt-table-boxe td.spt-vacant { text-align: center; }
/* La première colonne reste visible quand on fait défiler le tableau sur téléphone. */
.spt-defile .spt-table-boxe th[scope="row"], .spt-defile .spt-table-boxe thead th:first-child {
  position: sticky; left: 0; z-index: 1; background: var(--surface); box-shadow: 1px 0 0 var(--border); }
.spt-carte-large { grid-column: 1 / -1; }

/* ── Widget « Mon club » (accueil) ─────────────────────────────────────────────────────────────── */
.spt-widget { --spt-fond-blason: #fff; position: relative; overflow: hidden; margin: 0 0 18px; padding: 14px 16px 14px;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-l, 18px); box-shadow: var(--o-1); color: var(--text); }
.spt-widget::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: var(--spt-club-bande, var(--accent)); }
.spt-widget-tete { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.spt-widget-blason { width: 42px; height: 42px; padding: 4px; border-radius: 50%; background: var(--spt-fond-blason); object-fit: contain;
  box-shadow: 0 0 0 1px var(--border); flex-shrink: 0; }
.spt-widget-titres { display: flex; flex-direction: column; flex: 1 1 200px; min-width: 0; }
.spt-widget-sur { font-size: var(--t-xs, 11px); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); }
.spt-widget-titres h2 { margin: 1px 0 0; font-size: var(--t-l, 16px); font-weight: 650; color: var(--text); line-height: 1.2; }
.spt-widget-resume { display: inline-flex; align-items: center; margin-top: 2px; font-size: var(--t-s, 12.5px); color: var(--text-muted);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spt-widget-lien { margin-top: 0; }
.spt-widget-bascule { width: 34px; height: 34px; flex-shrink: 0; border-radius: var(--r-s, 10px); border: 1px solid var(--border);
  background: var(--surface-alt); color: var(--text-muted); cursor: pointer; font-size: 15px; line-height: 1; }
.spt-widget-bascule:hover { color: var(--text); border-color: var(--accent-border); }
.spt-widget-bascule span { display: inline-block; transform: rotate(180deg); transition: transform var(--v-court, .15s); }
.spt-widget-replie .spt-widget-bascule span { transform: none; }
.spt-widget :is(button, a):focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.spt-widget-corps { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)); gap: 12px 24px;
  margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); }
.spt-widget-corps[hidden] { display: none; }
.spt-widget-col { min-width: 0; }
.spt-widget-col h3 { margin: 0 0 4px; font-size: var(--t-xs, 11px); font-weight: 600; letter-spacing: .07em; text-transform: uppercase; color: var(--text-muted); }
.spt-widget-col h3 small { text-transform: none; letter-spacing: 0; font-weight: 500; }
.spt-widget-col .spt-match { padding: 7px 0; }
.spt-widget-rang { display: flex; align-items: baseline; gap: 10px; margin: 2px 0 4px; }
.spt-widget-rang b { font-size: 30px; font-weight: 700; letter-spacing: -.03em; color: var(--text); font-variant-numeric: tabular-nums; }
.spt-widget-rang span { font-size: var(--t-m, 13.5px); color: var(--text-muted); }
.spt-widget-ecarts { list-style: none; margin: 0; padding: 0; font-size: var(--t-s, 12.5px); color: var(--text-muted); line-height: 1.7; }
.spt-widget-ecarts b { color: var(--text); }
.spt-widget-zone { color: var(--text); font-weight: 600; }
.spt-widget-absents { list-style: none; margin: 0; padding: 0; font-size: var(--t-s, 12.5px); }
.spt-widget-absents li { padding: 3px 0; color: var(--text); }
.spt-widget-absents small { color: var(--text-muted); }
.spt-articles-court li { padding: 6px 0; }
.spt-articles-court a { font-size: var(--t-s, 12.5px); }

/* ── Patte du club : l'écusson, la devise ──────────────────────────────────────────────────────────
   11.10.2026 : « l'écusson ne se voit pas bien ». Un blason en filigrane (opacité 12 %) disparaissait
   sur les fonds sombres et rouges : il est désormais posé sur une pastille blanche cerclée de la
   couleur du club, net, derrière le contenu (aucun clic capté). Grand sur l'accueil, en médaillon
   dans le coin bas des autres bandeaux, et à côté du logo REX dans le menu. */
.spt-ecusson-club { position: absolute !important; z-index: 0 !important; pointer-events: none; user-select: none;
  display: flex; align-items: center; justify-content: center; border-radius: 50%; background: #fff;
  box-shadow: 0 0 0 3px var(--club-or, rgba(255, 255, 255, .5)), 0 10px 24px rgba(0, 0, 0, .30); }
.spt-ecusson-club img { width: 76%; height: 76%; object-fit: contain; display: block; }
.spt-ecusson-grand { width: 116px; height: 116px; right: 31%; top: 50%; transform: translateY(-50%); }
.spt-ecusson-coin { width: 58px; height: 58px; right: 22px; bottom: 16px; }
/* Le contenu du bandeau passe toujours DEVANT l'écusson (même règle que le décor saisonnier) : les
   bandeaux sont des boîtes flex, le z-index s'applique à leurs enfants sans toucher à leur position. */
:is(.dbx-hero, .rex-bandeau, .rex-bandeau-hote, .fcx-hero, .cf-hero, .ozx-hero):has(> .spt-ecusson-club) > :not(.spt-ecusson-club):not([class*="deco"]) {
  z-index: 1;
}
@media (max-width: 1180px) {
  .spt-ecusson-grand { width: 84px; height: 84px; right: 26%; }
}
/* Dans le menu : sous la fin du logotype REX (qui occupe la largeur), dans l'espace avant la
   première entrée — jamais par-dessus le logo. */
.spt-ecusson-menu { position: absolute !important; width: 30px; height: 30px; right: 14px; bottom: -6px;
  box-shadow: 0 0 0 2px var(--club-or, #fff), 0 4px 12px rgba(0, 0, 0, .35); }
.sidebar-logo:has(> .spt-ecusson-menu) { position: relative; }
.spt-devise-pastille { display: inline-flex; align-items: center; padding: 4px 11px; border-radius: var(--r-rond, 999px);
  font-size: var(--t-xs, 11px); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap;
  background: var(--spt-devise-fond, rgba(255, 255, 255, .16)); color: var(--spt-devise-encre, #fff) !important; }
html[data-ambiance="fcb"] { --spt-club-bande: repeating-linear-gradient(90deg, #004D98 0 26px, #A50044 26px 52px); --spt-devise-fond: #EDBB00; --spt-devise-encre: #0A1230; }
html[data-ambiance="valencia"] { --spt-club-bande: var(--vlc-azur) left 0 top 0 / 100% 5px no-repeat, repeating-linear-gradient(90deg, #FFD200 0 9px, #DA121A 9px 18px) left 0 top 5px / 100% 4px no-repeat; --spt-devise-fond: #F27F1B; --spt-devise-encre: #111111; }
/* Valence (11.10.2026) : la Senyera coronada — 5 px d'azur au-dessus des barres jaune et rouge
   (--vlc-azur, css/99-themes.css). Trop étroit pour la couronne : la bande reste nue. */
html[data-ambiance="valencia"] .spt-widget::before { height: 9px; }
html[data-ambiance="arsenal"] { --spt-club-bande: linear-gradient(90deg, #063672 0 62%, #EF0107 62% 90%, #C8A24A 90% 100%); --spt-devise-fond: #DB0007; --spt-devise-encre: #FFFFFF; }

/* ── Petits écrans ───────────────────────────────────────────────────────────────────────────── */
@media (max-width: 760px) {
  .spt-ecusson-grand { width: 42px; height: 42px; right: 12px; top: 10px; transform: none; box-shadow: 0 0 0 2px var(--club-or, #fff), 0 4px 12px rgba(0, 0, 0, .3); }
  .spt-ecusson-coin { width: 40px; height: 40px; right: 12px; top: 12px; bottom: auto; box-shadow: 0 0 0 2px var(--club-or, #fff), 0 4px 12px rgba(0, 0, 0, .3); }
  .spt-widget { padding: 12px 13px; }
  .spt-mobile-seul { display: block; margin: 0 0 6px; }
  .spt-widget-lien { order: 5; }
  .spt-widget-rang b { font-size: 26px; }
  .spt-tete-actions { width: 100%; }
  .spt-tete-actions > button { flex: 1 1 auto; }
  .spt-col-detail { display: none; }
  .spt-identite { gap: 12px; }
  .spt-identite-blason { width: 56px; height: 56px; }
  .spt-identite-drapeau { width: 56px; font-size: 32px; }
  .spt-identite-actions { width: 100%; }
  .spt-match { grid-template-columns: 56px minmax(0, 1fr) auto; gap: 8px; }
  .spt-match-neutre { grid-template-columns: 52px minmax(0, 1fr) auto minmax(0, 1fr); gap: 6px; }
  .spt-match-neutre .spt-blason { display: none; }
  .spt-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .spt-kpi { padding: 8px 9px; }
  .spt-kpi b { font-size: 16px; }
  .spt-modale { padding: 16px; }
  .spt-boxe img { width: 72px; height: 44px; }
}

/* ── Aperçu enrichi (11.10.2026) ────────────────────────────────────────────────────────────── */
/* L'affiche du prochain match */
.spt-affiche { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 10px; padding: 4px 0 2px; }
.spt-affiche-eq { display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; min-width: 0; }
.spt-affiche-eq b { font-size: 15px; font-weight: 600; color: var(--text); overflow-wrap: anywhere; }
.spt-affiche-eq small { font-size: var(--t-xs, 11px); color: var(--text-muted); font-variant-numeric: tabular-nums; }
.spt-affiche-eq .spt-blason { width: 52px; height: 52px; object-fit: contain; filter: drop-shadow(0 3px 6px rgba(0, 0, 0, .18)); }
.spt-affiche-centre { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 0 6px; min-width: 96px; }
.spt-affiche-heure, .spt-affiche-score { font-size: 26px; font-weight: 700; letter-spacing: -.02em; color: var(--text); font-variant-numeric: tabular-nums; line-height: 1.1; }
.spt-affiche-centre small { font-size: var(--t-s, 12px); color: var(--text-muted); text-transform: capitalize; }
.spt-compte { display: inline-block; margin-top: 4px; padding: 2px 9px; border-radius: 999px; font-size: var(--t-xs, 11px); font-weight: 600;
  color: var(--accent); background: var(--accent-dim); border: 1px solid var(--accent-border); white-space: nowrap; }
.spt-affiche-meta { margin: 10px 0 0; text-align: center; font-size: var(--t-xs, 11px); color: var(--text-muted); }

/* Objectifs et « en chiffres » */
.spt-objectifs { list-style: none; margin: 0 0 10px; padding: 0; display: flex; flex-direction: column; }
.spt-objectifs li { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--border); }
.spt-objectifs li:last-child { border-bottom: 0; }
.spt-objectifs li span { display: flex; flex-direction: column; min-width: 0; }
.spt-objectifs li b { font-size: var(--t-s, 13px); font-weight: 600; color: var(--text); }
.spt-objectifs li small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-objectifs li strong { font-size: 15px; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; white-space: nowrap; }
.spt-objectifs li.spt-alerte strong { color: var(--c-danger-texte); }

/* Joueurs en forme */
.spt-en-forme { list-style: none; margin: 0 0 6px; padding: 0; }
.spt-en-forme li { display: flex; align-items: center; gap: 10px; padding: 6px 0; }
.spt-en-forme li + li { border-top: 1px solid var(--border); }
.spt-photo-petite { width: 34px !important; height: 34px !important; flex: 0 0 34px; }
.spt-forme-nom { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.spt-forme-nom b { font-size: var(--t-s, 13px); font-weight: 600; color: var(--text); }
.spt-forme-nom small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-en-forme strong { font-size: 17px; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; white-space: nowrap; }
.spt-en-forme strong small { font-size: var(--t-xs, 11px); font-weight: 500; color: var(--text-muted); }

/* Le club */
.spt-club-banniere { display: block; width: 100%; height: auto; max-height: 90px; object-fit: cover; border-radius: var(--r-s, 10px); margin-bottom: 10px; }
.spt-club-infos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 14px; margin: 0 0 8px; }
.spt-club-infos div { display: flex; flex-direction: column; min-width: 0; }
.spt-club-infos dt { font-size: var(--t-xs, 11px); color: var(--text-muted); text-transform: uppercase; letter-spacing: .05em; font-weight: 600; }
.spt-club-infos dd { margin: 1px 0 0; font-size: var(--t-s, 13px); color: var(--text); font-weight: 500; overflow-wrap: anywhere; }
.spt-couleurs { display: flex; gap: 5px; }
.spt-couleurs i { width: 22px; height: 14px; border-radius: 4px; border: 1px solid var(--border); }

/* ── Formule 1 ───────────────────────────────────────────────────────────────────────────── */
.spt-gp-tete { display: flex; flex-direction: column; gap: 2px; margin-bottom: 10px; }
.spt-gp-manche { font-size: var(--t-xs, 11px); text-transform: uppercase; letter-spacing: .06em; color: var(--text-muted); font-weight: 600; }
.spt-gp-tete h4 { margin: 0; font-size: 18px; font-weight: 700; color: var(--text); letter-spacing: -.01em; }
.spt-gp-tete small { font-size: var(--t-s, 12px); color: var(--text-muted); }
.spt-gp-tete .spt-compte { align-self: flex-start; }
.spt-seances { list-style: none; margin: 0; padding: 0; }
.spt-seances li { display: grid; grid-template-columns: 1fr auto 52px 16px; align-items: center; gap: 10px; padding: 7px 8px; border-radius: 8px; font-size: var(--t-s, 13px); color: var(--text); }
.spt-seances li + li { border-top: 1px solid var(--border); }
.spt-seances li span:nth-child(2) { color: var(--text-muted); text-transform: capitalize; font-size: var(--t-xs, 12px); }
.spt-seances li b { font-variant-numeric: tabular-nums; text-align: right; }
.spt-seances li i { font-style: normal; color: var(--c-succes-texte); font-size: 12px; }
.spt-seances li.spt-passee { opacity: .55; }
.spt-seances li.spt-suivante { background: var(--accent-dim); }
.spt-seances li.spt-course { font-weight: 700; }
.spt-pilote { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.spt-pilote > span { display: flex; flex-direction: column; min-width: 0; }
.spt-pilote b { font-weight: 600; color: var(--text); }
.spt-pilote small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-ecurie-trait { flex: 0 0 4px; width: 4px; height: 26px; border-radius: 2px; }
.spt-podium { list-style: none; margin: 8px 0; padding: 0; display: grid; gap: 6px; }
.spt-podium li { display: grid; grid-template-columns: 30px 1fr auto; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px;
  background: var(--surface-alt); border: 1px solid var(--border); }
.spt-podium li small { font-size: var(--t-xs, 11px); color: var(--text-muted); font-variant-numeric: tabular-nums; }
.spt-podium-pos { display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; font-weight: 800; font-size: 13px; color: #1A1A1A; }
.spt-podium-1 .spt-podium-pos { background: linear-gradient(180deg, #FFE27A, #E2B33C); }
.spt-podium-2 .spt-podium-pos { background: linear-gradient(180deg, #F1F3F6, #B9C0CB); }
.spt-podium-3 .spt-podium-pos { background: linear-gradient(180deg, #F2BE8D, #C07A43); }
.spt-f1-suite { list-style: none; margin: 0; padding: 0; }
.spt-f1-suite li { display: grid; grid-template-columns: 26px 1fr auto; align-items: center; gap: 10px; padding: 5px 0; }
.spt-f1-suite li + li { border-top: 1px solid var(--border); }
.spt-f1-suite small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-table-f1 .spt-ecart { color: var(--text-muted); font-variant-numeric: tabular-nums; }
.spt-calendrier-f1 { list-style: none; margin: 0; padding: 0; }
.spt-calendrier-f1 li { display: grid; grid-template-columns: 30px minmax(0, 1.4fr) 92px minmax(0, 1fr); align-items: center; gap: 12px; padding: 9px 6px; border-radius: 8px; }
.spt-calendrier-f1 li + li { border-top: 1px solid var(--border); }
.spt-calendrier-f1 li.spt-passee { opacity: .72; }
.spt-calendrier-f1 li.spt-suivante { background: var(--accent-dim); }
.spt-cal-gp, .spt-cal-date { display: flex; flex-direction: column; min-width: 0; }
.spt-cal-gp b { font-size: var(--t-s, 13px); color: var(--text); font-weight: 600; }
.spt-cal-gp small, .spt-cal-date small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-cal-date { font-size: var(--t-s, 12px); color: var(--text); text-transform: capitalize; }
.spt-cal-vainqueur { display: flex; align-items: center; gap: 6px; min-width: 0; font-size: var(--t-s, 12px); }

/* ── Tennis ATP ──────────────────────────────────────────────────────────────────────────── */
.spt-match-tennis { display: grid; grid-template-columns: 78px 1fr; gap: 10px; align-items: center; padding: 7px 0; }
.spt-match-tennis + .spt-match-tennis { border-top: 1px solid var(--border); }
.spt-match-tennis .spt-match-date { display: flex; flex-direction: column; text-transform: capitalize; }
.spt-tour { color: var(--text-muted); font-size: 10.5px !important; text-transform: none; }
.spt-tj-paire { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.spt-tj { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; align-items: center; gap: 7px; font-size: var(--t-s, 13px); color: var(--text-muted); }
.spt-tj-gagne { color: var(--text); font-weight: 600; }
.spt-tj-suivi .spt-tj-nom { color: var(--accent); font-weight: 600; }
.spt-tj-nom { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.spt-tj-nom small { color: var(--text-muted); font-weight: 400; }
.spt-drapeau { display: inline-block; width: 18px; height: 12px; object-fit: cover; border-radius: 2px; flex: 0 0 18px; }
.spt-sets { display: flex; gap: 6px; font-variant-numeric: tabular-nums; }
.spt-sets i { font-style: normal; min-width: 12px; text-align: center; }
.spt-sets sup { font-size: 8px; color: var(--text-muted); }
.spt-table-atp .spt-equipe { display: flex; align-items: center; gap: 8px; }
.spt-table-atp .spt-equipe > span { display: flex; flex-direction: column; min-width: 0; }
.spt-table-atp .spt-equipe small { font-size: var(--t-xs, 11px); color: var(--text-muted); font-weight: 400; }
.spt-evol { font-size: var(--t-xs, 11px); font-variant-numeric: tabular-nums; color: var(--text-muted); white-space: nowrap; }
.spt-evol.spt-monte { color: var(--c-succes-texte); }
.spt-evol.spt-baisse { color: var(--c-danger-texte); }
.spt-etoile-btn { border: 0; background: transparent; color: var(--text-muted); font-size: 18px; line-height: 1; padding: 4px 6px; border-radius: 8px; cursor: pointer; min-width: 32px; min-height: 32px; }
.spt-etoile-btn:hover, .spt-etoile-btn:focus-visible { background: var(--accent-dim); color: var(--accent); }
.spt-etoile-btn.actif { color: #E2B33C; }
.spt-mes-joueurs { list-style: none; margin: 0; padding: 0; }
.spt-mes-joueurs li { display: grid; grid-template-columns: 44px 1fr auto; align-items: center; gap: 10px; padding: 8px 0; }
.spt-mes-joueurs li + li { border-top: 1px solid var(--border); }
.spt-joueur-photo { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; object-position: top; background: var(--surface-alt); border: 1px solid var(--border); }
.spt-mj-texte { display: flex; flex-direction: column; min-width: 0; gap: 1px; }
.spt-mj-texte b { font-size: var(--t-s, 14px); color: var(--text); font-weight: 600; }
.spt-mj-texte small { font-size: var(--t-xs, 11px); color: var(--text-muted); }
.spt-mj-info { color: var(--text) !important; }
.spt-filtre { width: 100%; max-width: 340px; margin-bottom: 6px; }
.spt-puce-joueur { display: inline-flex; align-items: center; gap: 6px; }

@media (max-width: 760px) {
  .spt-affiche-heure, .spt-affiche-score { font-size: 22px; }
  .spt-affiche-eq .spt-blason { width: 42px; height: 42px; }
  .spt-calendrier-f1 li { grid-template-columns: 26px minmax(0, 1fr) 74px; }
  .spt-cal-vainqueur { grid-column: 2 / -1; }
  .spt-seances li { grid-template-columns: 1fr auto 46px 14px; gap: 6px; }
  .spt-match-tennis { grid-template-columns: 64px 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .spt *, .spt-hero *, .spt-modale * { transition: none !important; animation: none !important; }
  .spt-point-direct { animation: none; }
}

/* ── Interaction, statistiques, mercato, fiches joueur (11.10.2026) ─────────────────────────────
   « crée une interaction sport, on peut cliquer les championnats, les clubs, les joueurs ». Chaque
   nom cliquable est un vrai bouton (clavier, lecteur d'écran) habillé comme du texte : il garde la
   typographie de son contexte et se souligne au survol. */
.spt-ent { background: none; border: 0; padding: 0; margin: 0; font: inherit; color: inherit; text-align: inherit; line-height: inherit;
  cursor: pointer; display: inline; min-width: 0; border-radius: 4px; }
.spt-ent:hover > b, .spt-ent:hover > span:not(.spt-photo):not(.spt-lecteur), .spt-ent:hover:not(:has(*)) { text-decoration: underline; text-underline-offset: 2px; }
.spt-ent:hover b { color: var(--accent); }
.spt-ent:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.spt-table .spt-equipe > .spt-ent { display: inline-flex; align-items: center; gap: 8px; min-width: 0; max-width: 100%; }
.spt-table .spt-equipe > .spt-ent > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spt-match-adv .spt-ent, .spt-match-eq .spt-ent { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.spt-match-adv small .spt-ent { display: inline; }
.spt-affiche-eq > .spt-ent { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.spt-ent-ligne { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; text-align: left; }
/* Effectif : la carte du joueur entière est le bouton. */
.spt-joueurs > li { display: flex; min-width: 0; }
button.spt-joueur { width: 100%; text-align: left; transition: border-color var(--v-court, .15s), background var(--v-court, .15s); }
button.spt-joueur:hover { border-color: var(--accent-border); background: var(--accent-dim); }
button.spt-joueur:hover b { color: var(--text); text-decoration: none; }

/* Le club ou le joueur consulté (non suivi) au bout du sélecteur, en pointillés. */
.spt-choix-visite { border-style: dashed !important; }
.spt-choix-visite .spt-photo { width: 28px; height: 28px; font-size: 10px; }

/* Fil d'Ariane et retour */
.spt-fil { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 12px; }
.spt-fil ol { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; list-style: none; margin: 0; padding: 0; font-size: var(--t-s, 12.5px); color: var(--text-muted); }
.spt-fil li { display: inline-flex; align-items: center; gap: 4px; }
.spt-fil li + li::before { content: '›'; color: var(--text-dim); margin-right: 2px; }
.spt-fil li .spt-lien { margin: 0; padding: 2px 0; font-size: inherit; }
.spt-fil li[aria-current] span { color: var(--text); font-weight: 600; }

/* Pichichi & Zamora */
.spt-palmares { list-style: none; margin: 0 0 6px; padding: 0; }
.spt-palmares li { display: flex; align-items: center; gap: 10px; padding: 6px 4px; border-radius: 10px; }
.spt-palmares li + li { border-top: 1px solid var(--border); }
.spt-palmares li.spt-moi { background: var(--accent-dim); border-top-color: transparent; }
.spt-palmares-rang { flex: 0 0 22px; text-align: center; font-size: var(--t-s, 12.5px); font-weight: 700; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.spt-palmares li:first-child .spt-palmares-rang { color: #1A1A1A; background: linear-gradient(180deg, #FFE27A, #E2B33C); border-radius: 50%; height: 22px; line-height: 22px; }
.spt-palmares strong { font-size: 16px; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; white-space: nowrap; }
.spt-palmares strong small { font-size: var(--t-xs, 11px); font-weight: 500; color: var(--text-muted); }
.spt-forme-nom small { display: flex; align-items: center; gap: 4px; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spt-mini-blason { width: 14px; height: 14px; object-fit: contain; flex-shrink: 0; }
.spt-note-club { padding: 8px 10px; border-radius: 10px; background: var(--surface-alt); border: 1px solid var(--border); color: var(--text-muted); }
.spt-note-club b { color: var(--text); }
.spt-table-stats td { vertical-align: middle; }
.spt-table-stats .spt-equipe { min-width: 0; }
.spt-table-stats .spt-photo-petite { width: 30px !important; height: 30px !important; flex-basis: 30px; font-size: 10.5px; }
.spt-carton { display: inline-block; width: 9px; height: 12px; border-radius: 2px; margin-right: 4px; vertical-align: -1px; box-shadow: 0 0 0 1px rgba(0, 0, 0, .18); }
.spt-carton-j { background: #F5C518; }
.spt-carton-r { background: #D7263D; }

/* Mercato : le nom du site spécialisé en gras, les blasons des clubs concernés */
.spt-site { color: var(--text); font-weight: 700; }
.spt-clubs-article { display: inline-flex; align-items: center; gap: 4px; margin-left: 4px; }
.spt-clubs-article .spt-ent { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; padding: 0;
  border-radius: 50%; background: var(--spt-fond-blason); flex-shrink: 0; }
/* Le socle donne 38 px de haut à tout bouton sur téléphone (css/00-socle) : pas aux noms cliquables
   dans le texte, qui gardent la hauteur de leur ligne. */
@media (max-width: 760px) {
  .spt-ent.spt-ent-lien { min-height: 0; min-width: 0; }
  .spt-clubs-article .spt-ent { min-height: 20px; }
}
.spt-clubs-article .spt-blason { width: 16px; height: 16px; }

/* Portraits : la photo posée sur les initiales (repli si l'image ne charge pas) */
.spt-photo-detouree img { object-fit: contain; object-position: bottom center; background: linear-gradient(180deg, var(--surface-alt), var(--surface)); }
.spt-photo-grande { width: 112px; height: 112px; font-size: 26px; border-width: 2px; box-shadow: var(--o-1); }
.spt-portrait-bloc { display: flex; flex-direction: column; align-items: center; gap: 6px; max-width: 150px; text-align: center; }
.spt-credit { font-size: 10.5px; color: var(--text-dim); line-height: 1.35; overflow-wrap: anywhere; }
.spt-credit a { color: var(--text-muted); }
.spt-identite-joueur { align-items: flex-start; }
.spt-joueur-desc { font-style: italic; }
.spt-joueur-infos { margin-top: 10px; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); }
.spt-joueur-infos dd { display: flex; align-items: center; gap: 4px; }
.spt-wiki { margin: 0; font-size: var(--t-m, 13.5px); line-height: 1.6; color: var(--text); text-wrap: pretty; }
.spt-kpis-auto { grid-template-columns: repeat(auto-fit, minmax(min(100%, 104px), 1fr)) !important; }
/* Dans les en-têtes et sous les matchs, les noms cliquables prennent la couleur des liens. */
.spt-identite-texte p .spt-ent, .spt-match-adv small .spt-ent, .spt-table-stats td.spt-equipe > .spt-ent[data-spt="ligue"] { color: var(--accent); font-weight: 600; }
.spt-f1-courses .spt-cal-gp { min-width: 0; }
.spt-identite-texte p .spt-pilote { display: inline-flex; gap: 6px; vertical-align: baseline; }
.spt-identite-texte p .spt-ecurie-trait { height: 13px; flex-basis: 4px; align-self: center; }

@media (max-width: 760px) {
  .spt-photo-grande { width: 84px; height: 84px; font-size: 20px; }
  .spt-identite-joueur .spt-portrait-bloc { max-width: 110px; }
  .spt-joueur-infos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .spt-palmares strong { font-size: 15px; }
}
