:root {
    --border-color: #cccccc;
    --connector-color: #a0a0a0;
    --participant-bg: #f9f9f9;
    --winner-bg: #e5f5e5;
    --loser-bg: #f8f8f8;
    --bye-color: #888888;
    
    /* Variables pour le calcul des hauteurs */
    --base-match-height: 110px; /* Hauteur approx. d'un match de base (2 participants) */
    --base-match-spacing: 30px; /* Espace entre les matchs du premier tour */
    --base-match-border: 1px;
    --base-competitor-height: 45px;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    background-color: #f0f2f5;
    color: #333;
    margin: 0;
    padding: 20px;
}

header {
    text-align: center;
    margin-bottom: 30px;
    width: 100%;
}

#controls {
    margin-top: 15px;
}

#controls button {
    font-size: 1em;
    padding: 8px 15px;
    margin: 5px;
    border-radius: 5px;
    border: 1px solid var(--border-color);
    background-color: #fff;
    cursor: pointer;
    transition: background-color 0.2s, box-shadow 0.2s;
}

#controls button:hover, #controls button.active {
    background-color: #e0e0e0;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

#bracket-container {
    display: flex;
    overflow-x: auto; /* Permet le défilement horizontal si nécessaire */
    padding: 20px;
}

.bracket {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
}

.round {
    display: flex;
    flex-direction: column;
    min-width: 300px;
    margin: 0 25px;
}

.round-title {
    font-size: 1.1em;
    font-weight: bold;
    text-align: center;
    margin-bottom: 20px;
    color: #555;
}

