/* ════════════════════════════════════════════════════════════════
   Fiche match, nouveau haut de fiche (07/10/2026) — aperçu ?match=d
   Même balisage que .match-header (le live s'y accroche : .score-live,
   .sl-h, .sc-live-clock) ; variante .match-header--d + logos .md-logo.
   Charte : teal + vanilla, pas de vert vif ni d'orange/rouge.
   ════════════════════════════════════════════════════════════════ */

.match-header.match-header--d { padding: 34px 0 6px; background: var(--teal); }

/* Titre (h1, gardé visible et pour Google) en surtitre discret, centré. */
.match-header--d .match-h1 { margin: 0 0 10px; text-align: center; font-size: 13px; font-weight: 700; line-height: 1.4; letter-spacing: 0; color: rgba(242, 229, 210, .7); }
.match-header--d .match-top-row { justify-content: center; gap: 10px; margin-bottom: 30px; }
.match-header--d .match-comp,
.match-header--d .match-date-inline { color: rgba(242, 229, 210, .8); letter-spacing: 1px; }

/* Face-à-face : logo au-dessus du nom, les deux équipes centrées. */
.match-header--d .scoreline { align-items: center; gap: 32px; padding-bottom: 34px; }
.match-header--d .team-block,
.match-header--d .team-block.away { align-items: center; text-align: center; gap: 10px; }
.match-header--d .md-logo { display: flex; align-items: center; justify-content: center; width: 104px; height: 104px; }
.match-header--d .md-logo picture { display: contents; }
.match-header--d .md-logo img { width: 100%; height: 100%; object-fit: contain; }
.match-header--d .team-abbr { display: none; }
.match-header--d .team-name { font-size: clamp(24px, 2.6vw, 36px); line-height: 1.05; }
.match-header--d .team-form,
.match-header--d .team-form.away { justify-content: center; }
.match-header--d .team-scorers,
.match-header--d .team-scorers.away { align-items: center; }

/* Forme : carrés teal/vanilla (plus de vert vif, orange, rouge). */
.match-header--d .form-dot { width: 18px; height: 18px; font-size: 9px; font-weight: 800; box-shadow: none; }
.match-header--d .form-dot-win { background: var(--vanilla); color: var(--teal); }
.match-header--d .form-dot-draw { background: transparent; color: var(--vanilla); box-shadow: inset 0 0 0 1px rgba(242, 229, 210, .7); }
.match-header--d .form-dot-loss { background: rgba(242, 229, 210, .14); color: rgba(242, 229, 210, .75); }
.match-header--d .form-lbl { color: rgba(242, 229, 210, .7); }

/* Centre : l'heure (ou le score) en grand, le stade dessous. Ordinateur
   seulement : sur mobile, itsrugby-match.css dissout .score-center
   (display: contents) dans la grille du face-à-face, à ne pas casser. */
@media (min-width: 681px) {
  .match-header--d .score-center { display: flex; flex-direction: column; align-items: center; gap: 6px; padding-top: 0; }
}
.match-header--d .sc-kickoff-lbl { color: rgba(242, 229, 210, .7); letter-spacing: 1.5px; }
@media (min-width: 681px) {
  .match-header--d .score-nums { font-size: clamp(64px, 8vw, 104px); letter-spacing: -2px; }
  .match-header--d .score-upcoming { font-size: clamp(48px, 6vw, 80px); letter-spacing: 0; }
}
.match-header--d .score-upcoming { color: var(--vanilla); }
.match-header--d .sc-venue { order: 10; margin: 10px 0 0; font-size: 12px; color: rgba(242, 229, 210, .75); }
.match-header--d .sc-footer { order: 11; border-top-color: rgba(242, 229, 210, .15); color: rgba(242, 229, 210, .65); }
.match-header--d .sc-pill { background: rgba(242, 229, 210, .14); }

@media (max-width: 680px) {
  .match-header.match-header--d { padding-top: 22px; }
  .match-header--d .match-h1 { font-size: 12px; margin-bottom: 8px; }
  .match-header--d .match-top-row { margin-bottom: 18px; }
  .match-header--d .scoreline { column-gap: 10px; padding-bottom: 22px; }
  .match-header--d .md-logo { width: 56px; height: 56px; }
  .match-header--d .team-block,
  .match-header--d .team-block.away { gap: 6px; }
  .match-header--d .team-name { font-size: clamp(15px, 4.4vw, 19px); }
  .match-header--d .score-upcoming { font-size: clamp(28px, 9vw, 40px); }
  .match-header--d .form-dot { width: 14px; height: 14px; font-size: 8px; }
}

/* Logos foncés illisibles sur le teal : écusson vanilla derrière. */
.match-header--d .md-logo { box-sizing: border-box; padding: 14px; background: var(--vanilla); }
@media (max-width: 680px) { .match-header--d .md-logo { padding: 8px; } }
/* Statut (« À venir » était bleu) : charte teal + vanilla. */
.match-header--d .match-top-row .badge { background: var(--vanilla); color: var(--teal); border: 0; }

/* Mobile : grille d'origine (équipe | heure | équipe, stade dessous) ; les
   blocs équipe restent dans leur colonne, logo au-dessus du nom. */
@media (max-width: 680px) {
  .match-header--d .scoreline > .team-block,
  .match-header--d .scoreline > .team-block.away { min-width: 0; }
  /* Coupure seulement d'un mot qui ne tient pas seul (« Aurillacois » ne se coupe plus). */
  .match-header--d .team-name { overflow-wrap: break-word; word-break: normal; hyphens: manual; }
  .match-header--d .scoreline .sc-venue { order: 0; margin-top: 4px; }
}
/* Bonus (« Bonus off. » était vert vif) : vanilla plein, « Aucun » en contour. */
.match-header--d .bonus-tag { background: var(--vanilla); color: var(--teal); border: 0; box-shadow: none; }
.match-header--d .bonus-tag.bonus-none { background: transparent; color: rgba(242, 229, 210, .7); box-shadow: inset 0 0 0 1px rgba(242, 229, 210, .35); }

/* ── Fond « cinéma » (comme la une de la home et les archives) ──────────
   La photo de l'article du match occupe le haut, comme une affiche, puis se
   fond dans le teal : tout le texte (équipes, score, buteurs) est posé sur
   le teal plein ou sur la fin du fondu (voile ≥ 85 %, contraste RGAA). */
.match-header.match-header--d { position: relative; isolation: isolate; overflow: hidden; }
.match-header--d > .container { position: relative; z-index: 2; }
.match-header--d .md-fond,
.match-header--d .md-voile { position: absolute; left: 0; right: 0; top: 0; pointer-events: none; }
.match-header--d .md-fond { z-index: 0; height: clamp(380px, 58vh, 600px); }
.match-header--d .md-fond picture { display: block; height: 100%; }
.match-header--d .md-fond-img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 15%; }
.match-header--d .md-voile { z-index: 1; height: clamp(380px, 58vh, 600px); }
.match-header--d .md-fond--logos { display: none; }

/* Le texte commence là où la photo a presque fini de se fondre. */
.match-header--photo > .container { padding-top: clamp(190px, 34vh, 360px); }
.match-header--photo .md-voile {
  background:
    linear-gradient(to bottom, rgba(28, 61, 52, .8) 0, rgba(28, 61, 52, .35) 90px, rgba(28, 61, 52, 0) 200px),
    linear-gradient(to top, #1c3d34 0, #1c3d34 30%, rgba(28, 61, 52, .88) 44%, rgba(28, 61, 52, .45) 62%, rgba(28, 61, 52, 0) 80%);
}

/* Pastilles de catégorie (Masculin, Senior…) : contour plus lisible. */
.match-header--d .match-top-row .match-chip { color: rgba(242, 229, 210, .9); border-color: rgba(242, 229, 210, .45); }
.match-header--d .sc-ht { color: rgba(242, 229, 210, .85); }
.match-header--d .team-scorers .scorer,
.match-header--d .team-scorers .scorer a { color: var(--vanilla); }
.match-header--d .team-scorers .s-min { color: rgba(242, 229, 210, .7); }

@media (max-width: 680px) {
  .match-header--d .md-fond,
  .match-header--d .md-voile { height: min(56svh, 420px); }
  .match-header--photo > .container { padding-top: min(30svh, 230px); }
  .match-header--photo .md-fond-img { object-position: 50% 10%; }
}

/* Équipes alignées en haut (logo et nom à la même hauteur, quelle que soit
   la longueur de la liste des buteurs) ; le score se cale sur les logos. */
@media (min-width: 681px) {
  .match-header--d .scoreline { align-items: start; }
  .match-header--d .score-center { padding-top: 18px; }
}
/* Mobile : les deux équipes calées en haut (un nom sur 3 lignes ne décale plus l'autre logo). */
@media (max-width: 680px) {
  .match-header--d .scoreline > .team-block,
  .match-header--d .scoreline > .team-block.away { align-self: start; }
  .match-header--d .scoreline .score-nums { align-self: center; }
}

/* ── Organisation des infos (07/10, Félix : « l'orga des infos bof ») ──────
   Logos posés directement sur le teal (plus d'écusson vanilla). Les infos
   pratiques quittent les colonnes et le centre pour une bande dédiée sous
   le face-à-face : Stade, Arbitre, Entraîneurs, Affluence, Diffuseur, Météo. */
.match-header--d .md-logo { background: none; padding: 0; width: 112px; height: 112px; }
.match-header--d .md-logo img { filter: drop-shadow(0 0 1px rgba(242, 229, 210, .55)) drop-shadow(0 6px 18px rgba(0, 0, 0, .25)); }
.match-header--d .team-coach,
.match-header--d .sc-venue,
.match-header--d .sc-footer,
.match-header--d .h2h-block { display: none; }

.match-header--d .md-infos { display: flex; flex-wrap: wrap; justify-content: center; margin: 0 auto; padding: 18px 0 26px; border-top: 1px solid rgba(242, 229, 210, .16); }
.match-header--d .md-info { padding: 4px 22px; text-align: center; }
.match-header--d .md-info + .md-info { border-left: 1px solid rgba(242, 229, 210, .16); }
.match-header--d .md-info dt { margin: 0 0 4px; font-size: 11px; font-weight: 600; letter-spacing: .2px; color: rgba(242, 229, 210, .65); }
.match-header--d .md-info dd { margin: 0; font-size: 14px; font-weight: 700; line-height: 1.35; color: var(--vanilla); }
.match-header--d .md-info dd a { color: var(--vanilla); text-decoration: underline; text-decoration-color: rgba(242, 229, 210, .35); text-underline-offset: 3px; }
.match-header--d .md-info-sep { margin: 0 4px; color: rgba(242, 229, 210, .45); font-weight: 400; }

@media (max-width: 680px) {
  .match-header--d .md-logo { width: 60px; height: 60px; padding: 0; }
  .match-header--d .md-infos { display: grid; grid-template-columns: 1fr 1fr; justify-content: stretch; padding: 14px 0 20px; row-gap: 12px; }
  .match-header--d .md-info { padding: 0 10px; text-align: left; }
  .match-header--d .md-info + .md-info { border-left: 0; }
  .match-header--d .md-info:nth-child(2n) { border-left: 1px solid rgba(242, 229, 210, .16); }
  .match-header--d .md-info dd { font-size: 13px; }
}
.match-header--d .md-info-eq { font-weight: 400; color: rgba(242, 229, 210, .7); }

/* ── Tableau de score (08/10, Félix : « toujours pas fou ») ───────────────
   Ordinateur : chaque équipe tournée vers le score, nom à côté du logo,
   forme / bonus / buteurs alignés contre le centre (domicile à droite de sa
   colonne, extérieur à gauche). Les pastilles de catégorie disparaissent. */
.match-header--d .match-top-row .match-chip { display: none; }
@media (min-width: 1000px) {
  .match-header--d .scoreline { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); column-gap: 48px; align-items: start; }
  .match-header--d .team-block,
  .match-header--d .team-block.away { display: grid; column-gap: 22px; row-gap: 12px; align-items: center; }
  .match-header--d .team-block { grid-template-columns: minmax(0, 1fr) auto; justify-items: end; text-align: right; }
  .match-header--d .team-block.away { grid-template-columns: auto minmax(0, 1fr); justify-items: start; text-align: left; }
  .match-header--d .team-block > * { grid-column: 1; }
  .match-header--d .team-block.away > * { grid-column: 2; }
  .match-header--d .team-block > .md-logo { grid-column: 2; grid-row: 1; }
  .match-header--d .team-block.away > .md-logo { grid-column: 1; grid-row: 1; }
  .match-header--d .team-block > .team-name { grid-row: 1; }
  .match-header--d .md-logo { width: 96px; height: 96px; }
  .match-header--d .team-name { font-size: clamp(26px, 2.3vw, 38px); }
  .match-header--d .team-form { justify-content: flex-end; }
  .match-header--d .team-form.away { justify-content: flex-start; }
  .match-header--d .team-bonus { margin: 0; }
  .match-header--d .team-scorers { align-items: flex-end; margin-top: 6px; }
  .match-header--d .team-scorers.away { align-items: flex-start; }
  .match-header--d .team-scorers .scorer { line-height: 1.7; }
  /* Le score à hauteur des logos. */
  .match-header--d .score-center { padding-top: 0; min-width: 300px; }
  .match-header--d .score-nums { line-height: 96px; }
}
/* Logos foncés lisibles sans fond : fin contour vanilla qui suit le dessin. */
.match-header--d .md-logo img { filter: drop-shadow(0 0 1px rgba(242, 229, 210, .95)) drop-shadow(0 0 1px rgba(242, 229, 210, .95)) drop-shadow(0 8px 20px rgba(0, 0, 0, .3)); }

/* ── Lisibilité (08/10, Félix : « l'info on la voit quasi pas ») ──────────
   Les buteurs quittent le haut de fiche (ils sont dans le fil du match) ;
   les essais passent sous le nom de chaque équipe ; forme, bonus et
   mi-temps grossissent. */
.match-header--d .team-scorers,
.match-header--d .sc-pills { display: none; }
.match-header--d .md-essais { font-size: 17px; font-weight: 700; color: var(--vanilla); }
.match-header--d .team-form { gap: 5px; align-items: center; }
.match-header--d .form-lbl { margin-right: 4px; font-size: 13px; font-weight: 600; letter-spacing: 0; text-transform: none; color: rgba(242, 229, 210, .75); }
.match-header--d .form-dot { width: 24px; height: 24px; font-size: 11px; }
.match-header--d .bonus-tag { padding: 5px 10px; font-size: 12px; letter-spacing: .3px; }
.match-header--d .sc-ht { margin-top: 10px; font-size: 16px; font-weight: 700; color: var(--vanilla); }
@media (min-width: 1000px) {
  .match-header--d .team-block > .team-name { align-self: end; }
  .match-header--d .team-block > .md-essais { grid-row: 2; margin-top: -6px; }
  .match-header--d .team-block > .md-logo { grid-row: 1 / span 2; }
}
@media (max-width: 680px) {
  .match-header--d .md-essais { font-size: 13px; }
  .match-header--d .form-lbl { display: none; }
  .match-header--d .form-dot { width: 18px; height: 18px; font-size: 9px; }
  .match-header--d .sc-ht { font-size: 13px; }
}

/* Sans photo : les deux logos en filigrane, chacun derrière son équipe,
   entiers (plus coupés par le bord), monochromes et fondus vers le bas. */
