/* ==================== Grille des disponibilités ==================== */
.avail-scroll {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    border-radius: var(--md-radius-md);
    box-shadow: var(--md-elevation-table);
    background: var(--md-surface);
}
.avail-grid { box-shadow: none; border-radius: 0; overflow: visible; width: 100%; }
.avail-grid th, .avail-grid td { padding: 8px 10px; text-align: center; white-space: nowrap; }
.avail-grid thead th { position: sticky; top: 0; z-index: 2; vertical-align: bottom; }
.avail-grid .avail-player {
    position: sticky;
    left: 0;
    z-index: 1;
    text-align: left;
    background: var(--md-surface);
    box-shadow: 1px 0 0 var(--md-outline-variant);
    /* Colonne des noms au plus juste : la place restante va aux dates. */
    width: 1%;
    min-width: 190px;
}
.avail-grid thead .avail-player { z-index: 3; background: var(--md-surface-container); }
.avail-grid tfoot th, .avail-grid tfoot td { background: var(--md-surface-container); border-bottom: none; }
.avail-grid .avail-player a { color: var(--md-on-surface); text-decoration: none; }
.avail-grid .avail-player a:hover { color: var(--md-primary); text-decoration: underline; }
.avail-grid:not(.show-past) .is-past { display: none; }
.avail-rounds { display: block; font-size: 0.95rem; font-weight: 700; color: var(--md-primary); }
.avail-date { display: block; font-weight: 600; text-transform: none; letter-spacing: 0; font-size: 1.05rem; color: var(--md-on-surface); }
.avail-cell {
    width: 34px;
    height: 34px;
    padding: 0;
    border-radius: var(--md-radius-sm);
    box-shadow: none;
    display: inline-grid;
    place-items: center;
    font-size: 1rem;
    font-weight: 800;
    vertical-align: middle;
}
.avail-cell.is-yes { background: var(--status-success-bg); color: var(--status-success-fg); }
.avail-cell.is-yes::before { content: '✓'; }
.avail-cell.is-no { background: var(--md-error-container); color: var(--md-error); }
.avail-cell.is-no::before { content: '✕'; }
.avail-cell:hover { box-shadow: 0 0 0 2px currentColor; }
.avail-cell.is-yes:hover { background: color-mix(in srgb, var(--status-success-border) 26%, transparent); }
.avail-cell.is-no:hover { background: var(--status-danger-bg); }
.avail-count { font-size: 0.85rem; color: var(--md-success-text); }
.avail-count.is-short { color: var(--md-error); }
/* Largeur bornée : sur un très grand écran, les colonnes ne s'étirent pas à l'infini. */
.avail .toolbar, .avail .page-head, .avail .avail-scroll { max-width: 1400px; }
.avail-grid th:not(.avail-player), .avail-grid td { min-width: 76px; }
/* Colonnes en alternance de teinte (classe posée par disponibilites.js sur les colonnes visibles). */
.avail-grid tbody td.is-alt { background: color-mix(in srgb, var(--md-primary) 8%, transparent); }
.avail-grid thead th.is-alt, .avail-grid tfoot td.is-alt { background: var(--md-surface-alt); }

/* ==================== Joueurs ==================== */
.players-page > * { width: 100%; max-width: 960px; }
.add-player {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 20px;
    padding: 14px;
    background: var(--md-surface);
    border-radius: var(--md-radius-md);
    box-shadow: var(--md-elevation-1);
}
.add-player input {
    flex: 1 1 180px;
    padding: 10px 12px;
    border: 1px solid var(--md-outline);
    border-radius: var(--md-radius-sm);
    font: inherit;
}
.add-player input:focus { outline: none; border-color: var(--md-primary); box-shadow: 0 0 0 3px var(--md-primary-container); }
.players-table { width: 100%; }
.players-table td { vertical-align: middle; }
.players-table tr.is-editing { background: var(--md-primary-container); }
table input.inline-input {
    width: 100%;
    min-width: 8ch;
    padding: 6px 8px;
    border: 1px solid transparent;
    background: transparent;
    font: inherit;
    font-size: 0.95rem;
    cursor: text;
}
table input.inline-input:hover { border-color: var(--md-outline-variant); background: var(--md-surface); }
table input.inline-input:focus { border-color: var(--md-primary); background: var(--md-surface); box-shadow: 0 0 0 3px var(--md-primary-container); }
.inline-input--strong { font-weight: 700 !important; text-transform: uppercase; }

.profile > * { width: 100%; max-width: 1000px; }
.profile-head h1 { margin-bottom: 6px; }
.profile-head .page-intro { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.profile-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 24px; align-items: start; }
.profile h3 { margin: 22px 0 10px; font-size: 0.95rem; color: var(--md-on-surface-variant); }
.burn-status {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin: 16px 0 0;
    padding: 12px 14px;
    border-radius: var(--md-radius-sm);
    border-left: 5px solid var(--team-ink);
    background: var(--md-surface-container);
    font-size: 0.9rem;
}
.burn-status--free { border-left-color: var(--md-success); }
.match-list, .avail-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.match-list li, .avail-list li { display: flex; align-items: center; gap: 10px; font-size: 0.9rem; }
.match-round { font-weight: 800; color: var(--md-primary); min-width: 2.6em; }
.match-date { color: var(--md-on-surface-variant); min-width: 8.5em; }
.match-date::first-letter { text-transform: uppercase; }
.avail-list .avail-cell { width: 30px; height: 30px; }

