/* Classes utilitaires remplaçant les styles en ligne (style="...") pour que
 * la Content-Security-Policy du site puisse se passer de 'unsafe-inline' sur
 * style-src. Regroupées ici plutôt que dans theme.css : purement structurel
 * (tailles/dispositions), pas de choix de thème/couleur de marque. */

.drag-handle { cursor: grab; }

.icon-xl { font-size: 5rem; }

.thumb-cover-180 { height: 180px; object-fit: cover; }
.thumb-cover-200 { height: 200px; object-fit: cover; }
.thumb-contain-180 { height: 180px; object-fit: contain; }
.thumb-contain-280 { height: 280px; object-fit: contain; }
.thumb-square-80 { height: 80px; width: 80px; object-fit: cover; }
.thumb-full-180 { height: 180px; width: 100%; }
.thumb-full-cover-180 { height: 180px; width: 100%; object-fit: cover; }

.max-h-100 { max-height: 100px; }
.max-h-160 { max-height: 160px; }
.max-w-160 { max-width: 160px; }
.max-w-180 { max-width: 180px; }
.max-w-220 { max-width: 220px; }
.max-w-360 { max-width: 360px; }
.min-w-260 { min-width: 260px; }

.w-2rem { width: 2rem; }
.w-100px { width: 100px; }
.w-auto-field { width: auto; }
.medal-icon { width: 1.6rem; height: 1.6rem; vertical-align: middle; }
.chart-participation-box { width: 140px; height: 140px; flex-shrink: 0; }

.color-dot { display: inline-block; width: 12px; height: 12px; }
.color-dot-conflict { background-color: #dc3545; }

/* Élément masqué par défaut, affiché/masqué ensuite via classList (voir
 * static/js/race-submit-match.js) — jamais par manipulation directe de
 * l'attribut style, pour rester compatible avec une CSP stricte. */
.js-toggle-hidden { display: none; }