.match-header--d .md-fond--logos { display: block; height: 100%; -webkit-mask-image: linear-gradient(to bottom, #000 35%, transparent 95%); mask-image: linear-gradient(to bottom, #000 35%, transparent 95%); }
.match-header--d .md-fond--logos .md-fond-l,
.match-header--d .md-fond--logos .md-fond-r { top: 46%; width: min(30vw, 440px); opacity: .09; }
.match-header--d .md-fond--logos .md-fond-l { left: 4%; right: auto; }
.match-header--d .md-fond--logos .md-fond-r { right: 4%; left: auto; }
.match-header--d .md-fond--logos img { filter: grayscale(1) brightness(0) invert(.95) sepia(.25); }
.match-header--d:not(.match-header--photo) .md-voile { height: 100%; background: none; }
@media (max-width: 680px) {
  .match-header--d .md-fond--logos .md-fond-l,
  .match-header--d .md-fond--logos .md-fond-r { width: 52vw; top: 50%; }
  .match-header--d .md-fond--logos .md-fond-l { left: -8vw; }
  .match-header--d .md-fond--logos .md-fond-r { right: -8vw; }
}
.match-header--d .md-fond--logos .md-fond-l,
.match-header--d .md-fond--logos .md-fond-r { position: absolute; aspect-ratio: 1; transform: translateY(-50%); }
.match-header--d .md-fond--logos picture { display: contents; }
.match-header--d .md-fond--logos img { display: block; width: 100%; height: 100%; object-fit: contain; }
/* Filigrane en « multiplier » : le fond blanc des logos non détourés
   (Nice, Chambéry…) disparaît dans le teal, seul le dessin reste, en plus
   sombre. Le calque a son propre fond teal pour que le fondu ait une base. */
.match-header--d .md-fond--logos { background: var(--teal); }
.match-header--d .md-fond--logos .md-fond-l,
.match-header--d .md-fond--logos .md-fond-r { opacity: .5; mix-blend-mode: multiply; }
.match-header--d .md-fond--logos img { filter: grayscale(1) contrast(1.1) brightness(1.15); }
@media (max-width: 680px) {
  .match-header--d .md-info { text-align: center; }
}
/* Logos en filigrane entiers : taille calée sur la hauteur du haut de fiche
   (ils dépassaient en haut et en bas), fondu seulement tout en bas. */
.match-header--d .md-fond--logos { -webkit-mask-image: linear-gradient(to bottom, #000 70%, transparent 100%); mask-image: linear-gradient(to bottom, #000 70%, transparent 100%); }
.match-header--d .md-fond--logos .md-fond-l,
.match-header--d .md-fond--logos .md-fond-r { top: 50%; width: auto; height: min(78%, 420px); }
@media (max-width: 680px) {
  .match-header--d .md-fond--logos .md-fond-l,
  .match-header--d .md-fond--logos .md-fond-r { width: auto; height: min(60%, 260px); top: 50%; }
  .match-header--d .md-fond--logos .md-fond-l { left: -6vw; }
  .match-header--d .md-fond--logos .md-fond-r { right: -6vw; }
}
.match-header--d .match-top-row { align-items: center; }
/* Fil d'Ariane visible retiré (Félix, 08/10), comme sur les articles : le
   BreadcrumbList de Rank Math (JSON-LD) reste pour Google. */
body.single-game > nav.breadcrumb { display: none; }
@media (min-width: 681px) {
  .match-header--d .md-fond--logos .md-fond-l,
  .match-header--d .md-fond--logos .md-fond-r { height: min(70%, 400px); }
}

/* Nom court des clubs partout dans le haut de fiche, comme dans le titre
   (« Soyaux-Angoulême » plutôt que « SA XV Charente (Soyaux Angoulême XV
   Charente) » sur trois lignes). */
.match-header--d .team-name .ts-resp-full { display: none; }
.match-header--d .team-name .ts-resp-abbr { display: inline; }
/* Mobile : filigrane plus discret, il passait sous la bande d'infos. */
@media (max-width: 680px) {
  .match-header--d .md-fond--logos .md-fond-l,
  .match-header--d .md-fond--logos .md-fond-r { opacity: .32; top: 42%; }
}
@media (min-width: 1000px) {
  .match-header--d .team-block.away > .md-logo { grid-row: 1 / span 2; }
}

/* ── Corps de la fiche : plus de vert vif (08/10, règle Félix teal + vanilla) ──
   Les deux verts de l'ancienne charte, utilisés par les blocs du match
   (résumé, stats, compositions, fil…), reprennent les couleurs de la charte :
   le vert vif devient sauge (accents, barres), le vert foncé lisible sur fond
   clair devient teal (chiffres, textes). Cette feuille n'est chargée que sur
   la fiche match en aperçu. */
body.single-game { --g-bright: var(--sage); --g-deep: var(--teal); }

/* Forme / face-à-face / écarts, couleurs codées en dur dans itsrugby-match.css
   (vert #1c6d4a, vert vif, rouge #b13a3a) : même code que le haut de fiche,
   en version fond clair. V = teal plein, N = contour, D = estompé. */
body.single-game .pre-forme-dot--win,
body.single-game .forme-dot--win { background: var(--teal); color: var(--vanilla); border-color: var(--teal); }
body.single-game .pre-forme-dot--loss,
body.single-game .forme-dot--loss { background: rgba(28, 61, 52, .07); color: rgba(28, 61, 52, .55); border-color: rgba(28, 61, 52, .12); }
body.single-game .pre-streak--win { color: var(--teal); }
body.single-game .pre-streak--loss { color: var(--muted); }
body.single-game .pre-h2h-side--sc { background: rgba(171, 200, 162, .2); }
body.single-game .pre-h2h-side--sc .pre-h2h-side-val { color: var(--teal); }
body.single-game .ins-delta--up { color: var(--teal); background: rgba(171, 200, 162, .3); }
body.single-game .ins-delta--down { color: var(--muted); background: rgba(28, 61, 52, .07); }

/* ── Titres de section comme la home (08/10) : grand titre en casse normale,
   filet fin jusqu'au bord. Était : petites capitales espacées sur bandeau. */
body.single-game .section-title {
  margin: 0 0 22px; padding: 0; gap: 18px; align-items: center; background: none;
  font-size: clamp(22px, 2vw, 30px); font-weight: 800; line-height: 1.1;
  letter-spacing: -.02em; text-transform: none; color: var(--teal);
}
body.single-game .section-title::after { height: 1px; background: rgba(28, 61, 52, .22); }
@media (max-width: 680px) {
  body.single-game .section-title { font-size: 22px; gap: 12px; margin-bottom: 16px; }
}

/* ── À retenir avant le match : forme et face-à-face en gros chiffres (08/10) ── */
.md-pre .md-pre-h { display: flex; align-items: baseline; gap: 10px; margin: 30px 0 14px; font-size: 18px; font-weight: 800; line-height: 1.2; color: var(--teal); }
.md-pre .section-title + .md-pre-h { margin-top: 0; }
.md-pre .md-pre-h-meta { font-size: 13px; font-weight: 600; color: var(--muted); }

.md-forme { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.md-forme-eq { padding: 22px 24px; background: var(--white); border-top: 3px solid var(--teal); }
.md-forme-eq + .md-forme-eq { border-top-color: var(--sage); }
.md-forme-tete { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 12px; margin-bottom: 16px; }
.md-forme-nom { font-size: 20px; font-weight: 800; line-height: 1.15; color: var(--teal); }
.md-forme-serie { font-size: 13px; font-weight: 700; color: var(--teal); }
.md-forme-serie--d { color: var(--muted); }

.md-forme-matchs { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; margin: 0 0 20px; padding: 0; list-style: none; }
.md-forme-m { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 0 8px; background: rgba(28, 61, 52, .06); }
.md-forme-r { font-size: 18px; font-weight: 800; line-height: 1; }
.md-forme-sc { font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums; }
.md-forme-m--v { background: var(--teal); color: var(--vanilla); }
.md-forme-m--n { background: transparent; color: var(--teal); box-shadow: inset 0 0 0 1px rgba(28, 61, 52, .35); }
.md-forme-m--d { color: rgba(28, 61, 52, .55); }

.md-chiffres { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0; }
.md-chiffres > div { display: flex; flex-direction: column-reverse; gap: 4px; min-width: 0; }
.md-chiffres dd { margin: 0; font-size: clamp(30px, 3vw, 42px); font-weight: 800; line-height: 1; letter-spacing: -.02em; color: var(--teal); font-variant-numeric: tabular-nums; }
.md-chiffres dd small { font-size: .55em; font-weight: 800; margin-left: 2px; }
.md-chiffres dt { font-size: 13px; font-weight: 600; line-height: 1.3; color: var(--muted); }
.md-forme-note { margin: 14px 0 0; font-size: 14px; color: var(--ink); }
.md-forme-note + .md-forme-note { margin-top: 4px; }

.md-h2h { padding: 24px; background: var(--white); }
.md-h2h-ligne { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: end; gap: 20px; }
.md-h2h-eq { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.md-h2h-eq--ext { align-items: flex-end; text-align: right; }
.md-h2h-nb { font-size: clamp(56px, 6vw, 84px); font-weight: 800; line-height: .9; letter-spacing: -.03em; color: var(--teal); }
.md-h2h-nom { font-size: 15px; font-weight: 700; color: var(--teal); }
.md-h2h-nuls { padding-bottom: 6px; font-size: 13px; font-weight: 700; color: var(--muted); }
.md-h2h-barre { display: flex; gap: 4px; margin: 18px 0 22px; padding: 0; list-style: none; }
.md-h2h-seg { flex: 1 1 0; height: 8px; background: var(--teal); }
.md-h2h-seg--2 { background: var(--sage); }
.md-h2h-seg--n { background: transparent; box-shadow: inset 0 0 0 1px rgba(28, 61, 52, .35); }
.md-chiffres--h2h .md-date { font-weight: 400; }

@media (max-width: 680px) {
  .md-forme { grid-template-columns: 1fr; }
  .md-forme-eq, .md-h2h { padding: 18px 16px; }
  .md-forme-r { font-size: 16px; }
  .md-chiffres dd { font-size: 28px; }
  .md-chiffres dt { font-size: 12px; }
  .md-h2h-nb { font-size: 56px; }
  .md-chiffres--h2h { grid-template-columns: 1fr 1fr; }
  .md-chiffres--h2h > div:first-child { grid-column: 1 / -1; }
}
.md-chiffres > div { justify-content: flex-end; } /* column-reverse : chiffres alignés en haut même si un libellé passe sur 2 lignes */

/* Séparation menu / haut de fiche SANS trait (Félix, 08/10 : « le trait c'est
   moche ») : même logique de fondu que les photos, du teal du menu vers un
   teal plus profond sur les 230 premiers pixels. */
.match-header.match-header--d { background: linear-gradient(to bottom, #1C3D34 0, #142E27 230px, #142E27 100%); }
.match-header--d .md-fond--logos { background: inherit; } /* même dégradé, base du fondu « multiplier » des logos */
/* App iOS : le fil d'Ariane (masqué ici) portait la réserve d'encoche ; c'est
   le haut de fiche qui la prend (même règle qu'its-app-shell.css). */
html.is-app .match-header.match-header--d { border-top: env(safe-area-inset-top, 0px) solid #1C3D34; }

/* ── Compositions (08/10) ─────────────────────────────────────────────────
   Lignes aérées, numéros façon maillot, lignes de postes, actions en clair,
   logo d'équipe, un onglet par équipe sur mobile (radios, sans JS). */
#sec-indiv .lineups-grid { gap: 20px; }
#sec-indiv .lineup { background: var(--white); border: 0; }
#sec-indiv .lineup-head { display: flex; align-items: center; gap: 12px; padding: 14px 18px; }
#sec-indiv .lineup--fr .lineup-head { background: var(--teal); color: var(--vanilla); }
#sec-indiv .lineup--sc .lineup-head { background: var(--sage); color: var(--teal); }
#sec-indiv .lineup-name { font-size: 18px; font-weight: 800; letter-spacing: 0; text-transform: none; }
#sec-indiv .md-lu-logo { display: inline-flex; width: 32px; height: 32px; flex: 0 0 32px; }
#sec-indiv .md-lu-logo picture { display: contents; }
#sec-indiv .md-lu-logo img { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 0 1px rgba(242, 229, 210, .9)); }

#sec-indiv .p-row { display: flex; align-items: center; gap: 14px; min-height: 48px; padding: 6px 18px; border-bottom: 1px solid rgba(28, 61, 52, .08); font-size: 15px; }
#sec-indiv .p-row:last-child { border-bottom: 0; }
#sec-indiv .p-pos:empty { display: none; }
#sec-indiv .p-pos { flex: 0 0 auto; font-size: 12px; color: var(--muted); }
#sec-indiv .p-num { flex: 0 0 30px; display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; background: var(--teal); color: var(--vanilla); font-size: 13px; font-weight: 800; font-variant-numeric: tabular-nums; }
#sec-indiv .bench-sep:not(.md-lu-ligne) ~ .p-row:not(.bench-sep) .p-num { background: transparent; color: var(--teal); box-shadow: inset 0 0 0 1.5px rgba(28, 61, 52, .45); }
#sec-indiv .p-name { flex: 1 1 auto; min-width: 0; font-weight: 700; }
#sec-indiv .p-name a { color: var(--teal); }
#sec-indiv .p-ev { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; flex: 0 1 auto; }

#sec-indiv .p-row.bench-sep { min-height: 0; padding: 18px 18px 6px; background: none; border-bottom: 0; font-size: 12px; font-weight: 800; letter-spacing: 0; text-transform: none; color: var(--muted); }

#sec-indiv .md-ev { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; font-size: 12px; font-weight: 700; line-height: 1.3; white-space: nowrap; font-variant-numeric: tabular-nums; }
#sec-indiv .md-ev--essai { background: var(--teal); color: var(--vanilla); }
#sec-indiv .md-ev--pied { background: rgba(171, 200, 162, .35); color: var(--teal); }
#sec-indiv .md-ev--rempl { padding: 3px 4px; color: var(--muted); font-weight: 600; }
#sec-indiv .md-ev--carton { padding-left: 4px; color: var(--ink); }
#sec-indiv .md-ev--carton::before { content: ""; width: 9px; height: 12px; background: #E5B300; }
#sec-indiv .md-ev--o::before { background: #E07B00; }
#sec-indiv .md-ev--r::before { background: #C0392B; }

/* Meilleur marqueur : même carte, couleurs de charte. */
#sec-indiv .lineup-perf { background: rgba(28, 61, 52, .04); }

/* Onglets mobile. */
#sec-indiv .md-lu-r { position: absolute; opacity: 0; pointer-events: none; }
#sec-indiv .md-lu-onglets { display: none; }
@media (max-width: 760px) {
  #sec-indiv .md-lu-onglets { display: flex; margin-bottom: 14px; border-bottom: 1px solid rgba(28, 61, 52, .2); }
  #sec-indiv .md-lu-onglets label { flex: 1 1 0; padding: 12px 8px; text-align: center; font-size: 15px; font-weight: 800; color: var(--muted); cursor: pointer; border-bottom: 3px solid transparent; margin-bottom: -1px; }
  #md-lu-r1:checked ~ .md-lu-onglets label[for="md-lu-r1"],
  #md-lu-r2:checked ~ .md-lu-onglets label[for="md-lu-r2"] { color: var(--teal); border-bottom-color: var(--teal); }
  #md-lu-r1:focus-visible ~ .md-lu-onglets label[for="md-lu-r1"],
  #md-lu-r2:focus-visible ~ .md-lu-onglets label[for="md-lu-r2"] { outline: 2px solid var(--teal); outline-offset: 2px; }
  #md-lu-r1:checked ~ .lineups-grid .lineup--sc,
  #md-lu-r2:checked ~ .lineups-grid .lineup--fr { display: none; }
  #sec-indiv .lineups-grid { grid-template-columns: 1fr; }
  #sec-indiv .p-row { padding: 6px 12px; gap: 10px; font-size: 14px; }
  #sec-indiv .p-row.bench-sep { padding: 16px 12px 4px; }
}
/* Neutralise les anciennes pastilles (.p-ev span de itsrugby-match.css) sur les
   nouvelles actions et leurs morceaux internes. */
#sec-indiv .p-ev .md-ev span { padding: 0; border: 0; background: none; color: inherit; font-size: inherit; font-weight: inherit; }
#sec-indiv .p-ev span.md-ev { padding: 3px 8px; border: 0; font-size: 12px; font-weight: 700; color: var(--teal); background: none; }
#sec-indiv .p-ev span.md-ev--essai { background: var(--teal); color: var(--vanilla); }
#sec-indiv .p-ev span.md-ev--pied { background: rgba(171, 200, 162, .35); }
#sec-indiv .p-ev span.md-ev--rempl { padding: 3px 2px; color: var(--muted); font-weight: 600; }
#sec-indiv .p-ev span.md-ev--carton { padding-left: 2px; color: var(--ink); }
#sec-indiv .lineup-head { justify-content: flex-start; }

/* ── Compositions en miroir (08/10, Félix : « chaque bloc prend énormément de
   place ») : une ligne par numéro, domicile à gauche tourné vers le centre,
   extérieur à droite, numéro au milieu. Remplace les deux colonnes. */
.md-compo { background: var(--white); }
.md-compo-tete { display: grid; grid-template-columns: 1fr 1fr; }
.md-compo-eq { display: flex; align-items: center; gap: 10px; padding: 12px 16px; font-size: 16px; font-weight: 800; }
.md-compo-eq--1 { background: var(--teal); color: var(--vanilla); justify-content: flex-start; }
.md-compo-eq--2 { background: var(--sage); color: var(--teal); justify-content: flex-end; }
.md-compo-logo { display: inline-flex; width: 26px; height: 26px; flex: 0 0 26px; }
.md-compo-logo picture { display: contents; }
.md-compo-logo img { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 0 1px rgba(242, 229, 210, .9)); }

.md-compo-groupe { padding: 12px 16px 4px; font-size: 12px; font-weight: 800; color: var(--muted); text-align: center; }
.md-compo-l { display: grid; grid-template-columns: minmax(0, 1fr) 40px minmax(0, 1fr); align-items: center; min-height: 36px; border-bottom: 1px solid rgba(28, 61, 52, .07); }
.md-compo-num { justify-self: center; display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; background: var(--teal); color: var(--vanilla); font-size: 12px; font-weight: 800; font-variant-numeric: tabular-nums; }
.md-compo-l--remp .md-compo-num { background: transparent; color: var(--teal); box-shadow: inset 0 0 0 1.5px rgba(28, 61, 52, .4); }
.md-cp { display: flex; align-items: center; gap: 8px; min-width: 0; padding: 4px 12px; font-size: 14px; }
.md-cp--1 { flex-direction: row-reverse; text-align: right; }
.md-cp-nom { min-width: 0; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.md-cp-nom a { color: var(--teal); }
.md-cp-ev { display: flex; flex-wrap: wrap; gap: 4px; flex: 0 0 auto; }
.md-cp--1 .md-cp-ev { justify-content: flex-start; }
#sec-indiv .md-cp-ev .md-ev { padding: 2px 6px; font-size: 11px; }
#sec-indiv .md-cp-ev .md-ev--rempl { padding: 2px 0; }

@media (max-width: 680px) {
  .md-compo-eq { padding: 10px 10px; font-size: 14px; }
  .md-compo-l { grid-template-columns: minmax(0, 1fr) 30px minmax(0, 1fr); min-height: 0; }
  .md-compo-num { width: 22px; height: 22px; font-size: 11px; }
  /* Mobile : nom au-dessus, actions dessous, chacun de son côté. */
  .md-cp { flex-direction: column; align-items: flex-start; gap: 3px; padding: 6px 8px; font-size: 13px; }
  .md-cp--1 { align-items: flex-end; }
  .md-cp-nom { white-space: normal; }
  .md-cp--1 .md-cp-ev { justify-content: flex-end; }
}

/* ── Compositions compactes (08/10 ; le miroir a été refusé) : deux colonnes,
   lignes basses, remplaçants repliés. */
#sec-indiv .p-row { min-height: 34px; padding: 3px 14px; font-size: 14px; }
#sec-indiv .p-num { flex: 0 0 24px; width: 24px; height: 24px; font-size: 12px; }
#sec-indiv .md-lu-ligne { padding: 10px 14px 2px; }
#sec-indiv .lineup-head { padding: 10px 14px; }
#sec-indiv .md-lu-remp > summary { display: flex; align-items: center; gap: 8px; padding: 10px 14px; cursor: pointer; list-style: none; color: var(--teal); }
#sec-indiv .md-lu-remp > summary::-webkit-details-marker { display: none; }
#sec-indiv .md-lu-remp > summary::after { content: "\203A"; font-size: 18px; line-height: 1; transform: rotate(90deg); transition: transform .2s ease; }
#sec-indiv .md-lu-remp[open] > summary::after { transform: rotate(-90deg); }
#sec-indiv .md-lu-remp > summary:focus-visible { outline: 2px solid var(--teal); outline-offset: -2px; }
#sec-indiv .md-lu-remp .p-num { background: transparent; color: var(--teal); box-shadow: inset 0 0 0 1.5px rgba(28, 61, 52, .4); }
@media (max-width: 760px) { #sec-indiv .p-row { padding: 3px 10px; } }

/* ── Compositions : vue terrain (08/10) ─────────────────────────────────
   Demi-terrain vertical par équipe : ligne médiane en haut (1re ligne), ligne
   d'en-but en bas (arrière). Bandes de tonte, lignes vanilla discrètes.
   Positions par numéro, centre du joueur en (left, top). */
.md-terrain { position: relative; aspect-ratio: 1 / 1; overflow: hidden;
  background: repeating-linear-gradient(to bottom, #1C3D34 0, #1C3D34 10%, #20443A 10%, #20443A 20%); }
.md-terrain-lignes { position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(rgba(242, 229, 210, .35), rgba(242, 229, 210, .35)) 0 0 / 100% 2px no-repeat,
    linear-gradient(rgba(242, 229, 210, .18), rgba(242, 229, 210, .18)) 0 20% / 100% 1px no-repeat,
    linear-gradient(rgba(242, 229, 210, .3), rgba(242, 229, 210, .3)) 0 56% / 100% 1px no-repeat,
    linear-gradient(rgba(242, 229, 210, .35), rgba(242, 229, 210, .35)) 0 calc(100% - 6px) / 100% 2px no-repeat; }
.md-terrain-j { position: absolute; inset: 0; margin: 0; padding: 0; list-style: none; }
.md-pos { position: absolute; display: flex; flex-direction: column; align-items: center; gap: 3px; width: 92px; margin-left: -46px; margin-top: -14px; text-align: center; }
.md-pos-num { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; background: var(--vanilla); color: var(--teal); font-size: 13px; font-weight: 800; }
.md-pos-nom { max-width: 100%; font-size: 12px; font-weight: 700; line-height: 1.2; color: var(--vanilla); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.md-pos-nom a { color: var(--vanilla); }
.md-pos-ev { display: flex; flex-wrap: wrap; justify-content: center; gap: 3px; }
#sec-indiv .md-pos-ev span.md-ev { padding: 1px 5px; font-size: 10px; }
#sec-indiv .md-pos-ev span.md-ev--essai { background: var(--vanilla); color: var(--teal); }
#sec-indiv .md-pos-ev span.md-ev--pied { background: rgba(171, 200, 162, .3); color: var(--vanilla); }
#sec-indiv .md-pos-ev span.md-ev--rempl { padding: 1px 0; color: rgba(242, 229, 210, .7); }
#sec-indiv .md-pos-ev span.md-ev--carton { color: var(--vanilla); }

.md-pos--1  { left: 26%; top: 8%; }
.md-pos--2  { left: 50%; top: 8%; }
.md-pos--3  { left: 74%; top: 8%; }
.md-pos--4  { left: 37%; top: 21%; }
.md-pos--5  { left: 63%; top: 21%; }
.md-pos--6  { left: 14%; top: 31%; }
.md-pos--8  { left: 50%; top: 35%; }
.md-pos--7  { left: 86%; top: 31%; }
.md-pos--9  { left: 50%; top: 49%; }
.md-pos--10 { left: 30%; top: 59%; }
.md-pos--12 { left: 52%; top: 66%; }
.md-pos--13 { left: 73%; top: 73%; }
.md-pos--11 { left: 13%; top: 80%; }
.md-pos--14 { left: 87%; top: 80%; }
.md-pos--15 { left: 50%; top: 88%; }

@media (max-width: 760px) {
  .md-terrain { aspect-ratio: 4 / 5; }
  .md-pos { width: 84px; margin-left: -42px; }
  .md-pos-nom { font-size: 11px; }
}

/* Choix de la vue : Terrain (défaut) ou Liste, en CSS seul (radios). */
#sec-indiv .md-vue-choix { display: inline-flex; margin: 0 0 14px; box-shadow: inset 0 0 0 1px rgba(28, 61, 52, .3); }
#sec-indiv .md-vue-choix label { padding: 8px 16px; font-size: 13px; font-weight: 800; color: var(--teal); cursor: pointer; }
#md-vue-t:checked ~ .md-vue-choix label[for="md-vue-t"],
#md-vue-l:checked ~ .md-vue-choix label[for="md-vue-l"] { background: var(--teal); color: var(--vanilla); }
#md-vue-t:focus-visible ~ .md-vue-choix label[for="md-vue-t"],
#md-vue-l:focus-visible ~ .md-vue-choix label[for="md-vue-l"] { outline: 2px solid var(--teal); outline-offset: 2px; }
#md-vue-t:checked ~ .lineups-grid .md-lu-liste,
#md-vue-l:checked ~ .lineups-grid .md-terrain { display: none; }

/* Terrain lisible (08/10, Félix : « on comprend pas ton terrain ») : lignes de
   touche, médiane en haut, 10 m en pointillés, 22 m marquée, ligne d'essai,
   en-but plus sombre et poteaux en H en bas. */
.md-terrain { aspect-ratio: 5 / 6; }
.md-terrain-lignes { inset: 0 12px; background: none; box-shadow: inset 2px 0 0 rgba(242, 229, 210, .55), inset -2px 0 0 rgba(242, 229, 210, .55), inset 0 2px 0 rgba(242, 229, 210, .55); }
.md-t-10 { position: absolute; left: 0; right: 0; top: 17%; border-top: 2px dashed rgba(242, 229, 210, .3); }
.md-t-22 { position: absolute; left: 0; right: 0; top: 52%; border-top: 2px solid rgba(242, 229, 210, .45); }
.md-t-22::before, .md-t-22::after { content: "22"; position: absolute; top: 4px; font-size: 11px; font-weight: 800; color: rgba(242, 229, 210, .45); }
.md-t-22::before { left: 8px; } .md-t-22::after { right: 8px; }
.md-t-22 { font-size: 0; }
.md-t-enbut { position: absolute; left: 0; right: 0; bottom: 0; height: 8%; background: rgba(0, 0, 0, .18); border-top: 2px solid rgba(242, 229, 210, .6); }
.md-t-poteaux { position: absolute; left: 50%; bottom: 8%; width: 44px; height: 38px; margin-left: -22px; border-left: 3px solid rgba(242, 229, 210, .6); border-right: 3px solid rgba(242, 229, 210, .6); }
.md-t-poteaux::before { content: ""; position: absolute; left: 0; right: 0; bottom: 10px; border-top: 3px solid rgba(242, 229, 210, .6); }
/* Joueurs remontés pour laisser l'en-but et les poteaux visibles. */
.md-pos--1, .md-pos--2, .md-pos--3 { top: 7%; }
.md-pos--4, .md-pos--5 { top: 19%; }
.md-pos--6, .md-pos--7 { top: 29%; }
.md-pos--8 { top: 33%; }
.md-pos--9 { top: 45%; }
.md-pos--10 { top: 55%; }
.md-pos--12 { top: 61%; }
.md-pos--13 { top: 67%; }
.md-pos--11, .md-pos--14 { top: 73%; }
.md-pos--15 { left: 50%; top: 80%; }
.md-pos-num { box-shadow: 0 2px 6px rgba(0, 0, 0, .25); }
@media (max-width: 760px) { .md-terrain { aspect-ratio: 3 / 4; } }

/* ── Compositions, vue terrain v2 (08/10, référence montrée par Félix) ──────
   Un terrain horizontal, les deux XV face à face : domicile à gauche (maillots
   teal), extérieur à droite (maillots vanilla). Terrain sauge (charte), lignes
   vanilla : en-buts, lignes d'essai, 22 m, 10 m en pointillés, médiane,
   poteaux. Vertical sur mobile (domicile en haut). Généré : positions en %. */
#md-vue-l:checked ~ .md-t2 { display: none; }
#md-vue-t:checked ~ .lineups-grid .md-lu-liste { display: block; }
#md-vue-t:checked ~ .md-t2 ~ .lineups-grid .md-lu-liste { display: none; }
#md-vue-l:checked ~ .lineups-grid .md-terrain { display: none; }
.md-t2 { margin: 0 0 16px; }
.md-t2-champ { position: relative; aspect-ratio: 2.2 / 1; overflow: hidden;
  background: repeating-linear-gradient(to right, #A6C39C 0, #A6C39C 5%, #ABC8A2 5%, #ABC8A2 10%); }
.md-t2-l { position: absolute; top: 0; bottom: 0; width: 0; border-left: 2px solid rgba(242, 229, 210, .85); }
.md-t2-l--mil { left: 50%; }
.md-t2-l--10h { left: 42%; border-left-style: dashed; border-left-color: rgba(242, 229, 210, .6); }
.md-t2-l--10a { left: 58%; border-left-style: dashed; border-left-color: rgba(242, 229, 210, .6); }
.md-t2-l--22h { left: 24.8%; }
.md-t2-l--22a { left: 75.2%; }
.md-t2-eb { position: absolute; top: 0; bottom: 0; width: 5%; background: rgba(28, 61, 52, .1); }
.md-t2-eb--h { left: 0; border-right: 2px solid rgba(242, 229, 210, .9); }
.md-t2-eb--a { right: 0; border-left: 2px solid rgba(242, 229, 210, .9); }
.md-t2-pot { position: absolute; top: 50%; width: 30px; height: 40px; margin-top: -20px; border-top: 3px solid var(--vanilla); border-bottom: 3px solid var(--vanilla); }
.md-t2-pot::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; border-left: 3px solid var(--vanilla); }
.md-t2-pot--h { left: calc(5% - 15px); }
.md-t2-pot--a { left: calc(95% - 15px); }
.md-t2-eq { position: absolute; inset: 0; margin: 0; padding: 0; list-style: none; }
.md-j { position: absolute; display: flex; flex-direction: column; align-items: center; gap: 2px; width: 104px; margin-left: -52px; margin-top: -24px; text-align: center; }
.md-j-maillot { display: flex; align-items: center; justify-content: center; width: 36px; height: 32px;
  clip-path: polygon(28% 0, 72% 0, 100% 18%, 88% 40%, 80% 34%, 80% 100%, 20% 100%, 20% 34%, 12% 40%, 0 18%); }
.md-j-maillot span { margin-top: 4px; font-size: 13px; font-weight: 800; }
.md-j--h-1 .md-j-maillot, .md-t2-eq--h .md-j-maillot { background: var(--teal); color: var(--vanilla); }
.md-t2-eq--a .md-j-maillot { background: var(--vanilla); color: var(--teal); }
.md-j-nom { max-width: 100%; font-size: 12px; font-weight: 800; line-height: 1.15; color: var(--teal); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.md-j-nom a { color: var(--teal); }
.md-j-ev { display: flex; flex-wrap: wrap; justify-content: center; gap: 2px; }
#sec-indiv .md-j-ev span.md-ev { padding: 0 4px; font-size: 10px; }
#sec-indiv .md-j-ev span.md-ev--pied { background: rgba(28, 61, 52, .12); }
#sec-indiv .md-j-ev span.md-ev--rempl { padding: 0; color: var(--teal); }
@media (max-width: 760px) {
  .md-t2-champ { aspect-ratio: 3 / 5;
    background: repeating-linear-gradient(to bottom, #A6C39C 0, #A6C39C 5%, #ABC8A2 5%, #ABC8A2 10%); }
  .md-t2-l { left: 0; right: 0; bottom: auto; width: auto; height: 0; border-left: 0; border-top: 2px solid rgba(242, 229, 210, .85); }
  .md-t2-l--mil { top: 50%; }
  .md-t2-l--10h { top: 42%; border-top-style: dashed; border-top-color: rgba(242, 229, 210, .6); }
  .md-t2-l--10a { top: 58%; border-top-style: dashed; border-top-color: rgba(242, 229, 210, .6); }
  .md-t2-l--22h { top: 24.8%; }
  .md-t2-l--22a { top: 75.2%; }
  .md-t2-eb { left: 0; right: 0; width: auto; height: 5%; }
  .md-t2-eb--h { top: 0; bottom: auto; border-right: 0; border-bottom: 2px solid rgba(242, 229, 210, .9); }
  .md-t2-eb--a { top: auto; bottom: 0; border-left: 0; border-top: 2px solid rgba(242, 229, 210, .9); }
  .md-t2-pot { top: auto; left: 50%; width: 40px; height: 30px; margin: 0 0 0 -20px; border: 0; border-left: 3px solid var(--vanilla); border-right: 3px solid var(--vanilla); }
  .md-t2-pot::before { top: 50%; bottom: auto; left: 0; right: 0; border-left: 0; border-top: 3px solid var(--vanilla); }
  .md-t2-pot--h { top: calc(5% - 15px); }
  .md-t2-pot--a { top: calc(95% - 15px); }
  .md-j { width: 84px; margin-left: -42px; margin-top: -20px; }
  .md-j-maillot { width: 30px; height: 27px; }
  .md-j-maillot span { font-size: 12px; }
  .md-j-nom { font-size: 11px; }
}
.md-j--h-1 { left: 46%; top: 35%; }
.md-j--a-1 { left: 54%; top: 65%; }
.md-j--h-2 { left: 46%; top: 50%; }
.md-j--a-2 { left: 54%; top: 50%; }
.md-j--h-3 { left: 46%; top: 65%; }
.md-j--a-3 { left: 54%; top: 35%; }
.md-j--h-4 { left: 40%; top: 42%; }
.md-j--a-4 { left: 60%; top: 58%; }
.md-j--h-5 { left: 40%; top: 58%; }
.md-j--a-5 { left: 60%; top: 42%; }
.md-j--h-6 { left: 34%; top: 22%; }
.md-j--a-6 { left: 66%; top: 78%; }
.md-j--h-7 { left: 34%; top: 78%; }
.md-j--a-7 { left: 66%; top: 22%; }
.md-j--h-8 { left: 34%; top: 50%; }
.md-j--a-8 { left: 66%; top: 50%; }
.md-j--h-9 { left: 27%; top: 40%; }
.md-j--a-9 { left: 73%; top: 60%; }
.md-j--h-10 { left: 22%; top: 56%; }
.md-j--a-10 { left: 78%; top: 44%; }
.md-j--h-11 { left: 10%; top: 10%; }
.md-j--a-11 { left: 90%; top: 90%; }
.md-j--h-12 { left: 18%; top: 70%; }
.md-j--a-12 { left: 82%; top: 30%; }
.md-j--h-13 { left: 14%; top: 83%; }
.md-j--a-13 { left: 86%; top: 17%; }
.md-j--h-14 { left: 8%; top: 94%; }
.md-j--a-14 { left: 92%; top: 6%; }
.md-j--h-15 { left: 5%; top: 50%; }
.md-j--a-15 { left: 95%; top: 50%; }
@media (max-width: 760px) {
  .md-j--h-1 { left: 35%; top: 46%; }
  .md-j--a-1 { left: 65%; top: 54%; }
  .md-j--h-2 { left: 50%; top: 46%; }
  .md-j--a-2 { left: 50%; top: 54%; }
  .md-j--h-3 { left: 65%; top: 46%; }
  .md-j--a-3 { left: 35%; top: 54%; }
  .md-j--h-4 { left: 42%; top: 40%; }
  .md-j--a-4 { left: 58%; top: 60%; }
  .md-j--h-5 { left: 58%; top: 40%; }
  .md-j--a-5 { left: 42%; top: 60%; }
  .md-j--h-6 { left: 22%; top: 34%; }
  .md-j--a-6 { left: 78%; top: 66%; }
  .md-j--h-7 { left: 78%; top: 34%; }
  .md-j--a-7 { left: 22%; top: 66%; }
  .md-j--h-8 { left: 50%; top: 34%; }
  .md-j--a-8 { left: 50%; top: 66%; }
  .md-j--h-9 { left: 40%; top: 27%; }
  .md-j--a-9 { left: 60%; top: 73%; }
  .md-j--h-10 { left: 56%; top: 22%; }
  .md-j--a-10 { left: 44%; top: 78%; }
  .md-j--h-11 { left: 10%; top: 10%; }
  .md-j--a-11 { left: 90%; top: 90%; }
  .md-j--h-12 { left: 70%; top: 18%; }
  .md-j--a-12 { left: 30%; top: 82%; }
  .md-j--h-13 { left: 83%; top: 14%; }
  .md-j--a-13 { left: 17%; top: 86%; }
  .md-j--h-14 { left: 94%; top: 8%; }
  .md-j--a-14 { left: 6%; top: 92%; }
  .md-j--h-15 { left: 50%; top: 5%; }
  .md-j--a-15 { left: 50%; top: 95%; }
}

/* Mobile : un DEMI-terrain par équipe, selon l'onglet (les deux XV empilés se
   chevauchaient). En-but en haut, médiane en bas, mêmes places pour les deux. */
@media (max-width: 760px) {
  .md-t2-champ { aspect-ratio: 3 / 4; }
  #md-lu-r1:checked ~ .md-t2 .md-t2-eq--a,
  #md-lu-r2:checked ~ .md-t2 .md-t2-eq--h { display: none; }
  .md-t2-l--10a, .md-t2-l--22a, .md-t2-eb--a, .md-t2-pot--a { display: none; }
  .md-t2-eb--h { height: 10%; }
  .md-t2-pot--h { top: calc(10% - 15px); }
  .md-t2-l--22h { top: 49.6%; }
  .md-t2-l--10h { top: 84%; }
  .md-t2-l--mil { top: auto; bottom: 0; }
  .md-j { width: 80px; margin-left: -40px; }
  .md-j--h-1, .md-j--a-1 { left: 25%; top: 92%; }
  .md-j--h-2, .md-j--a-2 { left: 50%; top: 92%; }
  .md-j--h-3, .md-j--a-3 { left: 75%; top: 92%; }
  .md-j--h-4, .md-j--a-4 { left: 36%; top: 80%; }
  .md-j--h-5, .md-j--a-5 { left: 64%; top: 80%; }
  .md-j--h-6, .md-j--a-6 { left: 14%; top: 68%; }
  .md-j--h-7, .md-j--a-7 { left: 86%; top: 68%; }
  .md-j--h-8, .md-j--a-8 { left: 50%; top: 70%; }
  .md-j--h-9, .md-j--a-9 { left: 50%; top: 57%; }
  .md-j--h-10, .md-j--a-10 { left: 32%; top: 47%; }
  .md-j--h-11, .md-j--a-11 { left: 14%; top: 24%; }
  .md-j--h-12, .md-j--a-12 { left: 52%; top: 38%; }
  .md-j--h-13, .md-j--a-13 { left: 72%; top: 30%; }
  .md-j--h-14, .md-j--a-14 { left: 86%; top: 24%; }
  .md-j--h-15, .md-j--a-15 { left: 50%; top: 15%; }
}

/* Terrain : nom des clubs au-dessus, remplaçants sur un banc de touche dessous
   (Félix, 08/10). En vue terrain, les colonnes d'équipe sont masquées. */
#md-vue-t:checked ~ .md-t2 ~ .lineups-grid { display: none; }
.md-t2-tete { display: grid; grid-template-columns: 1fr 1fr; }
.md-t2-club { display: flex; align-items: center; gap: 10px; padding: 10px 16px; font-size: 16px; font-weight: 800; }
.md-t2-club--h { background: var(--teal); color: var(--vanilla); }
.md-t2-club--a { justify-content: flex-end; background: var(--vanilla); color: var(--teal); box-shadow: inset 0 0 0 1px rgba(28, 61, 52, .15); }
.md-t2-logo { display: inline-flex; width: 26px; height: 26px; flex: 0 0 26px; }
.md-t2-logo picture { display: contents; }
.md-t2-logo img { width: 100%; height: 100%; object-fit: contain; }
.md-t2-club--h .md-t2-logo img { filter: drop-shadow(0 0 1px rgba(242, 229, 210, .9)); }

.md-t2-banc { display: grid; grid-template-columns: 1fr 1fr; gap: 0; background: #8FAE86; border-top: 3px solid rgba(242, 229, 210, .9); }
.md-t2-banc-eq { padding: 10px 12px 12px; }
.md-t2-banc-eq--h { border-right: 2px solid rgba(242, 229, 210, .9); }
.md-t2-banc-t { display: block; margin-bottom: 8px; font-size: 12px; font-weight: 800; color: var(--teal); }
.md-t2-banc-eq--a .md-t2-banc-t { text-align: right; }
.md-t2-banc-eq ol { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 4px; margin: 0; padding: 0; list-style: none; }
.md-b { display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 0; text-align: center; }
.md-b .md-j-maillot { width: 28px; height: 25px; }
.md-b .md-j-maillot span { font-size: 11px; }
.md-t2-banc-eq--h .md-j-maillot { background: var(--teal); color: var(--vanilla); }
.md-t2-banc-eq--a .md-j-maillot { background: var(--vanilla); color: var(--teal); }
.md-b:not(.md-b--entre) .md-j-maillot { opacity: .55; }
.md-b .md-j-nom { font-size: 11px; }

@media (max-width: 760px) {
  .md-t2-tete { display: none; } /* les onglets portent déjà les noms */
  .md-t2-banc { grid-template-columns: 1fr; }
  .md-t2-banc-eq--h { border-right: 0; }
  #md-lu-r1:checked ~ .md-t2 .md-t2-banc-eq--a,
  #md-lu-r2:checked ~ .md-t2 .md-t2-banc-eq--h { display: none; }
  .md-t2-banc-eq--a .md-t2-banc-t { text-align: left; }
  .md-t2-banc-eq ol { grid-template-columns: repeat(4, minmax(0, 1fr)); row-gap: 10px; }
}

/* Terrain moins haut (08/10, Félix : « réduit un peu ») ; ailiers rentrés. */
@media (min-width: 761px) {
  .md-t2-champ { aspect-ratio: 2.7 / 1; }
  .md-j--h-11 { top: 13%; } .md-j--a-11 { top: 87%; }
  .md-j--h-14 { top: 87%; } .md-j--a-14 { top: 13%; }
  .md-j--h-6 { top: 24%; } .md-j--a-6 { top: 76%; }
  .md-j--h-7 { top: 76%; } .md-j--a-7 { top: 24%; }
  .md-j--h-13 { top: 78%; } .md-j--a-13 { top: 22%; }
}
/* En-tête du terrain : teal pour le club à domicile, sauge pour l’extérieur (le vanilla
   de l’extérieur faisait « bof », Félix 08/10). Depuis le 09/10 : sauge, comme le fil, les stats et les listes. */
.md-t2-club--a { background: var(--sage); color: var(--teal); box-shadow: none; }
.md-t2-club--a .md-t2-logo img { filter: drop-shadow(0 0 1px rgba(255, 255, 255, .9)); }
@media (max-width: 760px) {
  .md-j--h-11, .md-j--a-11 { top: 21%; }
  .md-j--h-14, .md-j--a-14 { top: 21%; }
  .md-j--h-13, .md-j--a-13 { left: 70%; top: 34%; }
}

/* Même ordre pour tous les joueurs (08/10, Félix : « deux lignes, trois lignes,
   faut harmoniser ») : nom, puis la minute d'entrée/sortie sur sa ligne, puis
   les actions sur une seule ligne. */
.md-j-ev { flex-direction: column; align-items: center; gap: 2px; }
#sec-indiv .md-j-ev span.md-ev { white-space: nowrap; }
#sec-indiv .md-j-ev span.md-ev--rempl { order: -1; }

/* Maillots aux couleurs des clubs (08/10) : palette fixe, classes posées
   par its_maillot_classes_match() sur chaque équipe (terrain + banc). */
.md-t2 [class*="md-c-"] .md-j-maillot { box-shadow: none; }
.md-t2 .md-c-noir .md-j-maillot { background: #1a1a1a; }
.md-t2 .md-c-blanc .md-j-maillot { background: #f5f5f5; }
.md-t2 .md-c-gris .md-j-maillot { background: #8c8c8c; }
.md-t2 .md-c-rouge .md-j-maillot { background: #d52b1e; }
.md-t2 .md-c-bordeaux .md-j-maillot { background: #7a1f2b; }
.md-t2 .md-c-rose .md-j-maillot { background: #e0569b; }
.md-t2 .md-c-orange .md-j-maillot { background: #ef7d1a; }
.md-t2 .md-c-jaune .md-j-maillot { background: #f5c518; }
.md-t2 .md-c-or .md-j-maillot { background: #c9a227; }
.md-t2 .md-c-vert .md-j-maillot { background: #2e8b3e; }
.md-t2 .md-c-vertfonce .md-j-maillot { background: #1f5130; }
.md-t2 .md-c-ciel .md-j-maillot { background: #6cb4e4; }
.md-t2 .md-c-bleu .md-j-maillot { background: #1f5fbf; }
.md-t2 .md-c-marine .md-j-maillot { background: #13294b; }
.md-t2 .md-c-violet .md-j-maillot { background: #5b2a86; }
.md-t2 .md-c-marron .md-j-maillot { background: #6b4226; }
.md-t2 .md-n-noir .md-j-maillot { color: #1a1a1a; }
.md-t2 .md-n-blanc .md-j-maillot { color: #f5f5f5; }
.md-t2 .md-n-gris .md-j-maillot { color: #8c8c8c; }
.md-t2 .md-n-rouge .md-j-maillot { color: #d52b1e; }
.md-t2 .md-n-bordeaux .md-j-maillot { color: #7a1f2b; }
.md-t2 .md-n-rose .md-j-maillot { color: #e0569b; }
.md-t2 .md-n-orange .md-j-maillot { color: #ef7d1a; }
.md-t2 .md-n-jaune .md-j-maillot { color: #f5c518; }
.md-t2 .md-n-or .md-j-maillot { color: #c9a227; }
.md-t2 .md-n-vert .md-j-maillot { color: #2e8b3e; }
.md-t2 .md-n-vertfonce .md-j-maillot { color: #1f5130; }
.md-t2 .md-n-ciel .md-j-maillot { color: #6cb4e4; }
.md-t2 .md-n-bleu .md-j-maillot { color: #1f5fbf; }
.md-t2 .md-n-marine .md-j-maillot { color: #13294b; }
.md-t2 .md-n-violet .md-j-maillot { color: #5b2a86; }
.md-t2 .md-n-marron .md-j-maillot { color: #6b4226; }

/* Terrain plus clair (08/10, Félix : « éclaircir le terrain »). */
.md-t2-champ { background: repeating-linear-gradient(to right, #C4D8BD 0, #C4D8BD 5%, #CADDC3 5%, #CADDC3 10%); }
.md-t2-l, .md-t2-eb--h, .md-t2-eb--a { border-color: rgba(255, 255, 255, .95); }
.md-t2-l--10h, .md-t2-l--10a { border-color: rgba(255, 255, 255, .8); }
.md-t2-eb { background: rgba(28, 61, 52, .06); }
.md-t2-pot, .md-t2-pot::before { border-color: #fff; }
.md-t2-banc { background: #B7CFAF; border-top-color: #fff; }
.md-t2-banc-eq--h { border-right-color: #fff; }
@media (max-width: 760px) {
  .md-t2-champ { background: repeating-linear-gradient(to bottom, #C4D8BD 0, #C4D8BD 5%, #CADDC3 5%, #CADDC3 10%); }
}


/* Liens des joueurs (08/10, Félix : « certains ont des liens, d'autres pas ») :
   la zone de chaque joueur (104 px) recouvrait le nom du voisin et captait le
   survol/le clic. Seul le nom réagit désormais ; souligné au survol. */
.md-j, .md-b { pointer-events: none; }
.md-j-nom a { pointer-events: auto; }
.md-j-nom a:hover, .md-j-nom a:focus-visible { text-decoration: underline; text-underline-offset: 2px; }
/* ⚠️ Chaque équipe est un calque plein terrain (inset: 0) : celui de
   l'extérieur recouvrait l'équipe à domicile, dont aucun nom n'était
   cliquable. Les calques laissent passer le clic, seuls les noms le prennent. */
.md-t2-eq { pointer-events: none; }

/* Ordinateur, 08/10 (Félix : « on voit plus les poteaux », « noms trop longs,
   on peut écarter ») : poteaux en teal sur la pelouse claire ; joueurs écartés
   (avants et trois-quarts) et nom sur 120 px. */
.md-t2-pot, .md-t2-pot::before { border-color: rgba(28, 61, 52, .55); }
@media (min-width: 761px) {
  .md-j { width: 120px; margin-left: -60px; }
  .md-j--h-1 { left: 46%; top: 32%; }
  .md-j--a-1 { left: 54%; top: 68%; }
  .md-j--h-2 { left: 46%; top: 50%; }
  .md-j--a-2 { left: 54%; top: 50%; }
  .md-j--h-3 { left: 46%; top: 68%; }
  .md-j--a-3 { left: 54%; top: 32%; }
  .md-j--h-4 { left: 39%; top: 41%; }
  .md-j--a-4 { left: 61%; top: 59%; }
  .md-j--h-5 { left: 39%; top: 59%; }
  .md-j--a-5 { left: 61%; top: 41%; }
  .md-j--h-6 { left: 32%; top: 19%; }
  .md-j--a-6 { left: 68%; top: 81%; }
  .md-j--h-7 { left: 32%; top: 81%; }
  .md-j--a-7 { left: 68%; top: 19%; }
  .md-j--h-8 { left: 31%; top: 50%; }
  .md-j--a-8 { left: 69%; top: 50%; }
  .md-j--h-9 { left: 25%; top: 38%; }
  .md-j--a-9 { left: 75%; top: 62%; }
  .md-j--h-10 { left: 20%; top: 57%; }
  .md-j--a-10 { left: 80%; top: 43%; }
  .md-j--h-11 { left: 10%; top: 12%; }
  .md-j--a-11 { left: 90%; top: 88%; }
  .md-j--h-12 { left: 16%; top: 70%; }
  .md-j--a-12 { left: 84%; top: 30%; }
  .md-j--h-13 { left: 12%; top: 83%; }
  .md-j--a-13 { left: 88%; top: 17%; }
  .md-j--h-14 { left: 6%; top: 90%; }
  .md-j--a-14 { left: 94%; top: 10%; }
  .md-j--h-15 { left: 6%; top: 50%; }
  .md-j--a-15 { left: 94%; top: 50%; }
}
/* L'arrière cachait les poteaux (posé pile sur la ligne d'essai) : avancé
   devant ses poteaux. Poteaux au-dessus des lignes du terrain. */
@media (min-width: 761px) {
  .md-j--h-15 { left: 13%; top: 50%; }
  .md-j--a-15 { left: 87%; top: 50%; }
}
.md-t2-pot { z-index: 1; }

/* ── Terrain habillé (08/10, Félix : « améliorer le terrain ») ─────────────
   Ordinateur : bandes de touche (4 % d'herbe au-delà), lignes du jeu entre les
   touches, pointillés à 5 m et 15 m de la touche, « 22 » et « 10 » peints,
   logos des clubs en filigrane dans leur camp, ombre au sol sous les maillots,
   noms sur un fond clair. 70 m de large sur 92 % de hauteur : 5 m = 6,6 %. */
.md-t2-touche, .md-t2-d, .md-t2-n, .md-t2-fond { display: none; }
@media (min-width: 761px) {
  .md-t2-l, .md-t2-eb { top: 4%; bottom: 4%; }
  .md-t2-pot { z-index: 1; }
  .md-t2-touche { display: block; position: absolute; left: 0; right: 0; top: 4%; bottom: 4%; border-top: 2px solid #fff; border-bottom: 2px solid #fff; pointer-events: none; }
  .md-t2-d { display: block; position: absolute; left: 5%; right: 5%; height: 0; border-top: 2px dashed rgba(255, 255, 255, .55); pointer-events: none; }
  .md-t2-d--5h { top: 10.6%; } .md-t2-d--15h { top: 23.7%; }
  .md-t2-d--15b { top: 76.3%; } .md-t2-d--5b { top: 89.4%; }
  .md-t2-n { display: block; position: absolute; top: 6%; width: 40px; margin-left: -20px; text-align: center; font-size: 18px; font-weight: 800; letter-spacing: 1px; color: rgba(255, 255, 255, .85); pointer-events: none; }
  .md-t2-n--22h { left: calc(24.8% - 26px); } .md-t2-n--10h { left: calc(42% - 26px); }
  .md-t2-n--10a { left: calc(58% + 26px); } .md-t2-n--22a { left: calc(75.2% + 26px); }
  .md-t2-fond { display: block; position: absolute; top: 50%; width: 22%; aspect-ratio: 1; transform: translate(-50%, -50%); opacity: .13; mix-blend-mode: multiply; pointer-events: none; }
  .md-t2-fond--h { left: 27%; } .md-t2-fond--a { left: 73%; }
  .md-t2-fond picture { display: contents; }
  .md-t2-fond img { width: 100%; height: 100%; object-fit: contain; filter: grayscale(1); }
}
/* Ombre au sol sous chaque maillot (dégradé radial : pas d'arrondi CSS). */
.md-j::before { content: ""; position: absolute; top: 24px; left: 50%; width: 44px; height: 12px; margin-left: -22px; background: radial-gradient(closest-side, rgba(28, 61, 52, .28), rgba(28, 61, 52, 0)); z-index: -1; }
.md-j { z-index: 2; }
.md-j-maillot { position: relative; }
/* Nom lisible sur l'herbe. */
.md-j-nom { padding: 1px 5px; background: rgba(255, 255, 255, .55); }
/* Ailiers rentrés dans le terrain (ils mordaient sur la touche). */
@media (min-width: 761px) {
  .md-j--h-11 { top: 15%; } .md-j--a-11 { top: 85%; }
  .md-j--h-14 { top: 85%; } .md-j--a-14 { top: 15%; }
  .md-j--h-13 { top: 78%; } .md-j--a-13 { top: 22%; }
  .md-j--h-6 { top: 21%; } .md-j--a-6 { top: 79%; }
  .md-j--h-7 { top: 79%; } .md-j--a-7 { top: 21%; }
}

/* ── Vue liste : onglets par poste (08/10, Félix). Radios CSS, sans JS.
   Titulaires (1-15, défaut) | Avants (1-8) | Charnière (9-10) |
   Trois-quarts (11-15) | Remplaçants. Les deux équipes côte à côte. */
#sec-indiv .md-po-choix { display: flex; flex-wrap: wrap; gap: 4px; margin: 0 0 14px; }
#sec-indiv .md-po-choix label { padding: 7px 14px; font-size: 13px; font-weight: 800; color: var(--teal); cursor: pointer; box-shadow: inset 0 0 0 1px rgba(28, 61, 52, .25); }
#md-po-ti:checked ~ .md-po-choix label[for="md-po-ti"],
#md-po-av:checked ~ .md-po-choix label[for="md-po-av"],
#md-po-ch:checked ~ .md-po-choix label[for="md-po-ch"],
#md-po-tq:checked ~ .md-po-choix label[for="md-po-tq"],
#md-po-re:checked ~ .md-po-choix label[for="md-po-re"] { background: var(--teal); color: var(--vanilla); box-shadow: none; }
#md-po-ti:focus-visible ~ .md-po-choix label[for="md-po-ti"],
#md-po-av:focus-visible ~ .md-po-choix label[for="md-po-av"],
#md-po-ch:focus-visible ~ .md-po-choix label[for="md-po-ch"],
#md-po-tq:focus-visible ~ .md-po-choix label[for="md-po-tq"],
#md-po-re:focus-visible ~ .md-po-choix label[for="md-po-re"] { outline: 2px solid var(--teal); outline-offset: 2px; }
/* Les onglets de poste ne servent qu'en vue liste. */
#md-vue-t:checked ~ .md-po-choix { display: none; }
#md-po-ti:checked ~ .lineups-grid .md-g-re,
#md-po-av:checked ~ .lineups-grid .p-row:not(.md-g-av),
#md-po-ch:checked ~ .lineups-grid .p-row:not(.md-g-ch),
#md-po-tq:checked ~ .lineups-grid .p-row:not(.md-g-tq),
#md-po-re:checked ~ .lineups-grid .p-row:not(.md-g-re) { display: none; }
/* Un seul groupe affiché : son intertitre est redondant avec l'onglet. */
#md-po-av:checked ~ .lineups-grid .md-lu-ligne,
#md-po-ch:checked ~ .lineups-grid .md-lu-ligne,
#md-po-tq:checked ~ .lineups-grid .md-lu-ligne,
#md-po-re:checked ~ .lineups-grid .md-lu-ligne { display: none; }
/* Remplaçants : numéro en contour. */
#sec-indiv .p-row.md-g-re .p-num { background: transparent; color: var(--teal); box-shadow: inset 0 0 0 1.5px rgba(28, 61, 52, .4); }

/* Onglets de poste DANS chaque carte d'équipe, sous le nom du club (Félix,
   08/10). Les deux cartes restent synchronisées (mêmes radios). Masqués si
   les radios n'existent pas (un XV incomplet). */
#sec-indiv .md-po-choix { display: none; margin: 0; padding: 10px 14px; gap: 4px; border-bottom: 1px solid rgba(28, 61, 52, .1); }
#md-po-ti ~ .lineups-grid .md-po-choix { display: flex; flex-wrap: wrap; }
#sec-indiv .md-po-choix label { padding: 6px 12px; font-size: 13px; }
#md-po-ti:checked ~ .lineups-grid .md-po-choix label[for="md-po-ti"],
#md-po-av:checked ~ .lineups-grid .md-po-choix label[for="md-po-av"],
#md-po-ch:checked ~ .lineups-grid .md-po-choix label[for="md-po-ch"],
#md-po-tq:checked ~ .lineups-grid .md-po-choix label[for="md-po-tq"],
#md-po-re:checked ~ .lineups-grid .md-po-choix label[for="md-po-re"] { background: var(--teal); color: var(--vanilla); box-shadow: none; }
#md-po-ti:focus-visible ~ .lineups-grid label[for="md-po-ti"],
#md-po-av:focus-visible ~ .lineups-grid label[for="md-po-av"],
#md-po-ch:focus-visible ~ .lineups-grid label[for="md-po-ch"],
#md-po-tq:focus-visible ~ .lineups-grid label[for="md-po-tq"],
#md-po-re:focus-visible ~ .lineups-grid label[for="md-po-re"] { outline: 2px solid var(--teal); outline-offset: 2px; }
@media (max-width: 760px) { #sec-indiv .md-po-choix { padding: 8px 10px; } #sec-indiv .md-po-choix label { padding: 6px 9px; font-size: 12px; } }
/* « Titulaires » retiré (Félix, 08/10) : Avants par défaut. */
#md-po-av ~ .lineups-grid .md-po-choix { display: flex; flex-wrap: wrap; }

/* Mobile : pas de terrain (Félix, 08/10 : « je sais pas si le terrain en
   mobile c'est une bonne idée »). Liste seule, avec les onglets par équipe
   et par poste ; le choix Terrain | Liste n'existe que sur ordinateur. */
@media (max-width: 760px) {
  #sec-indiv .md-vue-choix,
  #sec-indiv .md-t2 { display: none; }
  #md-vue-t:checked ~ .md-t2 ~ .lineups-grid { display: grid; }
  #md-vue-t:checked ~ .md-t2 ~ .lineups-grid .md-lu-liste { display: block; }
}
#sec-indiv .md-ev-qui { font-weight: 700; color: var(--teal); } /* qui remplace qui (08/10) */
/* Terrain / banc : le nom de l'autre joueur du changement, plus petit. */
.md-j-ev .md-ev-qui { font-size: 10px; }

/* Noms au-dessus de TOUS les maillots (Félix, 08/10 : le nom du 12 passait
   sous le maillot du 13). Plus de contexte d'empilement par joueur : ombre,
   maillot, nom/actions sont rangés en couches communes. 12 et 13 écartés. */
.md-j { z-index: auto; }
.md-j::before { z-index: 1; }
.md-j-maillot { z-index: 2; }
.md-j-nom, .md-j-ev { position: relative; z-index: 3; }
@media (min-width: 761px) {
  .md-j--h-12 { left: 17%; top: 67%; } .md-j--a-12 { left: 83%; top: 33%; }
  .md-j--h-13 { left: 12%; top: 81%; } .md-j--a-13 { left: 88%; top: 19%; }
}
@media (min-width: 761px) {
  .md-j--h-10 { left: 22%; top: 54%; } .md-j--a-10 { left: 78%; top: 46%; }
  .md-j--h-12 { left: 16%; top: 70%; } .md-j--a-12 { left: 84%; top: 30%; }
  .md-j--h-13 { left: 11%; top: 84%; } .md-j--a-13 { left: 89%; top: 16%; }
}

/* Disposition v3 (08/10) : grille sans chevauchement à toutes les largeurs.
   Colonnes tous les 8 % (46 / 38 / 30 / 22 / 14 / 8), au moins 18 % d'écart
   vertical dans une colonne ; la largeur du nom suit le terrain (7,6 %). */
@media (min-width: 761px) {
  .md-j { width: 7.6%; margin-left: -3.8%; }
  .md-j-nom { font-size: 11px; }
  .md-j--h-1 { left: 46%; top: 30%; }
  .md-j--a-1 { left: 54%; top: 70%; }
  .md-j--h-2 { left: 46%; top: 50%; }
  .md-j--a-2 { left: 54%; top: 50%; }
  .md-j--h-3 { left: 46%; top: 70%; }
  .md-j--a-3 { left: 54%; top: 30%; }
  .md-j--h-4 { left: 38%; top: 40%; }
  .md-j--a-4 { left: 62%; top: 60%; }
  .md-j--h-5 { left: 38%; top: 60%; }
  .md-j--a-5 { left: 62%; top: 40%; }
  .md-j--h-6 { left: 30%; top: 15%; }
  .md-j--a-6 { left: 70%; top: 85%; }
  .md-j--h-7 { left: 30%; top: 85%; }
  .md-j--a-7 { left: 70%; top: 15%; }
  .md-j--h-8 { left: 30%; top: 50%; }
  .md-j--a-8 { left: 70%; top: 50%; }
  .md-j--h-9 { left: 22%; top: 32%; }
  .md-j--a-9 { left: 78%; top: 68%; }
  .md-j--h-10 { left: 22%; top: 68%; }
  .md-j--a-10 { left: 78%; top: 32%; }
  .md-j--h-11 { left: 14%; top: 9%; }
  .md-j--a-11 { left: 86%; top: 91%; }
  .md-j--h-12 { left: 14%; top: 32%; }
  .md-j--a-12 { left: 86%; top: 68%; }
  .md-j--h-13 { left: 14%; top: 68%; }
  .md-j--a-13 { left: 86%; top: 32%; }
  .md-j--h-14 { left: 14%; top: 91%; }
  .md-j--a-14 { left: 86%; top: 9%; }
  .md-j--h-15 { left: 8%; top: 50%; }
  .md-j--a-15 { left: 92%; top: 50%; }
  .md-t2-pot--h { top: 22%; } .md-t2-pot--a { top: 78%; } /* poteaux décalés hors de l'axe de l'arrière */
}
/* Poteaux au milieu de l'en-but (toujours) ; l'arrière juste devant, sans les cacher. */
@media (min-width: 761px) {
  .md-t2-pot--h, .md-t2-pot--a { top: 50%; }
  .md-j--h-15 { left: 11%; top: 50%; } .md-j--a-15 { left: 89%; top: 50%; }
}

/* Formation réelle (08/10, Félix : « c'est une position d'équipe de rugby ? ») :
   pack au contact de la médiane (1re ligne, 2e ligne, 3e ligne), 9 derrière la
   mêlée, ligne d'attaque en diagonale 10-12-13 avec l'ailier 14 au bout,
   11 sur l'autre aile, 15 en couverture. Adversaire en miroir. */
@media (min-width: 761px) {
  .md-j--h-1 { left: 46%; top: 34%; }
  .md-j--a-1 { left: 54%; top: 66%; }
  .md-j--h-2 { left: 46%; top: 50%; }
  .md-j--a-2 { left: 54%; top: 50%; }
  .md-j--h-3 { left: 46%; top: 66%; }
  .md-j--a-3 { left: 54%; top: 34%; }
  .md-j--h-4 { left: 38%; top: 42%; }
  .md-j--a-4 { left: 62%; top: 58%; }
  .md-j--h-5 { left: 38%; top: 58%; }
  .md-j--a-5 { left: 62%; top: 42%; }
  .md-j--h-6 { left: 30%; top: 22%; }
  .md-j--a-6 { left: 70%; top: 78%; }
  .md-j--h-7 { left: 30%; top: 78%; }
  .md-j--a-7 { left: 70%; top: 22%; }
  .md-j--h-8 { left: 30%; top: 50%; }
  .md-j--a-8 { left: 70%; top: 50%; }
  .md-j--h-9 { left: 22%; top: 62%; }
  .md-j--a-9 { left: 78%; top: 38%; }
  .md-j--h-10 { left: 18%; top: 46%; }
  .md-j--a-10 { left: 82%; top: 54%; }
  .md-j--h-11 { left: 13%; top: 90%; }
  .md-j--a-11 { left: 87%; top: 10%; }
  .md-j--h-12 { left: 14%; top: 30%; }
  .md-j--a-12 { left: 86%; top: 70%; }
  .md-j--h-13 { left: 10%; top: 14%; }
  .md-j--a-13 { left: 90%; top: 86%; }
  .md-j--h-14 { left: 22%; top: 8%; }
  .md-j--a-14 { left: 78%; top: 92%; }
  .md-j--h-15 { left: 7%; top: 72%; }
  .md-j--a-15 { left: 93%; top: 28%; }
}

/* Formation d'après le schéma de Félix (08/10), tournée à l'horizontale :
   l'équipe attaque vers la médiane, sa gauche en haut. 1-2-3 devant, 4-5
   derrière entre eux, 6 aile / 7 centre / 8 aile, 9 derrière le 7, ligne
   10-12-13 qui s'ouvre vers le bas, 11 ailier haut, 14 ailier bas, 15 au
   fond. Pack centré : les premières lignes se font face (1 contre 3). */
@media (min-width: 761px) {
  .md-j--h-1 { left: 47%; top: 32%; }
  .md-j--a-1 { left: 53%; top: 68%; }
  .md-j--h-2 { left: 47%; top: 50%; }
  .md-j--a-2 { left: 53%; top: 50%; }
  .md-j--h-3 { left: 47%; top: 68%; }
  .md-j--a-3 { left: 53%; top: 32%; }
  .md-j--h-4 { left: 39%; top: 41%; }
  .md-j--a-4 { left: 61%; top: 59%; }
  .md-j--h-5 { left: 39%; top: 59%; }
  .md-j--a-5 { left: 61%; top: 41%; }
  .md-j--h-6 { left: 31%; top: 20%; }
  .md-j--a-6 { left: 69%; top: 80%; }
  .md-j--h-7 { left: 31%; top: 45%; }
  .md-j--a-7 { left: 69%; top: 55%; }
  .md-j--h-8 { left: 31%; top: 70%; }
  .md-j--a-8 { left: 69%; top: 30%; }
  .md-j--h-9 { left: 23%; top: 40%; }
  .md-j--a-9 { left: 77%; top: 60%; }
  .md-j--h-10 { left: 19%; top: 56%; }
  .md-j--a-10 { left: 81%; top: 44%; }
  .md-j--h-11 { left: 17%; top: 9%; }
  .md-j--a-11 { left: 83%; top: 91%; }
  .md-j--h-12 { left: 15%; top: 70%; }
  .md-j--a-12 { left: 85%; top: 30%; }
  .md-j--h-13 { left: 11%; top: 84%; }
  .md-j--a-13 { left: 89%; top: 16%; }
  .md-j--h-14 { left: 19%; top: 93%; }
  .md-j--a-14 { left: 81%; top: 7%; }
  .md-j--h-15 { left: 10%; top: 52%; }
  .md-j--a-15 { left: 90%; top: 48%; }
}
@media (min-width: 761px) { /* pack reculé d'un cran : premières lignes à 8 % l'une de l'autre */
  .md-j--h-1 { left: 46%; top: 32%; }
  .md-j--a-1 { left: 54%; top: 68%; }
  .md-j--h-2 { left: 46%; top: 50%; }
  .md-j--a-2 { left: 54%; top: 50%; }
  .md-j--h-3 { left: 46%; top: 68%; }
  .md-j--a-3 { left: 54%; top: 32%; }
  .md-j--h-4 { left: 38%; top: 41%; }
  .md-j--a-4 { left: 62%; top: 59%; }
  .md-j--h-5 { left: 38%; top: 59%; }
  .md-j--a-5 { left: 62%; top: 41%; }
  .md-j--h-6 { left: 30%; top: 20%; }
  .md-j--a-6 { left: 70%; top: 80%; }
  .md-j--h-7 { left: 30%; top: 45%; }
  .md-j--a-7 { left: 70%; top: 55%; }
  .md-j--h-8 { left: 30%; top: 70%; }
  .md-j--a-8 { left: 70%; top: 30%; }
  .md-j--h-9 { left: 22%; top: 40%; }
  .md-j--a-9 { left: 78%; top: 60%; }
  .md-j--h-10 { left: 18%; top: 56%; }
  .md-j--a-10 { left: 82%; top: 44%; }
  .md-j--h-11 { left: 16%; top: 9%; }
  .md-j--a-11 { left: 84%; top: 91%; }
  .md-j--h-12 { left: 14%; top: 70%; }
  .md-j--a-12 { left: 86%; top: 30%; }
  .md-j--h-13 { left: 10%; top: 84%; }
  .md-j--a-13 { left: 90%; top: 16%; }
  .md-j--h-14 { left: 18%; top: 93%; }
  .md-j--a-14 { left: 82%; top: 7%; }
  .md-j--h-15 { left: 11%; top: 52%; }
  .md-j--a-15 { left: 89%; top: 48%; }
}

/* ── Fil du match compact (08/10) : lignes de 36 px, icône + nom + type sur
   une ligne, transformation rattachée à l'essai, remplacements cachés par
   défaut (filtre « Temps forts »). */
#sec-fil .tl-row { min-height: 36px; }
#sec-fil .ev { padding-top: 4px; padding-bottom: 4px; gap: 8px; align-items: center; }
#sec-fil .ev-ico { width: 22px; height: 22px; font-size: 10px; }
#sec-fil .ev-body { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; }
#sec-fil .ev.left .ev-body { justify-content: flex-end; }
#sec-fil .ev-who { font-size: 14px; }
#sec-fil .ev-type { font-size: 11px; letter-spacing: 0; text-transform: none; font-weight: 600; }
#sec-fil .ev-conv { font-weight: 600; color: var(--muted); }
#sec-fil .ev-conv a { color: var(--teal); }
#sec-fil .tl-min-col { padding: 3px 0; font-size: 13px; }
#sec-fil .tl-row.hl { box-shadow: inset 3px 0 0 var(--teal); }
#sec-fil .ev-ico.card-y { background: #E5B300; border-color: #E5B300; color: var(--ink); }
/* Minute et score sur une ligne (« 7' 7-0 ») : la ligne passe à ~36 px. */
#sec-fil .tl-row, #sec-fil .tl-header { grid-template-columns: 1fr 96px 1fr; }
#sec-fil .tl-min-col { display: flex; flex-direction: row; align-items: center; justify-content: center; gap: 6px; }
#sec-fil .tl-min-col .tl-score { margin: 0; }
@media (max-width: 680px) { #sec-fil .tl-row, #sec-fil .tl-header { grid-template-columns: 1fr 76px 1fr; } }
#sec-fil .tl-cell { padding-top: 3px; padding-bottom: 3px; }
#sec-fil .ev { padding-top: 2px; padding-bottom: 2px; }

/* Formation d'après le croquis de Félix (08/10) : pack en triangle (1-2-3,
   puis 4-5, puis 6-8-7), 9 et 10 derrière, les quatre trois-quarts sur une
   même ligne (11-12-13-14), le 15 tout au fond. Poteaux un peu moins hauts
   pour laisser l'arrière près de l'axe. Contrôlé : aucun chevauchement. */
@media (min-width: 761px) {
  .md-t2-pot { height: 26px; margin-top: -13px; }
  .md-j--h-1 { left: 46%; top: 22%; }
  .md-j--a-1 { left: 54%; top: 78%; }
  .md-j--h-2 { left: 46%; top: 46%; }
  .md-j--a-2 { left: 54%; top: 54%; }
  .md-j--h-3 { left: 46%; top: 70%; }
  .md-j--a-3 { left: 54%; top: 30%; }
  .md-j--h-4 { left: 38%; top: 34%; }
  .md-j--a-4 { left: 62%; top: 66%; }
  .md-j--h-5 { left: 38%; top: 58%; }
  .md-j--a-5 { left: 62%; top: 42%; }
  .md-j--h-6 { left: 30%; top: 24%; }
  .md-j--a-6 { left: 70%; top: 76%; }
  .md-j--h-7 { left: 30%; top: 68%; }
  .md-j--a-7 { left: 70%; top: 32%; }
  .md-j--h-8 { left: 30%; top: 46%; }
  .md-j--a-8 { left: 70%; top: 54%; }
  .md-j--h-9 { left: 22%; top: 40%; }
  .md-j--a-9 { left: 78%; top: 60%; }
  .md-j--h-10 { left: 18%; top: 56%; }
  .md-j--a-10 { left: 82%; top: 44%; }
  .md-j--h-11 { left: 12%; top: 9%; }
  .md-j--a-11 { left: 88%; top: 91%; }
  .md-j--h-12 { left: 12%; top: 33%; }
  .md-j--a-12 { left: 88%; top: 67%; }
  .md-j--h-13 { left: 12%; top: 62%; }
  .md-j--a-13 { left: 88%; top: 38%; }
  .md-j--h-14 { left: 12%; top: 88%; }
  .md-j--a-14 { left: 88%; top: 12%; }
  .md-j--h-15 { left: 6%; top: 40%; }
  .md-j--a-15 { left: 94%; top: 60%; }
}

/* ── Stats du match compactes (08/10) ──────────────────────────────────
   Barres sur deux colonnes (ordinateur) ; tableau « match vs moyenne » sur
   une ligne par indicateur (valeur, flèche, moyenne côte à côte). */
@media (min-width: 900px) {
  #sec-stats .stat-list { display: grid; grid-template-columns: 1fr 1fr; column-gap: 32px; padding: 0 20px; }
  #sec-stats .stat-legend-row { grid-column: 1 / -1; }
  #sec-stats .stat-item:nth-last-child(2):nth-child(even) { border-bottom: none; }
}
#sec-stats .stat-item { padding: 7px 0; }
#sec-stats .ins-head-lbl, #sec-stats .ins-head-team, #sec-stats .ins-head-comp { padding: 8px 12px; }
#sec-stats .ins-head-team-name { font-size: 13px; letter-spacing: 0; text-transform: none; }
#sec-stats .ins-head-team-meta { letter-spacing: 0; text-transform: none; font-size: 11px; }
#sec-stats .ins-head-team--sc .ins-head-team-name::before { background: var(--sage); }
#sec-stats .ins-row-lbl { padding: 8px 14px; font-size: 13px; }
#sec-stats .ins-row-cell { flex-direction: row; gap: 8px; padding: 6px 10px; }
#sec-stats .ins-cell-avg { font-size: 11px; letter-spacing: 0; }
#sec-stats .ins-row-cell--sc .ins-cell-val { color: var(--teal); }

/* ── Résumé (08/10) : chiffres clés + mi-temps dans UN bandeau de cartes
   côte à côte (le tableau « Détail par période » est retiré) ; carte
   meilleur marqueur plus légère, plus de vert vif. */
#sec-resume .rkey { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 1px; margin-top: 14px; background: rgba(242, 229, 210, .15); border-left: 0; }
#sec-resume .rkey-title { display: none; }
#sec-resume .rkey-row { grid-template-columns: 1fr auto 1fr; grid-template-rows: auto auto; row-gap: 2px; padding: 10px 12px; border-bottom: 0; background: var(--teal); }
#sec-resume .rkey-row .rkey-lbl { grid-column: 1 / -1; grid-row: 1; padding: 0; text-align: center; font-size: 11px; letter-spacing: 0; text-transform: none; font-weight: 700; color: rgba(242, 229, 210, .7); }
#sec-resume .rkey-row .rkey-val { grid-row: 2; font-size: 22px; }
#sec-resume .rkey-row .rkey-val:first-child { grid-column: 1; text-align: right; padding-right: 8px; }
#sec-resume .rkey-row .rkey-val:last-child { grid-column: 3; text-align: left; padding-left: 8px; }
#sec-resume .rkey-row::after { content: "–"; grid-column: 2; grid-row: 2; align-self: center; color: rgba(242, 229, 210, .45); font-weight: 700; }
#sec-resume .motm { padding: 10px 14px; margin-bottom: 0; border-left: 0; }
#sec-resume .motm-ini { width: 38px; height: 38px; }
#sec-resume .motm-label { letter-spacing: 0; text-transform: none; font-size: 11px; font-weight: 700; }
#sec-resume .motm-name { font-size: 16px; }

/* ── Stats par joueur (08/10) : une ligne de 40 px par joueur, numéro collé au
   nom, poste à côté, minutes et chevron à droite. Sur ordinateur les deux
   équipes sont côte à côte (.md-ps-eq) et les onglets d'équipe disparaissent ;
   sur mobile on garde les onglets et une seule colonne. */
#sec-indiv .section-title-sm { font-size: 18px; font-weight: 800; letter-spacing: 0; text-transform: none; color: var(--teal); }
#sec-indiv #player-rows { margin-top: 12px; }
#sec-indiv .ps-tabs { margin-top: 12px; }
#sec-indiv .mh-season-header { margin-top: 0; padding: 9px 14px; font-size: 14px; letter-spacing: 0; text-transform: none; }
#sec-indiv .md-ps-eq + .md-ps-eq .mh-season-header { background: var(--sage); color: var(--teal); }
#sec-indiv .mh-row.ps-player-row { grid-template-columns: 24px minmax(0, 1fr) auto 18px; gap: 10px; min-height: 40px; padding: 6px 14px; border-color: rgba(28, 61, 52, .08); }
#sec-indiv .mh-row.ps-player-row > .mh-date { min-width: 0; font-size: 12px; font-weight: 800; align-items: center; }
#sec-indiv .mh-row.ps-player-row > div:nth-child(2) { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
#sec-indiv .mh-row.ps-player-row .mh-match { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#sec-indiv .mh-row.ps-player-row .mh-comp { margin: 0; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#sec-indiv .mh-row.ps-player-row > .mh-right { display: contents; }
#sec-indiv .mh-row.ps-player-row .mh-score { font-size: 14px; font-weight: 800; color: var(--teal); text-align: right; }
#sec-indiv .mh-row.ps-player-row .mh-cta { justify-content: center; margin: 0; font-size: 0; text-decoration: none; }
#sec-indiv .mh-row.ps-player-row .mh-cta::before { content: none; }
#sec-indiv .mh-row.ps-player-row .mh-cta-arrow { font-size: 14px; margin: 0; transform: rotate(90deg); }
#sec-indiv .mh-row.ps-player-row.open .mh-cta-arrow { transform: rotate(270deg); }
#sec-indiv .ps-toggle--all { padding: 8px 14px; font-size: 12px; }
@media (min-width: 1000px) {
  #sec-indiv .ps-tabs { display: none; }
  #sec-indiv #player-rows { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
  #sec-indiv .md-ps-eq { min-width: 0; }
}
@media (max-width: 600px) {
  #sec-resume .rkey { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #sec-resume .rkey-row { padding: 8px 6px; }
  #sec-resume .rkey-row .rkey-val { font-size: 18px; }
}

/* ── Fil du match v2 (09/10) : frise sur axe central. Plus de légende ni de
   bandes « Replier » ; en-tête aux couleurs des équipes (teal / sauge, comme
   compositions et stats par joueur) ; score affiché seulement quand il bouge ;
   essai = badge plein à la couleur de l'équipe, coup de pied = badge contour. */
#sec-fil .tl-top { align-items: center; margin-bottom: 10px; }
#sec-fil .tl-header { padding: 0; border: 0; font-size: 14px; letter-spacing: 0; text-transform: none; background: none; }
#sec-fil .tl-header > div { padding: 9px 14px; }
#sec-fil .tl-header .h-fr { background: var(--teal); color: var(--vanilla); }
#sec-fil .tl-header .h-min { font-size: 0; background: linear-gradient(90deg, var(--teal) 50%, var(--sage) 50%); }
#sec-fil .tl-header .h-sc { background: var(--sage); color: var(--teal); text-align: right; }
#sec-fil .tl-list { background: var(--white); }
#sec-fil .tl-period { border: 0; }
#sec-fil .tl-row { position: relative; border: 0; background: none; }
#sec-fil .tl-row:hover { background: var(--sage-lt); }
#sec-fil .tl-row.hl { box-shadow: none; }
#sec-fil .tl-min-col { position: relative; border: 0; color: var(--muted); font-size: 12px; font-weight: 700; }
#sec-fil .tl-min-col::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 2px; margin-left: -1px; background: rgba(28, 61, 52, .12); }
#sec-fil .tl-min-col > * { position: relative; }
#sec-fil .tl-min-col { z-index: 0; }
#sec-fil .tl-min-col .tl-score { padding: 2px 6px; background: var(--white); color: var(--teal); font-size: 13px; font-weight: 900; }
#sec-fil .tl-row:not(.tl-pts) .tl-score { display: none; }
#sec-fil .tl-row.tl-pts .tl-min-col { color: var(--teal); }
#sec-fil .ev-ico.try { background: var(--teal); border-color: var(--teal); color: var(--vanilla); }
#sec-fil .tl-ext .ev-ico.try { background: var(--sage); border-color: var(--sage); color: var(--teal); }
#sec-fil .ev-ico.kick { background: var(--white); border: 2px solid var(--teal); color: var(--teal); }
#sec-fil .tl-ext .ev-ico.kick { border-color: var(--sage); }
#sec-fil .tl-row.hl .ev-who { font-size: 15px; }
#sec-fil .tl-halftime { position: relative; justify-content: center; padding: 12px 0 6px; background: none; border: 0; font-size: 12px; letter-spacing: 0; text-transform: none; color: var(--muted); }
#sec-fil .tl-halftime::before { content: none; }
#sec-fil .tl-halftime .tl-ht-score { padding: 2px 8px; background: var(--vanilla); color: var(--teal); font-size: 13px; }
#sec-fil .tl-period + .tl-period .tl-halftime { border-top: 1px solid rgba(28, 61, 52, .1); }
#sec-fil .tl-min-col::before { background: rgba(28, 61, 52, .22); }
#sec-fil .tl-row:not(.tl-pts) .tl-min-col { font-size: 11px; }
#sec-fil .tl-min-col { display: grid; grid-template-columns: 1fr 1fr; column-gap: 12px; align-items: center; padding: 0; }
#sec-fil .tl-min-col .tl-min { justify-self: end; }
#sec-fil .tl-min-col .tl-score { justify-self: start; padding: 0; background: none; }

/* ── Stats match v2 (09/10) : même grammaire que le fil et les stats par
   joueur — bandeau d'équipes teal | sauge à la place de la légende à pastilles,
   barres « tir à la corde » qui partent du centre, valeurs lisibles ;
   comparatif sans capitales, en-têtes aux couleurs des équipes, flèches
   neutres (au-dessus / en dessous de la moyenne n'est ni bien ni mal). */
#sec-stats .stat-list { border: 0; }
#sec-stats .stat-legend-row { padding: 0; margin: 0 -16px 4px; }
#sec-stats .stat-legend { display: grid; grid-template-columns: 1fr 1fr; gap: 0; width: 100%; font-size: 14px; font-weight: 800; }
#sec-stats .stat-legend > span { padding: 9px 14px; background: var(--teal); color: var(--vanilla); }
#sec-stats .stat-legend > span + span { background: var(--sage); color: var(--teal); text-align: right; }
#sec-stats .stat-legend .legend-dot { display: none; }
@media (min-width: 900px) { #sec-stats .stat-legend-row { margin: 0 -20px 4px; } }
#sec-stats .stat-item { grid-template-columns: 56px 1fr 56px; gap: 14px; padding: 8px 0; }
#sec-stats .stat-vfr, #sec-stats .stat-vsc { font-size: 18px; font-weight: 900; color: var(--teal); }
#sec-stats .stat-mid { gap: 5px; }
#sec-stats .stat-lbl { font-size: 13px; font-weight: 700; color: var(--teal); }
#sec-stats .dual-bar { gap: 2px; }
#sec-stats .bar-t { height: 8px; border: 0; background: rgba(28, 61, 52, .08); }
#sec-stats .dual-bar .bar-t:first-child { display: flex; justify-content: flex-end; }
#sec-stats .bar-f.sc { background: var(--sage); }
#sec-stats .stat-item--zero .stat-vfr, #sec-stats .stat-item--zero .stat-vsc, #sec-stats .stat-item--empty .stat-vfr, #sec-stats .stat-item--empty .stat-vsc { color: var(--muted); font-weight: 700; }
#sec-stats .ins-title { margin-top: 20px; font-size: 18px; font-weight: 800; letter-spacing: 0; text-transform: none; color: var(--teal); }
#sec-stats .ins-title-sub { font-size: 13px; font-weight: 600; color: var(--muted); }
#sec-stats .ins-block { border: 0; }
#sec-stats .ins-head { border-bottom: 0; }
#sec-stats .ins-head-lbl { font-size: 0; }
#sec-stats .ins-head-team, #sec-stats .ins-head-comp { border-left: 0; }
#sec-stats .ins-head-team--fr { background: var(--teal); }
#sec-stats .ins-head-team--fr .ins-head-team-name, #sec-stats .ins-head-team--fr .ins-head-team-meta { color: var(--vanilla); }
#sec-stats .ins-head-team--sc { background: var(--sage); }
#sec-stats .ins-head-team--sc .ins-head-team-meta { color: var(--teal); }
#sec-stats .ins-head-team-name::before { content: none; }
#sec-stats .ins-cell-val { font-size: 16px; }
#sec-stats .ins-delta { width: 16px; height: 16px; font-size: 9px; }
#sec-stats .ins-delta--up { color: var(--teal); background: rgba(171, 200, 162, .45); }
#sec-stats .ins-delta--down { color: var(--muted); background: rgba(28, 61, 52, .07); }
/* Mobile : frise sur une colonne. Minute + score à gauche, l'action à droite
   quelle que soit l'équipe (la couleur du badge, teal ou sauge, dit laquelle). */
@media (max-width: 680px) {
  #sec-fil .tl-header > div { padding: 8px 12px; font-size: 13px; }
  #sec-fil .tl-header { grid-template-columns: 1fr 1fr; }
  #sec-fil .tl-header .h-min { display: none; }
  #sec-fil .tl-row { grid-template-columns: 52px minmax(0, 1fr); min-height: 0; }
  #sec-fil .tl-row > .tl-cell:empty { display: none; }
  #sec-fil .tl-min-col { order: -1; display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 1px; padding: 6px 10px 6px 0; border-right: 2px solid rgba(28, 61, 52, .12); }
  #sec-fil .tl-min-col::before { content: none; }
  #sec-fil .tl-min-col .tl-min, #sec-fil .tl-min-col .tl-score { justify-self: auto; }
  #sec-fil .tl-cell, #sec-fil .tl-cell.left { justify-content: flex-start; padding: 6px 10px; }
  #sec-fil .ev.left { flex-direction: row; text-align: left; }
  #sec-fil .ev.left .ev-body { justify-content: flex-start; }
  #sec-fil .tl-halftime { justify-content: flex-start; padding-left: 10px; }
}
/* Stats par joueur : « 17 pts  80 min » au lieu d'un « 80' » sans légende (09/10) */
#sec-indiv .mh-row.ps-player-row .mh-score { display: flex; align-items: baseline; gap: 10px; white-space: nowrap; }
#sec-indiv .md-ps-pts { font-weight: 900; color: var(--teal); }
#sec-indiv .md-ps-min { font-size: 12px; font-weight: 600; color: var(--muted); }
/* Ouverture du détail joueur : bouton « Stats » + chevron (la flèche ↓ seule
   se lisait comme une sortie de remplacement, Félix 09/10). « Stats » vaut en
   anglais aussi, même astuce que la règle mobile de itsrugby-match.css. */
#sec-indiv .mh-row.ps-player-row { grid-template-columns: 24px minmax(0, 1fr) auto auto; }
#sec-indiv .mh-row.ps-player-row .mh-cta { gap: 6px; padding: 4px 8px; border: 1px solid rgba(28, 61, 52, .25); color: var(--teal); }
#sec-indiv .mh-row.ps-player-row .mh-cta::before { content: "Stats"; font-size: 11px; font-weight: 700; }
#sec-indiv .mh-row.ps-player-row .mh-cta::after { content: ""; width: 5px; height: 5px; margin-top: -3px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); transition: transform .2s; }
#sec-indiv .mh-row.ps-player-row.open .mh-cta { background: var(--teal); color: var(--vanilla); border-color: var(--teal); }
#sec-indiv .mh-row.ps-player-row.open .mh-cta::after { margin-top: 3px; transform: rotate(-135deg); }
#sec-indiv .mh-row.ps-player-row .mh-cta-arrow { display: none; }
#sec-indiv .mh-row.ps-player-row:hover .mh-cta { border-color: var(--teal); }

/* ── Bas de fiche (09/10) : précédent | classement | suivant sur une rangée,
   la section « Classement » (un titre pour un seul lien) disparaît. */
.md-nav { grid-template-columns: 1fr auto 1fr; gap: 1px; margin: 8px 0 32px; background: rgba(28, 61, 52, .12); }
.md-nav > span { background: var(--white); }
.md-nav .mnav { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; padding: 12px 18px; border: 0; background: var(--white); color: var(--teal); text-decoration: none; }
.md-nav .mnav:hover { background: var(--sage-lt); }
.md-nav .mnav.next { align-items: flex-end; text-align: right; }
.md-nav .md-nav-cls { align-items: center; text-align: center; padding-left: 28px; padding-right: 28px; background: var(--teal); color: var(--vanilla); }
.md-nav .md-nav-cls:hover { background: #142E27; }
.md-nav .mnav-lbl { font-size: 12px; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--muted); }
.md-nav .md-nav-cls .mnav-lbl { color: var(--sage); }
.md-nav .mnav-match { margin: 0; font-size: 14px; font-weight: 700; }
.md-nav .mnav-match b { font-weight: 900; }
.md-nav .md-nav-prec .mnav-lbl::before { content: "← "; }
.md-nav .md-nav-suiv .mnav-lbl::after { content: " →"; }
@media (max-width: 680px) {
  .md-nav { grid-template-columns: 1fr 1fr; }
  .md-nav .md-nav-cls { grid-column: 1 / -1; grid-row: 1; }
  .md-nav .mnav { padding: 10px 12px; }
  .md-nav .mnav-match { font-size: 13px; }
}
.md-nav .md-nav-cls .mnav-match { color: var(--vanilla); }
/* v2 (09/10, « moche ») : trois cartes égales et séparées, même traitement,
   plus de pavé teal au centre. */
.md-nav { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; background: none; }
.md-nav > span { background: none; }
.md-nav .mnav, .md-nav .md-nav-cls { padding: 14px 18px; background: var(--white); color: var(--teal); box-shadow: inset 0 0 0 1px rgba(28, 61, 52, .1); }
.md-nav .mnav:hover, .md-nav .md-nav-cls:hover { background: var(--white); box-shadow: inset 0 0 0 2px var(--teal); }
.md-nav .md-nav-cls .mnav-lbl { color: var(--muted); }
.md-nav .md-nav-cls .mnav-match { color: var(--teal); }
.md-nav .mnav-match { font-size: 15px; }
@media (max-width: 680px) {
  .md-nav { grid-template-columns: 1fr 1fr; gap: 8px; }
}
/* Bouton « Stats » allégé (09/10) : texte + chevron discrets, le cadre
   n'apparaît qu'au survol de la ligne ou quand le détail est ouvert. */
#sec-indiv .mh-row.ps-player-row .mh-cta { border-color: transparent; color: var(--muted); }
#sec-indiv .mh-row.ps-player-row:hover .mh-cta { border-color: rgba(28, 61, 52, .3); color: var(--teal); }
/* « Voir tous les joueurs » : même chevron que les lignes, pas la flèche ↓ */
#sec-indiv .ps-toggle--all { gap: 8px; text-decoration: none; }
#sec-indiv .ps-toggle--all .mh-cta-arrow { display: none; }
#sec-indiv .ps-toggle--all::after { content: ""; width: 5px; height: 5px; margin-top: -3px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); }
#sec-indiv .ps-toggle--all[data-expanded="1"]::after { margin-top: 3px; transform: rotate(-135deg); }

/* ── Terrain dans le temps (09/10) : réglette sous le banc, score au centre
   de l'en-tête, joueurs sortis / exclus estompés (itsrugby-match-d.js). */
.md-t2-tete { position: relative; }
.md-t2-chrono { position: absolute; top: 50%; left: 50%; padding: 3px 12px; background: var(--vanilla); color: var(--teal); font-size: 18px; font-weight: 900; transform: translate(-50%, -50%); }
.md-t2-chrono:empty { display: none; }
.md-t2-temps { display: flex; align-items: center; gap: 14px; padding: 10px 16px; background: var(--teal); color: var(--vanilla); }
.md-t2-lecture { display: grid; place-items: center; flex: none; width: 34px; height: 34px; padding: 0; border: 0; background: var(--vanilla); cursor: pointer; }
.md-t2-lecture:focus-visible, .md-t2-curseur:focus-visible { outline: 2px solid var(--sage); outline-offset: 2px; }
.md-t2-lecture-ico { width: 0; height: 0; margin-left: 3px; border-left: 11px solid var(--teal); border-top: 7px solid transparent; border-bottom: 7px solid transparent; }
.md-t2-lecture.is-lecture .md-t2-lecture-ico { width: 11px; height: 13px; margin-left: 0; border: 0; border-left: 4px solid var(--teal); border-right: 4px solid var(--teal); }
.md-t2-curseur { flex: 1; min-width: 0; accent-color: var(--sage); cursor: pointer; }
.md-t2-minute { flex: none; min-width: 34px; font-size: 15px; font-weight: 800; text-align: right; }
.md-j.is-sorti, .md-j.is-exclu { opacity: .3; }
.md-j.is-rempl .md-j-maillot { outline: 2px solid var(--vanilla); outline-offset: 1px; }
/* Cartons dans le temps : le joueur exclu s'estompe mais garde sa pastille
   nette, un carton est posé sur son maillot ; l'en-tête dit « X à 14 ». */
.md-j.is-exclu { opacity: 1; }
.md-j.is-exclu .md-j-maillot, .md-j.is-exclu .md-j-nom { opacity: .3; }
.md-j[class*="is-carton--"] { z-index: 6; }
.md-j[class*="is-carton--"]::after { content: ""; position: absolute; top: -6px; left: 50%; width: 10px; height: 14px; margin-left: 12px; box-shadow: 0 0 0 1px var(--white); transform: rotate(12deg); }
.md-j.is-carton--y::after { background: #E5B300; }
.md-j.is-carton--o::after { background: #ef7d1a; }
.md-j.is-carton--r::after { background: #c62828; }
.md-t2-a14 { display: block; font-size: 11px; font-weight: 700; text-align: center; }
/* Carton = hors du terrain pendant l'exclusion (Félix 09/10) : le joueur
   disparaît du terrain, l'en-tête le nomme (« Stade Aurillacois à 14 (J. Pieters) »). */
.md-j.is-exclu { visibility: hidden; }
.md-t2-chrono .md-t2-a14 { margin-top: 2px; color: #8a6a00; }
/* v2 (Félix 09/10 : « pas disparaître, grisé ou jauni ») : le joueur exclu
   reste à sa place, maillot à la couleur du carton, estompé. */
.md-j.is-exclu { visibility: visible; }
.md-j.is-exclu .md-j-maillot, .md-j.is-exclu .md-j-nom { opacity: .6; }
.md-j.is-carton--y .md-j-maillot { background: #E5B300; color: #1a1a1a; }
.md-j.is-carton--o .md-j-maillot { background: #ef7d1a; color: #1a1a1a; }
.md-j.is-carton--r .md-j-maillot { background: #c62828; color: #fff; }
.md-j[class*="is-carton--"]::after { content: none; }
.md-t2 .md-t2-eq .md-j.is-carton--y .md-j-maillot, .md-t2 .md-t2-eq .md-j.is-carton--o .md-j-maillot { background: #E5B300; color: #1a1a1a; }
.md-t2 .md-t2-eq .md-j.is-carton--o .md-j-maillot { background: #ef7d1a; }
.md-t2 .md-t2-eq .md-j.is-carton--r .md-j-maillot { background: #c62828; color: #fff; }
.md-t2 .md-t2-eq .md-j[class*="is-carton--"] .md-j-maillot span { color: inherit; }
/* Tableau des scores v2 (09/10, « pas ouf ») : bandeau façon télé collé au
   centre de l'en-tête, minute en sauge, score en vanilla, infériorité
   numérique en étiquette jaune accrochée dessous. */
.md-t2-chrono { top: 0; bottom: 0; display: flex; align-items: center; gap: 12px; padding: 0 16px; background: #142E27; color: var(--vanilla); font-size: 22px; line-height: 1; transform: translateX(-50%); box-shadow: 0 0 0 2px var(--vanilla); z-index: 3; }
.md-t2-chrono-min { padding: 3px 6px; background: var(--sage); color: var(--teal); font-size: 13px; font-weight: 800; }
.md-t2-chrono-sc { display: flex; align-items: center; gap: 8px; font-weight: 900; font-variant-numeric: tabular-nums; }
.md-t2-chrono-sep { color: rgba(242, 229, 210, .45); font-weight: 700; }
.md-t2-chrono .md-t2-a14 { position: absolute; top: 100%; left: 50%; margin-top: 2px; padding: 3px 8px; background: #E5B300; color: #1a1a1a; font-size: 11px; font-weight: 700; white-space: nowrap; transform: translateX(-50%); }
/* Bandeau « ce qui se passe » (09/10) : en bas du terrain, à chaque arrêt
   de la lecture ou minute choisie avec une action. */
.md-t2-bandeau { position: absolute; left: 50%; bottom: 14px; z-index: 8; display: flex; flex-direction: column; gap: 2px; min-width: 280px; max-width: 70%; padding: 8px 16px; background: #142E27; color: var(--vanilla); font-size: 14px; font-weight: 600; text-align: center; transform: translateX(-50%); box-shadow: 0 6px 18px rgba(20, 46, 39, .35); pointer-events: none; }
.md-t2-bandeau[hidden] { display: none; }
.md-t2-bandeau b { margin-right: 6px; color: var(--sage); font-weight: 800; }
.md-t2-bandeau span { margin-left: 4px; color: rgba(242, 229, 210, .6); font-size: 12px; }
/* Bandeau placé sous le tableau des scores (Félix 09/10), sous l'étiquette « à 14 » si présente. */
.md-t2-bandeau { top: 0; bottom: auto; box-shadow: 0 6px 14px rgba(20, 46, 39, .25); }
.md-t2-bandeau.is-sous-a14 { top: 24px; }

/* ── Fil du match, mobile (09/10) : onglets d'équipe (radios CSS) et
   transformation plus discrète que l'essai. */
.md-fil-onglets { display: none; }
@media (max-width: 680px) {
  #sec-fil .md-fil-onglets { display: grid; grid-template-columns: auto 1fr 1fr; }
  #sec-fil .md-fil-onglets label { padding: 9px 10px; overflow: hidden; background: var(--white); color: var(--muted); font-size: 13px; font-weight: 700; text-align: center; white-space: nowrap; text-overflow: ellipsis; cursor: pointer; box-shadow: inset 0 -1px 0 rgba(28, 61, 52, .12); }
  #sec-fil .tl-header { display: none; }
  #md-fil-t:checked ~ .md-fil-onglets label[for="md-fil-t"], #md-fil-h:checked ~ .md-fil-onglets label[for="md-fil-h"] { background: var(--teal); color: var(--vanilla); box-shadow: none; }
  #md-fil-a:checked ~ .md-fil-onglets label[for="md-fil-a"] { background: var(--sage); color: var(--teal); box-shadow: none; }
  #md-fil-t:focus-visible ~ .md-fil-onglets label[for="md-fil-t"], #md-fil-h:focus-visible ~ .md-fil-onglets label[for="md-fil-h"], #md-fil-a:focus-visible ~ .md-fil-onglets label[for="md-fil-a"] { outline: 2px solid var(--teal); outline-offset: -2px; }
  #md-fil-h:checked ~ .tl-list .tl-ext, #md-fil-a:checked ~ .tl-list .tl-dom { display: none; }
}
#sec-fil .ev-conv { font-size: 13px; font-weight: 500; }
#sec-fil .ev-conv a { font-weight: 600; color: var(--muted); }
#sec-fil .tl-row.hl .ev-who > a { font-weight: 800; }
/* Fil v3 (09/10) : le joueur, puis l'action en dessous ; filet entre actions. */
#sec-fil .ev-body { flex-direction: column; align-items: flex-start; gap: 1px; }
#sec-fil .ev.left .ev-body { align-items: flex-end; }
#sec-fil .ev-type { font-size: 12px; font-weight: 600; color: var(--muted); }
#sec-fil .ev-type .ev-conv { font-size: 12px; font-weight: 500; }
#sec-fil .ev-type .ev-conv a { font-weight: 700; color: var(--teal); }
#sec-fil .tl-row + .tl-row { box-shadow: inset 0 1px 0 rgba(28, 61, 52, .08); }
#sec-fil .tl-cell, #sec-fil .tl-min-col { padding-top: 8px; padding-bottom: 8px; }
@media (max-width: 680px) {
  #sec-fil .ev.left .ev-body { align-items: flex-start; }
}
/* Stat orpheline (nombre impair dans un onglet) : centrée sous les autres au
   lieu de rester seule à gauche (Félix 09/10). La légende est le 1er enfant,
   donc une dernière stat en position paire est seule sur sa ligne. */
@media (min-width: 900px) {
  #sec-stats .stat-item:last-child:nth-child(even) { grid-column: 1 / -1; justify-self: center; width: calc(50% - 16px); }
}

/* ── Diffusion & commentaires (09/10) : grammaire du multiplex. Façade
   (image + dégradé + « Regarder »), bandeau teal sobre, score retiré de
   l'image, source citée une fois, commentaires sous la vidéo tant qu'il n'y
   en a pas ; outils commentateur regroupés et signalés « admin ». */
.md-dif .fc-tabs { border: 0; background: none; }
.md-dif .fc-panel { padding: 0; border: 0; background: none; }
.md-dif .team-live-banner { padding: 10px 16px; border: 0; background: var(--teal); }
.md-dif .team-live-dot, .md-dif .team-live-match, .md-dif .team-live-meta { display: none; }
.md-dif .team-live-label { font-size: 13px; font-weight: 700; letter-spacing: 0; text-transform: none; color: var(--vanilla); }
.md-dif .broadcast-src { border-color: rgba(242, 229, 210, .3); background: none; color: var(--vanilla); letter-spacing: 0; text-transform: none; }
.md-dif .broadcast-src.active { background: var(--vanilla); color: var(--teal); }
.md-dif .live-vid-overlay, .md-dif .live-vid-badge, .md-dif .team-live-vid-attr { display: none; }
/* Façade */
.md-dif .team-live-vid-placeholder { position: absolute; inset: 0; display: block; }
.md-dif-facade { position: absolute; inset: 0; background: #142E27; }
.md-dif-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.md-dif-voile { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-start; gap: 6px; padding: 28px; background: linear-gradient(to top, rgba(20, 46, 39, .95) 0, rgba(20, 46, 39, .55) 45%, rgba(20, 46, 39, 0) 75%); color: var(--vanilla); text-align: left; }
.md-dif-sur { font-size: 13px; font-weight: 700; color: var(--sage); }
.md-dif-titre { font-size: 26px; font-weight: 800; line-height: 1.15; }
.md-dif-regarder { display: inline-flex; align-items: center; gap: 10px; margin-top: 8px; padding: 10px 18px; border: 0; background: var(--vanilla); color: var(--teal); font-size: 15px; font-weight: 800; cursor: pointer; }
.md-dif-regarder:hover { background: #fff; }
.md-dif-regarder:focus-visible { outline: 2px solid var(--sage); outline-offset: 2px; }
.md-dif-play { width: 0; height: 0; border-left: 11px solid currentColor; border-top: 7px solid transparent; border-bottom: 7px solid transparent; }
/* Commentaires à droite de la vidéo (empilés, la vidéo pleine largeur
   faisait ~700 px de haut). Message vide sobre. */
.md-dif .tl-text--vide { padding: 14px 0; font-style: normal; color: var(--muted); }
/* Outils commentateur (admin) : regroupés, signalés */
.md-dif .tl-score-editor, .md-dif .tl-commentator-bar { position: relative; background: var(--sage-lt); box-shadow: inset 3px 0 0 var(--sage); }
.md-dif .tl-score-editor::before { content: "Admin"; position: absolute; top: 4px; right: 6px; font-size: 10px; font-weight: 700; color: var(--muted); }
.md-dif .tse-label, .md-dif .tse-status select, .md-dif .tcb-send { letter-spacing: 0; text-transform: none; }
@media (max-width: 680px) {
  .md-dif-voile { padding: 16px; }
  .md-dif-titre { font-size: 18px; }
}
/* Bascule vue visiteur / outils (aperçu admin) ; « Aucune diffusion » en
   double de « Pas de retransmission » masqué. */
.md-dif-vue { margin: -6px 0 10px; font-size: 12px; color: var(--muted); }
.md-dif-vue a { color: var(--teal); font-weight: 700; }
.md-dif #broadcast-sources > span { display: none; }
/* Sans vidéo : le fil des commentaires prend sa hauteur réelle (plus de
   320 px vides) ; saisie visiteur à taille lisible. */
.md-dif .team-live-2col.tl-no-video .team-live-col-chat-inner { min-height: 0; }
.md-dif .team-live-2col.tl-no-video .tl-messages { max-height: 420px; }
.md-dif .tl-fan-bar { gap: 8px; padding: 12px 16px; background: var(--white); }
.md-dif .tl-fan-bar input, .md-dif .tl-fan-bar .pf-pseudo { padding: 10px 12px; font-size: 14px; }
.md-dif .tl-fan-bar .pf-send { padding: 0 16px; align-self: stretch; background: var(--teal); border-color: var(--teal); font-size: 20px; }
.md-dif .tl-fan-bar .pf-send:hover { background: #142E27; }
/* Formats d'après-match sous le lecteur : vignettes façon multiplex. */
.md-dif-formats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 10px; background: #142E27; }
.md-dif-format { position: relative; display: block; padding: 0; overflow: hidden; border: 0; background: var(--teal); aspect-ratio: 16 / 9; cursor: pointer; }
.md-dif-format img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .55; transition: opacity .15s; }
.md-dif-format span { position: absolute; left: 0; right: 0; bottom: 0; padding: 18px 10px 8px; background: linear-gradient(to top, rgba(20, 46, 39, .95), rgba(20, 46, 39, 0)); color: var(--vanilla); font-size: 13px; font-weight: 800; text-align: left; }
.md-dif-format:hover img, .md-dif-format.is-on img { opacity: 1; }
.md-dif-format.is-on { box-shadow: inset 0 0 0 3px var(--vanilla); }
.md-dif-format:focus-visible { outline: 2px solid var(--sage); outline-offset: 2px; }
/* Commentaires dans la charte : pas de capitales espacées, CM en teal. */
.md-dif .tl-msg { padding: 10px 14px; }
.md-dif .tl-badge-cm, .md-dif .tl-source { padding: 1px 6px; letter-spacing: 0; text-transform: none; font-size: 11px; }
.md-dif .tl-badge-cm { background: var(--teal); color: var(--vanilla); }
.md-dif .tl-source { background: var(--sage-lt); color: var(--teal); }
.md-dif .tl-text { font-size: 14px; line-height: 1.4; }
.md-dif .tl-fan-name { font-size: 12px; font-weight: 800; letter-spacing: 0; text-transform: none; }
.md-dif .team-live-col-chat .tl-msg .tl-source, .md-dif .team-live-col-chat .tl-msg .tl-badge-cm { letter-spacing: 0; text-transform: none; }
.md-dif .team-live-col-chat .tl-msg .tl-source { border: 0; background: var(--sage-lt); color: var(--teal); font-size: 11px; }
/* v3 (09/10, « reprendre le multiplex ») : un seul onglet = pas d'onglet ;
   plusieurs = liens soulignés comme la barre du multiplex. Vidéo en grand,
   commentaires dessous dans une barre qui s'ouvre (« Commentaires (n) »). */
.md-dif .fc-tabs .fc-tab:only-of-type { display: none; }
.md-dif .fc-tabs { gap: 20px; align-items: center; margin-bottom: 10px; }
.md-dif .fc-tab { padding: 6px 0; border: 0; background: none; color: var(--muted); font-size: 14px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.md-dif .fc-tab.on { color: var(--teal); background: none; box-shadow: inset 0 -2px 0 var(--teal); }
.md-dif .fc-config-link { margin-left: auto; }
.md-dif .team-live-2col { grid-template-columns: 1fr; }
.md-dif .team-live-col-chat { border: 0; background: var(--white); }
.md-dif .team-live-vid-embed { max-height: 600px; }
.md-dif-com-barre { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; color: var(--teal); font-size: 15px; font-weight: 800; cursor: pointer; box-shadow: inset 0 -1px 0 rgba(28, 61, 52, .1); }
.md-dif-com-barre:hover { background: var(--sage-lt); }
.md-dif-com-n { color: var(--muted); font-weight: 700; }
.md-dif-com-chev { width: 8px; height: 8px; margin-top: -4px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); transition: transform .2s; }
.md-dif-com-r:checked + .md-dif-com-barre .md-dif-com-chev { margin-top: 4px; transform: rotate(-135deg); }
.md-dif-com-r:focus-visible + .md-dif-com-barre { outline: 2px solid var(--teal); outline-offset: -2px; }
.md-dif .team-live-col-chat .team-live-col-chat-inner { display: none; position: relative; inset: auto; }
.md-dif .md-dif-com-r:checked ~ .team-live-col-chat-inner { display: flex; max-height: 480px; }
.md-dif .team-live-col-video { background: #142E27; }
.md-dif .team-live-vid-embed { margin: 0 auto; }
.md-dif-formats { grid-template-columns: repeat(auto-fill, minmax(150px, 200px)); justify-content: center; }
.md-dif-formats { grid-template-columns: repeat(auto-fit, minmax(150px, 200px)); }

/* v4 (09/10, « ça va pas du tout ») : page vidéo façon YouTube. Lecteur à
   gauche pleine hauteur, colonne de droite = vidéos du match en liste puis
   commentaires. La colonne vidéo passe en display:contents pour que lecteur
   et formats se placent dans la grille. Bandeau masqué s'il n'y a qu'une source. */
.md-dif .team-live-banner:not(:has(.broadcast-src + .broadcast-src)) { display: none; }
.md-dif .team-live-col-video { display: contents; }
.md-dif .team-live-vid-embed { max-height: none; margin: 0; }
.md-dif-formats { grid-template-columns: 1fr; gap: 2px; padding: 0; background: var(--white); align-content: start; }
.md-dif-format { display: grid; grid-template-columns: 128px minmax(0, 1fr); align-items: center; gap: 12px; padding: 8px 12px; aspect-ratio: auto; background: var(--white); text-align: left; }
.md-dif-format img { position: static; width: 128px; height: auto; aspect-ratio: 16 / 9; opacity: 1; }
.md-dif-format span { position: static; padding: 0; background: none; color: var(--teal); font-size: 14px; }
.md-dif-format:hover { background: var(--sage-lt); }
.md-dif-format.is-on { box-shadow: inset 3px 0 0 var(--teal); background: var(--sage-lt); }
@media (min-width: 1000px) {
  .md-dif .team-live-2col { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); grid-template-rows: auto 1fr; background: var(--white); }
  .md-dif .team-live-vid-embed { grid-column: 1; grid-row: 1 / span 2; align-self: start; }
  .md-dif .md-dif-formats { grid-column: 2; grid-row: 1; }
  .md-dif .team-live-col-chat { grid-column: 2; grid-row: 2; box-shadow: inset 0 1px 0 rgba(28, 61, 52, .1); }
  .md-dif .team-live-2col.tl-no-video .team-live-col-chat { grid-column: 1 / -1; grid-row: auto; }
}
@media (max-width: 999px) {
  .md-dif-formats { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(220px, 1fr); overflow-x: auto; }
}
/* Barre d'outils au-dessus du lecteur (Félix : « pas de bouton plein écran ») :
   plein écran toujours là, sources si plusieurs ; plus de libellé. */
.md-dif .team-live-banner, .md-dif .team-live-banner:not(:has(.broadcast-src + .broadcast-src)) { display: flex; justify-content: flex-end; gap: 8px; padding: 0 0 8px; background: none; }
.md-dif .team-live-info { display: none; }
.md-dif .broadcast-src { border: 1px solid rgba(28, 61, 52, .25); color: var(--teal); }
.md-dif .broadcast-src.active { background: var(--teal); color: var(--vanilla); border-color: var(--teal); }
.md-dif .tl-fullscreen-btn, .md-dif .tl-bans-btn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border: 1px solid rgba(28, 61, 52, .25); background: var(--white); color: var(--teal); font-size: 13px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.md-dif .tl-fullscreen-btn:hover, .md-dif .tl-bans-btn:hover { border-color: var(--teal); }
/* La colonne de droite ne dépasse pas la vidéo : les commentaires sont en
   position absolue sous leur barre et défilent dans la hauteur restante. */
@media (min-width: 1000px) {
  .md-dif .team-live-2col:not(.tl-no-video) .team-live-col-chat { position: relative; min-height: 220px; }
  .md-dif .team-live-2col:not(.tl-no-video) .md-dif-com-r:checked ~ .team-live-col-chat-inner { position: absolute; top: 46px; left: 0; right: 0; bottom: 0; max-height: none; }
  .md-dif .md-dif-format { padding-top: 6px; padding-bottom: 6px; }
  .md-dif .md-dif-format img { width: 112px; }
  .md-dif .md-dif-format { grid-template-columns: 112px minmax(0, 1fr); }
}
/* Modes du tchat (bouton du lecteur) : « Sur la vidéo » ou « Masqué » → la
   colonne de commentaires de droite s'efface, les vidéos du match restent. */
.md-dif .team-live-2col.rcp-mode-calque .team-live-col-chat, .md-dif .team-live-2col.rcp-mode-off .team-live-col-chat { display: none; }
/* v5 (09/10) : vidéos du match en rangée SOUS le lecteur, la colonne de
   droite entière pour le tchat (hauteur lecteur + rangée). */
@media (min-width: 1000px) {
  .md-dif .md-dif-formats { grid-column: 1; grid-row: 2; grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 1px; background: rgba(28, 61, 52, .1); }
  .md-dif .team-live-vid-embed { grid-row: 1; }
  .md-dif .team-live-col-chat { grid-column: 2; grid-row: 1 / span 2; box-shadow: inset 1px 0 0 rgba(28, 61, 52, .1); }
  .md-dif .md-dif-format { grid-template-columns: 96px minmax(0, 1fr); }
  .md-dif .md-dif-format img { width: 96px; }
  .md-dif .md-dif-format.is-on { box-shadow: inset 0 -3px 0 var(--teal); }
  .md-dif .team-live-2col.rcp-mode-calque, .md-dif .team-live-2col.rcp-mode-off { grid-template-columns: 1fr; }
}
@media (min-width: 1000px) {
  .md-dif .team-live-2col { grid-template-rows: auto auto; }
  .md-dif .team-live-2col:not(.tl-no-video) .team-live-col-chat { min-height: 0; }
}
/* v6 (09/10, « c moche ») : rangée des vidéos en cartes façon multiplex,
   bande sombre dans la continuité du lecteur. */
.md-dif .md-dif-formats { gap: 8px; padding: 8px; background: #142E27; }
.md-dif .md-dif-format, .md-dif .md-dif-format:hover, .md-dif .md-dif-format.is-on { display: block; position: relative; height: 76px; padding: 0; overflow: hidden; background: #0f2520; box-shadow: none; }
.md-dif .md-dif-format img { position: absolute; inset: 0; width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; opacity: .45; transition: opacity .15s; }
.md-dif .md-dif-format span { position: absolute; left: 0; right: 0; bottom: 0; padding: 16px 10px 7px; background: linear-gradient(to top, rgba(15, 37, 32, .95), rgba(15, 37, 32, 0)); color: var(--vanilla); font-size: 13px; font-weight: 800; }
.md-dif .md-dif-format:hover img { opacity: .8; }
.md-dif .md-dif-format.is-on img { opacity: 1; }
.md-dif .md-dif-format.is-on { box-shadow: inset 0 0 0 2px var(--vanilla); }
.md-dif .md-dif-format.is-on span { padding-left: 12px; }
.md-dif .md-dif-format img { opacity: .75; }
.md-dif .md-dif-format:hover img, .md-dif .md-dif-format.is-on img { opacity: 1; }
.md-dif .md-dif-format.is-on::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 0 2px var(--vanilla); pointer-events: none; }
/* v7 (09/10, « tjr pas ») : cartes du multiplex (.mplx-card) — image
   entière en 16:9, titre DESSOUS sur fond clair, cartes de taille fixe
   alignées à gauche. Plus de recadrage en bandeau. */
.md-dif .md-dif-formats { grid-auto-columns: 200px; justify-content: start; gap: 14px; padding: 12px 14px 14px; background: var(--white); }
.md-dif .md-dif-format, .md-dif .md-dif-format:hover, .md-dif .md-dif-format.is-on { display: flex; flex-direction: column; gap: 6px; height: auto; overflow: visible; background: none; }
.md-dif .md-dif-format img { position: static; width: 100%; height: auto; aspect-ratio: 16 / 9; opacity: 1; }
.md-dif .md-dif-format span, .md-dif .md-dif-format.is-on span { position: static; padding: 0; background: none; color: var(--muted); font-size: 13px; font-weight: 800; }
.md-dif .md-dif-format:hover span { color: var(--teal); }
.md-dif .md-dif-format.is-on span { color: var(--teal); }
.md-dif .md-dif-format.is-on::after { content: none; }
.md-dif .md-dif-format.is-on img { outline: 3px solid var(--teal); outline-offset: -3px; }
.md-dif .md-dif-format, .md-dif .md-dif-format.is-on { align-items: stretch; text-align: left; box-shadow: none; border: 0; }
/* Colonne de boutons du lecteur façon multiplex (Félix 09/10) ; la barre
   d'outils au-dessus (bouton texte « Plein écran ») disparaît. */
.md-dif .team-live-banner, .md-dif .team-live-banner:not(:has(.broadcast-src + .broadcast-src)) { display: none; }
.md-dif .team-live-banner:has(.broadcast-src + .broadcast-src) { display: flex; }
.md-dif .team-live-banner .tl-fullscreen-btn { display: none; }
.md-dif-rail { position: absolute; top: 50%; right: 12px; z-index: 9; display: flex; flex-direction: column; gap: 8px; transform: translateY(-50%); }
.md-dif-rail-btn, .md-dif-rail .rcp-toggle { position: static; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 0; background: rgba(20, 46, 39, .8); color: var(--vanilla); cursor: pointer; }
.md-dif-rail-btn:hover, .md-dif-rail .rcp-toggle:hover { background: rgba(20, 46, 39, .96); }
.md-dif-rail-btn:focus-visible, .md-dif-rail .rcp-toggle:focus-visible { outline: 2px solid var(--vanilla); outline-offset: 2px; }
.md-dif-rail-btn svg, .md-dif-rail .rcp-toggle-ic svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
/* Le fil « sur la vidéo » laisse libre la colonne de boutons. */
.md-dif #tl-vid-embed .rcp { right: 68px; }
/* Pouce du lecteur : icône au-dessus du nombre (comme le multiplex) ; aimé =
   sauge (jamais de vert vif). */
.md-dif-pouce { flex-direction: column; gap: 2px; height: auto; padding: 8px 0; font-size: 11px; font-weight: 800; }
.md-dif-pouce-n { font-variant-numeric: tabular-nums; }
.md-dif-pouce.is-on { background: var(--sage); color: var(--teal); }
.md-dif-pouce.is-on svg { fill: var(--teal); }
.md-dif-pouce.is-busy { opacity: .6; }
/* Tchat « à côté » DANS le lecteur (plein écran) : colonne collée à droite,
   vidéo réduite à 70 %, boutons sur le bord droit de la vidéo (comme le
   multiplex). Le décalage de 68 px ne vaut que pour le fil sur la vidéo. */
.md-dif #tl-vid-embed.rcp-cote .rcp { right: 0; }
.md-dif #tl-vid-embed.rcp-cote .md-dif-rail { right: calc(30% + 12px); }
.md-dif #tl-vid-embed.rcp-cote iframe { width: 70%; }
/* Colonne du tchat d'un seul fond blanc (plus de plaque beige vide entre le
   dernier message et la saisie) ; messages du commentateur en sauge clair. */
.md-dif .team-live-col-chat, .md-dif .team-live-col-chat-inner, .md-dif .team-live-col-chat-inner .tl-messages { background: var(--white); }
.md-dif .team-live-col-chat .tl-msg { background: var(--white); }
.md-dif .team-live-col-chat .tl-msg--cm { background: var(--sage-lt); }
.md-dif .tl-fan-bar { border-top: 1px solid rgba(28, 61, 52, .1); }
/* Plus de vide à droite des vignettes : elles se partagent toute la largeur. */
@media (min-width: 1000px) {
  .md-dif .md-dif-formats { grid-auto-columns: minmax(0, 1fr); }
}
/* Plus de 3 vidéos : rangée qui défile (3 visibles + amorce de la 4e), arrêt
   net sur chaque vignette, comme les rangées du multiplex. */
.md-dif .md-dif-formats:has(> .md-dif-format:nth-child(4)) { grid-auto-columns: calc((100% - 28px) / 3.3); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; }
.md-dif .md-dif-formats:has(> .md-dif-format:nth-child(4)) > .md-dif-format { scroll-snap-align: start; }
/* Rangée des vidéos v8 (09/10) : la rangée est enveloppée (.md-dif-rangee)
   pour porter les flèches ; étiquette sur l'image comme les cartes du
   multiplex (.mplx-card-cam), titre dessous. */
@media (min-width: 1000px) {
  .md-dif .md-dif-rangee { grid-column: 1; grid-row: 2; }
}
.md-dif-rangee { position: relative; min-width: 0; background: var(--white); }
.md-dif .md-dif-format { position: relative; }
.md-dif-tag { position: absolute; top: 6px; right: 6px; z-index: 1; padding: 2px 6px; background: var(--vanilla); color: var(--teal); font-size: 10px; font-style: normal; font-weight: 800; letter-spacing: .5px; text-transform: uppercase; }
.md-dif-fleche { position: absolute; top: calc(12px + (100% - 50px) / 2); z-index: 3; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; padding: 0; border: 0; background: rgba(20, 46, 39, .85); color: var(--vanilla); cursor: pointer; transform: translateY(-50%); }
.md-dif-fleche:hover { background: #142E27; }
.md-dif-fleche:focus-visible { outline: 2px solid var(--teal); outline-offset: 2px; }
.md-dif-fleche::before { content: ""; width: 9px; height: 9px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; }
.md-dif-fleche--g { left: 4px; }
.md-dif-fleche--g::before { margin-left: 4px; transform: rotate(135deg); }
.md-dif-fleche--d { right: 4px; }
.md-dif-fleche--d::before { margin-right: 4px; transform: rotate(-45deg); }
.md-dif .has-fleches .md-dif-formats { scrollbar-width: none; }
.md-dif .has-fleches .md-dif-formats::-webkit-scrollbar { display: none; }
.md-dif-fleche[hidden] { display: none; }
.md-dif .md-dif-formats { scroll-padding-inline: 14px; }
/* Mobile : vignettes lisibles (≈ 2,3 visibles), étiquette réduite, flèches
   inutiles (on fait défiler au doigt). */
@media (max-width: 999px) {
  .md-dif .md-dif-formats, .md-dif .md-dif-formats:has(> .md-dif-format:nth-child(4)) { grid-auto-columns: calc((100% - 28px) / 2.3); overflow-x: auto; scroll-snap-type: x mandatory; }
  .md-dif .md-dif-format { scroll-snap-align: start; }
  .md-dif .md-dif-format span { font-size: 12px; }
  .md-dif-tag { top: 4px; right: 4px; padding: 1px 4px; font-size: 9px; }
  .md-dif-fleche { display: none; }
  .md-dif .md-dif-com-r:checked ~ .team-live-col-chat-inner { max-height: 360px; }
}
/* Vue commentateur : la barre au-dessus du lecteur revient pour le bouton
   « Bans » (le reste de la barre reste masqué). */
.md-dif.is-outils .team-live-banner, .md-dif.is-outils .team-live-banner:not(:has(.broadcast-src + .broadcast-src)) { display: flex; }
.md-dif.is-outils .tl-bans-btn { display: inline-flex; }
/* Boutons de modération de la colonne (admin) dans la charte, mêmes couleurs
   que ceux du tchat sur la vidéo : CJ jaune, CR et BAN rouges, × teal. */
.md-dif .tl-msg { align-items: flex-start; }
.md-dif .tl-ban-btns { align-self: center; gap: 4px; }
.md-dif .tl-ban { padding: 2px 6px; border: 0; font-size: 11px; font-weight: 800; letter-spacing: 0; cursor: pointer; }
.md-dif .tl-ban-cj { background: #E5B300; color: #1a1a1a; }
.md-dif .tl-ban-cr, .md-dif .tl-ban-def { background: #c62828; color: #fff; }
.md-dif .tl-ban:hover { filter: brightness(.9); }
.md-dif .tl-del { align-self: center; margin-left: 6px; padding: 0 6px; border: 1px solid rgba(28, 61, 52, .3); background: var(--white); color: var(--teal); font-size: 15px; line-height: 1.4; opacity: 1; cursor: pointer; }
.md-dif .tl-del:hover { border-color: var(--teal); }