/* ==================== Analyse des adversaires ==================== */
/* Une seule convention de couleur : bleu = à notre avantage, rouge = à leur avantage, gris = équilibré
   (paire lisible par les daltoniens ; le signe +/- et les libellés doublent toujours la couleur). */
.scout-page { width: 100%; max-width: 1100px; }
/* main centre ses enfants : sans largeur explicite, la grille se réduirait à une seule colonne. */
.scout-overview { width: 100%; grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); }
.scout-page .panel { margin-bottom: 16px; }
.scout-intro { color: var(--md-on-surface-variant); max-width: 70ch; margin: 0 0 20px; }
.scout-freshness { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 0 0 20px; color: var(--md-on-surface-variant); }
.scout-freshness form { margin: 0; }
.scout-freshness button { padding: 6px 14px; }
.verdict {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 3px 12px; border-radius: var(--md-radius-full);
    font-weight: 700; font-size: 0.9rem; color: var(--scout-ink); white-space: nowrap;
}
.verdict--favorable { background: var(--scout-pos-strong); }
.verdict--balanced { background: var(--scout-even); }
.verdict--difficult { background: var(--scout-neg-strong); }
.verdict--unknown { background: var(--scout-even); font-weight: 400; }
.scout-chances { font-size: clamp(1.8rem, 6vw, 2.6rem); font-weight: 700; line-height: 1.1; margin: 14px 0 2px; font-variant-numeric: tabular-nums; }
.hero-card .scout-chances { color: var(--inv-strong); }
.scout-odds { display: flex; gap: 2px; height: 12px; border-radius: var(--md-radius-full); overflow: hidden; margin: 12px 0 6px; }
.scout-odds span { display: block; min-width: 2px; }
.scout-odds .odds-win { background: var(--scout-bar-win); }
.scout-odds .odds-draw { background: var(--scout-bar-draw); }
.scout-odds .odds-loss { background: var(--scout-bar-loss); }
.scout-odds-legend { display: flex; justify-content: space-between; font-size: 0.85rem; font-variant-numeric: tabular-nums; }
.scout-team-title { display: flex; align-items: center; gap: 10px; }
.scout-match-line { margin: 4px 0; color: var(--md-on-surface-variant); }
.scout-opponent { font-size: 1.25rem; font-weight: 700; margin: 2px 0 8px; }
.scout-players { list-style: none; margin: 0; padding: 0; }
.scout-players li { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--md-outline-variant); }
.scout-players li:last-child { border-bottom: 0; }
.scout-players li > span:first-child { min-width: 45%; }
.scout-players .points { font-weight: 700; font-variant-numeric: tabular-nums; }
.scout-players .meta, .scout-meta { color: var(--md-on-surface-variant); font-size: 0.85rem; }
.scout-keypoints { margin: 0; padding-left: 20px; display: grid; gap: 6px; }
.scout-duels td, .scout-duels th { text-align: center; white-space: nowrap; }
.scout-duels th[scope=row] { text-align: left; }
.scout-duels td { font-weight: 700; font-variant-numeric: tabular-nums; color: var(--scout-ink); }
.gap-p2 { background: var(--scout-pos-strong); }
.gap-p1 { background: var(--scout-pos); }
.gap-n0 { background: var(--scout-even); }
.gap-m1 { background: var(--scout-neg); }
.gap-m2 { background: var(--scout-neg-strong); }
.scout-legend { display: flex; flex-wrap: wrap; gap: 6px; font-size: 0.8rem; margin-top: 8px; }
.scout-legend span { padding: 2px 8px; border-radius: var(--md-radius-sm); color: var(--scout-ink); }
.scout-table-wrap { overflow-x: auto; }
.scout-strength { height: 8px; border-radius: var(--md-radius-full); background: var(--md-outline); min-width: 2px; }
tr.is-us .scout-strength { background: var(--scout-bar-win); }
tr.is-us td { font-weight: 700; }
.scout-section-title { margin: 32px 0 12px; }
.scout-links { display: flex; flex-wrap: wrap; gap: 12px 20px; margin-top: 16px; }

/* Licenciés du club absents de la liste des joueurs (/players) */
.licensees summary { cursor: pointer; font-weight: 600; }
.licensee-list { list-style: none; padding: 0; margin: .75rem 0; display: grid;
    grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: .25rem 1rem; }
.prow-points, .slot-points { color: var(--md-on-surface-variant); font-size: .85em; margin-left: .35em; }