.match-wrapper {
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

.match {
    display: flex;
    flex-direction: column;
    position: relative;
    background-color: var(--participant-bg);
    border: var(--base-match-border) solid var(--border-color);
    border-radius: 4px;
    width: 100%;
    transition: box-shadow 0.2s;
}

.round-1 .match:not(:last-child) {
    margin-bottom: var(--base-match-spacing);
}

.match-wrapper:not(:last-child) {
    margin-bottom: var(--base-match-spacing);
}

.participant {
    padding: 10px 12px;
    width: 100%;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: var(--base-competitor-height);
    cursor: pointer;
    transition: background-color 0.3s;
    height: calc(var(--base-match-height) / 2);
}

.participant:hover {
    background-color: #e9e9e9;
}

.participant-dossard-name {
    display: flex;
    width: 100%;
    gap: 10px;
}

.participant-club-kyu-weight-old {
    display: flex;
    width: 100%;
    gap: 5px;
}

.participant-dossard {
    font-weight: bold;
    width: 40px;
}

.participant-name {
    font-weight: bold;
    white-space: nowrap;
}

.participant-club {
    font-size: 0.85em;
    color: #555;
    margin-top: 2px;
}

.participant-club::after {
    content: " / ";
}

.participant-kyu {
    font-size: 0.85em;
    color: #555;
    margin-top: 2px;
}

.participant-kyu::after {
    content: " / ";
}

.participant-weight {
    font-size: 0.85em;
    color: #555;
    margin-top: 2px;
}

.participant-weight::after {
    content: 'kg / ';
}

.participant-old {
    font-size: 0.85em;
    color: #555;
    margin-top: 2px;
}

.participant-old::after {
    content: ' ans';
}

.participant-name.tbd {
    font-weight: normal;
    font-style: italic;
    color: #999;
}

.participant.bye {
    font-style: italic;
    color: var(--bye-color);
    align-items: center;
    cursor: default;
}
.participant.bye:hover {
    background-color: transparent;
}


.participant + .participant {
    border-top: 1px solid var(--border-color);
}

/* Styles pour le vainqueur et le perdant d'un match */
.participant.winner {
    background-color: var(--winner-bg);
    font-weight: bold;
}
.participant.winner:hover {
    background-color: var(--winner-bg);
}

.participant.loser {
    background-color: var(--loser-bg);
    opacity: 0.6;
}
.participant.loser:hover {
    background-color: var(--loser-bg);
}

/* On désactive le curseur pointeur si un des participants est un vainqueur ou un perdant */
.match:has(.winner), .match:has(.loser) .participant {
    cursor: default;
}
.match:has(.winner) .participant:hover, .match:has(.loser) .participant:hover {
    background-color: transparent; /* Empêche le survol sur un match décidé */
}
.match:has(.winner) .winner:hover {
    background-color: var(--winner-bg); /* Sauf pour le gagnant lui-même */
}
.match:has(.loser) .loser:hover {
    background-color: var(--loser-bg); /* Sauf pour le perdant lui-même */
}


/* --- LOGIQUE DE CENTRAGE --- */
.round-2 > .match-wrapper { height: calc(var(--base-match-height) * 2 + var(--base-match-spacing) + var(--base-match-border) * 2); }
.round-3 > .match-wrapper { height: calc(var(--base-match-height) * 4 + var(--base-match-spacing) * 3 + var(--base-match-border) * 4); }
.round-4 > .match-wrapper { height: calc(var(--base-match-height) * 8 + var(--base-match-spacing) * 7 + var(--base-match-border) * 8); }
.round-5 > .match-wrapper { height: calc(var(--base-match-height) * 9 + var(--base-match-spacing) * 3 + var(--base-match-border) * 18); }
/* etc., à ajuster si plus de tours */


/* --- LOGIQUE DES CONNECTEURS --- */
.match::after {
    content: '';
    position: absolute;
    width: 25px;
    height: 2px;
    background-color: var(--connector-color);
    top: 50%;
    left: 100%;
    transform: translateY(-50%);
}

.match.final::after {
    background-color: transparent;
}

.match.little-final::before {
    background-color: transparent !important;
}

.round:not(:last-child) .match-wrapper:nth-of-type(even)::before {
    content: '';
    position: absolute;
    width: 2px;
    background-color: var(--connector-color);
    left: calc(100% + 25px);
    bottom: 50%;
    height: calc(100% + var(--base-match-spacing) + 1px);
}

.round-1:not(:last-child) .match:nth-of-type(even)::before {
    content: '';
    position: absolute;
    width: 2px;
    background-color: var(--connector-color);
    left: calc(100% + 25px);
    bottom: 50%;
    height: calc(var(--base-match-height) + var(--base-match-spacing) + 2px);
}

.round:not(.round-1) .match::before {
    content: '';
    position: absolute;
    width: 25px;
    height: 2px;
    background-color: var(--connector-color);
    top: 50%;
    right: 100%;
    transform: translateY(-50%);
}

/* Cacher les connecteurs inutiles */
.round:last-of-type .match::after {
/* .round:last-of-type .match-wrapper::before */
/* .round:last-of-type .match::before { */
    display: none;
}
/* Cacher le connecteur de droite pour le match final (qui est dans un .winner-container) */
.winner-container .match::after {
    display: none;
}

/* Style pour le conteneur du grand vainqueur final */
.winner-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.winner-container .participant {
    background-color: #d4edda; /* Un vert plus prononcé */
    border: 1px solid #c3e6cb;
    font-size: 1.2em;
    padding: 15px;
    border-radius: 5px;
    cursor: default;
}
.winner-container .participant:hover {
    background-color: #d4edda;
}
.winner-container .round-title {
    font-size: 1.3em;
}

.flag-icon {
  width: 24px;
  height: auto;
  border-radius: 3px;
}

.fight-number-time {
    position: absolute;
    top: 50%;
    left: 100%;
    transform: translate(5px, -150%);
    background: white;
    padding: 0 3px;
    font-size: 0.8em;
    color: #555;
    z-index: 1;
    border: 1px solid var(--connector-color);
    border-radius: 3px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    cursor: pointer;
}

.participant.dragging {
    opacity: 0.5;
}

.participant.drag-over {
    background-color: #e0e0e0;
}