/* Barre complète avec icônes : un peu moins de marge entre 861 et 1280 px pour tenir sur une ligne,
   et sans les icônes de la barre en dessous de 1150 px (celles du menu déroulant restent). */
@media (min-width: 861px) and (max-width: 1280px) {
    .nav-link { padding: 9px 10px; gap: 5px; }
}
@media (min-width: 861px) and (max-width: 1150px) {
    .site-nav-primary .nav-icon { display: none; }
}

/* Pied de page : version, puis sources des données et lien vers la page « Données et sources ». */
.footer-sources { margin-left: 12px; }
.footer-sources > span + a { margin-left: 8px; }
.footer-sources a { color: inherit; }
@media (max-width: 600px) {
    /* Sur mobile, le pied de page garde la mention des sources plutôt que la version. */
    .footer-version { display: none; }
    .footer-sources { margin-left: 0; }
}

/* Page de texte (« Données et sources ») : largeur de lecture confortable. */
.prose-page { max-width: 760px; }
.prose-page h2 { margin-top: 28px; }
.prose-page li { margin-bottom: 6px; }

/* ==================== Analyse : cartes de même hauteur, actions en pied de carte ==================== */
.scout-overview { align-items: stretch; }
.scout-card { display: flex; flex-direction: column; }
.scout-card .scout-links { margin-top: auto; padding-top: 16px; }
.scout-card .scout-odds-legend { margin-bottom: 4px; }

/* ==================== Poules : une couleur par poule ==================== */
.pool-grid { align-items: stretch; }
.pool-card {
    display: flex;
    flex-direction: column;
    border-radius: var(--md-radius-md);
    background: var(--md-surface);
    box-shadow: var(--md-elevation-table);
    border: 2px solid var(--team-ink);
    overflow: hidden;
}
.pool-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 12px 16px; background: var(--team); color: var(--team-on); }
.pool-card-head h2 { margin: 0; color: var(--team-on); font-size: 1.2rem; }
.pool-card-number { padding: 2px 10px; border-radius: var(--md-radius-full); background: var(--team-on-overlay); font-size: 0.8rem; font-weight: 700; }
.pool-card table { flex: 1; border-radius: 0; box-shadow: none; }
.pool-card thead th { background: color-mix(in srgb, var(--team) 10%, var(--md-surface)); }
.pool-card tbody tr:last-child td { border-bottom: none; }
.pool-card tr.is-withdrawn { opacity: 0.6; }
.pool-position {
    display: inline-grid;
    place-items: center;
    min-width: 26px;
    height: 26px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--team) 14%, var(--md-surface));
    color: var(--team-ink);
    font-weight: 800;
    font-size: 0.85rem;
}
.pool-card tbody tr:first-child .pool-position { background: var(--team); color: var(--team-on); }

/* ==================== Réglages : groupes de tuiles ==================== */
.settings-page { align-items: stretch; width: 100%; max-width: 1400px; margin: 0 auto; }
.settings-page > h1 { margin-bottom: 8px; }
.settings-page .page-intro { margin-bottom: 8px; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* Sommaire collant sous la barre de navigation : toujours à portée, avec la section courante en évidence. */
.settings-toc {
    position: sticky;
    top: 64px;
    z-index: 10;
    display: flex;
    gap: 8px;
    margin: 8px -12px 0;
    padding: 10px 12px;
    background: var(--md-surface-dim);
    border-bottom: 1px solid var(--md-outline-variant);
    overflow-x: auto;
}
.settings-toc a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex: none;
    padding: 7px 14px;
    border-radius: var(--md-radius-full);
    font-weight: 600;
    transition: background-color var(--md-motion), color var(--md-motion);
}
.settings-toc a .icon { width: 16px; height: 16px; }
.settings-toc a.is-active { background: var(--md-primary); color: var(--md-on-primary); }

.settings-group { margin-top: 28px; scroll-margin-top: 130px; }
.settings-group-title {
    display: flex;
    align-items: center;
    gap: 16px;
    margin: 0 0 16px;
    font-size: 1.1rem;
    white-space: nowrap;
}
.settings-group-title::after { content: ''; flex: 1; height: 1px; background: var(--md-outline); }
.settings-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); gap: 20px; align-items: stretch; }
.settings-tile { display: flex; flex-direction: column; max-width: none; margin: 0; padding: 24px; }
.settings-tile--wide { grid-column: 1 / -1; }
.settings-tile h3 { margin-bottom: 16px; }
.settings-tile .form-intro { margin: 0 0 16px; }
.settings-tile .tile-form { margin: 0; }
.settings-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr)); gap: 0 28px; }
.tile-preview { margin-bottom: 16px; }
.tile-preview img { display: block; border: 1px solid var(--inv-input-border); background: #fff; }
.tile-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: auto; padding-top: 6px; }
.settings-tile--danger { border: 1.5px solid var(--inv-bad); }
.settings-tile--danger h3 { border-bottom-color: var(--inv-bad); }
.settings-tile--danger .btn-danger-filled { margin-top: 0; }
