/* =========================================================
   Espace FDO - FEUILLE DE STYLE PRINCIPALE
   =========================================================

   ORGANISATION DU FICHIER

   01 - SOCLE GLOBAL
        Base
        Structure générale
        Header / navigation
        En-têtes de page
        Cartes / grilles
        Formulaires
        Boutons / badges / alertes
        Tableaux
        Connexion

   02 - COMPOSANTS ET AFFICHAGES COMMUNS
        Championnats / inscriptions
        Responsive général
        Impression

   03 - SITE PUBLIC
        Accueil public
        Pages publiques FDO

   04 - ESPACE CLUB
        Identité du club
        Championnats
        Inscriptions
        Danseurs / dossards
        Mes inscriptions

   05 - ADMINISTRATION
        Championnats
        Barème
        Catégories
        Clubs
        Utilisateurs
        Licences
        Documents officiels

   06 - RESPONSIVE SPÉCIFIQUE
        Pages club
        Pages administration
        Cartes mobiles
        Correctifs mobiles
        Actions responsive

   07 - COMPOSANTS FDO RÉCENTS
        Référentiels catégories
        Tableaux standard FDO

   ========================================================= */

/* =========================================================
   01 - SOCLE GLOBAL
   ========================================================= */

/* Base
   ========================================================= */

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
    background: #f4f6f8;
    color: #1f2933;
}

a {
    color: #243b53;
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

.app-container {
    min-height: 100vh;
}

.main-content {
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 20px 30px;
}

.main-content-wide {
    max-width: 1380px;
}


.spacing-top {
    margin-top: 20px;
}

.spacing-bottom {
    margin-bottom: 20px;
}

.muted-text {
    color: #7b8794;
    font-size: 13px;
}

.site-footer {
    padding-top: 20px;
    padding-bottom: 20px;
}

/* Header / navigation
   ========================================================= */

.site-header {
    position: sticky;
    top: 0;
    z-index: 1000;
    background: #ffffff;
    border-bottom: 1px solid #d9e2ec;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
}

.site-header-inner {
    max-width: 1180px;
    min-height: 92px;
    margin: 0 auto;
    padding: 10px 20px;
    display: flex;
    align-items: center;
    gap: 18px;
}

.site-logo-link {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
}

.site-logo-link img {
    max-height: 70px;
    max-width: 120px;
    object-fit: contain;
}

.site-nav {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.site-nav > a,
.nav-dropbtn {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 8px 10px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: #243b53;
    font: inherit;
    font-size: 14px;
    cursor: pointer;
    white-space: nowrap;
}

.nav-auth-link {
    gap: 6px;
}

.nav-auth-icon {
    display: block;
    width: 16px;
    height: 16px;
    flex: 0 0 16px;
    object-fit: contain;
}

.site-nav > a:hover,
.nav-dropdown:hover .nav-dropbtn,
.nav-dropbtn:hover {
    background: #eef2f7;
    text-decoration: none;
}

.site-nav > a.is-active,
.nav-dropdown.is-current > .nav-dropbtn {
    background: #eaf2fb;
    color: #102a43;
    font-weight: 700;
    box-shadow: inset 0 -2px 0 #243b53;
    text-decoration: none;
}

.nav-dropdown {
    position: relative;
}

.nav-submenu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 190px;
    padding: 8px;
    background: #ffffff;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    box-shadow: 0 12px 24px rgba(15, 23, 42, 0.12);
}

.nav-dropdown:hover .nav-submenu {
    display: block;
}

.nav-submenu a,
.nav-submenu button {
    display: block;
    width: 100%;
    padding: 9px 10px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: #243b53;
    font: inherit;
    font-size: 14px;
    text-align: left;
    cursor: pointer;
}

.nav-submenu button {
    justify-content: flex-start;
}

.nav-submenu a:hover,
.nav-submenu button:hover {
    background: #eef2f7;
    text-decoration: none;
}

.nav-submenu a.is-active {
    background: #eaf2fb;
    color: #102a43;
    font-weight: 700;
    box-shadow: inset 3px 0 0 #243b53;
}

.nav-backup-form {
    margin: 0;
}

.nav-user {
    flex: 0 0 auto;
    min-width: 110px;
    color: #52616b;
    font-size: 13px;
    text-align: right;
}

.nav-toggle {
    display: none;
    flex: 0 0 auto;
}

.forced-password-header-text {
    flex: 1;
    color: #52616b;
    font-size: 14px;
    font-weight: 700;
}

/* En-têtes de page
   ========================================================= */

.page-header {
    position: sticky;
    top: 104px;
    z-index: 900;
    margin: 0 -20px 20px;
    padding: 18px 20px 20px;
    background: #f4f6f8;
    border-bottom: 1px solid #d9e2ec;
}

.page-header::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: -12px;
    height: 12px;
    background: #f4f6f8;
}

.page-header h1 {
    margin: 0 0 6px;
    font-size: 28px;
    line-height: 1.1;
}

.page-header p {
    margin: 0;
    color: #52616b;
}

/* Administration des clubs : actions d'en-tête */
.admin-clubs-header-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-left: auto;
    flex-wrap: wrap;
}

.admin-clubs-header-actions .btn {
    flex-shrink: 0;
}

/* Erreurs visibles dans la modale des juges */
.juge-modal-alert {
    margin: 0 0 14px;
    padding: 10px 12px;
    font-size: 0.85rem;
    line-height: 1.4;
}

/* =========================================================
   ADMIN - CENTRAGE DES ACTIONS D'EN-TETE
   Clubs, utilisateurs, championnats et danseurs
   ========================================================= */

@media screen and (max-width: 900px) {

    .admin-clubs-header-actions {
        display: flex;
        justify-content: center;
        align-items: center;
        flex-wrap: wrap;
        gap: 10px;
        width: 100%;
        margin-left: 0;
    }

    .admin-clubs-header-actions > .btn {
        flex: 0 1 auto;
        width: auto;
        min-width: 0;
        max-width: 260px;
        margin: 0;
        text-align: center;
    }

    .page-header.page-header-with-action:not(.category-page-header) > .btn {
        align-self: center;
        flex: 0 1 auto;
        width: auto;
        min-width: 0;
        max-width: min(280px, 100%);
        margin-left: auto;
        margin-right: auto;
        text-align: center;
    }
}

.page-header-with-action {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
}

/* Cartes / grilles
   ========================================================= */

.card {
    background: #ffffff;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
}

.card h2 {
    margin: 0 0 18px;
    font-size: 20px;
}

.user-password-card {
    padding: 0;
}

.user-password-card-summary {
    padding: 20px;
    font-size: 20px;
    font-weight: 700;
    cursor: pointer;
    list-style: none;
}

.user-password-card-summary::-webkit-details-marker {
    display: none;
}

.user-password-card-summary {
    position: relative;
    padding-right: 66px;
}

.user-password-card-summary::after {
    content: "" !important;
    position: absolute;
    top: 50%;
    right: 20px;
    display: block;
    float: none;
    width: 30px;
    height: 30px;
    min-width: 30px;
    min-height: 30px;
    padding: 0;
    border: 1px solid #d7e1eb;
    border-radius: 50%;
    background: #f1f5f9 url("../img/angle-small-down.png") center / 14px 14px no-repeat;
    box-sizing: border-box;
    font-size: 0;
    line-height: 0;
    transform-origin: 50% 50%;
    transform: translateY(-50%) rotate(0deg);
    transition: transform 0.2s ease;
}

.user-password-card[open] .user-password-card-summary::after {
    content: "" !important;
    transform: translateY(-50%) rotate(180deg);
}

.user-password-card-content {
    padding: 0 20px 20px;
}

.card-fit-content {
    display: block;
    width: fit-content;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
}

.card-fit-content.table-wrap {
    display: block;
    width: fit-content;
    max-width: 100%;
    overflow-x: auto;
}

.card-fit-content .data-table {
    width: max-content;
    min-width: 0;
}

.content-grid {
    display: grid;
    grid-template-columns: minmax(300px, 380px) 1fr;
    gap: 20px;
    align-items: start;
}

.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 14px;
}

.stat-card {
    background: #ffffff;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    padding: 16px;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.05);
}

.stat-card span {
    display: block;
    margin-bottom: 8px;
    color: #7b8794;
    font-size: 13px;
}

.stat-card strong {
    display: block;
    margin: 0;
    color: #102a43;
    font-size: 30px;
    font-weight: 800;
    line-height: 1;
}

.info-box {
    padding: 14px 16px;
    border: 1px solid #cbd5e1;
    border-radius: 10px;
    background: #f8fafc;
}

.temp-password-box {
    display: inline-block;
    margin-top: 4px;
    padding: 8px 10px;
    border-radius: 8px;
    background: #102a43;
    color: #ffffff;
    font-family: Consolas, monospace;
    font-size: 16px;
    letter-spacing: 0.04em;
}

/* Formulaires
   ========================================================= */


.form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

/* Administration : champ date de naissance sur mobile */
@media (max-width: 640px) {
    .main-content .form-grid > div {
        min-width: 0;
    }

    .main-content .form-grid input#date_naissance {
        display: block;
        box-sizing: border-box;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        height: 40px;
        min-height: 40px;
        margin: 0;
        padding: 8px 10px;
        font-size: 16px;
    }
}


/* Administration - Création d'un danseur */
.admin-danseur-create-card {
    width: 100%;
    max-width: 760px;
    margin-left: auto;
    margin-right: auto;
}

.admin-danseur-create-card #club_id {
    width: 100%;
    max-width: 420px;
}

@media (max-width: 620px) {
    .admin-danseur-create-card #club_id {
        max-width: 100%;
    }
}

.form-row {
    display: flex;
    align-items: center;
    gap: 10px;
}

.full {
    grid-column: 1 / -1;
}

label {
    display: block;
    margin-bottom: 6px;
    color: #334e68;
    font-weight: 700;
    font-size: 13px;
}

input,
select,
textarea {
    width: 100%;
    min-height: 38px;
    padding: 8px 10px;
    border: 1px solid #bcccdc;
    border-radius: 8px;
    background: #ffffff;
    color: #1f2933;
    font: inherit;
}

textarea {
    min-height: 90px;
    resize: vertical;
}

input:focus,
select:focus,
textarea:focus {
    outline: 2px solid rgba(36, 59, 83, 0.18);
    border-color: #486581;
}

input:disabled {
    background: #f1f5f9;
    color: #7b8794;
}

.checkbox-line {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 6px 0;
    font-weight: 500;
}

.checkbox-line input,
input[type="checkbox"] {
    width: auto;
    min-height: auto;
}

.filters-row {
    display: flex;
    align-items: end;
    gap: 12px;
    flex-wrap: wrap;
}

.filters-row > div {
    min-width: 190px;
}

.filters-actions,
.actions-row {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.actions-column {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* Administration - Danseurs : actions compactes */

@media (min-width: 641px) and (max-width: 1100px) {
    .admin-danseurs-table {
        width: 100%;
        min-width: 0;
    }
}

@media (min-width: 1101px) {
    .admin-danseurs-table {
        min-width: 950px;
    }
}

@media (min-width: 641px) and (max-width: 1100px) {
    .admin-danseurs-table th:last-child,
    .admin-danseurs-table td[data-label="Actions"] {
        width: auto;
        min-width: 0;
    }

    .admin-danseurs-table .admin-danseurs-actions {
        flex-wrap: wrap !important;
        width: 100%;
        justify-content: flex-end;
    }
}

@media (min-width: 1101px) {
    .admin-danseurs-table th:last-child,
    .admin-danseurs-table td[data-label="Actions"] {
        width: 200px;
        min-width: 200px;
    }
}

/* Administration / Danseurs :
   conserver le bouton Modifier à droite,
   même lorsqu'il est seul. */

.admin-danseur-mobile-summary {
    display: none;
}

/* Admin / Danseurs : carte et filtres */
.admin-danseurs-list-card > .table-header-line {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 14px;
}

.admin-danseurs-list-card > .table-header-line h2 {
    margin: 0;
}

.admin-danseurs-list-card > .table-header-line .muted-text {
    margin: 0;
    padding: 6px 10px;
    border-radius: 999px;
    background: #f1f5f9;
    font-size: 12px;
    white-space: nowrap;
}

.admin-danseurs-list-card > .filters-row {
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 10px;
    width: 100%;
    box-sizing: border-box;
    margin: 0 0 14px;
    padding: 10px;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #f8fafc;
}

.admin-danseurs-list-card > .filters-row > div {
    flex: 0 1 220px;
    min-width: 0;
    max-width: 100%;
}

.admin-danseurs-list-card > .filters-row input,
.admin-danseurs-list-card > .filters-row select {
    width: 100%;
    box-sizing: border-box;
}

@media (max-width: 640px) {
    .admin-danseurs-list-card > .filters-row {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
    }

    .admin-danseurs-list-card > .filters-row > div {
        flex: 0 0 auto;
        width: 100%;
        max-width: 100%;
    }
}

.admin-danseurs-table .admin-danseurs-actions {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    justify-content: flex-end !important;
    width: 100%;
    max-width: 100%;
    gap: 6px;
    margin: 0;
}

@media (min-width: 641px) and (max-width: 1100px) {
    .admin-danseurs-table .admin-danseurs-actions {
        flex-wrap: wrap !important;
        justify-content: flex-end;
        width: 100%;
    }
}

/* Administration / Danseurs : centrer les âges sur PC */
@media (min-width: 641px) {
    .admin-danseurs-table th:nth-child(3),
    .admin-danseurs-table td[data-label="Âge"] {
        text-align: center;
        vertical-align: middle;
    }

    .admin-danseurs-table td[data-label="Âge"] .muted-text {
        display: inline-block;
        margin-top: 3px;
    }
}


.admin-danseurs-table .admin-danseurs-actions .btn {
    display: inline-flex;
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: none;
    margin: 0 !important;
    white-space: nowrap;
}

@media (max-width: 640px) {
    .admin-danseurs-table td[data-label="Actions"] {
        min-width: 0;
    }

    .admin-danseurs-table .admin-danseurs-actions {
        flex-wrap: wrap !important;
        width: 100%;
    }
}

.inline-form {
    display: inline;
    margin: 0;
}

.email-demo-form {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}

.email-demo-field {
    flex: 0 1 500px;
    min-width: 280px;
}

.email-demo-field select {
    width: 100%;
}

.email-demo-actions {
    flex: 0 0 auto;
}

@media (max-width: 640px) {
    .email-demo-form {
        align-items: stretch;
    }

    .email-demo-field,
    .email-demo-actions {
        flex: 1 1 100%;
        min-width: 0;
    }

    .email-demo-actions button {
        width: 100%;
    }
}

/* Boutons / badges / alertes
   ========================================================= */


button,
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    gap: 6px;
    min-height: 36px;
    padding: 8px 13px;
    border: 0;
    border-radius: 8px;
    background: #243b53;
    color: #ffffff;
    font: inherit;
    font-weight: 700;
    line-height: 1.1;
    cursor: pointer;
    text-decoration: none;
    white-space: nowrap;
}


button:hover,
.btn:hover {
    background: #102a43;
    text-decoration: none;
}

.btn-secondary {
    background: #e2e8f0;
    color: #1f2933;
}

.btn-secondary:hover {
    background: #cbd5e1;
}

.btn-success,
button.btn-success {
    background: #2f855a;
    color: #ffffff;
}

.btn-success:hover,
button.btn-success:hover {
    background: #276749;
}

.btn-danger,
button.btn-danger {
    background: #b42318;
    color: #ffffff;
}

.btn-danger:hover,
button.btn-danger:hover {
    background: #8a1c13;
}


.btn-delete-icon,
button.btn-delete-icon {
    box-sizing: border-box;
    flex-shrink: 0;
    width: 36px;
    min-width: 36px;
    max-width: 36px;
    height: 36px;
    min-height: 36px;
    max-height: 36px;
    padding: 0;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}


.btn-delete-icon img,
button.btn-delete-icon img {
    width: 16px;
    height: 16px;
    display: block;
    object-fit: contain;
    pointer-events: none;
}

.btn-warning,
button.btn-warning {
    background: #b7791f;
    color: #ffffff;
}

.btn-warning:hover,
button.btn-warning:hover {
    background: #975a16;
}

.badge {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 3px 8px;
    border-radius: 999px;
    background: #e2e8f0;
    color: #334155;
    font-size: 12px;
    font-weight: 800;
    line-height: 1;
    white-space: nowrap;
}

.badge-ok {
    background: #dcfce7;
    color: #166534;
}

.badge-warn {
    background: #fef3c7;
    color: #92400e;
}

.dossards-status-legend {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}

.dossards-status-legend-item {
    display: inline-flex;
    align-items: center;
}

.club-dossards-table td[data-label="Dossard"] .badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    padding: 4px 10px;
    white-space: nowrap;
    font-weight: 700;
    line-height: 1;
    vertical-align: middle;
}

.badge-dossard-locked {
    flex-direction: column;
    justify-content: center;
    white-space: normal;
    text-align: center;
    line-height: 1.15;
}

.badge-dossard-locked span {
    display: block;
}

.licences-status-with-info {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}

/* Licences / Validation des dossards :
   badge et icône d'information solidaires */
.licences-dossards-table .licences-status-with-info {
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 5px;
    max-width: 100%;
    min-width: 0;
    vertical-align: middle;
}

.licences-dossards-table .licences-status-with-info > .badge {
    flex: 0 1 auto;
    min-width: 0;
    max-width: 100%;
    height: auto;
    white-space: normal;
    text-align: center;
    line-height: 1.25;
}

.licences-dossards-table .licences-status-with-info > .licences-info-tooltip {
    flex: 0 0 20px;
    width: 20px;
    min-width: 20px;
    height: 20px;
}

.licences-info-tooltip {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    cursor: pointer;
    outline: none;
}

.licences-info-icon {
    display: block;
    width: 15px;
    height: 15px;
    object-fit: contain;
}

.licences-info-icon-active {
    display: none;
}

.licences-info-tooltip:hover .licences-info-icon-default,
.licences-info-tooltip:active .licences-info-icon-default,
.licences-info-tooltip:focus .licences-info-icon-default {
    display: none;
}

.licences-info-tooltip:hover .licences-info-icon-active,
.licences-info-tooltip:active .licences-info-icon-active,
.licences-info-tooltip:focus .licences-info-icon-active {
    display: block;
}

.licences-info-tooltip-content {
    position: absolute;
    z-index: 1200;
    left: 50%;
    top: calc(100% + 8px);
    display: none;
    width: max-content;
    min-width: 190px;
    max-width: 300px;
    padding: 9px 11px;
    border-radius: 8px;
    background: #1f2933;
    color: #ffffff;
    box-shadow: 0 6px 18px rgba(15, 23, 42, 0.2);
    font-size: 12px;
    font-weight: 400;
    line-height: 1.4;
    text-align: left;
    white-space: normal;
    transform: translateX(-50%);
}

.licences-info-tooltip-content strong {
    display: block;
    margin-bottom: 4px;
    color: #ffffff;
}

.licences-info-tooltip-content span {
    display: block;
}

.licences-info-tooltip:hover .licences-info-tooltip-content,
.licences-info-tooltip:focus .licences-info-tooltip-content {
    display: block;
}

@media (max-width: 640px) {
    .licences-info-tooltip-content {
        position: fixed;
        z-index: 2000;
        left: 12px;
        right: 12px;
        top: auto;
        bottom: 18px;
        width: auto;
        min-width: 0;
        max-width: none;
        transform: none;
    }

    .licences-info-tooltip-content strong {
        color: #ffffff !important;
    }
}

.badge-off {
    background: #fee2e2;
    color: #991b1b;
}

.alert {
    margin-bottom: 16px;
    padding: 12px 14px;
    border-radius: 10px;
    border: 1px solid transparent;
}

.alert-success {
    background: #ecfdf3;
    color: #166534;
    border-color: #bbf7d0;
}

.alert-error {
    background: #fef2f2;
    color: #991b1b;
    border-color: #fecaca;
}

.alert-info {
    background: #eff6ff;
    color: #1e3a8a;
    border-color: #bfdbfe;
}

.licence-unsaved-modal {
    position: fixed;
    inset: 0;
    z-index: 3000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(15, 23, 42, 0.45);
}

.licence-unsaved-modal[hidden] {
    display: none;
}

.licence-unsaved-dialog {
    width: min(460px, 100%);
}

.licence-unsaved-alert {
    margin: 0;
    padding: 18px;
    box-shadow: 0 18px 45px rgba(15, 23, 42, 0.22);
}

.licence-unsaved-alert strong {
    display: block;
    margin-bottom: 8px;
    font-size: 16px;
}

.licence-unsaved-alert p {
    margin: 0;
    line-height: 1.45;
}

.licence-unsaved-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 16px;
    flex-wrap: wrap;
}

body.modal-open {
    overflow: hidden;
}

.flash-toast {
    position: fixed;
    top: 112px;
    right: 22px;
    z-index: 1500;
    width: fit-content;
    max-width: min(420px, calc(100vw - 44px));
    pointer-events: none;
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.35s ease, transform 0.35s ease;
}

.flash-toast.is-hiding {
    opacity: 0;
    transform: translateY(-8px);
}

.flash-toast .alert {
    margin: 0;
    padding: 12px 16px;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.5;
    white-space: normal;
    overflow-wrap: anywhere;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.22);
}

/* Notification d'avertissement */

.alert-warning {
    background: #fff7e6;
    color: #92400e;
    border-color: #f5c56b;
}

/* Notifications visibles au-dessus de la modale des présences */

body.club-presences-modal-open .flash-toast {
    position: fixed;
    z-index: 4000;
    top: auto;
    bottom: 24px;
    right: 24px;
    left: auto;
    width: min(460px, calc(100vw - 32px));
    max-width: none;
    box-sizing: border-box;
}

body.club-presences-modal-open .flash-toast .alert {
    border-radius: 10px;
}

/* Adaptation des notifications sur smartphone */

@media (max-width: 640px) {
    body.club-presences-modal-open .flash-toast {
        top: auto;
        bottom: 16px;
        left: 16px;
        right: 16px;
        width: auto;
        max-width: none;
    }

    body.club-presences-modal-open .flash-toast .alert {
        padding: 14px 16px;
        font-size: 13px;
        line-height: 1.45;
    }

    }

/* Présences et restauration :
   éviter le survol persistant sur les appareils tactiles,
   en portrait comme en paysage. */

@media (hover: none), (pointer: coarse) {
    .category-modal[data-presences-modal]
    .club-presences-body .data-table tr:hover td {
        background: transparent !important;
    }

    .category-modal[data-presences-modal]
    .club-presences-body .data-table tr:hover {
        background: #ffffff !important;
    }
}/* Tableaux
   ========================================================= */

.table-wrap {
    width: 100%;
    overflow-x: auto;
}

.data-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}

.data-table th,
.data-table td {
    padding: 10px 12px;
    border-bottom: 1px solid #e2e8f0;
    text-align: left;
    vertical-align: top;
}

.data-table th {
    background: #f8fafc;
    color: #334155;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.data-table tr:hover td {
    background: #f8fafc;
}

/* Login
   ========================================================= */

.login-wrapper {
    max-width: 440px;
    margin: 70px auto;
    padding: 28px 30px;
}

.login-wrapper h1 {
    margin: 0 0 12px;
    color: #102a43;
    font-size: 30px;
    line-height: 1.15;
}

.login-kicker {
    display: inline-flex;
    margin-bottom: 12px;
    padding: 5px 9px;
    border-radius: 999px;
    background: #eef2f7;
    color: #243b53;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.password-change-card .muted-text {
    margin: 0 0 12px;
    line-height: 1.5;
}

.password-rules {
    margin: 0 0 16px;
    padding: 10px 12px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #f8fafc;
    color: #52616b;
    font-size: 13px;
}

.login-wrapper form {
    display: grid;
    gap: 14px;
}

.login-wrapper .form-row {
    display: block;
}

.login-wrapper label {
    display: block;
    margin-bottom: 6px;
}

.login-wrapper button {
    justify-self: start;
    margin-top: 4px;
}

.login-password-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px 16px;
}

.login-password-actions button {
    margin-top: 0;
}

.login-password-actions a,
.login-secondary-action a {
    color: #315b8a;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
}

.login-password-actions a:hover,
.login-secondary-action a:hover {
    text-decoration: underline;
}

.login-secondary-action {
    margin: 16px 0 0;
    font-size: 13px;
}

.password-reset-account {
    margin: 12px 0 16px;
    padding: 10px 12px;
    border: 1px solid #d7dee7;
    border-radius: 6px;
    background: #f7f9fb;
    font-size: 14px;
    line-height: 1.5;
}

.password-reset-account strong {
    color: #26384d;
}

.password-reset-account span {
    color: #647487;
    font-size: 13px;
}

/* =========================================================
   02 - COMPOSANTS ET AFFICHAGES COMMUNS
   ========================================================= */

/* Cartes championnats / inscriptions
   ========================================================= */

.championnats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
    margin-top: 14px;
}

.championnat-card {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 14px;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    background: #ffffff;
    color: inherit;
    text-decoration: none;
    transition: 0.15s ease;
}

.championnat-card:hover {
    border-color: #486581;
    background: #f8fafc;
    text-decoration: none;
}

.championnat-card.is-active {
    border-color: #1f2933;
    background: #eef2f7;
}

.championnat-card span {
    color: #7b8794;
    font-size: 13px;
}

.inscription-group {
    margin-top: 12px;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    background: #ffffff;
    overflow: hidden;
}

.inscription-group summary {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 14px;
    cursor: pointer;
    background: #f8fafc;
}

.inscription-group summary span {
    color: #7b8794;
    font-size: 13px;
}

/* Responsive
   ========================================================= */

/*
 * Navigation compacte :
 * - smartphones portrait / paysage
 * - tablettes portrait / paysage
 *
 * Le seuil CSS doit rester identique au seuil JavaScript
 * défini dans includes/footer.php.
 */
@media (max-width: 1100px) {
    .site-header {
        position: sticky;
        top: 0;
        z-index: 1000;
        width: 100%;
        overflow: visible;
    }

    .site-header-inner {
        width: 100%;
        max-width: 1180px;
        min-height: 0;
        margin: 0 auto;
        padding: 8px 20px;
        display: grid;
        grid-template-columns: minmax(76px, 96px) minmax(92px, 1fr) minmax(76px, 96px);
        align-items: center;
        gap: 10px;
    }

    .site-logo-link {
        grid-column: 1;
        grid-row: 1;
        justify-self: start;
        min-width: 0;
    }

    .site-logo-link img {
        display: block;
        max-height: 54px;
        max-width: 96px;
        object-fit: contain;
    }

    .nav-toggle {
        grid-column: 2;
        grid-row: 1;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        justify-self: center;
        width: 92px;
        min-width: 92px;
        min-height: 36px;
        padding: 8px 10px;
        margin: 0;
        border: 0;
        border-radius: 8px;
        background: #243b53;
        color: #ffffff;
        font-size: 14px;
        font-weight: 800;
        cursor: pointer;
    }

    .nav-toggle-icon {
        position: relative;
        flex: 0 0 18px;
        width: 18px;
        height: 14px;
        margin-right: 7px;
    }

    .nav-toggle-icon::before,
    .nav-toggle-icon::after,
    .nav-toggle-icon span {
        position: absolute;
        left: 0;
        width: 18px;
        height: 2px;
        border-radius: 999px;
        background: currentColor;
        transition:
            transform 0.18s ease,
            opacity 0.18s ease,
            top 0.18s ease,
            bottom 0.18s ease;
    }

    .nav-toggle-icon::before,
    .nav-toggle-icon::after {
        content: "";
    }

    .nav-toggle-icon::before {
        top: 0;
    }

    .nav-toggle-icon span {
        top: 6px;
    }

    .nav-toggle-icon::after {
        bottom: 0;
    }

    .site-header.is-nav-open .nav-toggle-icon::before {
        top: 6px;
        transform: rotate(45deg);
    }

    .site-header.is-nav-open .nav-toggle-icon span {
        opacity: 0;
    }

    .site-header.is-nav-open .nav-toggle-icon::after {
        bottom: 6px;
        transform: rotate(-45deg);
    }

    .site-nav {
        position: fixed;
        top: 70px;
        left: 0;
        right: 0;
        bottom: auto;
        z-index: 1100;
        display: none;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        max-height: calc(100vh - 70px);
        max-height: calc(100dvh - 70px);
        margin: 0;
        padding: 8px 20px 10px;
        border-top: 1px solid #e2e8f0;
        border-bottom: 1px solid #d9e2ec;
        background: #ffffff;
        box-shadow: 0 8px 18px rgba(15, 23, 42, 0.08);
        flex-direction: column;
        align-items: stretch;
        flex-wrap: nowrap;
        gap: 4px;
        overflow-x: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
        touch-action: pan-y;
    }

    .site-header.is-nav-open .site-nav {
        display: flex !important;
    }

    .site-nav > a,
    .nav-dropbtn {
        display: flex;
        align-items: center;
        justify-content: flex-start;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        min-height: 38px;
        margin: 0;
        padding: 8px 10px;
        border: 0;
        border-radius: 8px;
        background: transparent;
        color: #243b53;
        font: inherit;
        font-size: 14px;
        font-weight: 600;
        text-align: left;
        white-space: normal;
    }

    .site-nav > a:hover,
    .site-nav > a:focus,
    .nav-dropbtn:hover,
    .nav-dropbtn:focus {
        background: #f1f5f9;
        color: #102a43;
        text-decoration: none;
    }

    .nav-dropdown {
        position: static;
        display: block;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        margin: 0;
    }

    .nav-dropdown:hover .nav-dropbtn {
        background: transparent;
        color: #243b53;
    }

    .nav-dropdown:hover .nav-submenu {
        display: none;
    }

    .nav-dropbtn {
        position: relative;
        padding-right: 38px;
        cursor: pointer;
    }

    .nav-dropbtn::after {
        content: "";
        position: absolute;
        right: 14px;
        top: 50%;
        width: 7px;
        height: 7px;
        border-right: 2px solid #627d98;
        border-bottom: 2px solid #627d98;
        transform: translateY(-65%) rotate(45deg);
        transition: transform 0.16s ease;
    }

    .nav-dropdown.is-open .nav-dropbtn {
        background: #eaf2fb;
        color: #102a43;
        font-weight: 700;
    }

    .nav-dropdown.is-open .nav-dropbtn::after {
        transform: translateY(-35%) rotate(225deg);
    }

    .nav-submenu {
        position: static;
        display: none;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        margin: 3px 0 5px;
        padding: 2px 0 2px 12px;
        border: 0;
        border-left: 2px solid #d9e2ec;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
        overflow: visible;
    }

    .nav-dropdown.is-open .nav-submenu {
        display: block;
    }

    .nav-submenu a,
    .nav-submenu button {
        display: flex;
        align-items: center;
        justify-content: flex-start;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        min-height: 34px;
        margin: 0;
        padding: 7px 10px;
        border: 0;
        border-radius: 7px;
        background: transparent;
        color: #334e68;
        font: inherit;
        font-size: 13px;
        font-weight: 500;
        text-align: left;
        white-space: normal;
        overflow-wrap: break-word;
        word-break: normal;
        cursor: pointer;
    }

    .nav-submenu a:hover,
    .nav-submenu a:focus,
    .nav-submenu button:hover,
    .nav-submenu button:focus {
        background: #f1f5f9;
        color: #102a43;
        text-decoration: none;
    }

    .site-nav > a.is-active,
    .nav-dropdown.is-current > .nav-dropbtn,
    .nav-submenu a.is-active {
        background: #eaf2fb;
        color: #102a43;
        font-weight: 700;
        box-shadow: inset 3px 0 0 #243b53;
    }

    .nav-backup-form {
        width: 100%;
        max-width: 100%;
        margin: 0;
    }

    .nav-user {
        grid-column: 3;
        grid-row: 1;
        min-width: 0;
        max-width: 96px;
        justify-self: end;
        color: #52616b;
        font-size: 13px;
        text-align: right;
        overflow-wrap: break-word;
    }
}

/*
 * Réorganisation générale des pages sur écran réduit.
 * Ce seuil reste indépendant du menu.
 */
@media (max-width: 1100px), (max-width: 1400px) and (any-pointer: coarse) {
    .page-header {
        position: static;
        top: auto;
        z-index: auto;
    }

    .page-header::before {
        display: none;
    }
}

@media (max-width: 900px) {
    .content-grid {
        grid-template-columns: 1fr;
    }

    .page-header-with-action {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media (max-width: 620px) {
    .main-content {
        padding-left: 12px;
        padding-right: 12px;
    }

    .page-header {
        margin-left: -12px;
        margin-right: -12px;
        padding-left: 12px;
        padding-right: 12px;
    }

    .form-grid {
        grid-template-columns: 1fr;
    }

    .filters-row,
    .filters-actions,
    .actions-row {
        align-items: stretch;
        flex-direction: column;
    }

    .filters-row > div,
    .filters-row button,
    .filters-row .btn,
    .actions-row button,
    .actions-row .btn {
        width: 100%;
    }

    .dossards-reset-form button {
        width: 100%;
    }
}

/* Impression
   ========================================================= */

@page {
    size: A4 portrait;
    margin: 10mm;
}

@media print {
    .no-print,
    .print-actions,
    .site-header,
    .page-header,
    footer,
    .confirm-modal {
        display: none !important;
    }

    html,
    body {
        height: auto;
        background: #ffffff;
    }

    .app-container {
        min-height: 0;
    }

    .main-content {
        max-width: none;
        padding: 0;
    }

    .card {
        box-shadow: none;
        border-color: #000000;
    }
}


.form-grid-compact {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    align-items: end;
}

/* Admin / Danseur : date de naissance sur iPhone */
@media (max-width: 640px) {
    .main-content .form-grid > div:has(> input#date_naissance) {
        box-sizing: border-box;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        overflow: hidden;
    }

    .main-content .form-grid input#date_naissance {
        display: block;
        -webkit-appearance: none;
        appearance: none;
        box-sizing: border-box !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        margin: 0 !important;
        padding: 8px 10px !important;
        font-size: 16px;
        line-height: 22px;
        text-align: left;
        overflow: hidden;
    }

    .main-content .form-grid input#date_naissance::-webkit-date-and-time-value {
        min-height: 22px;
        margin: 0;
        padding: 0;
        text-align: left;
    }
}


.form-actions-inline {
    display: flex;
    align-items: end;
}

.licence-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.licence-actions button[hidden] {
    display: none;
}

.licence-summary-card {
    padding: 14px 16px;
}

.licence-summary-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.licence-summary-header h2 {
    margin: 0 0 2px;
}

.licence-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px 20px;
}

.licence-summary-item {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.licence-summary-item > .muted-text {
    font-size: 11.5px;
}

.licence-summary-type-line {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.licence-summary-type-line .badge {
    margin: 0;
}

.licence-summary-disciplines {
    color: #64748b;
    font-size: 11.5px;
    line-height: 1.25;
}

.licence-summary-certificate {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.licence-summary-certificate .badge {
    margin: 0;
}

.licence-summary-certificate-btn {
    min-height: 26px;
    padding: 3px 8px;
    font-size: 11px;
}

.licence-type-editor {
    margin-top: 13px;
    padding-top: 12px;
    border-top: 1px solid #e2e8f0;
}

.licence-type-editor-grid {
    display: grid;
    grid-template-columns: minmax(250px, 0.9fr) minmax(320px, 1.5fr) auto;
    gap: 12px 18px;
    align-items: end;
}

.licence-type-editor-select,
.licence-type-editor-disciplines {
    min-width: 0;
}

.licence-type-editor-select label,
.licence-type-editor-disciplines > label {
    display: block;
    margin-bottom: 5px;
}

.licence-type-editor-select select {
    width: 100%;
}

.licence-formation-options {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(125px, 1fr));
    gap: 6px;
}

.licence-formation-option {
    display: flex;
    align-items: center;
    gap: 7px;
    min-height: 34px;
    margin: 0;
    padding: 6px 9px;
    border: 1px solid #dbe3ec;
    border-radius: 7px;
    background: #f8fafc;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}

.licence-formation-option:hover {
    border-color: #cbd5e1;
    background: #f1f5f9;
}

.licence-formation-option input {
    margin: 0;
    flex: 0 0 auto;
}

.licence-type-editor-action {
    display: flex;
    align-items: flex-end;
}

.licence-type-editor-action button {
    min-height: 36px;
    padding: 7px 12px;
    white-space: nowrap;
}

.licence-summary-comment {
    margin: 12px 0 0;
}

.licence-summary-state {
    display: flex;
    align-items: center;
    gap: 6px 12px;
    flex-wrap: wrap;
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid #e2e8f0;
    font-size: 12px;
}

@media (max-width: 1050px) {
    .licence-summary-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .licence-type-editor-grid {
        grid-template-columns: minmax(240px, 1fr) minmax(300px, 1.4fr);
    }

    .licence-type-editor-action {
        grid-column: 1 / -1;
    }
}

@media (max-width: 700px) {
    .licence-summary-card {
        padding: 13px;
    }

    .licence-summary-grid {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .licence-summary-header {
        align-items: flex-start;
    }

    .licence-type-editor-grid {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .licence-formation-options {
        grid-template-columns: 1fr;
    }

    .licence-type-editor-action {
        grid-column: auto;
    }

    .licence-type-editor-action button {
        width: 100%;
    }
}
.section-title-row {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 12px;
}

.section-title-row h2 {
    margin-bottom: 4px;
}

.championship-list {
    display: grid;
    gap: 10px;
}

.championship-item {
    display: grid;
    grid-template-columns: minmax(300px, 1fr) 220px 205px;
    grid-template-areas:
        "main dates status"
        "main actions actions";
    gap: 10px 18px;
    align-items: center;
    padding: 14px 16px;
    border: 1px solid #d9e2ec;
    border-radius: 14px;
    background: #ffffff;
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.04);
}

.championship-main {
    grid-area: main;
    display: flex;
    align-items: center;
    gap: 13px;
    min-width: 0;
}

.championship-number {
    display: flex;
    flex: 0 0 50px;
    align-items: center;
    justify-content: center;
    width: 50px;
    height: 50px;
    border-radius: 13px;
    background: #1f2933;
    color: #ffffff;
    font-size: 24px;
    font-weight: 800;
}

.championship-main h3 {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0 0 3px;
    font-size: 17px;
}

.championship-main p {
    margin: 2px 0;
}

.championship-dates {
    grid-area: dates;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
    gap: 0;
}

.championship-dates > div {
    min-width: 0;
}

.championship-dates > div + div {
    padding-left: 14px;
    border-left: 1px solid #e5e7eb;
}

.championship-dates span {
    display: block;
    margin-bottom: 2px;
    color: #7b8794;
    font-size: 11px;
}

.championship-dates strong {
    display: block;
    font-size: 14px;
    white-space: nowrap;
}

.championship-status {
    grid-area: status;
    justify-self: end;
    width: 205px;
    text-align: right;
    white-space: nowrap;
}

.championship-status .badge {
    margin-left: auto;
}

.championship-actions {
    grid-area: actions;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 7px;
    padding-top: 2px;
}


.championship-item .championship-actions .btn,
.championship-item .championship-actions button {
    box-sizing: border-box;
    min-height: 36px;
}

@media (max-width: 640px) {
    .championship-item .championship-actions .btn,
    .championship-item .championship-actions button {
        min-height: 40px;
    }
}


.championship-primary-action {
    font-weight: 800;
}

/* Liste des championnats : bouton de gestion compact */
@media (max-width: 1100px) {
    .championship-item .championship-actions {
        justify-content: flex-end;
    }

    .championship-item .championship-primary-action {
        display: inline-flex !important;
        flex: 0 0 auto !important;
        width: auto !important;
        min-width: 0 !important;
        max-width: 100%;
        align-self: flex-end;
        justify-content: center;
        margin-left: auto;
    }
}

.championship-more-actions {
    position: relative;
}

.championship-more-summary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    min-width: 42px;
    padding-left: 8px;
    padding-right: 8px;
    list-style: none;
    cursor: pointer;
    user-select: none;
}

.championship-more-summary::-webkit-details-marker {
    display: none;
}

.championship-more-actions[open] .championship-more-summary {
    background: #d9e2ec;
}

.championship-more-menu {
    position: absolute;
    right: 0;
    top: calc(100% + 6px);
    z-index: 30;
    width: 220px;
    padding: 6px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #ffffff;
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.16);
}

.championship-more-menu > a,
.championship-more-menu button {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    width: 100%;
    min-height: 36px;
    padding: 8px 10px;
    border: 0;
    border-radius: 7px;
    background: transparent;
    color: #243b53;
    font: inherit;
    font-size: 13px;
    font-weight: 700;
    text-align: left;
    cursor: pointer;
    box-sizing: border-box;
}

.championship-more-menu > a:hover,
.championship-more-menu button:hover {
    background: #f1f5f9;
    text-decoration: none;
}

.championship-more-menu form {
    width: 100%;
    margin: 0;
}

.championship-more-menu .championship-menu-danger {
    justify-content: flex-start;
    color: #b42318;
    text-align: left;
}

@media (max-width: 1000px) {
    .championship-item {
        grid-template-columns: 1fr auto;
        grid-template-areas:
            "main status"
            "dates dates"
            "actions actions";
    }

    .championship-dates,
    .championship-actions {
        padding-left: 63px;
    }

    .championship-actions {
        justify-content: flex-start;
    }

    .championship-item .championship-actions .btn,
    .championship-item .championship-actions button {
        width: fit-content;
        max-width: 320px;
    }
}

@media (max-width: 700px) {
    .championship-item {
        grid-template-columns: 1fr;
        grid-template-areas:
            "main"
            "dates"
            "status"
            "actions";
        gap: 10px;
    }

    .championship-status {
        width: auto;
        justify-self: stretch;
        justify-content: flex-start;
        padding-left: 63px;
        text-align: left;
    }

    .championship-status .badge {
        margin-left: 0;
        margin-right: auto;
    }

    .championship-actions {
        justify-content: flex-start;
    }

    .championship-more-menu {
        right: auto;
        left: 0;
    }
}

@media (max-width: 520px) {
    .championship-main {
        align-items: flex-start;
        flex-direction: row;
    }

    .championship-number {
        width: 42px;
        height: 42px;
        flex-basis: 42px;
        font-size: 21px;
    }

    .championship-dates {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }

    .championship-dates > div {
        padding: 8px 10px;
        border: 1px solid #e5e7eb;
        border-radius: 9px;
        background: #f8fafc;
    }

    .championship-dates > div + div {
        padding-left: 10px;
        border-left: 1px solid #e5e7eb;
    }

    .championship-item .championship-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        width: 100%;
    }

    .championship-item .championship-actions .btn,
    .championship-item .championship-actions button,
    .championship-item .championship-actions form {
        width: 100%;
    }

    .championship-item .championship-actions .championship-more-actions {
        width: 100%;
    }

    .championship-item .championship-actions .championship-more-summary {
        width: 100%;
    }

    .championship-more-menu {
        width: min(260px, calc(100vw - 64px));
    }
}

.compact-filter-form {
    margin-bottom: 12px;
}

.compact-filter-form > div {
    max-width: 420px;
}

.confirm-modal {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 9999;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.confirm-modal.is-visible {
    display: flex;
}

.confirm-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
}

.confirm-modal-box {
    position: relative;
    width: min(420px, 100%);
    background: #ffffff;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
    box-shadow: 0 20px 45px rgba(15, 23, 42, 0.25);
    padding: 22px;
}

.confirm-modal-box h2 {
    margin: 0 0 10px;
    font-size: 22px;
    color: #102a43;
}

.confirm-modal-box p {
    margin: 0;
    color: #334e68;
    line-height: 1.45;
}

.confirm-modal-comment {
    margin-top: 16px;
}

.confirm-modal-comment label {
    display: block;
    margin-bottom: 6px;
    font-weight: 700;
    color: #102a43;
}

.confirm-modal-comment textarea {
    width: 100%;
    min-height: 96px;
    resize: vertical;
}

.confirm-modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 22px;
}

.results-table th:first-child,
.results-table td:first-child,
.results-table th:nth-child(2),
.results-table td:nth-child(2),
.results-table th:last-child,
.results-table td:last-child {
    text-align: center;
    white-space: nowrap;
}

/* FDO / Résultats : présentation mobile repliable */

.results-mobile-list {
    display: none;
}

@media (max-width: 640px) {

    .public-results-card {
        overflow-x: visible;
    }

    .public-results-card::after {
        display: none;
        content: none;
    }

    .public-results-card > .results-table {
        display: none;
    }

    .results-mobile-list {
        display: flex;
        flex-direction: column;
        gap: 12px;
        width: 100%;
    }

    .results-mobile-card {
        display: block;
        width: 100%;
        min-width: 0;
        border: 1px solid #d9e2ec;
        border-radius: 12px;
        background: #ffffff;
        overflow: hidden;
    }

    .results-mobile-summary {
        display: grid;
        grid-template-columns: 48px minmax(0, 1fr) auto 14px;
        align-items: center;
        column-gap: 10px;
        row-gap: 10px;
        padding: 12px;
        cursor: pointer;
        list-style: none;
    }

    .results-mobile-summary::-webkit-details-marker {
        display: none;
    }

    .results-mobile-summary::marker {
    content: "";
}

/* Résultats mobiles : masquer la flèche générique des rubriques */
.results-mobile-card > .results-mobile-summary::after {
    display: none !important;
    content: none !important;
}

    .results-mobile-summary:focus-visible {
        outline: 2px solid #486581;
        outline-offset: -3px;
        border-radius: 10px;
    }

    .results-mobile-rank {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 48px;
        min-height: 48px;
        padding: 5px;
        border-radius: 10px;
        background: #eef2f7;
        color: #243b53;
        font-size: 19px;
        font-weight: 800;
        text-align: center;
        box-sizing: border-box;
    }

    .results-mobile-identity {
        display: flex;
        flex-direction: column;
        min-width: 0;
        gap: 4px;
        overflow-wrap: anywhere;
    }

    .results-mobile-identity > strong {
        color: #1f2933;
        font-size: 14px;
        line-height: 1.3;
    }

    .results-mobile-dancers {
        color: #334e68;
        font-size: 13px;
        line-height: 1.35;
    }

    .results-mobile-club {
        color: #7b8794;
        font-size: 12px;
        line-height: 1.35;
    }

    .results-mobile-total {
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        gap: 2px;
        color: #102a43;
        white-space: nowrap;
    }

    .results-mobile-total strong {
        font-size: 23px;
        line-height: 1;
        font-weight: 800;
    }

    .results-mobile-total small {
        color: #64748b;
        font-size: 10px;
        font-weight: 700;
    }

        .results-mobile-chevron {
        display: inline-block;
        flex: 0 0 auto;
        width: 9px;
        height: 9px;
        margin-top: -4px;
        border-right: 2px solid #64748b;
        border-bottom: 2px solid #64748b;
        transform: rotate(45deg);
        transition: transform 0.15s ease;
    }

    .results-mobile-card[open] .results-mobile-chevron {
        margin-top: 4px;
        transform: rotate(225deg);
    }

    .results-mobile-toggle-text {
        grid-column: 1 / -1;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        color: #64748b;
        font-size: 12px;
        text-align: center;
    }

    .results-mobile-open-text {
        display: none;
    }

    .results-mobile-card[open] .results-mobile-closed-text {
        display: none;
    }

    .results-mobile-card[open] .results-mobile-open-text {
        display: inline;
    }

    .results-mobile-details {
        display: flex;
        flex-direction: column;
        gap: 0;
        padding: 12px;
        border-top: 1px solid #e2e8f0;
        background: #f8fafc;
    }

    .results-mobile-details-title {
        margin-bottom: 10px;
        color: #52616b;
        font-size: 12px;
        text-transform: uppercase;
    }

    .results-mobile-detail-row {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 12px;
        padding: 9px 0;
        border-bottom: 1px solid #e2e8f0;
        font-size: 13px;
        line-height: 1.4;
    }

    .results-mobile-detail-row:last-child {
        border-bottom: 0;
    }

    .results-mobile-detail-row > span {
        min-width: 0;
        overflow-wrap: anywhere;
    }

    .results-mobile-detail-row > strong {
        flex: 0 0 auto;
        color: #102a43;
        white-space: nowrap;
    }

    .results-mobile-coupe {
        display: block;
        margin-top: 3px;
        color: #7b8794;
        font-size: 11px;
    }
}
/* =========================================================
   ACCUEIL UTILISATEUR
   ========================================================= */

.user-home-welcome {
    margin: 22px 0 20px;
    padding: 28px 30px;
    border-radius: 18px;
    background: linear-gradient(135deg, #102a43, #243b53);
    color: #ffffff;
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.14);
}

.user-home-kicker {
    display: inline-flex;
    margin-bottom: 10px;
    padding: 5px 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.14);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.user-home-welcome h1 {
    margin: 0 0 8px;
    font-size: 32px;
    line-height: 1.1;
}

.user-home-welcome p {
    margin: 0;
    color: #d9e2ec;
    font-size: 16px;
    line-height: 1.45;
}

.user-home-welcome .user-home-question {
    margin-top: 6px;
    color: #ffffff;
    font-weight: 700;
}

.user-home-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    padding-bottom: 4px;
}

.user-home-action {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: 170px;
    color: #1f2933;
    text-decoration: none;
    transition:
        border-color 0.15s ease,
        box-shadow 0.15s ease,
        transform 0.15s ease;
}

.user-home-action:hover {
    border-color: #9fb3c8;
    box-shadow: 0 6px 16px rgba(15, 23, 42, 0.1);
    transform: translateY(-1px);
    text-decoration: none;
}

.user-home-action h2 {
    margin: 0 0 8px;
    color: #102a43;
    font-size: 20px;
}

.user-home-action p {
    margin: 0;
    color: #52616b;
    line-height: 1.45;
}

.user-home-action-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 22px;
    color: #243b53;
    font-weight: 800;
}

.user-home-action-icon {
    display: block;
    width: 15px;
    height: 15px;
    object-fit: contain;
}

@media (max-width: 900px) {
    .user-home-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .user-home-welcome {
        margin-top: 16px;
        padding: 22px;
    }

    .user-home-welcome h1 {
        font-size: 28px;
    }

    .user-home-grid {
        grid-template-columns: 1fr;
    }

    .user-home-action {
        min-height: 0;
    }
}

/* =========================================================
   03 - SITE PUBLIC
   ========================================================= */

/* Accueil public
   ========================================================= */

.home-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: 20px;
    align-items: stretch;
    margin: 22px 0 18px;
}

.home-hero-content {
    padding: 34px;
    border-radius: 18px;
    background: linear-gradient(135deg, #102a43, #243b53);
    color: #ffffff;
    box-shadow: 0 12px 26px rgba(15, 23, 42, 0.18);
}

.home-kicker {
    display: inline-flex;
    margin-bottom: 12px;
    padding: 5px 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.14);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.home-hero h1 {
    max-width: 760px;
    margin: 0 0 12px;
    font-size: 34px;
    line-height: 1.1;
}

.home-hero p {
    max-width: 680px;
    margin: 0;
    color: #d9e2ec;
    font-size: 16px;
    line-height: 1.45;
}

.home-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 22px;
}

.home-photo-card,
.home-poster-card {
    min-height: 260px;
    border-radius: 18px;
    overflow: hidden;
    background: #d9e2ec;
    border: 1px solid #d9e2ec;
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08);
}

.home-photo-card img,
.home-poster-card img {
    width: 100%;
    height: 100%;
    min-height: 260px;
    display: block;
    object-fit: cover;
}

.home-poster-card {
    position: relative;
}

.home-grid {
    display: grid;
    gap: 20px;
    align-items: start;
}

.home-grid-single {
    grid-template-columns: 1fr;
}

.home-grid-with-poster {
    grid-template-columns: 320px minmax(0, 1fr);
}

.home-events {
    display: grid;
    gap: 12px;
}

.home-event {
    display: grid;
    grid-template-columns: 70px 1fr;
    gap: 14px;
    align-items: center;
    padding: 12px;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    background: #f8fafc;
}

.home-event-date {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 58px;
    border-radius: 12px;
    background: #102a43;
    color: #ffffff;
}

.home-event-date strong {
    font-size: 24px;
    line-height: 1;
}

.home-event-date span {
    margin-top: 4px;
    font-size: 12px;
}

.home-event h3 {
    margin: 0 0 4px;
    color: #102a43;
    font-size: 17px;
}

.home-event p {
    margin: 0 0 3px;
    color: #334e68;
}

@media (max-width: 850px) {
    .home-hero,
    .home-grid-with-poster {
        grid-template-columns: 1fr;
    }

    .home-hero-content {
        padding: 24px;
    }

    .home-hero h1 {
        font-size: 28px;
    }

.home-photo-card,
.home-photo-card img,
.home-poster-card,
.home-poster-card img {
    min-height: 220px;
}
}

/* Pages publiques FDO
   ========================================================= */

/* Impression publique des dossards */
/* Visionneuse publique des dossards */
body.public-dossards-pdf-open {
    overflow: hidden;
}

.public-dossards-pdf-modal {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    inset: 0;
    z-index: 2500;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 14px;
}

.public-dossards-pdf-modal[hidden] {
    display: none;
}

.public-dossards-pdf-backdrop {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    inset: 0;
    background: rgba(15, 23, 42, 0.68);
}

.public-dossards-pdf-dialog {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 960px;
    width: min(100%, 960px);
    height: 92vh;
    max-height: 900px;
    height: min(92dvh, 900px);
    min-height: 0;
    overflow: hidden;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 20px 55px rgba(0, 0, 0, 0.25);
}

.public-dossards-pdf-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 16px;
    border-bottom: 1px solid #e2e8f0;
}

.public-dossards-pdf-header h2 {
    margin: 0;
    font-size: 1.1rem;
}

.public-dossards-pdf-close {
    flex-shrink: 0;
}

/* Le bouton de partage est destiné aux appareils tactiles. */
#public-dossards-pdf-share {
    display: none;
}

/* Apparence identique aux fermetures des référentiels. */
.public-dossards-pdf-header .category-modal-close {
    margin: 0;
}

.public-dossards-pdf-status {
    padding: 12px 16px;
    color: #475569;
    font-size: 0.85rem;
}

.public-dossards-pdf-frame {
    width: 100%;
    flex: 1;
    min-height: 0;
    border: 0;
    background: #f1f5f9;
}

.public-dossards-pdf-frame[hidden] {
    display: none;
}

.public-dossards-pdf-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
    padding: 12px 16px;
    border-top: 1px solid #e2e8f0;
    background: #fff;
}

@media (max-width: 600px) {
    .public-dossards-pdf-modal {
        padding: 0;
    }

    .public-dossards-pdf-dialog {
        width: 100%;
        height: 100dvh;
        border-radius: 0;
    }

    .public-dossards-pdf-header {
        padding-top: max(12px, env(safe-area-inset-top));
    }

    /* Boutons d'impression compacts et centrés */

    .public-dossards-pdf-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: center;
        align-items: stretch;
        column-gap: 10px;
        row-gap: 10px;
        padding: 12px 16px;
        padding-bottom: max(12px, env(safe-area-inset-bottom));
    }

    .public-dossards-pdf-actions > * {
        width: 100%;
        min-width: 0;
        max-width: 170px;
        margin: 0;
        text-align: center;
        white-space: normal;
    }

    /* Sur mobile, conserver le bouton Partager */

    #public-dossards-pdf-print {
        display: none;
    }

    #public-dossards-pdf-share {
        display: block;
        grid-column: 1 / -1;
        grid-row: 1;
        justify-self: center;
        width: 100%;
        max-width: 350px;
    }

    #public-dossards-pdf-download {
        grid-column: 1;
        grid-row: 2;
    }

    .public-dossards-pdf-actions
    > .public-dossards-pdf-close {
        grid-column: 2;
        grid-row: 2;
    }
}.public-dossards-card {
    width: 100%;
    max-width: none;
    box-sizing: border-box;
}

.public-dossards-filters {
    display: grid;
    grid-template-columns:
        minmax(220px, 2fr)
        minmax(160px, 1fr)
        minmax(160px, 1fr);
    gap: 14px;
    margin-bottom: 18px;
}

.public-dossards-filters > div {
    min-width: 0;
}

.public-dossards-filters input,
.public-dossards-filters select {
    width: 100%;
    min-width: 0;
}

.public-dossards-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 10px;
}

.public-dossards-selection-tools,
.public-dossards-print-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}

.public-dossards-print-actions form {
    margin: 0;
}

.public-dossards-results {
    margin: 12px 0;
    font-size: 0.85rem;
}

.public-dossards-list {
    display: grid;
    gap: 8px;
}

.public-dossard-item {
    display: grid;
    grid-template-columns:
        32px 90px minmax(0, 1fr) auto;
    align-items: center;
    gap: 14px;
    padding: 12px 14px;
    border: 1px solid #e2e8f0;
    border-radius: 9px;
    background: #f8fafc;
}

.public-dossard-item[hidden] {
    display: none;
}

.public-dossard-check {
    display: flex;
    align-items: center;
    justify-content: center;
}

.public-dossard-check input {
    width: 19px;
    height: 19px;
    margin: 0;
    cursor: pointer;
}

.public-dossard-number {
    white-space: nowrap;
}

.public-dossard-details {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.public-dossard-details strong {
    overflow-wrap: anywhere;
}

.public-dossard-details span {
    font-size: 0.85rem;
    color: #64748b;
}

.public-dossard-print {
    white-space: nowrap;
    text-align: center;
}

.public-dossards-empty {
    padding: 22px 12px;
    text-align: center;
}

@media (max-width: 850px) {
    .public-dossards-filters {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .public-dossards-filters > div:first-child {
        grid-column: 1 / -1;
    }
}

@media (max-width: 600px) {
    .public-dossards-filters {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .public-dossards-filters > div:first-child {
        grid-column: auto;
    }

    .public-dossards-toolbar {
        align-items: stretch;
        flex-direction: column;
    }

    .public-dossards-selection-tools {
        display: grid;
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .public-dossards-selection-tools button {
        width: 100%;
        white-space: normal;
    }

    .public-dossards-print-actions {
        justify-content: space-between;
    }

    .public-dossards-print-actions form,
    .public-dossards-print-actions button {
        width: 100%;
    }

    .public-dossard-item {
        grid-template-columns: 30px minmax(0, 1fr);
        gap: 10px;
        padding: 12px;
    }

    .public-dossard-check {
        grid-column: 1;
        grid-row: 1;
    }

    .public-dossard-number {
        grid-column: 2;
        grid-row: 1;
    }

    .public-dossard-details {
        grid-column: 2;
        grid-row: 2;
    }

    .public-dossard-print {
        grid-column: 2;
        grid-row: 3;
        justify-self: start;
        min-width: 120px;
    }

    .public-dossard-check input {
        width: 22px;
        height: 22px;
    }
}

.public-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
}

.public-card {
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-height: 210px;
    padding: 20px;
    border: 1px solid #d9e2ec;
    border-radius: 16px;
    background: #ffffff;
    box-shadow: 0 6px 18px rgba(15, 23, 42, 0.06);
}

.public-card-header h2 {
    margin: 0 0 5px;
    color: #102a43;
    font-size: 20px;
}

.public-card-header span {
    color: #52616b;
    font-size: 13px;
    font-weight: 700;
}

.public-club-header {
    display: flex;
    align-items: center;
    gap: 12px;
}

.public-club-logo {
    flex: 0 0 58px;
    width: 58px;
    height: 58px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 14px;
    background: #f1f5f9;
    border: 1px solid #d9e2ec;
    overflow: hidden;
    color: #102a43;
    font-size: 24px;
    font-weight: 800;
}

.public-club-logo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 4px;
}

.public-card-title {
    min-width: 0;
}

.public-card p {
    margin: 0;
    color: #334e68;
    line-height: 1.4;
}

.public-timeline {
    display: grid;
    gap: 14px;
}

.public-event-card {
    display: grid;
    grid-template-columns: minmax(210px, 280px) 1fr;
    gap: 18px;
    align-items: stretch;
    padding: 18px;
    border: 1px solid #d9e2ec;
    border-radius: 16px;
    background: #ffffff;
    box-shadow: 0 6px 18px rgba(15, 23, 42, 0.06);
}

.public-event-date {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 78px;
    padding: 14px 16px;
    border-radius: 14px;
    background: #eef6ff;
    color: #102a43;
    font-size: 20px;
    font-weight: 900;
    line-height: 1.25;
    text-align: center;
}

.public-event-content {
    display: grid;
    align-content: center;
    gap: 8px;
}

.public-event-line {
    margin: 0;
    color: #334e68;
    font-size: 16px;
    line-height: 1.35;
}

.public-event-line strong {
    color: #102a43;
}

.public-event-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 2px;
}

.public-event-meta span {
    display: inline-flex;
    padding: 4px 9px;
    border-radius: 999px;
    background: #eef2f7;
    color: #52616b;
    font-size: 12px;
    font-weight: 800;
}

.public-filter-card {
    margin-bottom: 16px;
}

.public-results-card h2 {
    margin-bottom: 6px;
}

@media (max-width: 620px) {
    .public-event-card {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 14px;
    }

    .public-event-date {
        min-height: 0;
        padding: 12px 14px;
        font-size: 18px;
    }

    .public-event-line {
        font-size: 15px;
    }
}

.public-club-responsables {
    padding: 10px 12px;
    border-radius: 12px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
}

.public-club-responsables strong {
    display: block;
    margin-bottom: 6px;
    color: #102a43;
    font-size: 13px;
}

.public-club-responsables ul {
    margin: 0;
    padding-left: 18px;
    color: #334e68;
    font-size: 14px;
    line-height: 1.45;
}

.public-club-responsables li {
    margin-bottom: 5px;
}

.public-club-responsables li:last-child {
    margin-bottom: 0;
}

.public-club-responsables .badge-juge {
    margin-left: 8px;
    vertical-align: middle;
}

.public-club-contact {
    display: grid;
    gap: 7px;
    margin-top: auto;
}

.public-club-contact a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: #243b53;
    font-size: 14px;
    font-weight: 700;
}

.public-club-phone {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: #243b53;
    font-size: 14px;
    font-weight: 700;
}

.public-club-contact a:hover {
    color: #102a43;
    text-decoration: none;
}

.public-club-contact-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
    border-radius: 999px;
    background: #eef2f7;
}

.public-club-contact-icon img {
    display: block;
    width: 13px;
    height: 13px;
    object-fit: contain;
}

/* =========================================================
   04 - ESPACE CLUB
   ========================================================= */

/* Logo club côté club
   ========================================================= */

.club-logo-card {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: 18px;
    align-items: start;
    margin-bottom: 16px;
}

.club-logo-preview {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 120px;
    height: 120px;
    border-radius: 14px;
    background: #f1f5f9;
    border: 1px dashed #bcccdc;
    overflow: hidden;
    color: #7b8794;
    font-weight: 700;
    text-align: center;
}

.club-logo-preview img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 8px;
}

.club-logo-content h2 {
    margin: 0 0 6px;
    color: #102a43;
}

.club-logo-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    align-items: end;
    margin: 16px 0 8px;
}

.club-logo-form {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    align-items: end;
    margin: 0;
}

.club-logo-form button {
    justify-self: start;
    white-space: nowrap;
}

.club-logo-actions > .inline-form {
    display: flex;
    align-items: flex-end;
    margin: 0;
}

.club-logo-actions > .inline-form .btn-danger {
    white-space: nowrap;
}

/* Profil du club : logo intégré aux coordonnées */
.club-profile-card {
    margin-top: 18px;
}

.club-profile-logo {
    display: grid;
    grid-template-columns: 88px minmax(0, 1fr);
    align-items: center;
    gap: 16px;
    padding-bottom: 18px;
    margin-bottom: 18px;
    border-bottom: 1px solid #e2e8f0;
}

.club-profile-logo .club-logo-preview {
    width: 88px;
    height: 88px;
    border-radius: 12px;
}

.club-profile-logo-content {
    min-width: 0;
}

.club-profile-logo-content h2,
.club-profile-coordinates-heading h2 {
    margin: 0 0 5px;
    font-size: 1.05rem;
}

.club-profile-logo-content .muted-text {
    margin: 0;
    font-size: 0.85rem;
}

.club-profile-logo .club-logo-actions {
    margin: 10px 0 0;
}

.club-profile-logo .club-logo-form input[type="file"] {
    width: 100%;
    min-width: 0;
}

/* Présentation de la page Mon club */
.club-documents-layout {
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

.club-documents-layout > .page-header,
.club-documents-layout > .alert {
    order: 0;
}

.club-documents-layout > .club-profile-card {
    order: 1;
    width: 100%;
    max-width: none;
    box-sizing: border-box;
}

.club-documents-layout > .category-create-card {
    order: 2;
    width: 100%;
    max-width: none;
    min-width: 0;
    box-sizing: border-box;
}

.club-documents-layout > .documents-table-card {
    order: 3;
    width: 100%;
    max-width: none;
    min-width: 0;
    box-sizing: border-box;
}

.club-profile-coordinates-heading {
    margin-bottom: 14px;
}

/* Gestion administrative des types de documents */
.club-document-types-content {
    padding: 16px 20px 20px;
}

/* =========================================================
   ADMINISTRATION - TYPES DE DOCUMENTS DES CLUBS
   Hauteur automatique et défilement adapté
   ========================================================= */

#club-document-types-modal {
    align-items: center;
    justify-content: center;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

#club-document-types-modal > .category-modal-box {
    display: flex;
    flex-direction: column;
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 24px);
    overflow: hidden;
    border-radius: 12px;
}

#club-document-types-modal .category-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow: hidden;
}

#club-document-types-modal .category-reference-list {
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

#club-document-types-modal .category-modal-form-panel {
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

/* Portrait : fenêtre compacte et centrée */

@media screen and (max-width: 700px) {
    #club-document-types-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    #club-document-types-modal > .category-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    #club-document-types-modal .category-modal-body {
        display: flex;
        flex-direction: column;
        flex: 0 1 auto;
        min-height: 0;
        overflow: hidden;
    }

    #club-document-types-modal .category-reference-list {
        flex: 0 1 auto;
        min-height: 0;
        max-height: min(44dvh, 360px);
        overflow-x: hidden;
        overflow-y: auto;
        padding: 10px;
        border-right: 0;
        border-bottom: 1px solid #e2e8f0;
    }

    #club-document-types-modal .category-modal-form-panel {
        flex: 0 0 auto;
        min-height: 0;
        overflow: visible;
        padding: 14px;
    }

    #club-document-types-modal .category-modal-form-actions {
    position: static;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    justify-content: stretch;
    align-items: stretch;
    gap: 0;
    width: 100%;
    margin: 12px 0 0;
    padding: 0;
}

#club-document-types-modal .category-modal-form-actions > button {
    display: inline-flex;
    grid-column: 1 / -1;
    align-items: center;
    justify-content: center;
    justify-self: stretch;
    width: 100%;
    min-width: 0;
    max-width: none;
    min-height: 44px;
    margin: 0;
    padding: 10px 12px;
    text-align: center;
    white-space: normal;
}
}

/* Paysage : deux colonnes défilant indépendamment */

@media screen and (min-width: 701px) and (max-height: 600px) {
    #club-document-types-modal {
        padding: 10px;
    }

    #club-document-types-modal > .category-modal-box {
        width: min(940px, 100%);
        max-height: calc(100dvh - 20px);
    }

    #club-document-types-modal .category-modal-body {
        display: grid;
        grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
        grid-template-rows: minmax(0, 1fr);
        flex: 0 1 auto;
        height: min(380px, calc(100dvh - 110px));
        min-height: 0;
        overflow: hidden;
    }

    #club-document-types-modal .category-reference-list {
        box-sizing: border-box;
        height: 100%;
        min-height: 0;
        max-height: none;
        overflow-x: hidden;
        overflow-y: auto;
        padding: 10px;
    }

    #club-document-types-modal .category-modal-form-panel {
        box-sizing: border-box;
        height: 100%;
        min-height: 0;
        overflow-x: hidden;
        overflow-y: auto;
        padding: 12px 14px;
    }

    #club-document-types-modal .category-modal-form-panel h3 {
        margin-bottom: 8px;
    }

    #club-document-types-modal .category-modal-form {
        gap: 8px;
    }

    #club-document-types-modal .category-modal-form-actions {
        position: static;
        margin: 10px 0 0;
        padding: 0;
    }
}

.club-document-type-form {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: 12px;
    margin-bottom: 18px;
}

.club-document-type-form > div {
    min-width: 0;
}

.club-document-type-form input {
    width: 100%;
}

.club-document-types-content .data-table {
    width: 100%;
}

@media (max-width: 700px) {
    .club-profile-logo {
        grid-template-columns: 1fr;
        justify-items: start;
        gap: 12px;
    }

    .club-profile-logo .club-logo-preview {
        width: 88px;
        height: 88px;
        margin: 0;
    }

    .club-profile-logo .club-logo-actions,
    .club-profile-logo .club-logo-form {
        display: grid;
        grid-template-columns: 1fr;
    }

    .club-profile-logo .club-logo-actions > .inline-form {
        margin-top: 0;
    }

    .club-document-type-form {
        grid-template-columns: 1fr;
    }

    .club-document-type-form button {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 44px;
        margin: 0;
        padding: 10px 12px;
        text-align: center;
        white-space: normal;
    }
}

.club-form-separator {
    height: 1px;
    margin: 4px 0 2px;
    background: #e2e8f0;
}

@media (max-width: 700px) {
    .club-logo-card {
        display: block;
    }

    .club-logo-preview {
        width: 150px;
        height: 150px;
        margin: 0 auto 18px;
    }

    .club-logo-preview img {
        width: 100%;
        height: 100%;
        padding: 6px;
    }

    .club-logo-actions {
        display: block;
    }

    .club-logo-form {
        display: block;
    }

    .club-logo-form > div {
        margin-bottom: 10px;
    }

    .club-logo-form button {
        width: 100%;
    }

    .club-logo-actions > .inline-form {
        display: block;
        width: 100%;
        margin-top: 8px;
    }

    .club-logo-actions > .inline-form .btn-danger {
        width: 100%;
    }

    .club-form-separator {
        margin: 2px 0;
    }
}

/* Mes championnats côté club
   ========================================================= */

.club-championship-list {
    display: grid;
    gap: 18px;
}

.club-championship-card {
    display: grid;
    gap: 18px;
}

.club-championship-details {
    display: block;
    padding: 0;
    overflow: visible;
}

.club-championship-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 76px;
    padding: 16px 20px;
    color: #102a43;
    cursor: pointer;
    list-style: none;
}

.club-championship-summary::-webkit-details-marker {
    display: none;
}

.club-championship-summary::after {
    content: "+";
    flex: 0 0 auto;
    width: 28px;
    height: 28px;
    border-radius: 999px;
    background: #eef2f7;
    color: #243b53;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    font-weight: 800;
    line-height: 1;
}

.club-championship-details[open] .club-championship-summary {
    border-bottom: 1px solid #e2e8f0;
}

.club-championship-details[open] .club-championship-summary::after {
    content: "−";
}

.club-championship-body {
    display: grid;
    gap: 18px;
    padding: 20px;
}

.club-championship-heading h2,
.club-championship-summary h2 {
    margin: 0 0 6px;
    color: #102a43;
}

.club-championship-heading p,
.club-championship-summary p {
    margin: 0 0 6px;
}

.club-championship-section {
    padding-top: 16px;
    border-top: 1px solid #e2e8f0;
}

.club-championship-section h3 {
    margin: 0 0 12px;
    color: #102a43;
}

/* Championnats : séparation du détail des récompenses */

.club-rewards-summary .club-rewards-totals-table {
    width: 100%;
}

.club-rewards-summary h3 {
    margin: 26px 0 14px;
    padding-top: 18px;
    border-top: 1px solid #e2e8f0;
    color: #102a43;
    font-size: 16px;
    font-weight: 700;
}

.club-poster-layout {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 18px;
    align-items: start;
}

.club-poster-preview {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 230px;
    border-radius: 14px;
    background: #f1f5f9;
    border: 1px dashed #bcccdc;
    overflow: hidden;
    color: #7b8794;
    font-weight: 700;
    text-align: center;
}

.club-poster-preview img {
    width: 100%;
    height: 100%;
    min-height: 230px;
    object-fit: cover;
}

.accueil-photo-admin-card {
    display: grid;
    grid-template-columns: minmax(220px, 360px) minmax(0, 1fr);
    gap: 18px;
    align-items: start;
}

.accueil-photo-admin-preview {
    width: 100%;
    max-width: 360px;
    min-height: 190px;
}

.accueil-photo-admin-preview img {
    min-height: 190px;
}

.club-poster-content {
    display: grid;
    gap: 10px;
}

.club-poster-form {
    display: grid;
    gap: 10px;
    margin: 0;
}

.club-poster-form > div {
    width: 100%;
}

.club-poster-form input[type="file"] {
    width: 100%;
}

.accueil-photo-admin-card .club-poster-form button {
    justify-self: start;
    width: auto;
}

.accueil-default-texts-form {
    display: inline-block;
    margin-top: 10px;
}

.accueil-admin-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 10px;
}

.accueil-admin-actions .inline-form {
    margin: 0;
}

.club-poster-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.club-poster-actions .inline-form {
    display: inline-block;
    margin: 0;
}

.club-attendance-details {
    padding-top: 16px;
}

.club-attendance-summary {
    position: relative;
    padding-right: 28px;
    color: #102a43;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 18px;
    font-weight: 800;
    cursor: pointer;
    list-style: none;
}

@media (max-width: 700px) {
    .club-attendance-summary {
        font-size: 16px;
    }
}

.club-attendance-summary::-webkit-details-marker {
    display: none;
}

.club-attendance-summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 2px;
    transform: translateY(-50%);
    color: #52667a;
    font-size: 22px;
    line-height: 1;
}

.club-attendance-details[open] .club-attendance-summary::after {
    content: "−";
}

.club-attendance-content {
    margin-top: 12px;
}

/* Championnats organisés : présences et restauration */

.club-presences-summary .club-attendance-content {
    min-width: 0;
}

.club-presences-stats {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 24px;
    margin: 12px 0;
    padding: 10px 0;
    border-top: 1px solid #e2e8f0;
    border-bottom: 1px solid #e2e8f0;
}

.club-presences-stat {
    display: inline-flex;
    flex-direction: row;
    align-items: baseline;
    justify-content: flex-start;
    width: auto;
    min-width: 0;
    min-height: 0;
    gap: 6px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    text-align: left;
}

.club-presences-stat strong {
    color: #243b53;
    font-size: 17px;
    font-weight: 700;
    line-height: 1.3;
}

.club-presences-stat span {
    color: #52667a;
    font-size: 12px;
    font-weight: 400;
    line-height: 1.35;
}/* Tableau des déclarations */

.club-presences-recap-wrap {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    margin-top: 14px;
    overflow-x: auto;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #ffffff;
}

.club-presences-recap-table {
    width: 100%;
    min-width: 680px;
    border-collapse: collapse;
}

.club-presences-recap-table thead th {
    padding: 11px 12px;
    background: #edf2f7;
    color: #334e68;
    font-size: 12px;
    font-weight: 700;
    text-align: left;
    white-space: nowrap;
}

.club-presences-recap-table tbody td {
    padding: 11px 12px;
    border-top: 1px solid #e2e8f0;
    color: #243b53;
    font-size: 13px;
    line-height: 1.45;
    vertical-align: middle;
    overflow-wrap: anywhere;
}

.club-presences-recap-table tbody td strong {
    font-weight: 700;
}

.club-presences-recap-table tbody td:nth-child(4) {
    text-align: center;
}

.club-presences-recap-table tbody tr:hover td {
    background: #f8fafc;
}

/* Tablettes */

@media (max-width: 900px) {
    .club-presences-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* Smartphones */

@media (max-width: 640px) {
    .club-presences-stats {
        display: flex;
        flex-wrap: wrap;
        gap: 8px 16px;
        margin: 10px 0;
    }

    .club-presences-stat {
        display: inline-flex;
        min-height: 0;
        padding: 0;
    }

    .club-presences-stat strong {
        font-size: 16px;
    }

    .club-presences-stat span {
        font-size: 11px;
    }    /* Déclarations présentées sous forme de fiches */

    .club-presences-recap-wrap {
        overflow: visible;
        border: 0;
        background: transparent;
    }

    .club-presences-recap-table,
    .club-presences-recap-table tbody {
        display: block;
        width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }

    .club-presences-recap-table thead {
        display: none;
    }

    .club-presences-recap-table tbody tr {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        gap: 7px;
        margin-bottom: 10px;
        padding: 12px;
        border: 1px solid #d9e2ec;
        border-radius: 10px;
        background: #ffffff;
    }

    .club-presences-recap-table tbody td {
        display: block;
        width: 100%;
        min-width: 0;
        box-sizing: border-box;
        padding: 0;
        border: 0;
        font-size: 13px;
        text-align: left;
        background: transparent;
    }

    .club-presences-recap-table tbody td:first-child {
        padding-bottom: 7px;
        border-bottom: 1px solid #e2e8f0;
        font-weight: 700;
    }

    .club-presences-recap-table tbody td:nth-child(2)::before {
        content: "Personne : ";
        font-weight: 600;
    }

    .club-presences-recap-table tbody td:nth-child(3)::before {
        content: "Fonction : ";
        font-weight: 600;
    }

    .club-presences-recap-table tbody td:nth-child(4) {
        text-align: left;
    }

    .club-presences-recap-table tbody td:nth-child(4)::before {
        content: "Repas : ";
        font-weight: 600;
    }

    .club-presences-recap-table tbody td:nth-child(5)::before {
        content: "Contraintes : ";
        font-weight: 600;
    }

    .club-presences-recap-table tbody tr:hover,
    .club-presences-recap-table tbody tr:hover td {
        background: #ffffff;
    }
}

.attendance-category-filter {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 12px 0;
}

.attendance-category-filter label {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin: 0;
    padding: 8px 11px;
    border: 1px solid #d9e2ec;
    border-radius: 999px;
    background: #f8fafc;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
}

.attendance-category-filter input {
    width: auto;
    min-height: 0;
    margin: 0;
}

/* Impression des présences et de la restauration */

.club-presences-print-actions {
    display: flex;
    justify-content: flex-end;
    margin: 16px 0;
}

@media (max-width: 640px) {
    .club-presences-print-actions {
        display: block;
    }

    .club-presences-print-actions .btn {
        width: 100%;
    }
}

/* Impression des récompenses des championnats */

.club-rewards-print-actions {
    display: flex;
    justify-content: flex-end;
    margin: 12px 0 16px;
}

@media (max-width: 640px) {
    .club-rewards-print-actions {
        display: block;
    }

    .club-rewards-print-actions .btn {
        width: 100%;
    }
}

@media (max-width: 700px) {
    .club-poster-layout,
    .accueil-photo-admin-card {
        grid-template-columns: 1fr;
    }

    .accueil-photo-admin-preview {
        max-width: none;
    }

    .club-poster-content {
        display: grid;
    }

    .club-poster-form {
        display: grid;
        gap: 10px;
    }

    .club-poster-actions {
        display: grid;
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .club-poster-actions button,
    .club-poster-actions .inline-form,
    .club-poster-actions .inline-form .btn-danger {
        width: 100%;
    }

    .accueil-admin-actions {
        display: grid;
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .accueil-admin-actions button,
    .accueil-admin-actions .inline-form {
        width: 100%;
    }

    .attendance-category-filter {
        display: grid;
        grid-template-columns: 1fr;
    }

    .club-attendance-screen .compact-actions {
        display: grid;
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .club-attendance-screen .compact-actions button {
        width: 100%;
    }
}

/* Bouton retour en haut
   ========================================================= */

.back-to-top {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 950;
    width: 46px;
    height: 46px;
    min-height: 46px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    opacity: 0;
    pointer-events: none;
    transform: translateY(10px);
    transition: opacity 0.18s ease, transform 0.18s ease;
}

.back-to-top:hover {
    background: transparent;
}

.back-to-top.is-visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}

.back-to-top img {
    display: block;
    width: 46px;
    height: 46px;
}

.back-to-top:hover img {
    content: url("../img/up_3.png");
}

@media print {
    .back-to-top {
        display: none !important;
    }
}

/* =========================================================
   05 - ADMINISTRATION
   ========================================================= */

/* Barème points
   ========================================================= */

.bareme-card .data-table td {
    vertical-align: middle;
}

.bareme-card .compact-actions {
    align-items: center;
    flex-wrap: nowrap;
}

.bareme-card .inline-edit-form {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
}

.bareme-card .inline-form {
    margin: 0;
}

.bareme-card .small-number-input {
    width: 86px;
    min-height: 38px;
}

.bareme-card .checkbox-inline {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin: 0;
    font-weight: 700;
    white-space: nowrap;
}

.bareme-create-card,
.bareme-edit-card,
.bareme-table-card,
.bareme-preview-card {
    width: min(100%, 860px);
    margin-left: auto;
    margin-right: auto;
}

.bareme-rule-form {
    display: grid;
    grid-template-columns: repeat(5, max-content) max-content;
    gap: 14px;
    align-items: end;
    justify-content: start;
}

.bareme-rule-form > div {
    min-width: 0;
}

.bareme-rule-form input[type="number"] {
    width: 82px;
    min-width: 82px;
    text-align: center;
    padding-right: 8px;
    -moz-appearance: textfield;
    appearance: textfield;
}

.bareme-rule-form input[type="number"]::-webkit-outer-spin-button,
.bareme-rule-form input[type="number"]::-webkit-inner-spin-button {
    margin: 0;
    -webkit-appearance: none;
}

.bareme-rule-form .form-actions-inline {
    gap: 10px;
    white-space: nowrap;
}

.bareme-table-card .data-table {
    width: 100%;
    min-width: 0;
}

.bareme-table-card .data-table th:nth-child(1),
.bareme-table-card .data-table td:nth-child(1) {
    width: 150px;
}

.bareme-table-card .data-table th:nth-child(3),
.bareme-table-card .data-table td:nth-child(3) {
    width: 140px;
}

.bareme-table-card .data-table th:nth-child(4),
.bareme-table-card .data-table td:nth-child(4) {
    width: 160px;
}

.bareme-edit-actions {
    gap: 10px;
}

.bareme-preview-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(115px, 1fr));
    gap: 8px;
}

.bareme-preview-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 8px 10px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #f8fafc;
}

.bareme-preview-item strong {
    color: #102a43;
}

.bareme-preview-item span {
    color: #334e68;
    font-size: 13px;
    font-weight: 700;
    white-space: nowrap;
}

@media (max-width: 760px) {
    .bareme-card .compact-actions,
    .bareme-card .inline-edit-form {
        align-items: flex-start;
        flex-direction: column;
    }

    .bareme-create-card,
    .bareme-edit-card,
    .bareme-table-card,
    .bareme-preview-card {
        width: 100%;
    }

    .bareme-rule-form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .bareme-rule-form input[type="number"] {
        width: 100%;
        min-width: 0;
        text-align: left;
    }

    .bareme-rule-form .form-actions-inline {
        grid-column: 1 / -1;
        flex-wrap: wrap;
    }

    .bareme-preview-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 520px) {
    .bareme-rule-form {
        grid-template-columns: 1fr;
    }

    .bareme-rule-form .form-actions-inline {
        flex-direction: column;
        align-items: stretch;
    }

    .bareme-rule-form .form-actions-inline button,
    .bareme-rule-form .form-actions-inline .btn {
        width: 100%;
    }
}

.select-has-error label {
    color: #b42318;
    font-weight: 700;
}

.select-has-error select {
    border-color: #d92d20;
    background: #fff5f5;
    box-shadow: 0 0 0 3px rgba(217, 45, 32, 0.12);
}

.categories-layout,
.resultats-import-layout {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 18px;
}

.categories-card-fit {
    width: fit-content;
    max-width: 100%;
}

.resultats-import-card {
    width: 520px;
    max-width: 100%;
    padding: 0;
    overflow: visible;
}

.resultats-import-header {
    padding: 18px 20px 14px;
    border-bottom: 1px solid #e2e8f0;
}

.resultats-import-header h2 {
    margin: 0;
}

.resultats-import-header p {
    margin: 5px 0 0;
    line-height: 1.35;
}

.resultats-import-table {
    overflow-x: auto;
}

.resultats-import-table .data-table {
    width: max-content;
    min-width: 760px;
}


/* =========================================================
   CATÉGORIES - PAGE PRINCIPALE
   ========================================================= */

/* Création de catégorie
   ========================================================= */

.category-create-card {
    margin-bottom: 18px;
    padding: 0;
    overflow: visible;
}

.category-create-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 54px;
    padding: 0 20px;
    color: #102a43;
    font-size: 20px;
    font-weight: 800;
    cursor: pointer;
    list-style: none;
}

.category-create-summary::-webkit-details-marker {
    display: none;
}

.category-create-summary::after {
    content: "" !important;
    display: block;
    flex: 0 0 16px;
    width: 16px;
    height: 16px;
    min-width: 16px;
    min-height: 16px;
    padding: 0;
    border: none;
    border-radius: 0;
    background: transparent url("../img/angle-small-down.png") center / contain no-repeat;
    box-sizing: border-box;
    font-size: 0;
    line-height: 0;
    transform-origin: center center;
    transform: rotate(0deg);
    transition: transform 0.2s ease;
}

.category-create-card[open] .category-create-summary {
    border-bottom: 1px solid #e2e8f0;
}

.category-create-card[open] .category-create-summary::after {
    content: "" !important;
    transform: rotate(180deg);
}

.category-create-card .category-create-form {
    padding: 18px 20px 20px;
}

/* Formulaire et filtres
   ========================================================= */

.category-create-form {
    display: grid;
    grid-template-columns: 170px minmax(220px, 1fr) 220px;
    gap: 14px;
    align-items: end;
}

.category-create-form .category-form-actions {
    margin-top: 4px;
}

.category-edit-rules-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 14px;
    align-items: end;
}

.category-filters {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin: 14px 0 12px;
    padding: 8px 10px;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #f8fafc;
}

.category-filters-label {
    color: #7b8794;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.category-filter-dropdown {
    position: relative;
}

.category-filter-dropdown[open] {
    z-index: 201;
}

.category-filter-dropdown summary {
    min-height: 30px;
    padding: 5px 10px;
    border: 1px solid #cbd5e1;
    border-radius: 999px;
    background: #ffffff;
    color: #334e68;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    list-style: none;
}

.category-filter-dropdown summary::-webkit-details-marker {
    display: none;
}

.category-filter-panel {
    position: absolute;
    z-index: 200;
    top: calc(100% + 6px);
    left: 0;
    min-width: 210px;
    max-height: 260px;
    overflow-y: auto;
    padding: 10px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #ffffff;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.14);
}

.category-filter-panel .checkbox-line {
    margin: 7px 0;
    font-size: 13px;
}

.category-filter-all {
    min-height: 28px;
    margin-bottom: 6px;
    padding: 4px 8px;
    border-radius: 7px;
    background: #eef2f7;
    color: #334e68;
    font-size: 12px;
}

.category-filter-all:hover,
.category-filter-all:focus {
    background: #d9e2ec;
    color: #102a43;
}

.category-filter-count {
    margin-left: auto;
    font-size: 12px;
}

@media (max-width: 900px) {
    .category-create-card.categories-card-fit {
        min-width: 100%;
    }

    .category-create-form {
        grid-template-columns: 1fr;
    }

    .category-filter-count {
        width: 100%;
        margin-left: 0;
    }
}

.category-page-header {
    padding-bottom: 14px;
}

.category-page-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
}

.category-page-heading > div:first-child {
    min-width: 0;
}

.category-header-actions {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px;
    border: 1px solid #d9e2ec;
    border-radius: 11px;
    background: #ffffff;
}

.category-header-actions-label {
    padding: 0 5px;
    color: #627d98;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.category-reference-actions {
    display: flex;
    align-items: center;
    gap: 5px;
}

.category-reference-actions .btn {
    min-height: 34px;
    padding: 7px 11px;
}

.categories-workspace {
    display: grid;
    gap: 16px;
}

.category-editor-card,
.category-list-card {
    width: 100%;
    box-sizing: border-box;
}

.category-editor-card {
    padding: 0;
    overflow: hidden;
}

.category-create-summary {
    min-height: 62px;
    padding: 0 18px;
    gap: 16px;
}

.category-create-summary-content {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.category-create-summary-content strong {
    color: #102a43;
    font-size: 18px;
}

.category-create-summary-content small {
    color: #627d98;
    font-size: 12.5px;
    font-weight: 500;
}

.category-editor-card[open] .category-create-summary {
    border-bottom: 1px solid #e2e8f0;
    background: #fbfdff;
}

.category-editor-form {
    display: grid;
    gap: 14px;
    padding: 18px 20px 20px;
}

.category-editor-main {
    display: grid;
    grid-template-columns: repeat(3, minmax(180px, 1fr));
    gap: 12px;
}

.category-rule-summary {
    padding: 10px 12px;
    border: 1px solid #d9e2ec;
    border-radius: 9px;
    background: #f8fafc;
    color: #334e68;
    font-size: 13px;
}

.category-options-card {
    display: grid;
    grid-template-columns: repeat(3, minmax(200px, 1fr));
    gap: 10px 18px;
    padding: 13px 14px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #fbfdff;
}

.category-options-title {
    grid-column: 1 / -1;
    color: #334e68;
    font-size: 11.5px;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.category-options-card .checkbox-line {
    margin: 0;
}

.category-compositions-panel {
    padding: 13px 14px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #fbfdff;
}

.category-compositions-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 10px;
}

.category-compositions-heading p {
    margin: 4px 0 0;
}

.category-compositions-grid {
    display: grid;
    gap: 10px;
}

.category-composition-group {
    padding: 10px;
    border: 1px solid #e2e8f0;
    border-radius: 9px;
    background: #ffffff;
}

.category-composition-total {
    display: block;
    margin-bottom: 8px;
    color: #243b53;
    font-size: 13px;
}

.category-composition-options {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
}

.category-composition-option {
    margin: 0;
    min-width: 145px;
}

.category-editor-actions,
.category-modal-form-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}


/* =========================================================
   LISTE DES CATÉGORIES
   ========================================================= */

.category-list-card {
    padding: 18px;
}

.category-list-card .table-header-line {
    align-items: center;
}

.category-list-subtitle {
    margin: 3px 0 0;
}

.category-count-badge {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 4px 9px;
    border-radius: 999px;
    background: #eef2f7;
    color: #526d82;
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
}

.category-filters {
    display: grid;
    grid-template-columns:
        repeat(3, minmax(160px, 1fr))
        auto;
    gap: 9px;
    align-items: end;
    margin: 14px 0;
    padding: 10px;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #f8fafc;
}

.category-filters label {
    margin-bottom: 4px;
    color: #526d82;
    font-size: 11px;
}

.category-filter-count {
    align-self: center;
    white-space: nowrap;
}

.category-table-scroll {
    overflow-x: auto;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
}

.admin-categories-table th:first-child,
.admin-categories-table td:first-child {
    padding-left: 14px;
}

.admin-categories-table th:last-child,
.admin-categories-table td:last-child {
    padding-right: 14px;
}

.category-name {
    color: #102a43;
    font-weight: 800;
}

.category-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}

.category-badge {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 2px 7px;
    border: 1px solid #d9e2ec;
    border-radius: 999px;
    background: #f8fafc;
    color: #334e68;
    font-size: 11px;
    font-weight: 700;
}

.status-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
}

.status-success {
    background: #e8f5ee;
    color: #166534;
}

.status-muted {
    background: #eef2f7;
    color: #52606d;
}


/* =========================================================
   MODALES CATÉGORIES
   ========================================================= */

/* Juges de la fédération */
/* Statut international des juges */
.juge-international-field {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 0.85rem;
    font-weight: 500;
    cursor: pointer;
}

.juge-international-field input[type="checkbox"] {
    width: 16px;
    height: 16px;
    margin: 0;
    flex-shrink: 0;
}

/* Gestion des juges : présentation sur PC */

#juges-modal .judge-swipe-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

#juges-modal .judge-swipe-content {
    display: flex;
    flex: 1 1 auto;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
}

#juges-modal .judge-swipe-name {
    display: grid;
    flex: 1 1 auto;
    gap: 3px;
    min-width: 0;
}

#juges-modal .judge-swipe-content .juge-international-update-form {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    margin: 0;
}

#juges-modal .judge-swipe-delete {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    margin: 0;
}

/* =========================================================
   Espace FDO - COMPOSANT COMMUN SWIPE TO DELETE
   ========================================================= */

/* Fiche contenant l'action de suppression */

.fdo-swipe-enabled .fdo-swipe-row {
    position: relative;
    display: block !important;
    padding: 0 !important;
    overflow: hidden;
    isolation: isolate;
    background: #b42318;
    touch-action: pan-y;
}

/* Partie visible et mobile de la fiche */

.fdo-swipe-enabled .fdo-swipe-content {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    box-sizing: border-box;
    width: 100%;
    min-height: 62px;
    padding: 12px;
    background: #ffffff;
    transform: translateX(0);
    transition: transform 0.2s ease;
    will-change: transform;
    touch-action: pan-y;
}

.fdo-swipe-enabled
.fdo-swipe-row.is-swipe-open .fdo-swipe-content {
    transform: translateX(-72px);
}

/* Zone de suppression */

.fdo-swipe-enabled .fdo-swipe-delete {
    position: absolute;
    z-index: 1;
    top: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: stretch;
    justify-content: center;
    box-sizing: border-box;
    width: 72px;
    height: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: #b42318;
}

.fdo-swipe-enabled
.fdo-swipe-delete button.btn-delete-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-width: 0;
    max-width: none;
    height: 100%;
    min-height: 0;
    max-height: none;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: #b42318;
}

.fdo-swipe-enabled
.fdo-swipe-delete button.btn-delete-icon img {
    width: 20px;
    height: 20px;
    object-fit: contain;
}

.fdo-swipe-enabled
.fdo-swipe-row:not(.is-swipe-open) .fdo-swipe-delete {
    visibility: hidden;
}

/* Conserver les particularités des fiches des juges */

#juges-modal.fdo-swipe-enabled .fdo-swipe-content {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
}

#juges-modal.fdo-swipe-enabled .judge-swipe-name {
    min-width: 0;
    overflow-wrap: anywhere;
}

#juges-modal.fdo-swipe-enabled
.juge-international-update-form {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    min-width: 0;
    margin: 0;
}

@media (prefers-reduced-motion: reduce) {
    .fdo-swipe-enabled .fdo-swipe-content {
        transition: none;
    }
}.juge-international-update-form {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    min-width: 0;
    margin: 0;
}

#juges-modal.judge-swipe-enabled .judge-swipe-delete {
    position: absolute;
    z-index: 1;
    top: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: stretch;
    justify-content: center;
    box-sizing: border-box;
    width: 72px;
    height: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: #b42318;
}

#juges-modal.judge-swipe-enabled
.judge-swipe-delete .btn-delete-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-width: 0;
    max-width: none;
    height: 100%;
    min-height: 0;
    max-height: none;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: #b42318;
}

#juges-modal.judge-swipe-enabled
.judge-swipe-delete .btn-delete-icon img {
    width: 20px;
    height: 20px;
    object-fit: contain;
}

#juges-modal.judge-swipe-enabled
.judge-swipe-row:not(.is-swipe-open) .judge-swipe-delete {
    visibility: hidden;
}

@media (prefers-reduced-motion: reduce) {
    #juges-modal .judge-swipe-content {
        transition: none;
    }
}

.juge-international-update-form {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-left: auto;
}

.juge-international-update-form .btn {
    padding: 6px 9px;
    font-size: 0.78rem;
}

/* Badge juge international : doré */
.juge-international-label {
    display: inline-flex;
    align-items: center;
    margin-left: 6px;
    padding: 2px 7px;
    border: 1px solid #E8C277;
    border-radius: 5px;
    background: #FFF1D6;
    color: #855600;
    font-size: 0.72rem;
    font-weight: 600;
    white-space: nowrap;
}

/* Badge juge : vert sauge */
.badge-juge {
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
    margin-left: 6px;
    padding: 2px 8px;
    border-radius: 6px;
    border: 1px solid #A7C9AE;
    background: #E8F3EA;
    color: #346B45;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.5;
    white-space: nowrap;
}

.juges-federaux-section {
    width: 100%;
    box-sizing: border-box;
}

.juges-federaux-section h2 {
    margin-top: 0;
    margin-bottom: 16px;
}

.juges-federaux-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px 18px;
    padding: 0;
    margin: 0;
    list-style: none;
}

.juges-federaux-list li {
    min-width: 0;
    padding: 10px 12px;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    background: #f8fafc;
}

@media (max-width: 800px) {
    .juges-federaux-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 520px) {
    .juges-federaux-list {
        grid-template-columns: minmax(0, 1fr);
    }
}

.category-modal {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.category-modal[hidden] {
    display: none;
}

/* Présences et restauration des championnats */

.club-presences-modal-open {
    overflow: hidden;
}

/* Bouton dans l'en-tête Mes dossards */

.club-registration-head-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
}

.club-registration-head-actions .club-registration-count {
    flex: 0 0 auto;
}

.club-presences-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 10px 16px;
    border: 0;
    border-radius: 9px;
    background: #243b53;
    color: #ffffff;
    font-weight: 700;
    text-align: center;
    cursor: pointer;
    transition: background 0.15s ease;
}

.club-presences-button:hover {
    background: #102a43;
    color: #ffffff;
}

.club-presences-button:focus-visible {
    outline: 3px solid #b9cce3;
    outline-offset: 2px;
}

/* Fenêtre modale */

.category-modal[data-presences-modal] .category-modal-box {
    display: flex;
    flex-direction: column;
    width: min(900px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 40px);
    overflow: hidden;
    border: 1px solid #d9e2ec;
    border-radius: 15px;
    background: #ffffff;
}

.category-modal[data-presences-modal] .category-modal-header {
    flex: 0 0 auto;
    padding: 18px 22px;
}

.category-modal[data-presences-modal] .club-presences-body {
    display: block;
    flex: 0 1 auto;
    min-width: 0;
    min-height: 0;
    padding: 22px;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    background: #f8fafc;
}

.club-presences-body [hidden] {
    display: none !important;
}

.club-presences-body h3 {
    margin: 0 0 14px;
    color: #243b53;
    font-size: 17px;
    font-weight: 700;
}

.club-presences-body hr {
    margin: 24px 0;
    border: 0;
    border-top: 1px solid #d9e2ec;
}

/* Liste des personnes déclarées */

.club-presences-body .table-wrap {
    display: block;
    width: 100%;
    max-width: 100%;
    margin: 0;
    overflow-x: auto;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #ffffff;
}

.club-presences-body .data-table {
    width: 100%;
    min-width: 550px;
    table-layout: auto;
    border-collapse: collapse;
}

.club-presences-body .data-table th {
    padding: 12px;
    background: #edf2f7;
    color: #334e68;
    font-size: 12px;
    text-align: left;
    white-space: nowrap;
}

.club-presences-body .data-table td {
    padding: 12px;
    vertical-align: middle;
    border-top: 1px solid #e2e8f0;
}

.club-presences-body .data-table th:first-child,
.club-presences-body .data-table td:first-child {
    width: 30%;
}

.club-presences-body .data-table th:last-child,
.club-presences-body .data-table td:last-child {
    width: 190px;
}

.club-presences-body .data-table td:first-child strong {
    color: #243b53;
    font-weight: 700;
}

/* Boutons des déclarations */

.club-presences-actions {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 8px;
}

.club-presences-actions form {
    display: inline-flex;
    margin: 0;
}

.club-presences-actions .btn {
    min-height: 34px;
    padding: 7px 10px;
    font-size: 12px;
    white-space: nowrap;
}

/* Formulaire d'ajout et de modification */

.club-presences-body form[data-presence-form] {
    display: grid;
    width: 100%;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 20px;
    align-items: start;
}

.club-presences-body form[data-presence-form] > div {
    min-width: 0;
}

.club-presences-body form[data-presence-form] label {
    display: block;
    margin-bottom: 6px;
    color: #334e68;
    font-size: 13px;
    font-weight: 600;
}

.club-presences-body form[data-presence-form] input,
.club-presences-body form[data-presence-form] select,
.club-presences-body form[data-presence-form] textarea {
    display: block;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    margin: 0;
    padding: 10px 12px;
    border: 1px solid #bcccdc;
    border-radius: 8px;
    background: #ffffff;
    color: #243b53;
    font: inherit;
}

.club-presences-body form[data-presence-form] input:focus,
.club-presences-body form[data-presence-form] select:focus,
.club-presences-body form[data-presence-form] textarea:focus {
    border-color: #0f766e;
    outline: 2px solid rgba(15, 118, 110, 0.15);
}

.club-presences-body [data-presence-manuel-block] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 12px;
}

.club-presences-body [data-presence-manuel-block] label {
    grid-row: 1;
}

.club-presences-body [data-presence-manuel-block] input {
    grid-row: 2;
}

.club-presences-body [data-presence-commentaire-block] {
    grid-column: 1 / -1;
}

.club-presences-form-actions {
    display: flex;
    grid-column: 1 / -1;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-top: 4px;
}

/* Adaptation sur tablette et smartphone */

@media (max-width: 760px) {
    .club-registration-head-actions {
        width: 100%;
        justify-content: space-between;
    }

    .club-presences-button {
        flex: 1 1 auto;
    }

    .category-modal[data-presences-modal] {
    align-items: center;
    justify-content: center;
    padding: 10px;
}

    .category-modal[data-presences-modal] .category-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
        overflow: hidden;
    }

    .category-modal[data-presences-modal] .category-modal-header {
        padding: 14px 16px;
    }

    .category-modal[data-presences-modal] .club-presences-body {
        padding: 16px;
    }

    .club-presences-body form[data-presence-form] {
        grid-template-columns: 1fr;
        gap: 14px;
    }

    .club-presences-body [data-presence-commentaire-block],
    .club-presences-form-actions {
        grid-column: 1;
    }
}

@media (max-width: 480px) {
    /* En-tête Mes dossards */

    .club-registration-manager-head {
        display: block;
    }

    .club-registration-head-actions {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 82px;
        align-items: stretch;
        gap: 8px;
        width: 100%;
        margin-top: 14px;
    }

    .club-presences-button {
        width: 100%;
        min-width: 0;
        min-height: 54px;
        padding: 8px 10px;
        font-size: 13px;
        line-height: 1.3;
    }

    .club-registration-head-actions .club-registration-count {
        width: auto;
        min-width: 0;
        box-sizing: border-box;
        padding: 7px 8px;
    }

    /* Liste des présences en fiches verticales */

    .club-presences-body .table-wrap {
        overflow: visible;
        border: 0;
        background: transparent;
    }

    .club-presences-body .data-table,
    .club-presences-body .data-table tbody {
        display: block;
        width: 100%;
        min-width: 0;
    }

    .club-presences-body .data-table thead {
        display: none;
    }

    .club-presences-body .data-table tr {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        margin-bottom: 10px;
        padding: 12px;
        border: 1px solid #d9e2ec;
        border-radius: 10px;
        background: #ffffff;
    }

    .club-presences-body .data-table td {
        display: block;
        width: 100%;
        box-sizing: border-box;
        padding: 0;
        border: 0;
        font-size: 13px;
        overflow-wrap: anywhere;
    }

    .club-presences-body .data-table td:first-child {
        width: 100%;
        padding-bottom: 8px;
        border-bottom: 1px solid #e2e8f0;
        font-size: 14px;
    }

    .club-presences-body .data-table td:nth-child(2),
    .club-presences-body .data-table td:nth-child(3) {
        width: calc(50% - 4px);
    }

    .club-presences-body .data-table td:nth-child(2)::before {
        content: "Fonction : ";
        font-weight: 600;
    }

    .club-presences-body .data-table td:nth-child(3)::before {
        content: "Repas : ";
        font-weight: 600;
    }

    .club-presences-body .data-table td:last-child {
        width: 100%;
        padding-top: 8px;
        border-top: 1px solid #e2e8f0;
    }

    .club-presences-actions {
        display: flex;
        width: 100%;
        gap: 8px;
    }

    .club-presences-actions > button,
    .club-presences-actions > form {
        flex: 1 1 0;
        min-width: 0;
    }

    .club-presences-actions form button {
        width: 100%;
    }

    .club-presences-actions .btn {
        min-height: 38px;
    }

    /* Formulaire de déclaration */

    .club-presences-body [data-presence-manuel-block] {
        grid-template-columns: 1fr;
    }

    .club-presences-body [data-presence-manuel-block] label,
    .club-presences-body [data-presence-manuel-block] input {
        grid-row: auto;
    }

    .club-presences-form-actions {
        flex-direction: column;
        align-items: stretch;
    }

    .club-presences-form-actions .btn {
        width: 100%;
    }
}.category-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.58);
}

.category-modal-box,
.category-modal-box-compact,
.category-modal-box-category {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    width: min(940px, 100%);
    max-height: calc(100vh - 48px);
    overflow: hidden;
    border: 1px solid #d9e2ec;
    border-radius: 15px;
    background: #ffffff;
    box-shadow: 0 24px 70px rgba(15, 23, 42, 0.28);
}

.category-modal-box-compact {
    width: min(820px, 100%);
}

.category-modal-box-category {
    width: min(980px, 100%);
}

.category-modal-header {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 16px 18px;
    border-bottom: 1px solid #e2e8f0;
    background: #fbfdff;
}

.category-modal-header h2 {
    margin: 0;
    color: #102a43;
    font-size: 20px;
}

.category-modal-header p {
    margin: 3px 0 0;
    color: #627d98;
    font-size: 12.5px;
}

.category-modal-close {
    display: inline-flex;
    flex: 0 0 36px;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    min-width: 36px;
    min-height: 36px;
    padding: 0;
    border: 1px solid #d9e2ec;
    border-radius: 50%;
    background: #eef2f7;
    color: #334e68;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 23px;
    font-weight: 400;
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
    transition:
        background-color 0.15s ease,
        border-color 0.15s ease,
        color 0.15s ease,
        transform 0.15s ease;
}

.category-modal-close:hover,
.category-modal-close:focus-visible {
    border-color: #334e68;
    background: #334e68;
    color: #ffffff;
    text-decoration: none;
    outline: none;
}

.category-modal-close-icon {
    display: block;
    width: 16px;
    height: 16px;
    object-fit: contain;
    flex: 0 0 auto;
    pointer-events: none;
    transition: filter 0.15s ease;
}

.category-modal-close:hover .category-modal-close-icon,
.category-modal-close:focus-visible .category-modal-close-icon {
    filter: brightness(0) invert(1);
}

.category-modal-body {
    display: grid;
    grid-template-columns:
        minmax(270px, 0.95fr)
        minmax(340px, 1.05fr);
    min-height: 0;
    flex: 1 1 auto;
    overflow: hidden;
}

.category-reference-list {
    min-height: 0;
    overflow-y: auto;
    padding: 12px;
    border-right: 1px solid #e2e8f0;
    background: #f6f8fb;
}

.category-reference-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 7px;
    padding: 10px 11px;
    border: 1px solid #e2e8f0;
    border-radius: 9px;
    background: #ffffff;
}

.category-reference-row:last-child {
    margin-bottom: 0;
}

.category-reference-row > div:first-child {
    display: grid;
    gap: 3px;
    min-width: 0;
}

.category-reference-row .actions-row {
    flex: 0 0 auto;
}

.category-reference-row.is-inactive {
    border-style: dashed;
    background: #f1f4f7;
}

.category-reference-row.is-inactive > div:first-child {
    opacity: 0.6;
}

.category-reference-name {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 7px;
}

.category-reference-name .status-badge {
    min-height: 20px;
    padding: 2px 6px;
    font-size: 10.5px;
}

.category-modal-form-panel {
    min-height: 0;
    overflow-y: auto;
    padding: 16px 18px 18px;
}

.category-modal-form-panel h3 {
    margin: 0 0 14px;
}

.category-modal-form {
    display: grid;
    gap: 12px;
}

.category-modal-form-grid-2 {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.category-age-help {
    margin-top: 7px;
    padding: 9px 10px;
    border-left: 3px solid #9fb3c8;
    border-radius: 0 7px 7px 0;
    background: #f8fafc;
    color: #526d82;
    font-size: 12.5px;
    line-height: 1.45;
}

.category-modal-form-actions {
    position: sticky;
    bottom: -18px;
    margin: 4px -18px -18px;
    padding: 12px 18px;
    border-top: 1px solid #e2e8f0;
    background: #ffffff;
}

[data-category-edit-source] {
    display: none;
}

.category-modal-category-body {
    min-height: 0;
    flex: 1 1 auto;
    overflow-y: auto;
}

.category-modal-category-body .category-editor-form {
    padding: 18px 20px 20px;
}

.category-modal-category-body .category-editor-actions {
    position: sticky;
    bottom: -20px;
    margin: 4px -20px -20px;
    padding: 12px 20px;
    border-top: 1px solid #e2e8f0;
    background: #ffffff;
}


/* =========================================================
   TABLETTE
   ========================================================= */

@media (max-width: 900px) {
    .category-page-heading {
        align-items: stretch;
        flex-direction: column;
        gap: 12px;
    }

    .category-header-actions {
        width: fit-content;
        max-width: 100%;
    }

    .category-editor-main,
    .category-options-card {
        grid-template-columns: 1fr;
    }

    .category-filters {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }

    .category-modal {
        padding: 12px;
    }

    .category-modal-box,
    .category-modal-box-compact,
    .category-modal-box-category {
        max-height: calc(100vh - 24px);
    }

    .category-modal-body {
        grid-template-columns:
            minmax(220px, 0.85fr)
            minmax(300px, 1.15fr);
    }

    .category-reference-row {
        align-items: flex-start;
        flex-direction: column;
    }

    .category-reference-row .actions-row {
        width: 100%;
    }
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 700px) {
    .category-header-actions {
        width: 100%;
        box-sizing: border-box;
        align-items: stretch;
        flex-direction: column;
    }

    .category-reference-actions {
        display: grid;
        grid-template-columns:
            repeat(3, minmax(0, 1fr));
    }

    .category-reference-actions .btn {
        width: 100%;
        min-width: 0;
        white-space: normal;
    }

    .category-create-summary {
        min-height: 56px;
        padding: 0 14px;
    }

    .category-create-summary-content strong {
        font-size: 16px;
    }

    .category-create-summary-content small {
        display: none;
    }

    .category-editor-form {
        padding: 14px;
    }

    .category-list-card {
        padding: 12px;
    }

    .category-list-card .table-header-line {
        align-items: flex-start;
    }

    .category-filters {
        grid-template-columns: 1fr;
    }

    .category-table-scroll {
        overflow: visible;
        border: 0;
    }

    .category-modal {
        align-items: stretch;
        padding: 0;
    }

    .category-modal-box,
    .category-modal-box-compact,
    .category-modal-box-category {
        width: 100%;
        height: 100dvh;
        max-height: 100dvh;
        border: 0;
        border-radius: 0;
    }

    .category-modal-header {
        padding: 13px 14px;
    }

    .category-modal-header h2 {
        font-size: 18px;
    }

    .category-modal-body {
        display: flex;
        flex-direction: column;
        overflow-y: auto;
    }

    .category-reference-list {
        flex: 0 0 auto;
        max-height: 34vh;
        padding: 10px;
        border-right: 0;
        border-bottom: 1px solid #e2e8f0;
    }

    .category-reference-row {
        flex-direction: row;
        align-items: center;
    }

    .category-reference-row .actions-row {
        width: auto;
    }

    .category-modal-form-panel {
        overflow: visible;
        padding: 14px;
    }

    .category-modal-form-grid-2 {
        grid-template-columns: 1fr;
    }

    .category-modal-form-actions,
    .category-modal-category-body .category-editor-actions {
        bottom: 0;
    }

    .category-modal-category-body .category-editor-form {
        padding: 14px;
    }

    .category-composition-options {
        display: grid;
        grid-template-columns: 1fr;
    }

    .category-editor-actions,
    .category-modal-form-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .category-editor-actions button,
    .category-editor-actions .btn,
    .category-modal-form-actions button,
    .category-modal-form-actions .btn {
        width: 100%;
    }
}

@media (max-width: 420px) {
    .category-reference-actions {
        grid-template-columns: 1fr;
    }
}
.resultats-import-card[open] .category-create-summary {
    border-bottom: 1px solid #e2e8f0;
}

.resultats-import-card[open] .category-create-summary::after {
    content: "−";
}

.resultats-import-form {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
    align-items: start;
    padding: 16px 20px 18px;
    box-sizing: border-box;
}

.resultats-import-form > div {
    display: flex;
    flex-direction: column;
}

.resultats-import-form .form-help {
    margin-top: 5px;
    line-height: 1.25;
}

.form-readonly-value {
    padding: 6px 0 0;
    color: #1f2937;
    line-height: 1.25;
}

.form-readonly-value strong {
    display: block;
}

.form-readonly-value span {
    display: block;
    margin-top: 1px;
}

.resultats-import-form .resultats-import-actions {
    align-self: stretch;
    flex-direction: row;
    align-items: center;
    padding-top: 4px;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 8px;
}

.resultats-import-actions {
    padding-bottom: 0;
}

.badge-info {
    background: #e0f2fe;
    color: #075985;
}

.hidden-download-frame {
    display: none;
    width: 0;
    height: 0;
    border: 0;
}

.alert-info {
    border-color: #bae6fd;
    background: #e0f2fe;
    color: #075985;
}

.public-timeline-upcoming {
    width: 100%;
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
}

.public-timeline-history {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    opacity: 0.88;
}

.public-timeline-history .public-event-card {
    grid-template-columns: minmax(170px, 210px) 1fr;
    gap: 14px;
    padding: 14px;
}

.public-timeline-history .public-event-date {
    min-height: 70px;
    padding: 12px;
    font-size: 17px;
}

.public-timeline-history .public-event-line {
    font-size: 14px;
}

.public-event-card-past {
    background: #f8fafc;
}

.public-event-card-past h2 {
    color: #334e68;
}

@media (max-width: 1000px) {
    .public-timeline-history {
        grid-template-columns: 1fr;
        width: 100%;
        max-width: 900px;
        margin-left: auto;
        margin-right: auto;
    }
}

@media (max-width: 620px) {
    .public-timeline-history .public-event-card {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 14px;
    }

    .public-timeline-history .public-event-date {
        min-height: 0;
        padding: 12px 14px;
        font-size: 18px;
    }

    .public-timeline-history .public-event-line {
        font-size: 15px;
    }
}

.admin-inscription-filters {
    display: grid;
    grid-template-columns: minmax(240px, 1fr) minmax(260px, 1fr) auto;
    gap: 14px;
    align-items: end;
    margin-top: 14px;
}

.admin-inscription-live-filters {
    display: grid;
    grid-template-columns: minmax(230px, 1.4fr) minmax(180px, 1fr) minmax(220px, 1fr);
    gap: 12px;
    align-items: end;
    margin: 14px 0;
    padding: 12px;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    background: #f8fafc;
}

.admin-inscription-selection {
    max-height: 420px;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
}

.admin-inscription-selection .data-table th {
    position: sticky;
    top: 0;
    z-index: 2;
}

.col-checkbox {
    width: 42px;
    text-align: center;
}

.championship-list-section .section-title-row {
    margin-bottom: 8px;
}

.championship-stats {
    display: flex;
    align-items: stretch;
    gap: 8px;
}

.championship-stats .stat-card {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 9px 13px;
    border-radius: 9px;
    box-shadow: none;
}

.championship-stats .stat-card span {
    margin: 0;
    font-size: 11.5px;
}

.championship-stats .stat-card strong {
    flex: 0 0 auto;
    font-size: 19px;
    line-height: 1;
}

.championship-controls-row {
    display: flex;
    align-items: stretch;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.championship-toolbar,
.championship-season-form {
    display: flex;
    align-items: center;
    gap: 10px;
}

.championship-control-card {
    width: fit-content;
    max-width: 100%;
    padding: 8px 10px;
    border: 1px solid #d9e2ec;
    border-radius: 11px;
    background: #ffffff;
    box-shadow: none;
}

.championship-control-title {
    padding-right: 10px;
    border-right: 1px solid #e5e7eb;
    color: #334e68;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.championship-control-fields {
    display: flex;
    align-items: center;
    gap: 7px;
    flex-wrap: wrap;
}

.championship-control-card label {
    margin: 0;
    color: #7b8794;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
}

.championship-toolbar select {
    width: 132px;
    min-width: 132px;
}

.championship-season-form input {
    width: 82px;
    min-height: 34px;
    padding: 6px 9px;
}

.championship-create-card {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin: 14px 0 18px;
}

.championship-create-card.categories-card-fit {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.championship-create-card .category-create-summary {
    width: 100%;
}

.championship-create-card .championship-create-form {
    padding: 18px 20px 20px;
}

.championship-create-card .championship-create-form,
.championship-edit-card .championship-create-form {
    display: grid;
    grid-template-columns:
        minmax(190px, 0.75fr)
        minmax(270px, 1fr)
        minmax(360px, 1.45fr);
    gap: 10px;
    align-items: stretch;
}

.championship-create-group {
    display: flex;
    flex-direction: column;
    min-width: 0;
    padding: 10px 11px;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #f8fafc;
}

.championship-create-group-title {
    display: block;
    margin-bottom: 7px;
    color: #52616f;
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.championship-create-fields {
    display: grid;
    gap: 9px;
    align-items: end;
}

.championship-create-fields-main {
    grid-template-columns: 1fr;
}

.championship-create-fields-dates {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.championship-create-fields-organisation {
    grid-template-columns: minmax(220px, 1.45fr) minmax(120px, 0.55fr);
}

.championship-create-form label {
    margin-bottom: 5px;
    font-size: 11.5px;
}

.championship-create-form .checkbox-field {
    display: flex;
    align-items: center;
    min-height: 28px;
    padding: 0;
}

.championship-create-form .checkbox-field label {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin: 0;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
}

.championship-create-form .checkbox-field input {
    width: auto;
    min-height: auto;
}

.championship-form-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 10px;
}

.championship-form-actions button {
    min-width: 180px;
    white-space: nowrap;
}

.championship-edit-card {
    max-width: 1140px;
}

/* Édition championnat : disposition tablette identique au mobile */
@media (max-width: 1100px) {
    .championship-edit-card {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }

    .championship-edit-card .championship-create-form {
        display: grid;
        grid-template-columns: minmax(0, 1fr) !important;
        width: 100%;
        min-width: 0;
    }

    .championship-edit-card .championship-create-group,
    .championship-edit-card .championship-create-group-wide,
    .championship-edit-card .championship-create-action {
        grid-column: 1 / -1 !important;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        box-sizing: border-box;
    }
}

.championship-edit-card .championship-form-actions {
    margin-top: auto;
    padding-top: 10px;
}

@media (max-width: 900px) {
    .championship-form-actions {
        justify-content: stretch;
    }

    .championship-form-actions button,
    .championship-form-actions .btn {
        flex: 1 1 auto;
    }
}

@media (max-width: 600px) {
    .championship-form-actions {
        flex-direction: column;
        align-items: stretch;
    }

    .championship-form-actions button,
    .championship-form-actions .btn {
        width: 100%;
        min-width: 0;
    }
}

@media (max-width: 1180px) {
    .championship-create-form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .championship-create-group-wide {
        grid-column: 1 / 3;
    }

    .championship-create-action {
        grid-column: 1 / 3;
        justify-content: flex-end;
    }
}

@media (max-width: 900px) {
    .championship-stats {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .championship-controls-row {
        flex-direction: column;
    }

    .championship-control-card {
        width: 100%;
        box-sizing: border-box;
    }

    .championship-toolbar,
    .championship-season-form {
        justify-content: space-between;
    }

    .championship-create-card .championship-create-form,
    .championship-edit-card .championship-create-form {
        grid-template-columns: 1fr;
    }

    .championship-create-fields-dates > div {
        width: 100%;
        min-width: 0;
        max-width: 100%;
    }

    .championship-create-fields-dates input[type="date"] {
        display: block;
        -webkit-appearance: none;
        appearance: none;
        box-sizing: border-box;
        width: 100%;
        max-width: 100%;
        min-width: 0;
        height: 38px;
        min-height: 38px;
        margin: 0;
        padding: 8px 10px;
        font-size: 16px;
        line-height: 20px;
    }

    .championship-create-fields-dates input[type="date"]::-webkit-date-and-time-value {
        min-height: 20px;
        margin: 0;
        padding: 0;
        text-align: left;
    }

    .championship-create-group-wide,
    .championship-create-action {
        grid-column: auto;
    }

    .championship-create-action {
        justify-content: stretch;
    }

    .championship-create-action button {
        width: 100%;
    }
}

@media (max-width: 600px) {
    .championship-stats {
        grid-template-columns: 1fr;
    }

    .championship-control-card,
    .championship-toolbar,
    .championship-season-form,
    .championship-control-fields {
        align-items: stretch;
    }

    .championship-toolbar,
    .championship-season-form {
        flex-direction: column;
    }

    .championship-control-title {
        padding: 0 0 6px;
        border-right: 0;
        border-bottom: 1px solid #e5e7eb;
    }

    .championship-control-fields {
        display: grid;
        grid-template-columns: 1fr;
    }

    .championship-create-fields-main,
    .championship-create-fields-dates,
    .championship-create-fields-organisation {
        grid-template-columns: 1fr;
    }

    .championship-create-form .checkbox-field {
        min-height: 30px;
    }
}

/* Administration des clubs
   ========================================================= */

.admin-clubs-table th,
.admin-clubs-table td {
    vertical-align: middle;
}

.admin-clubs-table th:nth-child(5),
.admin-clubs-table td:nth-child(5) {
    text-align: center;
    width: 80px;
}

.admin-clubs-table th:nth-child(6),
.admin-clubs-table td:nth-child(6) {
    width: 1%;
    white-space: nowrap;
    text-align: right;
}

.admin-clubs-table .actions-column {
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
    gap: 8px;
    width: max-content;
    margin-left: auto;
}

.admin-clubs-table .actions-column form {
    flex: 0 0 auto;
    margin: 0;
}

.admin-clubs-table .actions-column .btn {
    flex: 0 0 auto;
    min-width: 112px;
}

.admin-clubs-table .actions-column .btn-danger,
.admin-clubs-table .actions-column button.btn-delete-icon {
    flex: 0 0 36px;
    width: 36px;
    min-width: 36px;
}


.admin-club-mobile-header {
    display: none;
}

.admin-club-name-line {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 7px;
    max-width: 100%;
}

.admin-club-inactive-dot {
    display: inline-block;
    flex: 0 0 7px;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background-color: #dc2626;
    vertical-align: middle;
}

.club-status-stack {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
}


.club-delete-note {
    display: inline-flex;
    max-width: 120px;
    font-size: 12px;
    font-weight: 700;
    color: #991b1b;
    line-height: 1.25;
}

.club-delete-lock-box {
    flex: 0 1 200px;
    min-width: 170px;
    max-width: 220px;
    padding: 4px 7px;
    border: 1px solid #f3d49b;
    border-radius: 6px;
    background: transparent;
    text-align: left;
    white-space: normal;
}

.club-delete-lock-title {
    color: #92400e;
    font-size: 11px;
    font-weight: 800;
    line-height: 1.2;
}

.club-delete-lock-text {
    margin-top: 1px;
    color: #64748b;
    font-size: 10px;
    line-height: 1.2;
}

@media (max-width: 640px) {
    .admin-clubs-table .club-delete-lock-box {
        flex: none;
        width: 100%;
        max-width: none;
        min-width: 0;
        padding: 8px 10px;
        background: #fffbeb;
    }

    .admin-clubs-table .club-delete-lock-title {
        font-size: 12px;
    }

    .admin-clubs-table .club-delete-lock-text {
        margin-top: 2px;
        font-size: 11px;
    }
}

.text-center {
    text-align: center;
}

/* Page club - inscriptions
   ========================================================= */

.club-open-championships-card .table-header-line {
    align-items: center;
    gap: 12px;
}

.club-open-championships-card .table-header-line .btn {
    margin-left: auto;
}

.club-my-inscriptions-card {
    max-width: 1180px;
}

.club-inscription-search {
    padding: 12px 14px 10px;
}

.club-inscription-search label {
    margin-bottom: 6px;
}

.club-inscriptions-table {
    table-layout: fixed;
    width: 100%;
}

.club-inscriptions-table th:nth-child(1),
.club-inscriptions-table td:nth-child(1) {
    width: 90px;
    white-space: nowrap;
}

.club-inscriptions-table th:nth-child(2),
.club-inscriptions-table td:nth-child(2) {
    width: 32%;
}

.club-inscriptions-table th:nth-child(3),
.club-inscriptions-table td:nth-child(3) {
    width: 28%;
}

.club-inscriptions-table th:nth-child(4),
.club-inscriptions-table td:nth-child(4) {
    width: 110px;
    text-align: center;
}

.club-inscriptions-table th:nth-child(5),
.club-inscriptions-table td:nth-child(5) {
    width: 130px;
    text-align: right;
}

.club-inscriptions-table.club-inscriptions-consultation-table {
    min-width: 0;
}

.club-inscriptions-consultation-table th:nth-child(1),
.club-inscriptions-consultation-table td:nth-child(1) {
    width: 100px;
}

.club-inscriptions-consultation-table th:nth-child(2),
.club-inscriptions-consultation-table td:nth-child(2) {
    width: 48%;
}

.club-inscriptions-consultation-table th:nth-child(3),
.club-inscriptions-consultation-table td:nth-child(3) {
    width: auto;
}

/* Page admin - utilisateurs
   ========================================================= */

.admin-users-layout {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

/* En-tête de gestion des utilisateurs */
.admin-users-page-header {
    align-items: flex-start;
}

.admin-users-page-header > .btn {
    margin-top: 2px;
}

/* Admin - Modale de création des utilisateurs */

.admin-users-modal-box {
    width: min(640px, 100%);
}

/* Modale de gestion des utilisateurs */

.admin-user-edit-modal-box {
    display: flex;
    flex-direction: column;
    width: min(760px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 48px);
}

.admin-user-edit-modal-content {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    background: #ffffff;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.admin-user-edit-modal-content > .alert {
    margin-bottom: 16px;
}

.admin-user-edit-form {
    margin: 0;
}

.admin-user-edit-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    align-items: start;
}

.admin-user-edit-fields > div {
    min-width: 0;
}

.admin-user-edit-fields label {
    display: block;
    margin-bottom: 6px;
}

.admin-user-edit-fields input,
.admin-user-edit-fields select {
    width: 100%;
    min-width: 0;
}

.admin-user-edit-status {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
}

.admin-user-password-details {
    margin-top: 20px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    overflow: hidden;
}

/* Espacement de l'icône Mot de passe dans la modale */
.admin-user-password-details > .user-password-card-summary::after {
    right: 16px;
}

.admin-user-password-details[hidden] {
    display: none !important;
}

/* Pied de la modale de gestion des utilisateurs */

.admin-user-edit-modal-footer {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 0 0 auto;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.admin-user-edit-modal-footer > [data-close-user-edit] {
    margin-left: auto;
}

.admin-user-edit-modal-footer > button[hidden] {
    display: none !important;
}

@media (max-width: 700px) {
    .category-modal.admin-user-edit-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.admin-user-edit-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .admin-user-edit-modal-content {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .admin-user-edit-fields {
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
    }
}

.admin-users-modal-content {
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
}

.admin-users-modal .admin-user-create-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 16px;
    padding: 0;
}

.admin-users-modal .admin-user-create-form > div {
    min-width: 0;
}

.admin-users-modal .admin-user-create-form label {
    display: block;
    margin-bottom: 6px;
}

.admin-users-modal .admin-user-create-form input,
.admin-users-modal .admin-user-create-form select {
    width: 100%;
    min-width: 0;
}

.admin-users-modal-actions {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
    margin-top: 20px;
}

.admin-users-modal .admin-user-create-form
.admin-users-modal-actions {
    grid-column: 1 / -1;
    margin-top: 6px;
}

.admin-users-modal-content > .alert {
    margin-bottom: 16px;
}

.admin-users-modal-content .info-box {
    margin-bottom: 0;
}

@media (max-width: 900px) {
    .category-modal.admin-users-modal {
        align-items: center;
        justify-content: center;
        padding: 12px;
    }

    .category-modal .category-modal-box.admin-users-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 24px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .admin-users-modal-content {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }

    .category-modal.admin-users-modal .admin-users-modal-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: stretch;
        justify-content: center;
        gap: 10px;
        width: 100%;
        max-width: none;
        margin-left: 0;
        margin-right: 0;
    }

    .category-modal.admin-users-modal .admin-users-modal-actions > button {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        text-align: center;
        white-space: normal;
    }

    .category-modal.admin-users-modal .admin-users-modal-actions > button:only-child {
        grid-column: 1 / -1;
        width: min(280px, 100%);
        justify-self: center;
    }
}

@media (max-width: 700px) {
    .admin-users-modal .admin-user-create-form {
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
    }
}

@media (min-width: 701px) and (max-width: 900px) {
    .category-modal.admin-users-modal .admin-users-modal-actions {
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
    }
}

/* Fonctions fédérales
   ========================================================= */

.admin-federal-functions-layout {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.admin-federal-function-form-card,
.admin-federal-functions-table-card {
    width: 100%;
    max-width: 1180px;
}

.admin-federal-function-form {
    display: grid;
    grid-template-columns: minmax(260px, 520px) auto;
    gap: 14px;
    align-items: end;
    padding: 18px 20px 20px;
}

.admin-federal-function-field {
    min-width: 0;
}

.admin-federal-function-form-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}

.admin-federal-functions-table th:nth-child(3),
.admin-federal-functions-table td:nth-child(3) {
    width: 1%;
    white-space: nowrap;
    text-align: right;
}

.admin-federal-functions-table .actions-column {
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
    gap: 8px;
    width: max-content;
    margin-left: auto;
}

.admin-federal-functions-table .actions-column form {
    flex: 0 0 auto;
    margin: 0;
}

.admin-federal-functions-table .actions-column .btn,
.admin-federal-functions-table .actions-column button {
    flex: 0 0 auto;
    min-width: 112px;
}


/* Modification d'une fonction fédérale */

.federal-function-edit-layout {
    display: flex;
    flex-direction: column;
    gap: 18px;
    width: 100%;
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
}

.federal-holder-summary {
    margin-bottom: 16px;
    padding: 14px 16px;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    background: #f8fafc;
}

.federal-holder-summary p {
    margin: 0;
}

.federal-holder-summary p + p {
    margin-top: 8px;
}

.federal-holder-form {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.federal-holder-panel {
    padding: 16px;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    background: #f8fafc;
}

.federal-holder-panel.is-hidden {
    display: none;
}

.federal-holder-help {
    margin-top: 8px;
}

.federal-holder-panel label {
    display: block;
    margin-bottom: 8px;
}

.federal-holder-panel select,
.federal-holder-panel input {
    width: 100%;
}

@media (max-width: 700px) {
    .federal-holder-panel {
        padding: 14px;
    }
}

/* Édition fonction fédérale : cartes pleine largeur en mode tablette */
@media (max-width: 1100px) {
    .federal-function-edit-layout {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }

    .federal-function-edit-layout > .card,
    .federal-function-edit-layout > section {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }
}

.federal-signature-card h2,
.federal-signature-card h3 {
    margin-top: 0;
}

.federal-signature-current {
    margin-top: 18px;
    padding: 16px;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    background: #f8fafc;
}

.federal-signature-preview {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 120px;
    margin: 12px 0;
    padding: 12px;
    border: 1px solid #dbe3ec;
    border-radius: 10px;
    background: #ffffff;
}

.federal-signature-preview img {
    display: block;
    max-width: 280px;
    max-height: 110px;
    object-fit: contain;
}

.federal-signature-methods {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-top: 20px;
}


.federal-signature-method {
    display: flex;
    flex-direction: column;
    padding: 16px;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    background: #f8fafc;
}

.fdo-signature-page .federal-signature-method:last-child form {
    display: flex;
    flex-direction: column;
    flex: 1;
}

.fdo-signature-page .federal-signature-method:last-child form > button[type="submit"] {
    align-self: flex-start;
    margin-top: auto;
    margin-bottom: 0;
}

@media (max-width: 700px) {
    .fdo-signature-page .federal-signature-method:last-child form > button[type="submit"] {
        width: 100%;
        margin-top: 12px;
    }
}


.federal-signature-canvas-wrap {
    width: 100%;
    margin-top: 12px;
    border: 1px solid #cbd5e1;
    border-radius: 10px;
    overflow: hidden;
    background: #ffffff;
}

.federal-signature-canvas {
    display: block;
    width: 100%;
    height: 220px;
    cursor: crosshair;
    touch-action: none;
}

.federal-signature-canvas-actions {
    display: flex;
    gap: 8px;
    margin-top: 12px;
}


/* Cartes fonctions fédérales - tablette et mobile */

@media (max-width: 1100px) {
    .admin-federal-functions-table {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        table-layout: auto !important;
        border-collapse: separate;
        border-spacing: 0;
    }

    .admin-federal-functions-table thead {
        display: none;
    }

    .admin-federal-functions-table tbody {
        display: block;
        width: 100%;
    }

    /* Fonctions fédérales : fiches mobiles compactes */

    .admin-federal-functions-table tr {
        display: flex;
        position: relative;
        flex-direction: column;
        width: 100%;
        margin-bottom: 12px;
        border: 1px solid #e2e8f0;
        border-radius: 12px;
        background: #ffffff;
        overflow: hidden;
        box-sizing: border-box;
    }

    .admin-federal-functions-table td,
    .admin-federal-functions-table td:nth-child(n) {
        display: block !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        min-height: 0;
        padding: 10px 12px;
        border-bottom: 1px solid #eef2f7;
        box-sizing: border-box;
        white-space: normal !important;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    /* Nom de la fonction */

    .admin-federal-functions-table.mobile-card-table
    td[data-label="Fonction"] {
        order: 1;
        padding: 12px 12px 4px 12px !important;
        border-bottom: 0 !important;
    }

    .admin-federal-functions-table.mobile-card-table
    td[data-label="Fonction"]::before {
        display: none !important;
        content: none;
    }

    .admin-federal-functions-table.mobile-card-table
    td[data-label="Fonction"] strong {
        display: block;
        color: #1f2933;
        font-size: 16px;
        font-weight: 700;
        line-height: 1.35;
    }

    /* Titulaire sous le nom de la fonction */

    .admin-federal-functions-table.mobile-card-table
    td[data-label="Titulaire"] {
        order: 2;
        padding: 3px 12px 12px 12px !important;
        color: #52616b;
        font-size: 13px;
        line-height: 1.4;
    }

    .admin-federal-functions-table.mobile-card-table
    td[data-label="Titulaire"]::before {
        display: none !important;
        content: none;
    }

    .admin-federal-functions-table.mobile-card-table td[data-label="Actions"] {
        display: block !important;
        width: 100% !important;
        text-align: right !important;
    }

    .admin-federal-functions-table.mobile-card-table td[data-label="Actions"]::before {
        display: none !important;
        content: none;
    }

    .admin-federal-functions-table td[data-label="Actions"] .actions-column {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-end !important;
        flex-wrap: wrap;
        width: 100% !important;
        max-width: 100%;
        gap: 8px;
        margin: 0 !important;
    }


    .admin-federal-functions-table td[data-label="Actions"] form {
        flex: 0 0 auto !important;
        width: auto !important;
        margin: 0 !important;
    }

    .admin-federal-functions-table td[data-label="Actions"] .btn,
    .admin-federal-functions-table td[data-label="Actions"] button {
        flex: 0 0 auto !important;
        width: auto !important;
        min-width: 112px;
        margin: 0 !important;
    }
}


@media (max-width: 700px) {
    .admin-federal-function-form {
        grid-template-columns: 1fr;
    }

    .admin-federal-function-form-actions {
        width: 100%;
    }

    .admin-federal-function-form-actions button {
        width: 100%;
    }

    .federal-signature-methods {
        grid-template-columns: 1fr;
    }

    .federal-signature-canvas {
        height: 190px;
    }

    .federal-signature-canvas-actions {
        flex-direction: column;
    }

    .federal-signature-canvas-actions .btn,
    .federal-signature-canvas-actions button {
        width: 100%;
    }
}

/* Page autonome de signature du président */


/* Modale de la page autonome de signature */

.fdo-signature-dialog {
    width: min(400px, calc(100% - 32px));
    max-width: none;
    box-sizing: border-box;
    padding: 24px;
    border: 1px solid #d5e0ec;
    border-radius: 12px;
    background: #ffffff;
    color: #172f49;
    box-shadow: 0 16px 48px rgba(15, 23, 42, 0.22);
}

.fdo-signature-dialog::backdrop {
    background: rgba(15, 23, 42, 0.55);
}

.fdo-signature-dialog h2 {
    margin: 0 0 12px;
    font-size: 20px;
    line-height: 1.3;
}

.fdo-signature-dialog p {
    margin: 0 0 24px;
    line-height: 1.5;
}

.fdo-signature-dialog form {
    display: flex;
    justify-content: flex-end;
}

@media (max-width: 640px) {
    .fdo-signature-dialog {
        padding: 18px;
    }

    .fdo-signature-dialog form button {
        width: 100%;
        min-height: 42px;
    }
}

.fdo-signature-page {
    margin: 0;
    min-height: 100vh;
    overflow-x: hidden;
}

.fdo-signature-header {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 24px 16px 12px;
}

.fdo-signature-logo {
    display: block;
    width: 220px;
    max-width: 100%;
    height: auto;
    object-fit: contain;
}

.fdo-signature-main {
    width: calc(100% - 32px);
    max-width: 1000px;
    margin: 0 auto 40px;
}

.fdo-signature-intro {
    margin: 12px 0 24px;
    text-align: center;
}

.fdo-signature-intro h1 {
    margin: 0 0 8px;
    font-size: 28px;
    line-height: 1.3;
}

.fdo-signature-intro p {
    margin: 0;
    color: #52616b;
    line-height: 1.5;
}

.fdo-signature-main > .card {
    padding: 22px;
}

.fdo-signature-main .federal-signature-card > h2 {
    margin-top: 0;
    text-align: center;
}

.fdo-signature-status {
    text-align: center;
}

@media (max-width: 640px) {
    .fdo-signature-header {
        padding: 16px 12px 8px;
    }

    .fdo-signature-logo {
        width: 160px;
    }

    .fdo-signature-main {
        width: calc(100% - 24px);
        margin-bottom: 24px;
    }

    .fdo-signature-intro {
        margin: 8px 0 18px;
    }

    .fdo-signature-intro h1 {
        font-size: 22px;
    }

    .fdo-signature-main > .card {
        padding: 14px;
    }
}
.admin-users-create-card,
.admin-users-table-card {
    width: 100%;
    max-width: 1180px;
}

.admin-user-create-form {
    display: grid;
    grid-template-columns: 1fr 1fr 1.1fr 1.2fr 180px auto;
    gap: 14px;
    align-items: end;
    padding: 18px 20px 20px;
}

.admin-user-create-action {
    display: flex;
    align-items: end;
}

.admin-user-create-action button {
    width: 100%;
}

.admin-users-table th:nth-child(5),
.admin-users-table td:nth-child(5),
.admin-users-table th:nth-child(6),
.admin-users-table td:nth-child(6) {
    text-align: center;
    white-space: nowrap;
}

.admin-users-table th:nth-child(7),
.admin-users-table td:nth-child(7) {
    width: 1%;
    white-space: nowrap;
    text-align: right;
}


.admin-user-mobile-header {
    display: none;
}

.admin-users-table .actions-column {
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
    gap: 8px;
    width: max-content;
    margin-left: auto;
}


.admin-users-table .actions-column form {
    flex: 0 0 auto;
    margin: 0;
}

.admin-users-table .actions-column .btn {
    flex: 0 0 auto;
    min-width: 112px;
}

.admin-users-table .actions-column .btn-danger,
.admin-users-table .actions-column button.btn-delete-icon {
    flex: 0 0 36px;
    width: 36px;
    min-width: 36px;
}

@media (max-width: 1100px) {
    .admin-user-create-form {
        grid-template-columns: repeat(2, minmax(220px, 1fr));
    }

    .admin-user-create-action {
        grid-column: 1 / -1;
    }
}

@media (max-width: 700px) {
    .admin-user-create-form {
        grid-template-columns: 1fr;
    }

    .club-inscriptions-table {
        table-layout: auto;
        width: max-content;
    }
}

.danseur-management-card {
    padding: 14px 16px;
}

.danseur-management-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
}

.danseur-management-content h2 {
    margin: 0 0 3px;
    font-size: 16px;
}

.danseur-management-content p {
    margin: 0;
}

.danseur-management-content form {
    flex: 0 0 auto;
    margin: 0;
}

@media (max-width: 700px) {
    .danseur-management-content {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }

    .danseur-management-content .btn {
        width: 100%;
    }
}

/* Visualiseur des documents de licence
   ========================================================= */

.licence-document-viewer {
    margin: 0;
    min-height: 100vh;
    background: #f1f5f9;
}

.licence-document-viewer-frame {
    display: block;
    width: 100%;
    height: 100vh;
    border: 0;
    background: #fff;
}

.licence-document-viewer-image-wrap {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    min-height: 100vh;
    padding: 20px;
}

.licence-document-viewer-image {
    display: block;
    max-width: 100%;
    height: auto;
    box-shadow: 0 2px 12px rgba(15, 23, 42, 0.12);
}

.licence-document-viewer-unsupported {
    max-width: 520px;
    margin: 60px auto;
    padding: 20px;
    text-align: center;
}

/* Page club - danseurs / dossards
   ========================================================= */

/* Dossards - cartes, tableau et impression
   ========================================================= */

.dossards-page {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 20px;
}

.dossard-create-card,
.card-wide-content {
    width: 100%;
    max-width: 100%;
}

.card-wide-content.table-wrap {
    overflow-x: auto;
}

.card-wide-content .table-header-line {
    justify-content: center;
}

.card-wide-content h2 {
    text-align: center;
}

.card-wide-content .data-table {
    width: 100%;
}

.card-wide-content .data-table th,
.card-wide-content .data-table td {
    text-align: center;
}

.card-wide-content .actions-row,
.card-wide-content .dossard-actions {
    justify-content: center;
}

.club-dossards-table .col-actions {
    width: 150px;
    min-width: 150px;
    white-space: nowrap;
}

.club-dossards-table .dossard-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex-wrap: nowrap;
}

.club-dossards-table .dossard-actions .inline-form {
    margin: 0;
    flex: 0 0 auto;
}

.club-dossards-table .dossard-actions .btn-secondary {
    white-space: nowrap;
}

.club-dossards-table .dossard-manage-mobile {
    display: none;
}

@media (min-width: 1101px) {
    .club-dossards-table td[data-label="Dossard"] .dossard-mobile-status {
        display: none;
    }
}

.dossard-modal-open {
    overflow: hidden;
}

/* Gestion d'un dossard : fenêtre adaptée au contenu */

.dossard-modal {
    align-items: center;
    justify-content: center;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

.dossard-modal .dossard-modal-box {
    display: flex;
    flex-direction: column;
    width: min(650px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 24px);
    overflow: hidden;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
}

.dossard-modal .dossard-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    max-height: 100%;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.dossard-modal .category-modal-header {
    gap: 12px;
}

.dossard-modal .category-modal-header h2 {
    font-size: 19px;
}

.dossard-modal-close {
    flex: 0 0 auto;
}

.dossard-modal-body {
    display: flex;
    flex-direction: column;
    gap: 22px;
    padding: 22px;
    overflow-y: auto;
}

.dossard-manage-section {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
}

.dossard-manage-section + .dossard-manage-section {
    padding-top: 20px;
    border-top: 1px solid #e2e8f0;
}

.dossard-manage-section h3 {
    margin: 0;
    color: #102a43;
    font-size: 16px;
}

.dossard-manage-value {
    font-weight: 600;
    line-height: 1.4;
}

.dossard-manage-empty {
    color: #64748b;
    font-size: 13px;
    font-style: italic;
}

.dossard-manage-form {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.dossard-manage-form label {
    font-weight: 600;
}

.dossard-manage-form input {
    width: 100%;
}

.dossard-manage-form .btn {
    align-self: flex-end;
    padding: 9px 16px;
}

.dossard-music-error {
    margin: 0;
    font-size: 13px;
    line-height: 1.45;
}

.dossard-music-error[hidden] {
    display: none !important;
}

.dossard-music-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 4px;
}

.dossard-music-delete-form {
    display: flex;
    margin: 0 auto 0 0;
}

.dossard-music-file {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    min-width: 0;
}

.dossard-music-file-info {
    flex: 1 1 auto;
    min-width: 0;
    overflow-wrap: anywhere;
}

.dossard-music-file-info .muted-text {
    margin: 5px 0 0;
}

.dossard-music-download {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
}

.dossard-music-download .btn {
    min-height: 36px;
    padding: 8px 14px;
    white-space: nowrap;
}

@media (max-width: 640px) {
    .dossard-music-file {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
    }

    .dossard-music-download .btn {
        width: 100%;
        justify-content: center;
    }
}

.dossard-music-actions .btn {
    min-height: 36px;
    white-space: nowrap;
}

@media (max-width: 640px) {

    /* Gestion d'un dossard : suppression à gauche,
       remplacement à droite, sur une même ligne. */

    .dossard-modal .dossard-music-actions {
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        flex-wrap: nowrap;
        gap: 10px;
        width: 100%;
    }

    .dossard-modal .dossard-music-delete-form {
        display: flex;
        flex: 0 0 auto;
        width: auto;
        margin: 0 auto 0 0;
    }

    .dossard-modal .dossard-music-delete-form .btn {
        display: inline-flex;
        flex: 0 0 44px;
        align-items: center;
        justify-content: center;
        width: 44px;
        min-width: 44px;
        max-width: 44px;
        height: 44px;
        min-height: 44px;
        padding: 0;
    }

    .dossard-modal .dossard-music-actions > .btn {
        flex: 0 1 auto;
        width: auto;
        min-width: 0;
        max-width: 100%;
        min-height: 44px;
        margin: 0;
        padding: 10px 16px;
        white-space: normal;
        text-align: center;
    }
}

.dossard-manage-section > .alert-warning {
    margin: 0;
    font-size: 13px;
    line-height: 1.5;
}

.dossard-manage-section .muted-text {
    margin: 0;
    line-height: 1.5;
}

/* =========================================================
   ESPACE CLUB - GESTION D'UN DOSSARD
   Adaptation smartphone et petites fenêtres
   ========================================================= */

@media screen and (max-width: 700px) {

    .dossard-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .dossard-modal .dossard-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .dossard-modal .category-modal-header {
        flex: 0 0 auto;
        padding: 14px;
    }

    .dossard-modal .category-modal-header h2 {
        font-size: 18px;
        line-height: 1.2;
    }

    .dossard-modal .dossard-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        height: auto;
        padding: 16px;
        gap: 18px;
        overflow-x: hidden;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    .dossard-modal .dossard-manage-section {
        gap: 12px;
    }

    .dossard-modal .dossard-manage-section
    + .dossard-manage-section {
        padding-top: 18px;
    }

    /* Actions sur toute la largeur en portrait */

    .dossard-modal .dossard-manage-form .btn {
        align-self: stretch;
        justify-content: center;
        width: 100%;
        min-width: 0;
        min-height: 44px;
        margin: 0;
        padding: 10px 12px;
        white-space: normal;
        text-align: center;
    }

    .dossard-modal .dossard-music-actions {
        align-items: stretch;
    }

    .dossard-modal .dossard-music-actions .btn {
        min-height: 44px;
        white-space: normal;
        text-align: center;
    }
}

/* Paysage : limiter la hauteur et compacter le contenu */

@media screen and (min-width: 701px) and (max-height: 550px) {

    .dossard-modal {
        padding: 10px;
    }

    .dossard-modal .dossard-modal-box {
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
    }

    .dossard-modal .category-modal-header {
        flex: 0 0 auto;
        padding: 10px 14px;
    }

    .dossard-modal .category-modal-header h2 {
        font-size: 18px;
    }

    .dossard-modal .dossard-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        height: auto;
        padding: 12px 16px 16px;
        gap: 14px;
        overflow-x: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }

    .dossard-modal .dossard-manage-section {
        gap: 10px;
    }

    .dossard-modal .dossard-manage-section
    + .dossard-manage-section {
        padding-top: 14px;
    }

    .dossard-modal .dossard-manage-form {
        gap: 8px;
    }

    .dossard-modal .dossard-manage-form .btn {
        align-self: flex-end;
        width: auto;
        min-height: 40px;
    }
}

.dossard-create-access-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 20px;
}

.dossard-create-access-card h2 {
    margin-bottom: 4px;
}

.dossard-create-access-card .muted-text {
    margin: 0;
}

.dossards-print-card {
    width: fit-content;
    max-width: 100%;
    margin-bottom: 20px;
}

.dossards-list-header {
    align-items: center;
    flex-direction: column;
    gap: 14px;
}

.dossards-list-header h2 {
    margin: 0;
}

.dossards-list-header .actions-row {
    margin-left: 0;
}

.dossard-print-actions {
    justify-content: center;
    gap: 10px;
    flex-wrap: wrap;
}

@media (max-width: 900px) {
    .dossard-create-access-card {
        align-items: stretch;
        flex-direction: column;
    }

    .dossard-create-access-card .btn {
        justify-content: center;
        width: 100%;
    }

    .dossards-print-card {
        width: 100%;
    }
}

.hidden-submit-form {
    display: none;
}

.admin-inscription-live-search {
    margin: 16px 0 10px;
}

.admin-inscription-live-search label {
    display: block;
    margin-bottom: 6px;
    font-weight: 600;
}

.admin-inscription-live-search input {
    width: 100%;
    max-width: 430px;
}

.admin-inscription-selection-info {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 8px 16px;
    margin-bottom: 12px;
}

.admin-inscription-selection-table tr[hidden] {
    display: none !important;
}

.admin-inscription-selection-actions {
    align-items: center;
    flex-wrap: wrap;
}

.admin-inscription-selection-actions button:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

@media (max-width: 640px) {
    .admin-inscription-live-search input {
        max-width: none;
    }

    .admin-inscription-selection-actions button {
        width: 100%;
        justify-content: center;
    }
}

.admin-inscriptions-unified {
    width: 100%;
}

.admin-inscriptions-unified .club-registration-manager-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.admin-inscriptions-unified .club-registration-manager-head h2 {
    margin: 0 0 6px;
}

.admin-inscriptions-unified .club-registration-manager-head .muted-text {
    margin: 0;
}

.admin-inscriptions-unified .club-registration-head-actions {
    display: flex;
    align-items: center;
    flex: 0 0 auto;
}

.admin-inscriptions-unified .club-registration-count {
    min-width: 92px;
}

.admin-registration-filters {
    display: grid;
    grid-template-columns:
        minmax(0, 2fr)
        minmax(0, 1.25fr)
        minmax(0, 1.25fr)
        minmax(0, 0.85fr);
    align-items: end;
    gap: 12px;
    margin-top: 18px;
}

.admin-registration-filters > div {
    min-width: 0;
}

.admin-registration-filters form {
    margin: 0;
}

.admin-registration-filters input,
.admin-registration-filters select {
    width: 100%;
    min-width: 0;
}

.admin-registration-reset {
    display: flex;
    justify-content: flex-end;
    margin-top: 10px;
}

.admin-registration-results {
    display: flex;
    align-items: center;
    margin-top: 12px;
}

.admin-inscriptions-unified .admin-inscription-selection-actions {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 10px;
}

.admin-inscriptions-unified .admin-inscription-selection-actions > .muted-text {
    margin-right: auto;
}

.admin-inscriptions-unified .club-registration-bulk-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

@media (max-width: 900px) {
    .admin-registration-filters {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {

    .admin-inscriptions-unified .club-registration-manager-head {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 90px;
        align-items: start;
        gap: 12px;
    }

    .admin-inscriptions-unified .club-registration-manager-head > div:first-child {
        min-width: 0;
    }

    .admin-inscriptions-unified .club-registration-manager-head .club-registration-head-actions {
        display: flex;
        align-items: flex-start;
        justify-content: flex-end;
        width: 90px;
        min-width: 0;
        margin: 0;
    }

    .admin-inscriptions-unified .club-registration-count {
        box-sizing: border-box;
        width: 90px;
        min-width: 0;
        max-width: 90px;
        margin: 0;
        padding: 8px;
    }


    .admin-registration-filters {
        grid-template-columns: 1fr;
    }

    .admin-inscriptions-unified .admin-inscription-selection-actions {
        flex-direction: column;
        align-items: stretch;
    }

    .admin-inscriptions-unified .admin-inscription-selection-actions > .muted-text {
        margin: 0;
    }


    .admin-inscriptions-unified .club-registration-bulk-actions {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-end;
        width: 100%;
        gap: 8px;
    }

    .admin-inscriptions-unified .club-registration-bulk-actions button.fdo-registration-bulk-icon {
        display: inline-flex;
        flex: 0 0 auto;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
        width: auto;
        min-width: 0;
        max-width: 100%;
        height: 40px;
        min-height: 40px;
        max-height: 40px;
        padding: 0 12px;
        margin: 0;
        border-radius: 8px;
        gap: 7px;
        font-size: 13px;
        line-height: 1.1;
        white-space: nowrap;
    }

}

.admin-inscriptions-unified .admin-inscription-live-filters {
    margin-top: 16px;
}

.admin-inscriptions-unified .admin-inscription-selection-info {
    margin-top: 12px;
}

.admin-inscriptions-unified .admin-inscriptions-table tr[hidden],
.admin-inscriptions-unified [data-unified-empty][hidden] {
    display: none !important;
}

.admin-inscriptions-unified .col-checkbox {
    width: 55px;
    min-width: 55px;
    text-align: center;
}

.admin-inscriptions-unified .col-checkbox input {
    width: 18px;
    height: 18px;
    cursor: pointer;
}

.admin-inscriptions-unified .inline-form {
    margin: 0;
}

.admin-inscriptions-unified [data-unified-add]:disabled,
.admin-inscriptions-unified [data-unified-delete]:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

@media (max-width: 640px) {
    .admin-inscriptions-unified .admin-inscription-selection-actions {
        flex-direction: column;
        align-items: stretch;
    }

    .admin-inscriptions-unified .admin-inscription-selection-actions .btn,
    .admin-inscriptions-unified .admin-inscription-selection-actions button {
        width: 100%;
        justify-content: center;
    }
}

#table_musiques_championnat .col-checkbox {
    width: 55px;
    min-width: 55px;
    text-align: center;
}

#table_musiques_championnat .musique-selection-checkbox {
    width: 18px;
    height: 18px;
    min-height: 18px;
    cursor: pointer;
}

#table_musiques_championnat tr[hidden] {
    display: none !important;
}

#musiques_download_zip:disabled,
#musiques_toggle_selection:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

.club-championship-music-content {
    display: block;
    width: 100%;
    min-width: 0;
}

.club-music-inline-controls {
    display: flex;
    flex-direction: column;
    gap: 14px;
    width: 100%;
    min-width: 0;
}

.club-music-inline-controls .form-row {
    margin: 0;
}

.club-music-inline-controls input[type="search"] {
    width: 100%;
    max-width: 460px;
}

.club-music-inline-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}

.club-music-inline-actions [data-music-download] {
    margin-left: auto;
}

.club-music-inline-table input[type="checkbox"] {
    width: 18px;
    height: 18px;
    min-height: 18px;
    cursor: pointer;
}

.club-music-inline-table tr[hidden],
.club-music-inline-controls [data-music-empty][hidden] {
    display: none !important;
}

.club-music-inline-controls button:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

@media (max-width: 640px) {
    .club-music-inline-controls input[type="search"] {
        max-width: none;
    }

    .club-music-inline-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .club-music-inline-actions [data-music-download] {
        margin-left: 0;
    }

    .club-music-inline-actions button {
        width: 100%;
        justify-content: center;
    }
}

.club-music-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.club-music-table input[type="checkbox"] {
    width: 18px;
    height: 18px;
    min-height: 18px;
    cursor: pointer;
}

.club-music-table tr[hidden] {
    display: none !important;
}

#musiques_aucun_resultat[hidden] {
    display: none !important;
}

@media (max-width: 640px) {
    .club-championship-music-content {
        align-items: stretch;
        flex-direction: column;
        gap: 12px;
    }

    .club-championship-music-content .muted-text {
        flex: 0 1 auto;
    }

    .club-championship-music-content .btn {
        width: 100%;
        justify-content: center;
    }

    .club-music-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .club-music-actions button {
        width: 100%;
        justify-content: center;
    }
}

.federal-music-style-upload {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-width: 360px;
}

.federal-music-style-upload label {
    font-weight: 600;
}

.federal-music-style-upload select {
    width: 100%;
}

.federal-music-filters {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(180px, 1fr);
    gap: 12px;
    align-items: end;
}

.federal-music-filters .form-row {
    min-width: 0;
    margin: 0;
}

.federal-music-filters input,
.federal-music-filters select {
    width: 100%;
}

.federal-music-style-cell {
    min-width: 220px;
}

.federal-music-style-form {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0;
}

.federal-music-style-form select {
    flex: 1 1 auto;
    min-width: 0;
}

.federal-music-style-form .btn {
    flex: 0 0 auto;
}

@media (max-width: 640px) {
    .federal-music-filters {
        grid-template-columns: 1fr;
    }

    .federal-music-style-upload {
        max-width: none;
    }

    .federal-music-style-cell {
        min-width: 0;
    }
}

.federal-upload-card {
    padding: 18px 20px;
}

.federal-upload-card .federal-upload-details {
    padding-top: 0;
    border-top: none;
}

.federal-upload-card .club-attendance-summary {
    margin: 0;
    color: #102a43;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 20px;
    font-weight: 800;
    line-height: 1.2;
}

.federal-upload-intro {
    margin: 0 0 16px;
}

.federal-upload-fields {
    display: grid;
    grid-template-columns: minmax(200px, 1fr) minmax(0, 2fr);
    align-items: start;
    gap: 16px;
}

.federal-music-style-upload {
    max-width: none;
}

.federal-upload-field label {
    font-weight: 600;
}

.fdo-download-icon {
    display: inline-block;
    width: 17px;
    height: 17px;
    margin-right: 6px;
    vertical-align: -3px;
    object-fit: contain;
}

.federal-music-button-icon {
    display: block;
    width: 17px;
    height: 17px;
    object-fit: contain;
    flex: 0 0 auto;
    pointer-events: none;
}

.federal-music-bulk-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 8px;
    margin-left: auto;
}

.federal-music-bulk-actions [hidden] {
    display: none !important;
}

.federal-music-bulk-actions .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
}

.federal-music-bulk-actions .btn-danger .federal-music-button-icon {
    filter: brightness(0) invert(1);
}

.federal-music-download-icon-only {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 36px;
    width: 36px;
    min-width: 36px;
    height: 36px;
    min-height: 36px;
    padding: 0;
}

@media (max-width: 640px) {
    .federal-music-bulk-actions {
        width: 100%;
        margin-left: 0;
    }

    .federal-music-bulk-actions .btn {
        flex: 1 1 auto;
    }
}

/* Actions musicales : alignement et secours des pictogrammes */
.fdo-download-fallback {
    display: none;
}

.image-indisponible .fdo-download-fallback {
    display: inline;
    font-size: 13px;
    font-weight: 600;
}

.image-indisponible img {
    display: none;
}

.admin-championship-music-download,
.federal-music-download-icon-only {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0;
    flex: 0 0 36px;
    width: 36px;
    min-width: 36px;
    height: 36px;
    min-height: 36px;
    padding: 0;
    line-height: 1;
}

.admin-championship-music-download .fdo-download-icon,
.federal-music-download-icon-only .federal-music-button-icon {
    display: block;
    flex: 0 0 17px;
    width: 17px;
    height: 17px;
    margin: 0;
    padding: 0;
    vertical-align: baseline;
    object-fit: contain;
}

.admin-championship-music-download.image-indisponible,
.federal-music-download-icon-only.image-indisponible {
    width: auto;
    min-width: 90px;
    padding: 0 10px;
}

.admin-championship-music-card {
    margin-top: 16px;
    padding: 18px 20px;
}

.admin-championship-music-card .admin-championship-music-details {
    padding: 0;
    margin: 0;
    border: 0;
}

.admin-championship-music-card .club-attendance-summary {
    display: block;
    min-height: 30px;
    padding: 5px 44px 5px 0;
    margin: 0;
    color: #102a43;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 20px;
    font-weight: 800;
    font-style: normal;
    line-height: 1.2;
    letter-spacing: normal;
}

.admin-championship-music-card .club-attendance-content {
    margin-top: 16px;
}

.admin-championship-music-search {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-width: 520px;
    margin-top: 14px;
}

.admin-championship-music-search label {
    font-weight: 600;
}

.admin-championship-music-search input {
    width: 100%;
}

.admin-championship-music-card .club-attendance-summary::after {
    right: 0;
}

.admin-championship-music-toolbar {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 10px;
    width: 100%;
    margin-top: 14px;
}

.admin-championship-music-toolbar > .muted-text {
    margin-right: auto;
}

.admin-championship-music-toolbar > button {
    min-height: 36px;
}

.admin-championship-music-zip {
    margin-left: auto;
}

.admin-championship-music-toolbar [hidden] {
    display: none !important;
}

#table_musiques_championnat td,
#table_musiques_championnat th {
    vertical-align: middle;
}

#table_musiques_championnat th:first-child,
#table_musiques_championnat td:first-child {
    width: 55px;
    min-width: 55px;
    text-align: center;
}

#table_musiques_championnat th:last-child,
#table_musiques_championnat td:last-child {
    width: 80px;
    min-width: 80px;
    text-align: center;
}

#table_musiques_championnat input[type="checkbox"] {
    display: block;
    margin: 0 auto;
}

#table_musiques_championnat td:last-child .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto;
}

#table_musiques_championnat td[data-label="Action"] {
    text-align: center;
}

#table_musiques_championnat td[data-label="Action"] .btn {
    margin: 0 auto;
}

/* Administration / Championnat : sélection et téléchargement mobile / tablette */
@media (max-width: 1100px) {

    #table_musiques_championnat.mobile-card-table
    td[data-label="Sélection"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr) !important;
        align-items: center !important;
        gap: 10px;
        width: 100% !important;
        min-width: 0 !important;
        padding: 9px 12px !important;
        text-align: left !important;
        box-sizing: border-box;
    }

    #table_musiques_championnat.mobile-card-table
    td[data-label="Sélection"]::before {
        display: block !important;
        margin-bottom: 0 !important;
    }

    #table_musiques_championnat.mobile-card-table
    td[data-label="Sélection"] .musique-selection-checkbox,
    #table_musiques_championnat.mobile-card-table
    td[data-label="Sélection"] input[type="checkbox"] {
        display: block !important;
        justify-self: end !important;
        align-self: center !important;
        margin: 0 0 0 auto !important;
    }

    #table_musiques_championnat.mobile-card-table
    td[data-label="Action"] {
        display: flex !important;
        flex-direction: row !important;
        justify-content: flex-end !important;
        align-items: center !important;
        width: 100% !important;
        min-width: 0 !important;
        min-height: 0;
        padding: 9px 12px !important;
        text-align: right !important;
        box-sizing: border-box;
    }

    #table_musiques_championnat.mobile-card-table
    td[data-label="Action"]::before {
        display: none !important;
        content: none !important;
    }

    #table_musiques_championnat.mobile-card-table
    td[data-label="Action"] .admin-championship-music-download {
        display: inline-flex !important;
        flex: 0 0 40px !important;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
        margin: 0 0 0 auto !important;
        align-items: center !important;
        justify-content: center !important;
        border-radius: 8px;
    }

    #table_musiques_championnat.mobile-card-table
    td[data-label="Action"] .admin-championship-music-download .fdo-download-icon {
        display: block;
        flex: 0 0 17px;
        width: 17px;
        height: 17px;
        object-fit: contain;
    }
}

.federal-music-table th,
.federal-music-table td {
    vertical-align: middle;
}

.federal-music-table .col-checkbox {
    text-align: center;
}

.federal-music-table td[data-label="Actions"] {
    vertical-align: middle;
}

@media (max-width: 640px) {
    .admin-championship-music-toolbar {
        align-items: stretch;
        flex-direction: column;
    }

    .admin-championship-music-zip {
        margin-left: 0;
    }

    .admin-championship-music-toolbar button {
        width: 100%;
        justify-content: center;
    }

    .federal-music-actions-cell,
    .federal-music-actions-heading {
        width: auto;
        min-width: 0;
    }
}

.federal-music-download-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
}

.federal-music-delete-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    min-width: 36px;
    height: 36px;
    min-height: 36px;
    padding: 0;
}

.federal-music-delete-btn .federal-music-button-icon {
    filter: brightness(0) invert(1);
}

.federal-music-row-actions {
    flex-wrap: nowrap;
}

.federal-music-style-form select {
    width: 100%;
}

@media (max-width: 640px) {
    .federal-upload-fields {
        grid-template-columns: 1fr;
    }

    .federal-upload-card {
        padding: 16px;
    }

    .federal-music-row-actions {
        flex-wrap: wrap;
    }
}

/* Indicateur commun pour les rubriques repliables */
details > summary {
    cursor: pointer;
}

details > summary::after {
    content: "" !important;
    display: block;
    flex: 0 0 16px;
    width: 16px;
    height: 16px;
    min-width: 16px;
    min-height: 16px;
    padding: 0;
    border: none;
    border-radius: 0;
    background: url("../img/angle-small-down.png") center center / contain no-repeat;
    box-sizing: border-box;
    font-size: 0;
    line-height: 0;
    rotate: none;
    transform-origin: 50% 50%;
    transform: rotate(0deg);
    transition: transform 0.2s ease;
}

/* Rubriques avec indicateur positionné en absolu */
.club-attendance-summary::after,
.user-password-card-summary::after,
.club-championship-registration-details > summary::after {
    top: 50%;
    transform: translateY(-50%) rotate(0deg);
}

details[open] > summary::after {
    content: "" !important;
    transform: rotate(180deg);
}

.club-attendance-details[open] .club-attendance-summary::after,
.user-password-card[open] .user-password-card-summary::after,
.club-championship-registration-details[open] > summary::after {
    transform: translateY(-50%) rotate(180deg);
}

@media (prefers-reduced-motion: reduce) {
    details > summary::after {
        transition: none;
    }
}

/* Indicateurs arrondis des rubriques repliables */

/* Rubriques avec une flèche placée dans une ligne flex */
.category-create-summary::after,
.inscription-group > summary::after,
.club-championship-summary::after {
    content: "" !important;
    flex: 0 0 30px;
    width: 30px;
    height: 30px;
    min-width: 30px;
    min-height: 30px;
    padding: 0;
    border: 1px solid #d7e1eb;
    border-radius: 50%;
    background: #f1f5f9 url("../img/angle-small-down.png") center / 14px 14px no-repeat;
    box-sizing: border-box;
    font-size: 0;
    line-height: 0;
    transform-origin: 50% 50%;
    transform: rotate(0deg);
    transition: transform 0.2s ease;
}

/* Rubriques avec une flèche positionnée à droite */
.club-attendance-summary::after,
.user-password-card-summary::after,
.club-championship-registration-details > summary::after {
    content: "" !important;
    position: absolute;
    top: 50%;
    right: 2px;
    width: 30px;
    height: 30px;
    min-width: 30px;
    min-height: 30px;
    padding: 0;
    border: 1px solid #d7e1eb;
    border-radius: 50%;
    background: #f1f5f9 url("../img/angle-small-down.png") center / 14px 14px no-repeat;
    box-sizing: border-box;
    font-size: 0;
    line-height: 0;
    transform-origin: 50% 50%;
    transform: translateY(-50%) rotate(0deg);
    transition: transform 0.2s ease;
}

/* Rotation des flèches pour les rubriques ouvertes */
details[open] > .category-create-summary::after,
details[open] > .club-championship-summary::after,
.inscription-group[open] > summary::after {
    content: "" !important;
    transform: rotate(180deg);
}

details[open] > .club-attendance-summary::after,
details[open] > .user-password-card-summary::after,
.club-championship-registration-details[open] > summary::after {
    content: "" !important;
    transform: translateY(-50%) rotate(180deg);
}

@media (prefers-reduced-motion: reduce) {
    .category-create-summary::after,
    .inscription-group > summary::after,
    .club-championship-summary::after,
    .club-attendance-summary::after,
    .user-password-card-summary::after,
    .club-championship-registration-details > summary::after {
        transition: none;
    }
}

/* Synchronisation des pointages QR */

.sync-page-intro {
    margin: 8px 0 22px;
    color: #52616b;
    line-height: 1.5;
}

.sync-page-card {
    max-width: 920px;
}

.sync-export-inline {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: flex-end;
}

.sync-export-inline .federal-upload-field {
    flex: 1 1 420px;
    min-width: 260px;
}

.sync-export-inline .federal-upload-actions {
    justify-content: flex-start;
    margin: 0;
}

.sync-export-inline .federal-upload-actions button {
    min-height: 42px;
}

.sync-empty-state {
    margin: 0;
    color: #52616b;
}

.sync-alert {
    margin: 16px 0;
    padding: 13px 17px;
    border-radius: 8px;
    border: 1px solid transparent;
    font-size: 14px;
    line-height: 1.5;
}

.sync-alert-success {
    color: #166534;
    background: #f0fdf4;
    border-color: #86efac;
}

.sync-alert-error {
    color: #991b1b;
    background: #fef2f2;
    border-color: #fca5a5;
}

/* Formulaires existants */

.federal-upload-form {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.federal-upload-field {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.federal-upload-field input[type="file"] {
    width: 100%;
}

.federal-upload-field .muted-text {
    margin: 0;
    font-size: 13px;
}

.federal-upload-actions {
    display: flex;
    justify-content: flex-end;
}

.federal-upload-actions button {
    min-height: 36px;
}

.federal-music-toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 14px;
}

.federal-music-toolbar #federal_download_zip {
    margin-left: auto;
}

.federal-music-table {
    width: 100%;
}

.federal-music-table th,
.federal-music-table td {
    vertical-align: middle;
}

.federal-music-table .col-checkbox {
    width: 55px;
    min-width: 55px;
    text-align: center;
}

.federal-music-table .federal-music-checkbox {
    width: 18px;
    height: 18px;
    min-height: 18px;
    cursor: pointer;
}

.federal-music-table td[data-label="Musique"] {
    overflow-wrap: anywhere;
}

.federal-music-actions-heading {
    width: 100px;
    min-width: 100px;
    text-align: center;
}

.federal-music-row-actions {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: nowrap;
    gap: 8px;
    width: 100%;
}

/* Musiques fédérales : actions compactes sur les fiches */
@media (max-width: 1100px) {
    .federal-music-table.mobile-card-table
    td[data-label="Actions"] {
        display: flex !important;
        align-items: center;
        justify-content: flex-end !important;
        min-width: 0 !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Actions"]::before {
        display: none !important;
        content: none !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Actions"] .federal-music-row-actions {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        align-items: center !important;
        justify-content: flex-end !important;
        gap: 8px;
        width: auto !important;
        min-width: 0 !important;
        max-width: 100%;
        margin-left: auto !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Actions"] .inline-form {
        display: inline-flex !important;
        flex: 0 0 auto !important;
        width: auto !important;
        min-width: 0 !important;
        margin: 0 !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Actions"] .federal-music-download-btn,
    .federal-music-table.mobile-card-table
    td[data-label="Actions"] .federal-music-delete-btn {
        display: inline-flex !important;
        flex: 0 0 36px !important;
        width: 36px !important;
        min-width: 36px !important;
        max-width: 36px !important;
        height: 36px !important;
        min-height: 36px !important;
        max-height: 36px !important;
        padding: 0 !important;
        margin: 0 !important;
        align-items: center;
        justify-content: center;
        border-radius: 8px;
    }
}

.federal-music-actions-cell {
    width: 100px;
    min-width: 100px;
    text-align: center;
}

.federal-music-row-actions .inline-form {
    margin: 0;
}

.federal-music-row-actions .btn {
    min-height: 36px;
    white-space: nowrap;
}

.federal-music-table tr[hidden],
[data-federal-empty][hidden],
[data-federal-error][hidden] {
    display: none !important;
}

#federal_download_zip:disabled,
#federal_select_all:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

@media (max-width: 640px) {

    /* Boutons et barre d'outils existants */

    .federal-upload-actions button {
        width: 100%;
        justify-content: center;
    }

    .federal-music-toolbar {
        flex-direction: column;
        align-items: stretch;
    }

    .federal-music-toolbar #federal_download_zip {
        margin-left: 0;
    }

    .federal-music-toolbar button {
        width: 100%;
        justify-content: center;
    }

    /* Musiques fédérales : fiches mobiles */

    .federal-music-table.mobile-card-table
    tbody tr[data-federal-row] {
        display: grid !important;
        position: relative;
        grid-template-columns: minmax(0, 1fr);
        width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }

    .federal-music-table.mobile-card-table
    tbody tr[data-federal-row] > td {
        display: block !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        min-height: 0;
        box-sizing: border-box;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    /* Case de sélection en haut à gauche */

    .federal-music-table.mobile-card-table
    tbody tr[data-federal-row] > td[data-label="Sélection"] {
        display: flex !important;
        position: absolute;
        top: 7px;
        left: 12px;
        z-index: 1;
        align-items: center;
        justify-content: center;
        width: 24px !important;
        min-width: 24px !important;
        max-width: 24px !important;
        height: 24px;
        min-height: 24px;
        padding: 0 !important;
        margin: 0;
        border: 0 !important;
        background: transparent;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Sélection"]::before {
        display: none !important;
        content: none !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Sélection"] .federal-music-checkbox {
        flex: 0 0 auto;
        width: 20px;
        height: 20px;
        margin: 0;
    }

    /* Nom de la musique */

    .federal-music-table.mobile-card-table
    tbody tr[data-federal-row] > td[data-label="Musique"] {
        grid-column: 1;
        grid-row: 1;
        padding: 12px 12px 12px 46px !important;
        border-bottom: 1px solid #e2e8f0 !important;
        text-align: left !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Musique"]::before {
        display: none !important;
        content: none !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Musique"] strong {
        display: block;
        color: #1f2933;
        font-size: 16px;
        font-weight: 700;
        line-height: 1.4;
        overflow-wrap: anywhere;
    }

    /* Style musical */

    .federal-music-table.mobile-card-table
    tbody tr[data-federal-row] > td[data-label="Style"] {
        grid-column: 1;
        grid-row: 2;
        padding: 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
        text-align: left !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Style"]::before {
        display: block !important;
        float: none !important;
        content: "STYLE";
        margin: 0 0 8px;
        padding: 0;
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        line-height: 1.3;
        text-transform: uppercase;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Style"] .federal-music-style-form {
        display: block;
        width: 100%;
        max-width: 100%;
        margin: 0;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Style"] select {
        display: block;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        min-height: 40px;
        box-sizing: border-box;
    }

    /* Actions en bas à droite */

    .federal-music-table.mobile-card-table
    tbody tr[data-federal-row] > td[data-label="Actions"] {
        display: flex !important;
        grid-column: 1;
        grid-row: 3;
        align-items: center;
        justify-content: flex-end !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        padding: 9px 12px !important;
        border-bottom: 0 !important;
        text-align: right !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Actions"]::before {
        display: none !important;
        content: none !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Actions"] .federal-music-row-actions {
        display: flex !important;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-end !important;
        gap: 8px;
        width: auto !important;
        max-width: 100%;
        margin: 0 0 0 auto !important;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Actions"] .inline-form {
        display: inline-flex;
        flex: 0 0 auto;
        width: auto;
        margin: 0;
    }

    .federal-music-table.mobile-card-table
    td[data-label="Actions"] .btn {
        display: inline-flex;
        flex: 0 0 auto;
        align-items: center;
        justify-content: center;
        min-height: 40px;
        max-width: 100%;
        margin: 0;
    }

    /* Ne pas afficher les lignes masquées par les filtres */

    .federal-music-table.mobile-card-table
    tbody tr[data-federal-row][hidden] {
        display: none !important;
    }
}

.club-dossards-table .col-print {
    width: 58px;
    min-width: 58px;
    text-align: center;
}

.club-dossards-table .print-dossard-checkbox {
    width: 18px;
    min-height: 18px;
    height: 18px;
    cursor: pointer;
}

#toggle_print_dossards_button:disabled,
#print_selected_dossards_button:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

/* Danseurs
   ========================================================= */

.club-danseurs-card {
    width: 100%;
}

.club-danseurs-card h2 {
    text-align: center;
}

.club-danseurs-card .table-header-line {
    justify-content: center;
}

.club-danseurs-table {
    width: 100%;
    min-width: 900px;
    table-layout: fixed;
}

.club-danseurs-table th:nth-child(1),
.club-danseurs-table td:nth-child(1) {
    width: 25%;
}

.club-danseurs-table td[data-label="Danseur"] strong {
    overflow-wrap: anywhere;
    word-break: normal;
}

.club-danseurs-table th:nth-child(2),
.club-danseurs-table td:nth-child(2) {
    width: 18%;
    text-align: center;
    white-space: normal;
}

.club-danseurs-table th:nth-child(3),
.club-danseurs-table td:nth-child(3) {
    width: 27%;
    text-align: center;
}

.club-danseurs-table th:nth-child(4),
.club-danseurs-table td:nth-child(4) {
    width: 30%;
    text-align: center;
}

/* Club / Danseurs : présentation PC */
.club-danseur-mobile-header {
    display: none;
}

.club-danseur-desktop-identity {
    display: block;
}

/* Club / Danseurs : présentation mobile et tablette */
@media (max-width: 1100px) {

    .mobile-card-table.club-danseurs-table
    td[data-label="Danseur"] {
        display: block !important;
        position: relative;
        width: 100% !important;
        padding: 12px !important;
        text-align: left !important;
    }

    .mobile-card-table.club-danseurs-table
    td[data-label="Danseur"]::before {
        display: none !important;
        content: none;
    }

    .club-danseurs-table .club-danseur-desktop-identity {
        display: none;
    }

    .club-danseurs-table .club-danseur-mobile-header {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 10px;
        width: 100%;
    }

    .club-danseurs-table .club-danseur-mobile-identity {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        flex: 1 1 auto;
        min-width: 0;
        gap: 4px;
        text-align: left;
    }

    .club-danseurs-table .club-danseur-mobile-identity strong {
        display: block;
        font-size: 16px;
        line-height: 1.3;
        color: #1f2933;
    }

    .club-danseurs-table .club-danseur-mobile-identity .muted-text {
        display: block;
        font-size: 12px;
        line-height: 1.4;
    }

    .club-danseurs-table .club-danseur-mobile-age {
        display: block;
        font-size: 13px;
        line-height: 1.4;
        color: #334e68;
    }

    .club-danseurs-table .club-danseur-mobile-status {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        max-width: 115px;
        text-align: center;
        white-space: normal;
        line-height: 1.2;
    }

    /* L'âge figure désormais dans l'en-tête */
    .mobile-card-table.club-danseurs-table
    td[data-label="Âge"] {
        display: none !important;
    }

    /* Statut déjà affiché dans l'en-tête */
    .mobile-card-table.club-danseurs-table
    .club-danseur-licence-status > .badge:first-child {
        display: none;
    }

    /* Préserver les éventuels badges de formation */
    .mobile-card-table.club-danseurs-table
    .club-danseur-licence-status > .badge.badge-formation {
        display: inline-flex;
    }

}.club-danseurs-table td {
    padding-top: 8px;
    padding-bottom: 8px;
    vertical-align: middle;
}

.club-danseurs-table td[data-label="Licence"] .badge {
    margin: 0;
}

.club-danseur-licence-status {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    flex-wrap: wrap;
}

.club-danseur-licence-type {
    margin-top: 4px;
    color: #475569;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.2;
}

.club-danseur-formation-disciplines {
    margin-top: 4px;
    color: #64748b;
    font-size: 11px;
    line-height: 1.2;
}

.club-danseur-certificat {
    margin-top: 4px;
    font-size: 10.5px;
    line-height: 1.2;
}

.club-danseur-certificat .muted-text {
    font-size: inherit;
}

.club-danseur-certificat-ok {
    color: #15803d;
}

.club-danseur-certificat-off {
    color: #b91c1c;
    font-weight: 600;
}

@media (max-width: 640px) {
    .club-danseur-licence-status {
        justify-content: flex-start;
    }

    .club-danseur-licence-type,
    .club-danseur-formation-disciplines,
    .club-danseur-certificat {
        font-size: 12px;
    }
}

.club-danseurs-table tr.danseur-inactif td {
    background: #f1f5f9;
    color: #64748b;
}

.club-danseurs-table tr.danseur-inactif td strong,
.club-danseurs-table tr.danseur-inactif .muted-text {
    color: #64748b;
}

.club-danseurs-table tr.danseur-inactif:hover td {
    background: #e9eef5;
}

.club-danseur-actions {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 5px;
    width: 100%;
    margin: 0 auto;
    flex-wrap: nowrap;
}

.club-danseur-actions-main {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 5px;
    flex: 0 0 auto;
}

.club-danseur-actions-main > .btn,
.club-danseur-actions-main > form > .btn,
.club-danseur-action-main {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-height: 30px;
    padding: 5px 8px;
    font-size: 12px;
    white-space: nowrap;
}

.club-danseur-actions-main form {
    display: inline-flex;
    width: auto;
    margin: 0;
}

.club-danseur-lock-box {
    flex: 0 1 190px;
    min-width: 150px;
    width: auto;
    padding: 4px 7px;
    border: 0;
    border-left: 3px solid #f59e0b;
    border-radius: 0;
    background: transparent;
    text-align: left;
}

.club-danseur-lock-title {
    color: #92400e;
    font-size: 11px;
    font-weight: 800;
    line-height: 1.2;
}

.club-danseur-lock-text {
    margin-top: 1px;
    color: #64748b;
    font-size: 10px;
    line-height: 1.2;
}

.club-danseur-inactive-form {
    flex: 0 0 auto;
    width: auto;
    margin: 0;
    text-align: center;
}

.club-danseur-inactive-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-height: 25px;
    padding: 3px 7px;
    border: 1px solid #fecaca;
    border-radius: 6px;
    background: #fef2f2;
    color: #b91c1c;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    white-space: nowrap;
}

.club-danseur-inactive-btn:hover {
    border-color: #fca5a5;
    background: #fee2e2;
    color: #991b1b;
}

.club-danseur-delete-form {
    display: inline-flex;
    flex: 0 0 auto;
    width: auto;
    margin: 0;
}

.club-danseur-delete-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-height: 25px;
    padding: 3px 7px;
    border: 1px solid #f87171;
    border-radius: 6px;
    background: #fee2e2;
    color: #991b1b;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1.2;
    cursor: pointer;
    white-space: nowrap;
}

.club-danseur-delete-btn:hover {
    border-color: #ef4444;
    background: #fecaca;
    color: #7f1d1d;
}

@media (max-width: 1100px) and (min-width: 641px) {
    .club-danseur-actions {
        gap: 4px;
    }

    .club-danseur-actions-main > .btn,
    .club-danseur-action-main {
        padding-left: 6px;
        padding-right: 6px;
        font-size: 11px;
    }

    .club-danseur-lock-box {
        min-width: 130px;
        padding: 5px 6px;
    }

    .club-danseur-lock-title {
        font-size: 10.5px;
    }

    .club-danseur-lock-text {
        font-size: 10px;
    }
}

@media (max-width: 1100px) {

    .club-danseur-actions {
        flex-direction: column;
        align-items: stretch;
        gap: 7px;
        max-width: none;
    }

    /* Bouton et avertissement côte à côte sur mobile */
    .club-danseurs-table .club-danseur-actions:has(> .club-danseur-actions-main + .club-danseur-lock-box) {
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: center;
        justify-content: flex-end;
        gap: 8px;
    }

    .club-danseurs-table .club-danseur-actions:has(> .club-danseur-actions-main + .club-danseur-lock-box) > .club-danseur-lock-box {
        order: -1;
        flex: 1 1 0;
        width: auto;
        min-width: 0;
    }

    .club-danseurs-table .club-danseur-actions:has(> .club-danseur-actions-main + .club-danseur-lock-box) > .club-danseur-actions-main {
        flex: 0 0 auto;
        width: auto;
        max-width: 100%;
    }

    @media (max-width: 380px) {
        .club-danseurs-table .club-danseur-actions:has(> .club-danseur-actions-main + .club-danseur-lock-box) {
            flex-wrap: wrap;
        }

        .club-danseurs-table .club-danseur-actions:has(> .club-danseur-actions-main + .club-danseur-lock-box) > .club-danseur-lock-box {
            flex-basis: 100%;
        }
    }
    .club-danseur-actions-main {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-end;
        width: 100%;
        gap: 6px;
    }

    .club-danseur-actions-main > .btn,
    .club-danseur-actions-main > form,
    .club-danseur-actions-main > form > .btn,
    .club-danseur-action-main {
        flex: 0 0 auto;
        width: auto;
        min-height: 40px;
    }

    .club-danseurs-table td[data-label="Actions"] {
        display: block !important;
        text-align: right !important;
    }

    .club-danseurs-table td[data-label="Actions"]::before {
        display: none !important;
    }


    .club-danseur-lock-box {
        flex: none;
        width: 100%;
        min-width: 0;
        padding: 8px 10px;
        border: 1px solid #fcd34d;
        border-left-width: 3px;
        border-radius: 7px;
        background: #fffbeb;
        text-align: left;
    }

    .club-danseur-lock-title {
        font-size: 12px;
    }

    .club-danseur-lock-text {
        margin-top: 2px;
        font-size: 11px;
    }
}

.club-licence-alert {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 14px;
}

.club-licence-alert .btn {
    flex: 0 0 auto;
}

.licences-danseurs-width {
    max-width: 1180px;
    margin-left: auto;
    margin-right: auto;
}

.badge-formation {
    background: #ede9fe;
    color: #5b21b6;
}

.club-danseur-formation {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    margin-top: 4px;
    flex-wrap: wrap;
    line-height: 1.15;
}

.club-danseur-formation .badge {
    margin: 0 !important;
}

.club-danseur-formation-disciplines {
    font-size: 11.5px;
    color: #64748b;
    line-height: 1.2;
}

@media (max-width: 700px) {
    .club-danseur-formation {
        justify-content: flex-start;
    }

    .formation-review-row {
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .formation-review-row .btn {
        width: 100%;
    }

    .licence-formation-alert {
        flex-direction: column;
        align-items: stretch;
    }

    .licence-formation-disciplines {
        justify-content: flex-start;
    }
}

.licences-danseurs-stats,
.licences-dossards-stats {
    display: flex;
    align-items: stretch;
    gap: 8px;
}

.licences-danseurs-stats .stat-card,
.licences-dossards-stats .stat-card {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 9px 13px;
    border-radius: 9px;
    box-shadow: none;
}

.licences-danseurs-stats .stat-card span,
.licences-dossards-stats .stat-card span {
    margin: 0;
    font-size: 11.5px;
}

.licences-danseurs-stats .stat-card strong,
.licences-dossards-stats .stat-card strong {
    font-size: 19px;
    line-height: 1;
}

.licences-filters-card {
    width: fit-content;
    max-width: 100%;
}

.licences-filters-card .filters-row {
    align-items: end;
}

@media (max-width: 700px) {
    .licences-danseurs-stats,
    .licences-dossards-stats {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .licences-danseurs-stats .stat-card,
    .licences-dossards-stats .stat-card {
        padding: 9px 11px;
    }

    .licences-danseurs-stats .stat-card strong,
    .licences-dossards-stats .stat-card strong {
        font-size: 18px;
    }

    .licences-filters-card {
        width: 100%;
    }
}

.licences-danseurs-card {
    overflow-x: auto;
}

/* Licences danseurs : harmonisation des encadrements responsive */
@media (max-width: 1100px) {

    /* Carte principale */
    .licences-danseurs-card {
        border-radius: 12px;
    }

    /* Suppression du cadre intermédiaire du tableau */
    .licences-danseurs-card .fdo-list-table {
        border: 0 !important;
        border-radius: 0 !important;
        background: transparent;
        overflow: visible;
    }

    /* Fiches individuelles */
    .licences-danseurs-card .licences-danseurs-table tbody tr {
        border: 1px solid #e2e8f0 !important;
        border-radius: 12px !important;
        background: #ffffff;
        overflow: hidden;
    }

    /* Résultat vide : une seule bordure sur la fiche */
    .licences-danseurs-card .licences-danseurs-table
    tbody tr:has(> td.mobile-card-empty) {
        border: 1px solid #e2e8f0 !important;
        border-radius: 12px !important;
        background: #f8fafc !important;
        box-shadow: none !important;
        overflow: hidden;
    }

    .licences-danseurs-card .licences-danseurs-table
    td.mobile-card-empty {
        border: 0 !important;
        border-radius: 0 !important;
        background: transparent;
        overflow: visible;
    }
}

.licences-danseurs-table {
    width: 100%;
    min-width: 820px;
    table-layout: fixed;
}

.licences-danseurs-table th:nth-child(1),
.licences-danseurs-table td:nth-child(1) {
    width: 160px;
}

.licences-danseurs-table th:nth-child(2),
.licences-danseurs-table td:nth-child(2) {
    width: 170px;
}

.licences-danseurs-table th:nth-child(3),
.licences-danseurs-table td:nth-child(3) {
    width: 170px;
}

.licences-danseurs-table th:nth-child(4),
.licences-danseurs-table td:nth-child(4) {
    width: 120px;
    text-align: center;
}

.licences-danseurs-table th:nth-child(5),
.licences-danseurs-table td:nth-child(5) {
    width: 120px;
    text-align: center;
}

.licences-danseurs-table th:nth-child(6),
.licences-danseurs-table td:nth-child(6) {
    width: 80px;
    text-align: center;
}

.licences-danseurs-table td:nth-child(6) .btn {
    width: 100%;
}

.licence-detail-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(165px, 1fr));
    gap: 12px 18px;
}

.licence-detail-grid > div {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.licence-detail-grid .badge {
    align-self: flex-start;
    width: fit-content;
    margin: 0;
}

.licence-detail-type-line {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.licence-detail-type-line .badge {
    margin: 0;
}

.licence-detail-disciplines {
    color: #64748b;
    font-size: 11.5px;
    line-height: 1.25;
    overflow-wrap: anywhere;
}

@media (max-width: 700px) {
    .licence-detail-grid {
        grid-template-columns: 1fr 1fr;
        gap: 11px 14px;
    }

    .licence-detail-type {
        grid-column: 1 / -1;
    }
}

@media (max-width: 480px) {
    .licence-detail-grid {
        grid-template-columns: 1fr;
    }

    .licence-detail-type {
        grid-column: auto;
    }
}
.licence-detail-table {
    width: 100%;
    min-width: 720px;
    table-layout: fixed;
}

.licence-detail-table th:nth-child(1),
.licence-detail-table td:nth-child(1) {
    width: 28%;
}

.licence-detail-table th:nth-child(2),
.licence-detail-table td:nth-child(2) {
    width: 27%;
}

.licence-detail-table th:nth-child(3),
.licence-detail-table td:nth-child(3) {
    width: 27%;
}

.licence-detail-table th:nth-child(4),
.licence-detail-table td:nth-child(4) {
    width: 18%;
    text-align: right;
}

.licence-document-comment {
    margin-top: 5px;
    color: #b91c1c;
    font-size: 11px;
    line-height: 1.25;
}

.licence-document-open-btn {
    min-height: 29px;
    padding: 5px 9px;
    font-size: 12px;
}

.licence-document-actions {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 6px;
    flex-wrap: nowrap;
}

.licence-document-actions form {
    margin: 0;
}

.licence-document-actions button {
    min-height: 29px;
    padding: 5px 9px;
    font-size: 12px;
}

/* Service licences : titre et action documentaire */
.licence-documents-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 12px;
}

.licence-documents-header h2 {
    margin: 0;
}

.licence-documents-header .btn {
    width: auto;
    flex: 0 0 auto;
    white-space: nowrap;
}

.licence-detail-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 11px 14px;
}

.licence-detail-final-actions {
    display: flex;
    align-items: center;
    gap: 7px;
    flex-wrap: wrap;
}

.licence-detail-final-actions form,
.licence-detail-return-form {
    margin: 0;
}

.licence-detail-footer button {
    min-height: 32px;
    padding: 6px 10px;
    font-size: 12px;
}

.licence-detail-return-form {
    margin-left: auto;
}

.licences-dossards-table {
    width: 100%;
    min-width: 1180px;
    table-layout: fixed;
}

.licences-dossards-table th:nth-child(1),
.licences-dossards-table td:nth-child(1) {
    width: 90px;
    text-align: center;
}

.licences-dossards-table th:nth-child(2),
.licences-dossards-table td:nth-child(2) {
    width: 150px;
}

.licences-dossards-table th:nth-child(3),
.licences-dossards-table td:nth-child(3) {
    width: 230px;
}

.licences-dossards-table th:nth-child(4),
.licences-dossards-table td:nth-child(4) {
    width: 260px;
}

.licences-dossards-table th:nth-child(5),
.licences-dossards-table td:nth-child(5) {
    width: 160px;
    text-align: center;
}

.licences-dossards-table th:nth-child(6),
.licences-dossards-table td:nth-child(6) {
    width: 110px;
    text-align: center;
}

.licences-dossards-table th:nth-child(7),
.licences-dossards-table td:nth-child(7) {
    width: 140px;
}

.licences-dossards-table .actions-column button {
    width: 100%;
}

.dossard-category-field {
    grid-column: 1 / -1;
}

.dossard-category-field select {
    width: 100%;
    max-width: 520px;
}

@media (max-width: 800px) {
    .club-danseurs-card {
        min-width: 0;
        width: 100%;
    }

    .club-danseurs-table {
        width: max-content;
        min-width: 860px;
    }

    .licences-danseurs-table {
        width: 100%;
        min-width: 0;
    }

    .dossard-category-field select {
        max-width: 100%;
    }
}

/* Clôture volontaire des inscriptions */

.club-registration-closure {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    min-width: 0;
    margin: 16px 0;
    padding: 14px 16px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #f8fafc;
}

.club-registration-closure-info {
    flex: 1 1 auto;
    min-width: 0;
}

.club-registration-closure-title {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 5px;
    color: #243b53;
    font-size: 14px;
}

.club-registration-closure-title strong {
    font-weight: 700;
}

.club-registration-closure-info p {
    margin: 0;
    color: #52667a;
    font-size: 13px;
    line-height: 1.5;
}

.club-registration-closure-form {
    flex: 0 0 auto;
    margin: 0;
}

.club-registration-closure-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 9px 14px;
    border: 1px solid #bd7a19;
    border-radius: 8px;
    background: #bd7a19;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.3;
    text-align: center;
    white-space: nowrap;
    cursor: pointer;
    transition: background 0.15s ease;
}

.club-registration-closure-button:hover {
    border-color: #996010;
    background: #996010;
    color: #ffffff;
}

.club-registration-closure-button:focus-visible {
    outline: 3px solid #f4c77d;
    outline-offset: 2px;
}

/* Tablettes et smartphones */

@media (max-width: 760px) {
    .club-registration-closure {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
        padding: 13px;
    }

    .club-registration-closure-form {
        width: 100%;
    }

    .club-registration-closure-button {
        width: 100%;
        box-sizing: border-box;
        white-space: normal;
    }
}

/* Page club - gestion simplifiée des inscriptions
   ========================================================= *//* Page club - gestion simplifiée des inscriptions
   ========================================================= */

.club-registration-manager-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.club-registration-manager-head h2,
.club-registration-manager-head p {
    margin-bottom: 0;
}

.club-registration-manager-head p {
    margin-top: 4px;
}

.club-registration-count {
    flex: 0 0 auto;
    min-width: 92px;
    padding: 10px 14px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #f8fafc;
    text-align: center;
}

.club-registration-count strong,
.club-registration-count span {
    display: block;
}

.club-registration-count strong {
    color: #243b53;
    font-size: 22px;
    line-height: 1.1;
}

.club-registration-count span {
    margin-top: 3px;
    color: #7b8794;
    font-size: 12px;
}

.club-registration-filters:not(.admin-registration-filters) {
    display: grid;
    grid-template-columns:
        minmax(240px, 1.5fr)
        minmax(180px, 1fr)
        minmax(170px, 0.8fr);
    gap: 12px;
    align-items: end;
    margin-top: 18px;
}

.club-registration-filters label {
    margin-bottom: 6px;
}

.club-registration-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-top: 14px;
}

.club-registration-toolbar > .muted-text {
    margin-right: auto;
}

/* Actions d'inscription : pictogrammes dessinés en CSS */
.fdo-registration-icon,
.fdo-registration-bulk-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.fdo-registration-icon {
    gap: 0;
    width: 36px;
    min-width: 36px;
    height: 36px;
    min-height: 36px;
    padding: 0;
    font-size: 0;
}

.fdo-registration-bulk-icon {
    gap: 7px;
}

.fdo-registration-icon::before,
.fdo-registration-bulk-icon::before {
    content: "";
    display: block;
    position: relative;
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    min-width: 18px;
    min-height: 18px;
    padding: 0;
    border: 2px solid currentColor;
    border-radius: 50%;
    box-sizing: border-box;
    background:
        linear-gradient(currentColor, currentColor)
        center center / 8px 2px no-repeat;
}

.fdo-registration-add::before {
    background:
        linear-gradient(currentColor, currentColor)
        center center / 8px 2px no-repeat,
        linear-gradient(currentColor, currentColor)
        center center / 2px 8px no-repeat;
}

.fdo-registration-remove::before {
    background:
        linear-gradient(currentColor, currentColor)
        center center / 8px 2px no-repeat;
}

.fdo-registration-bulk-icon {
    white-space: nowrap;
}

.fdo-registration-bulk-icon::before {
    width: 18px;
    height: 18px;
}

.club-registration-bulk-actions [hidden],
.admin-inscription-selection-actions [hidden] {
    display: none !important;
}

.club-registration-manager-table .fdo-registration-icon,
.admin-inscriptions-table .fdo-registration-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    min-width: 36px;
    height: 36px;
    min-height: 36px;
    margin: 0 auto;
    padding: 0;
}

@media (max-width: 640px) {
    .fdo-registration-icon {
        width: 36px;
        min-width: 36px;
    }
}

/* Correction mobile des boutons individuels d'inscription */
@media (max-width: 640px) {

    .club-registration-manager-table td[data-label="Action"] button.fdo-registration-icon,
    .admin-inscriptions-table td[data-label="Action"] button.fdo-registration-icon {
        display: inline-flex;
        box-sizing: border-box;
        flex: 0 0 40px;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
        margin: 0;
        font-size: 0 !important;
        text-indent: -9999px;
    }

}

/* Actions individuelles : pictogrammes seuls sur PC et mobile */
button.fdo-registration-icon {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    min-width: 36px;
    max-width: 36px;
    height: 36px;
    min-height: 36px;
    padding: 0;
    overflow: hidden;
    font-size: 0 !important;
    line-height: 0;
    letter-spacing: 0;
    text-indent: -9999px;
    white-space: nowrap;
}

button.fdo-registration-icon::before {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 18px;
    height: 18px;
    margin: 0;
    text-indent: 0;
    transform: translate(-50%, -50%);
}

.club-registration-bulk-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.club-registration-manager-table th:first-child,
.club-registration-manager-table td:first-child {
    width: 90px;
    text-align: center;
}

.club-registration-manager-table th:nth-child(2),
.club-registration-manager-table td:nth-child(2) {
    width: 95px;
}

.club-registration-manager-table th:nth-child(5),
.club-registration-manager-table td:nth-child(5) {
    width: 120px;
    text-align: center;
}

.club-registration-manager-table th:nth-child(6),
.club-registration-manager-table td:nth-child(6) {
    width: 80px;
    min-width: 80px;
    text-align: center;
    vertical-align: middle;
}

.club-registration-manager-table input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin: 0;
}

.club-registration-manager-table .btn-compact {
    width: auto;
    min-width: 92px;
    padding: 7px 10px;
}

.club-championship-registration-details {
    padding: 0;
    overflow: hidden;
}

.club-championship-registration-details > summary {
    position: relative;
    padding: 16px 46px 16px 18px;
    color: #243b53;
    font-weight: 700;
    cursor: pointer;
    list-style: none;
}

.club-championship-registration-details > summary::-webkit-details-marker {
    display: none;
}

.club-championship-registration-details > summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 18px;
    transform: translateY(-50%);
    color: #52667a;
    font-size: 22px;
    line-height: 1;
}

.club-championship-registration-details[open] > summary::after {
    content: "−";
}

.club-championship-registration-details-content {
    padding: 0 18px 18px;
    border-top: 1px solid #e5e7eb;
}

@media (max-width: 800px) {
    .club-registration-filters:not(.admin-registration-filters) {
        grid-template-columns: 1fr;
    }

    .club-registration-toolbar {
        align-items: stretch;
    }

    .club-registration-toolbar > .muted-text {
        width: 100%;
        margin-right: 0;
    }

    .club-registration-bulk-actions {
        width: 100%;
    }

    .club-registration-bulk-actions button {
        flex: 1 1 180px;
    }
}

@media (max-width: 1100px) {
    /* Gestion des inscriptions */

    .club-registration-manager-head {
        flex-direction: column;
    }

    .club-registration-count {
        width: 100%;
    }

    .club-registration-toolbar > button,
    .club-registration-bulk-actions,
    .club-registration-bulk-actions button {
        width: 100%;
    }

    .club-registration-manager-table .btn-compact {
        width: 100%;
    }


    /* Présences et repas : bouton mobile harmonisé */
    .club-registration-manager-head .club-registration-head-actions {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 90px;
        align-items: start;
        gap: 8px;
        width: 100%;
        min-width: 0;
        margin-top: 12px;
    }

    .club-registration-head-actions .club-presences-button {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
        width: 100%;
        min-width: 0;
        height: 40px;
        min-height: 40px;
        max-height: 40px;
        padding: 0 10px;
        border-radius: 8px;
        font-size: 13px;
        line-height: 1.2;
        white-space: nowrap;
    }


    .club-registration-head-actions .club-registration-count {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        width: 90px;
        min-width: 0;
        max-width: 90px;
        box-sizing: border-box;
        padding: 8px;
        margin: 0;
    }

    /* Présences et repas : fiches mobiles */

    .category-modal[data-presences-modal] .club-presences-body {
        display: block;
        width: 100%;
        min-width: 0;
        box-sizing: border-box;
        padding: 16px;
        overflow-x: hidden;
        overflow-y: auto;
    }

    .category-modal[data-presences-modal] .club-presences-body .table-wrap {
        display: block;
        width: 100%;
        max-width: 100%;
        min-width: 0;
        box-sizing: border-box;
        overflow: visible;
        border: 0;
        background: transparent;
    }

    .category-modal[data-presences-modal] .club-presences-body .data-table,
    .category-modal[data-presences-modal] .club-presences-body .data-table tbody {
        display: block;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        box-sizing: border-box;
        border: 0;
        background: transparent;
    }

    .category-modal[data-presences-modal] .club-presences-body .data-table thead {
        display: none;
    }

    .category-modal[data-presences-modal] .club-presences-body .data-table tr {
        display: flex;
        flex-wrap: wrap;
        width: 100%;
        min-width: 0;
        box-sizing: border-box;
        gap: 8px;
        margin: 0 0 12px;
        padding: 12px;
        border: 1px solid #d9e2ec;
        border-radius: 10px;
        background: #ffffff;
    }

    .category-modal[data-presences-modal] .club-presences-body .data-table td {
        display: block;
        flex: 0 0 100%;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        box-sizing: border-box;
        padding: 0;
        border: 0;
        font-size: 13px;
        overflow-wrap: anywhere;
    }

    .category-modal[data-presences-modal] .club-presences-body .data-table td:first-child {
        width: 100%;
        padding-bottom: 9px;
        border-bottom: 1px solid #e2e8f0;
        font-size: 14px;
    }

    .category-modal[data-presences-modal] .club-presences-body .data-table td:nth-child(2),
    .category-modal[data-presences-modal] .club-presences-body .data-table td:nth-child(3) {
        flex: 0 0 calc(50% - 4px);
        width: calc(50% - 4px);
    }

    .category-modal[data-presences-modal] .club-presences-body .data-table td:nth-child(2)::before {
        content: "Fonction : ";
        font-weight: 600;
    }

    .category-modal[data-presences-modal] .club-presences-body .data-table td:nth-child(3)::before {
        content: "Repas : ";
        font-weight: 600;
    }

    .category-modal[data-presences-modal] .club-presences-body .data-table td:last-child {
        flex: 0 0 100%;
        width: 100%;
        max-width: 100%;
        padding-top: 10px;
        border-top: 1px solid #e2e8f0;
    }

    .category-modal[data-presences-modal] .club-presences-actions {
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: flex-end;
        flex-wrap: nowrap;
        width: 100%;
        min-width: 0;
        gap: 8px;
    }

    .category-modal[data-presences-modal] .club-presences-actions > button {
        display: inline-flex;
        flex: 0 1 auto;
        width: auto;
        min-width: 100px;
        max-width: 170px;
        margin: 0;
    }

    .category-modal[data-presences-modal] .club-presences-actions > form {
        display: inline-flex;
        flex: 0 0 auto;
        width: auto;
        min-width: 0;
        max-width: none;
        margin: 0;
    }

    .category-modal[data-presences-modal] .club-presences-actions .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
        width: 100%;
        min-height: 40px;
        margin: 0;
        padding: 8px 12px;
        font-size: 13px;
        text-align: center;
        white-space: normal;
    }

    .category-modal[data-presences-modal] .club-presences-actions > form .btn {
        width: 40px;
        min-width: 40px;
        max-width: 40px;
        height: 40px;
        min-height: 40px;
        padding: 0;
    }

    /* Formulaire sur une colonne */

    .category-modal[data-presences-modal] form[data-presence-form] {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
    }

    .category-modal[data-presences-modal] .club-presences-form-actions {
        grid-column: 1;
        width: 100%;
    }

    .category-modal[data-presences-modal] .club-presences-form-actions .btn {
        width: 100%;
    }

    .category-modal[data-presences-modal] [data-presence-manuel-block] {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
    }

    .category-modal[data-presences-modal] [data-presence-manuel-block] label,
    .category-modal[data-presences-modal] [data-presence-manuel-block] input {
        grid-row: auto;
    }
}

/* Page club - mes inscriptions
   ========================================================= */

.inscription-summary-main {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.inscription-summary-main strong {
    color: #1f2933;
}

.inscription-summary-meta {
    color: #7b8794;
    font-size: 12px;
    font-weight: 500;
}

.inscription-group summary .inscription-summary-closed {
    color: #991b1b !important;
    -webkit-text-fill-color: #991b1b;
    font-size: 12px;
    font-weight: 700;
}

.inscription-summary-count {
    flex: 0 0 auto;
    align-self: center;
    color: #7b8794;
    font-size: 13px;
    white-space: nowrap;
}

.inscription-group summary {
    align-items: center;
}

.dossard-danseurs-block {
    display: none !important;
}

.dossard-danseurs-block.is-visible {
    display: block !important;
}

.dossards-create-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 12px;
}

.dossards-create-head button[hidden] {
    display: none !important;
}

.dossards-create-head .muted-text {
    margin: 4px 0 0;
}

.dossards-create-list {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.dossard-create-item {
    position: relative;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    padding: 14px;
    background: #f8fafc;
}

.dossard-create-item-error {
    border-color: #d92d20;
    background: #fff5f5;
}

.dossard-create-item-header {
    display: block;
    padding-right: 170px;
    margin-bottom: 12px;
}

.dossard-create-item-header h3 {
    margin: 0;
    font-size: 16px;
}

.dossard-remove-button {
    position: absolute;
    top: 14px;
    right: 14px;
}

.dossard-create-error-text {
    margin: 0 0 12px;
    color: #b42318;
    font-weight: 700;
    font-size: 13px;
}

.danseurs-select-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(170px, 1fr));
    gap: 14px;
    max-width: 100%;
}

.danseurs-select-grid-duo {
    grid-template-columns: repeat(2, minmax(260px, 1fr));
}

.dossard-danseur-field label {
    display: block;
    margin-bottom: 6px;
}

.dossard-danseur-field select {
    width: 100%;
}

@media (max-width: 980px) {
    .danseurs-select-grid {
        grid-template-columns: repeat(2, minmax(180px, 1fr));
    }
}

@media (max-width: 720px) {
    .danseurs-select-grid,
    .danseurs-select-grid-duo {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 520px) {
    .dossards-create-head,
.dossard-create-item-header {
    flex-direction: column;
    align-items: stretch;
}
}

/* =========================================================
   06 - RESPONSIVE SPÉCIFIQUE
   ========================================================= */

/* Responsive mobile/tablette - pages club et administration
   ========================================================= */

@media (max-width: 900px) {
    .card,
    .category-create-card,
    .resultats-import-card {
        max-width: 100%;
        box-sizing: border-box;
    }

    .category-create-card.categories-card-fit {
        width: 100%;
        min-width: 0;
    }

    .table-wrap {
        max-width: 100%;
        -webkit-overflow-scrolling: touch;
    }

    .table-wrap::after {
        content: "";
        display: block;
        height: 1px;
    }

    .data-table th,
    .data-table td {
        padding: 9px 10px;
    }

    .table-header-line {
        align-items: flex-start;
        flex-direction: column;
        gap: 4px;
    }

    .compact-filter-form > div {
        max-width: 100%;
    }

    .championnats-grid {
        grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    }

    .championship-controls-row {
        align-items: stretch;
        flex-direction: column;
    }

    .championship-control-card {
        width: 100%;
    }

    .championship-toolbar,
    .championship-season-form {
        align-items: stretch;
    }

    .championship-toolbar select,
    .championship-season-form input {
        width: 100%;
    }

    .championship-actions {
        justify-content: flex-start;
    }

    .championship-actions .btn,
    .championship-actions button,
    .championship-actions .btn-secondary,
    .championship-actions .btn-danger {
        flex: 1 1 150px;
    }

    .categories-card-fit {
        width: 100%;
        box-sizing: border-box;
    }

    .category-filters {
        align-items: stretch;
    }

    .category-filter-dropdown {
        width: 100%;
    }

    .category-filter-dropdown summary {
        width: 100%;
        box-sizing: border-box;
    }

    .category-filter-panel {
        position: static;
        width: 100%;
        max-height: 220px;
        margin-top: 6px;
        box-sizing: border-box;
        box-shadow: none;
    }

    .admin-users-table,
    .categories-card-fit .data-table,
    .resultats-import-table .data-table {
        width: max-content;
    }
}

@media (max-width: 700px) {
    .page-header h1 {
        font-size: 28px;
    }

    .page-header p {
        font-size: 16px;
    }

    .card {
        padding: 14px;
        border-radius: 12px;
    }

    .filters-row > div,
    .filters-actions,
    .filters-actions button,
    .filters-actions .btn {
        width: 100%;
    }

    .club-danseurs-table {
        min-width: 760px;
    }

    .club-danseurs-table th:nth-child(1),
    .club-danseurs-table td:nth-child(1) {
        width: 260px;
    }

    .club-danseurs-table th:nth-child(3),
    .club-danseurs-table td:nth-child(3) {
        width: 190px;
    }

    .club-danseurs-table th:nth-child(4),
    .club-danseurs-table td:nth-child(4) {
        width: 210px;
    }

    .club-danseurs-table .actions-row {
        flex-wrap: wrap;
        justify-content: center;
    }

    .club-danseurs-table .actions-row .btn,
    .club-danseurs-table .actions-row button {
        min-width: 96px;
    }

    .club-licence-alert {
        flex-direction: column;
        align-items: stretch;
    }

    .club-licence-alert .btn {
        width: 100%;
    }

    .dossards-list-card .data-table {
        width: max-content;
        min-width: 780px;
    }

    .dossard-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .dossard-actions .btn,
    .dossard-actions button {
        width: 100%;
    }


    .club-dossards-table .dossard-actions .btn-delete-icon,
    .club-dossards-table .dossard-actions button.btn-delete-icon {
        box-sizing: border-box;
        flex: 0 0 40px;
        width: 40px;
        min-width: 40px;
        max-width: 40px;
        height: 40px;
        min-height: 40px;
        max-height: 40px;
        padding: 0;
        align-self: center;
    }


    .championnats-grid {
        grid-template-columns: 1fr;
    }

    .inscription-group summary {
        align-items: flex-start;
        flex-direction: column;
    }

    .inscription-group summary .inscription-summary-closed {
        color: #991b1b;
    }

    .inscription-summary-count {
        align-self: flex-start;
    }

    .club-inscriptions-table {
        min-width: 720px;
    }

    .admin-users-table {
        min-width: 760px;
    }

    .admin-users-table .actions-column {
        width: 105px;
    }

    .categories-card-fit .data-table {
        min-width: 680px;
    }
}

@media (max-width: 520px) {
    body {
        overflow-x: hidden;
    }

    .main-content {
        padding-top: 14px;
    }

    .page-header {
        gap: 8px;
    }

    .page-header-with-action .btn {
        width: 100%;
    }

    button,
    .btn,
    .btn-secondary,
    .btn-danger {
        min-height: 40px;
        white-space: normal;
    }


    .btn-delete-icon,
    button.btn-delete-icon {
        box-sizing: border-box;
        flex-shrink: 0;
        width: 40px;
        min-width: 40px;
        max-width: 40px;
        height: 40px;
        min-height: 40px;
        max-height: 40px;
        padding: 0;
        border-radius: 8px;
    }


    .actions-row,
    .filters-actions,
    .championship-actions {
        gap: 8px;
    }

    .actions-row form,
    .championship-actions form,
    .dossard-actions form {
        width: 100%;
    }

    .actions-row .btn,
    .actions-row button,
    .championship-actions .btn,
    .championship-actions button,
    .dossard-actions .btn,
    .dossard-actions button {
        width: 100%;
    }

    .data-table {
        font-size: 13px;
    }

    .data-table th,
    .data-table td {
        padding: 8px;
    }

    .badge {
        display: inline-flex;
        width: fit-content;
        max-width: 100%;
        box-sizing: border-box;
        justify-content: center;
        white-space: normal;
        overflow-wrap: anywhere;
        text-align: center;
        line-height: 1.15;
    }

    .flash-toast {
        left: 12px;
        right: 12px;
        top: 86px;
    }

    .flash-toast .alert {
        max-width: none;
        border-radius: 12px;
    }

    .championship-item {
        padding: 12px;
    }

    .championship-main {
        align-items: flex-start;
        flex-direction: column;
    }

    .championship-number {
        width: 42px;
        height: 42px;
        font-size: 22px;
    }

    .championship-status {
        white-space: normal;
    }

    .championship-actions .btn,
    .championship-actions button {
        flex-basis: 100%;
    }

    .category-create-summary {
        gap: 12px;
        align-items: center;
        flex-direction: row;
        justify-content: space-between;
    }

    .category-create-summary::after {
        flex: 0 0 28px;
    }

    .category-create-card .category-create-form {
        padding: 14px;
    }

    .category-filter-panel {
        max-height: 180px;
    }
}

/* Tableaux transformés en cartes sur smartphone et tablette
   ========================================================= */

@media (max-width: 1100px) {
    .categories-card-fit {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }

    .category-table-scroll {
        width: 100%;
        overflow-x: visible;
    }

    .categories-card-fit .data-table {
        width: 100% !important;
        min-width: 0 !important;
    }

    /* Tableaux transformés en fiches : suppression des cadres intermédiaires */
    .mobile-card-table {
        width: 100% !important;
        min-width: 0 !important;
        border: 0 !important;
        border-radius: 0 !important;
        border-collapse: separate;
        border-spacing: 0;
        background: transparent !important;
        box-shadow: none !important;
        overflow: visible;
    }

    /* Conteneurs de tableaux : ne pas ajouter une seconde bordure */
    .category-table-scroll,
    .table-wrap:has(> .mobile-card-table),
    .table-wrap:has(> .category-table-scroll) {
        border: 0 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
    }

    /* Les fiches individuelles conservent leurs propres arrondis */
    .mobile-card-table tbody > tr {
        border-radius: 12px;
    }

    .mobile-card-table thead {
        display: none;
    }

    .mobile-card-table tbody,
    .mobile-card-table tr,
    .mobile-card-table td {
        display: block;
        width: 100%;
    }

    .mobile-card-table tr[hidden] {
        display: none !important;
    }

    .mobile-card-table tr {
        margin-bottom: 12px;
        border: 1px solid #e2e8f0;
        border-radius: 12px;
        background: #ffffff;
        overflow: hidden;
        box-shadow: 0 1px 5px rgba(15, 23, 42, 0.05);
    }

    .mobile-card-table tr:hover td {
        background: transparent;
    }

    .mobile-card-table.club-danseurs-table tr.danseur-inactif {
        background: #f1f5f9;
    }

    .mobile-card-table.club-danseurs-table tr.danseur-inactif td,
    .mobile-card-table.club-danseurs-table tr.danseur-inactif:hover td {
        background: #f1f5f9;
    }

    .mobile-card-table td {
        min-height: 40px;
        padding: 9px 11px;
        border-bottom: 1px solid #eef2f7;
        text-align: right !important;
    }

    .mobile-card-table td:last-child {
        border-bottom: 0;
    }

    .mobile-card-table td::before {
        content: attr(data-label);
        float: left;
        max-width: 45%;
        padding-right: 10px;
        color: #334e68;
        font-size: 12px;
        font-weight: 800;
        text-align: left;
        text-transform: uppercase;
        letter-spacing: 0.03em;
    }

    .mobile-card-table td.mobile-card-empty {
        text-align: left !important;
    }

    .mobile-card-table td.mobile-card-empty::before {
        content: none;
    }

    .mobile-card-table td[data-label="Danseur(s)"],
    .mobile-card-table td[data-label="Catégorie"] {
        display: grid;
        grid-template-columns: minmax(95px, 35%) 1fr;
        gap: 10px;
        align-items: start;
        text-align: left !important;
    }

    .mobile-card-table td[data-label="Danseur(s)"]::before,
    .mobile-card-table td[data-label="Catégorie"]::before {
        float: none;
        display: block;
        max-width: none;
        padding-right: 0;
    }

    .mobile-card-table td[data-label="Sélection"] {
        display: flex;
        align-items: center;
        justify-content: space-between;
        text-align: left !important;
    }

    .mobile-card-table td[data-label="Sélection"]::before {
        float: none;
        max-width: none;
    }

    .mobile-card-table td[data-label="Sélection"] input[type="checkbox"] {
        width: 22px;
        height: 22px;
    }

    .mobile-card-table td[data-label="Action"] {
        text-align: left !important;
    }

    .mobile-card-table td[data-label="Action"]::before {
        float: none;
        display: block;
        max-width: none;
        margin-bottom: 8px;
        padding-right: 0;
    }

    .mobile-card-table .inline-form,
    .mobile-card-table form {
        width: 100%;
    }

    .mobile-card-table .btn,
    .mobile-card-table button {
        width: 100%;
    }

    .licence-actions {
        flex-direction: column;
        align-items: stretch;
    }

    .licence-actions button,
    .licence-actions .btn {
        width: 100%;
    }

    .mobile-card-table .dossard-actions {
        width: 100%;
        gap: 8px;
    }
	
	    .mobile-card-table .dossard-actions .btn,
    .mobile-card-table .dossard-actions button {
        margin-bottom: 0;
    }

    .mobile-card-table .dossard-actions form + form,
    .mobile-card-table .dossard-actions a + form,
    .mobile-card-table .dossard-actions form + a {
        margin-top: 8px;
    }

    .club-dossards-table,
    .club-registration-table,
    .club-championship-registrations-table,
    .club-inscriptions-table {
        min-width: 0 !important;
    }
}

/* Correctif cards mobiles club - inscriptions / dossards
   ========================================================= */

@media (max-width: 1100px) {
    .mobile-card-table {
        table-layout: auto !important;
    }

    .mobile-card-table th,
    .mobile-card-table td,
    .mobile-card-table th:nth-child(1),
    .mobile-card-table td:nth-child(1),
    .mobile-card-table th:nth-child(2),
    .mobile-card-table td:nth-child(2),
    .mobile-card-table th:nth-child(3),
    .mobile-card-table td:nth-child(3),
    .mobile-card-table th:nth-child(4),
    .mobile-card-table td:nth-child(4),
    .mobile-card-table th:nth-child(5),
    .mobile-card-table td:nth-child(5),
    .mobile-card-table th:nth-child(6),
    .mobile-card-table td:nth-child(6),
    .mobile-card-table th:nth-child(7),
    .mobile-card-table td:nth-child(7) {
        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;
        white-space: normal !important;
        box-sizing: border-box;
    }

    .mobile-card-table td {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: start;
        text-align: left !important;
    }

    .mobile-card-table td::before {
        float: none !important;
        max-width: none !important;
        padding-right: 0 !important;
        overflow-wrap: normal;
        word-break: normal;
    }

    .mobile-card-table td > * {
        min-width: 0;
    }

    .mobile-card-table td strong,
    .mobile-card-table td span,
    .mobile-card-table td a,
    .mobile-card-table td button {
        overflow-wrap: normal;
        word-break: normal;
    }

    .mobile-card-table td[data-label="Danseur(s)"],
    .mobile-card-table td[data-label="Catégorie"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        text-align: left !important;
    }

    .mobile-card-table td[data-label="Danseur(s)"]::before,
    .mobile-card-table td[data-label="Catégorie"]::before {
        display: block;
        margin-bottom: 0;
    }


    .mobile-card-table td[data-label="Action"] {
        display: block !important;
    }

    .mobile-card-table td[data-label="Action"]::before {
        display: block;
        margin-bottom: 8px;
    }


    /* Inscriptions Clubs : fiches mobiles compactes */
    .club-registration-manager-table.mobile-card-table
    tr[data-registration-row] {
        display: flex !important;
        position: relative;
        flex-direction: column;
        width: 100%;
        box-sizing: border-box;
    }

    /* Case de sélection */
    .club-registration-manager-table.mobile-card-table
    tr[data-registration-row] td[data-label="Sélection"] {
        display: flex !important;
        position: absolute;
        top: 12px;
        left: 12px;
        z-index: 1;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
        width: 22px !important;
        min-width: 22px !important;
        height: 22px;
        min-height: 22px;
        padding: 0 !important;
        margin: 0;
        border: 0 !important;
    }

    .club-registration-manager-table.mobile-card-table
    td[data-label="Sélection"]::before {
        display: none !important;
        content: none;
    }

    /* Dossard en haut de la fiche */
    .club-registration-manager-table.mobile-card-table
    tr[data-registration-row] td[data-label="Dossard"] {
        display: block !important;
        order: 1;
        box-sizing: border-box;
        width: 100% !important;
        min-height: 0;
        padding: 12px 105px 3px 44px !important;
        border-bottom: 0 !important;
        text-align: left !important;
    }

    .club-registration-manager-table.mobile-card-table
    td[data-label="Dossard"]::before {
        display: none !important;
        content: none;
    }

    .club-registration-manager-table.mobile-card-table
    td[data-label="Dossard"] strong {
        display: block;
        font-size: 16px;
        line-height: 1.35;
    }

    /* Catégorie sous le numéro de dossard */
    .club-registration-manager-table.mobile-card-table
    tr[data-registration-row] td[data-label="Catégorie"] {
        display: block !important;
        order: 2;
        box-sizing: border-box;
        width: 100% !important;
        min-height: 0;
        padding: 2px 105px 12px 44px !important;
        border-bottom: 1px solid #e2e8f0 !important;
        color: #64748b;
        font-size: 13px;
        line-height: 1.4;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .club-registration-manager-table.mobile-card-table
    td[data-label="Catégorie"]::before {
        display: none !important;
        content: none;
    }

    /* Statut en haut à droite */
    .club-registration-manager-table.mobile-card-table
    tr[data-registration-row] td[data-label="État"] {
        display: block !important;
        position: absolute;
        top: 12px;
        right: 10px;
        box-sizing: border-box;
        width: auto !important;
        max-width: 95px;
        min-height: 0;
        padding: 0 !important;
        margin: 0;
        border: 0 !important;
        text-align: right !important;
    }

    .club-registration-manager-table.mobile-card-table
    td[data-label="État"]::before {
        display: none !important;
        content: none;
    }

    /* Danseurs sous l'en-tête */
    .club-registration-manager-table.mobile-card-table
    tr[data-registration-row] td[data-label="Danseur(s)"] {
        display: block !important;
        order: 3;
        box-sizing: border-box;
        width: 100% !important;
        min-height: 0;
        padding: 10px 12px !important;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .club-registration-manager-table.mobile-card-table
    td[data-label="Danseur(s)"]::before {
        display: block !important;
        content: attr(data-label);
        margin-bottom: 5px;
        font-size: 12px;
        font-weight: 700;
    }

    /* Actions ou indications d'inéligibilité */
    .club-registration-manager-table.mobile-card-table
    tr[data-registration-row] td[data-label="Action"] {
        display: flex !important;
        order: 4;
        flex-direction: row !important;
        flex-wrap: wrap;
        align-items: center !important;
        justify-content: flex-end !important;
        box-sizing: border-box;
        width: 100% !important;
        min-height: 0;
        padding: 9px 12px !important;
        gap: 6px;
        text-align: right !important;
    }

    .club-registration-manager-table.mobile-card-table
    td[data-label="Action"]::before {
        display: none !important;
        content: none;
    }

    .club-registration-manager-table
    td[data-label="Action"] button.fdo-registration-icon {
        margin: 0 !important;
    }



    .mobile-card-table td[data-label="Sélection"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        align-items: center;
    }

    .mobile-card-table td[data-label="Sélection"] input[type="checkbox"] {
        justify-self: end;
    }



            /* Club / Dossards : fiches mobiles compactes */

    .dossards-status-legend {
        display: none;
    }

    .club-dossards-table.mobile-card-table {
        width: 100% !important;
        min-width: 0 !important;
    }

    .club-dossards-table.mobile-card-table tbody tr:not(:has(.mobile-card-empty)) {
        display: flex !important;
        position: relative;
        flex-direction: column;
        width: 100%;
        box-sizing: border-box;
    }

    /* Sélection pour impression */
    .club-dossards-table.mobile-card-table td[data-label="Impr."] {
        display: none !important;
    }

    .club-dossards-table.mobile-card-table td[data-label="Impr."]:has(.print-dossard-checkbox) {
        display: flex !important;
        position: absolute;
        top: 12px;
        left: 12px;
        z-index: 1;
        align-items: center;
        justify-content: center;
        width: 22px !important;
        min-width: 22px !important;
        height: 22px;
        min-height: 22px;
        padding: 0 !important;
        margin: 0;
        border: 0 !important;
    }

    .club-dossards-table.mobile-card-table td[data-label="Impr."]::before {
        display: none !important;
        content: none;
    }

    .club-dossards-table.mobile-card-table .print-dossard-checkbox {
        width: 22px;
        height: 22px;
        min-height: 22px;
        margin: 0;
    }

    /* Numéro de dossard */
    .club-dossards-table.mobile-card-table td[data-label="Dossard"] {
        display: block !important;
        position: static;
        order: 1;
        width: 100% !important;
        min-height: 0;
        padding: 12px 105px 3px 12px !important;
        border-bottom: 0 !important;
        text-align: left !important;
        box-sizing: border-box;
    }

    .club-dossards-table.mobile-card-table tr:has(.print-dossard-checkbox)
    td[data-label="Dossard"] {
        padding-left: 44px !important;
    }

    .club-dossards-table.mobile-card-table td[data-label="Dossard"]::before {
        display: none !important;
        content: none;
    }

    .club-dossards-table.mobile-card-table td[data-label="Dossard"] > .badge:not(.dossard-mobile-status) {
        display: inline-flex;
        min-height: 0;
        padding: 0;
        border: 0;
        background: transparent;
        box-shadow: none;
        color: #1f2937;
        font-size: 16px;
        font-weight: 700;
        line-height: 1.35;
    }

    /* Statut en haut à droite */
    .club-dossards-table.mobile-card-table .dossard-mobile-status {
        display: inline-flex;
        position: absolute;
        top: 12px;
        right: 10px;
        max-width: 95px;
        box-sizing: border-box;
        margin: 0;
        text-align: center;
    }

    /* Catégorie directement sous le numéro */
    .club-dossards-table.mobile-card-table td[data-label="Catégorie"] {
        display: block !important;
        order: 2;
        width: 100% !important;
        min-height: 0;
        padding: 2px 105px 12px 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
        box-sizing: border-box;
        color: #64748b;
        font-size: 13px;
        line-height: 1.4;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .club-dossards-table.mobile-card-table tr:has(.print-dossard-checkbox)
    td[data-label="Catégorie"] {
        padding-left: 44px !important;
    }

    .club-dossards-table.mobile-card-table td[data-label="Catégorie"]::before {
        display: none !important;
        content: none;
    }

    /* Danseurs */
    .club-dossards-table.mobile-card-table td[data-label="Danseur(s)"] {
        display: block !important;
        order: 3;
        width: 100% !important;
        min-height: 0;
        padding: 10px 12px !important;
        box-sizing: border-box;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .club-dossards-table.mobile-card-table td[data-label="Danseur(s)"]::before {
        display: block !important;
        content: attr(data-label);
        margin-bottom: 5px;
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        text-transform: uppercase;
    }

    /* Gestion conservée sur PC, masquée sur mobile */
    .club-dossards-table.mobile-card-table td[data-label="Gestion du dossard"] {
        display: none !important;
    }

    /* Bouton Gérer intégré aux actions mobiles */
    .club-dossards-table.mobile-card-table .dossard-actions .dossard-manage-mobile {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
    }

    /* Actions regroupées en bas à droite */
    .club-dossards-table.mobile-card-table td[data-label="Action"] {
        order: 4;
        box-sizing: border-box;
        min-height: 0;
        padding: 9px 12px !important;
        border-bottom: 0 !important;
    }

    .club-dossards-table.mobile-card-table td[data-label="Action"] {
        display: block !important;
        width: 100% !important;
        text-align: right !important;
    }


    .club-dossards-table.mobile-card-table td[data-label="Action"]::before {
        display: none !important;
        content: none;
    }

    .club-dossards-table.mobile-card-table .dossard-actions {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: wrap;
        align-items: center !important;
        justify-content: flex-end !important;
        width: 100%;
        gap: 8px;
    }

    .club-dossards-table.mobile-card-table .dossard-actions form {
        display: inline-flex;
        flex: 0 0 40px;
        width: 40px !important;
        margin: 0 !important;
    }

    .club-dossards-table.mobile-card-table .dossard-actions .btn {
        display: inline-flex;
        flex: 0 0 auto;
        width: auto !important;
        min-width: 0;
        min-height: 40px;
        margin: 0 !important;
    }

    .club-dossards-table.mobile-card-table .dossard-actions button.btn-delete-icon {
        box-sizing: border-box;
        flex: 0 0 40px;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
        margin: 0 !important;
        align-self: center;
    }

}

/* Améliorations cards mobiles - danseurs et catégories
   ========================================================= */

@media (max-width: 1100px) {
    .club-danseurs-table,
    .admin-categories-table {
        min-width: 0 !important;
        width: 100% !important;
    }

    .mobile-card-table td[data-label="Danseur"],
    .mobile-card-table td[data-label="Catégorie"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: start;
        text-align: left !important;
    }

    .mobile-card-table td[data-label="Danseur"]::before,
    .mobile-card-table td[data-label="Catégorie"]::before {
        display: block;
        margin-bottom: 0;
    }

    .mobile-card-table td[data-label="Actions"] {
        display: block !important;
        text-align: left !important;
    }

    .mobile-card-table td[data-label="Actions"]::before {
        display: block;
        margin-bottom: 8px;
    }


    .club-attestations-table td[data-label="Actions"],
    .admin-danseurs-table td[data-label="Actions"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: center;
        text-align: left !important;
    }

    .club-attestations-table td[data-label="Actions"]::before,
    .admin-danseurs-table td[data-label="Actions"]::before {
        float: none;
        display: block;
        max-width: none;
        margin-bottom: 0;
        padding-right: 0;
    }

    .club-danseurs-table td[data-label="Actions"] {
        display: block !important;
        text-align: right !important;
    }

    .club-danseurs-table td[data-label="Actions"]::before {
        display: none !important;
    }


    .admin-danseurs-table td[data-label="Actions"] {
        display: block !important;
        text-align: right !important;
    }

    .admin-danseurs-table td[data-label="Actions"]::before {
        display: none !important;
    }

    .admin-danseurs-table .admin-danseurs-actions {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: wrap !important;
        align-items: center !important;
        justify-content: flex-end !important;
        width: 100%;
        gap: 6px;
        margin: 0;
    }



    .club-attestations-table td[data-label="Actions"] {
        display: flex !important;
        flex-direction: row !important;
        justify-content: flex-end !important;
        align-items: center !important;
        flex-wrap: wrap;
        gap: 6px;
        text-align: right !important;
    }

    .club-attestations-table td[data-label="Actions"]::before {
        display: none !important;
    }

    .club-attestations-table td[data-label="Actions"] > .btn {
        display: inline-flex;
        width: auto !important;
        min-height: 40px;
        justify-self: auto;
        margin: 0;
    }

    .admin-danseurs-table td[data-label="Actions"] > .btn {
        justify-self: stretch;
        width: 100%;
    }


    .club-danseurs-table td[data-label="Actions"] .club-danseur-actions {
        width: 100%;
        margin: 0;
    }

    .mobile-card-table td[data-label="Actions"] .actions-row {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        width: 100%;
        gap: 8px;
    }

    .mobile-card-table td[data-label="Actions"] .actions-row form {
        width: 100%;
        margin: 0;
    }

    .mobile-card-table td[data-label="Actions"] .actions-row .btn,
    .mobile-card-table td[data-label="Actions"] .actions-row button {
        width: 100%;
        margin: 0;
    }

    .mobile-card-table td[data-label="Âge"],
    .mobile-card-table td[data-label="Âges"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: center;
        text-align: left !important;
    }

    .mobile-card-table td[data-label="Âge"]::before,
    .mobile-card-table td[data-label="Âges"]::before {
        display: block;
    }
}

/* Amélioration responsive - validation licences
   ========================================================= */

@media (max-width: 1100px) {
    .licences-dossards-table,
    .licences-danseurs-table,
    .licence-detail-table {
        width: 100% !important;
        min-width: 0 !important;
        table-layout: auto !important;
        border-collapse: separate;
        border-spacing: 0;
    }

    .licence-detail-grid {
        grid-template-columns: 1fr;
    }

    .licence-detail-footer,
    .licence-detail-final-actions {
        flex-direction: column;
        align-items: stretch;
    }

    .licence-detail-footer button,
    .licence-detail-footer .btn {
        width: 100%;
    }

    .licence-detail-return-form {
        margin-left: 0;
        width: 100%;
    }

    .licences-dossards-table thead,
    .licences-danseurs-table thead,
    .licence-detail-table thead {
        display: none;
    }

    .licences-dossards-table tbody,
    .licences-dossards-table tr,
    .licences-dossards-table td,
    .licences-danseurs-table tbody,
    .licences-danseurs-table tr,
    .licences-danseurs-table td,
    .licence-detail-table tbody,
    .licence-detail-table tr,
    .licence-detail-table td {
        display: block;
        width: 100% !important;
        min-width: 0 !important;
        max-width: none !important;
        box-sizing: border-box;
        white-space: normal !important;
    }

    .licences-dossards-table tr,
    .licences-danseurs-table tr,
    .licence-detail-table tr {
        margin-bottom: 12px;
        border: 1px solid #e2e8f0;
        border-radius: 12px;
        background: #ffffff;
        overflow: hidden;
        box-shadow: 0 1px 5px rgba(15, 23, 42, 0.05);
    }

    .licences-dossards-table td,
    .licences-danseurs-table td,
    .licence-detail-table td {
        min-height: 40px;
        padding: 9px 11px;
        border-bottom: 1px solid #eef2f7;
        text-align: left !important;
    }

    .licences-dossards-table td:last-child,
    .licences-danseurs-table td:last-child,
    .licence-detail-table td:last-child {
        border-bottom: 0;
    }

    .licences-dossards-table td::before,
    .licences-danseurs-table td::before,
    .licence-detail-table td::before {
        content: attr(data-label);
        display: block;
        margin-bottom: 6px;
        color: #334e68;
        font-size: 12px;
        font-weight: 800;
        text-align: left;
        text-transform: uppercase;
        letter-spacing: 0.03em;
    }

    /* Licences : présentation des résultats vides */
    .licences-dossards-table td.mobile-card-empty,
    .licences-danseurs-table td.mobile-card-empty {
        text-align: left !important;
    }

    .licences-dossards-table td.mobile-card-empty::before,
    .licences-danseurs-table td.mobile-card-empty::before {
        content: none;
    }

    /* Licences danseurs : fiche vide sans double encadrement */
    .licences-danseurs-table tbody tr:has(> td.mobile-card-empty) {
        border: 0 !important;
        border-radius: 0 !important;
        background: transparent !important;
        box-shadow: none !important;
    }

    .licences-danseurs-table td.mobile-card-empty {
        display: block !important;
        width: 100% !important;
        min-height: 0;
        border: 1px solid #e2e8f0 !important;
        border-radius: 10px;
        background: #f8fafc;
        padding: 12px !important;
        box-sizing: border-box;
    }

    /* Licences danseurs : badges à largeur naturelle */
    .licences-danseurs-table.mobile-card-table td[data-label="Statut"] .badge,
    .licences-danseurs-table.mobile-card-table td[data-label="Dossier"] .badge {
        display: inline-flex !important;
        width: fit-content !important;
        max-width: 100%;
        min-width: 0;
        align-self: flex-start;
        justify-self: start;
        white-space: normal;
    }

    /* Licences danseurs : bouton Ouvrir compact */
    .licences-danseurs-table.mobile-card-table td[data-label="Action"] > .btn,
    .licences-danseurs-table.mobile-card-table td[data-label="Action"] > a,
    .licences-danseurs-table.mobile-card-table .actions-column button {
        display: inline-flex !important;
        flex: 0 0 auto;
        width: auto !important;
        max-width: 100%;
        min-width: 0;
        align-self: flex-end;
    }

    /* Détail licence : badges compacts */
    .licence-detail-table.mobile-card-table td[data-label="Fichier"] .badge,
    .licence-detail-table.mobile-card-table td[data-label="État"] .badge {
        display: inline-flex !important;
        width: fit-content !important;
        min-width: 0;
        max-width: 100%;
        align-self: flex-start;
        justify-self: start;
        white-space: normal;
    }

    /* Détail licence : actions à largeur naturelle */
    .licence-detail-table.mobile-card-table .licence-document-actions button,
    .licence-detail-table.mobile-card-table .licence-document-actions .btn {
        flex: 0 0 auto;
        width: auto !important;
        max-width: 100%;
    }

    .licences-dossards-table td[data-label="Club"],
    .licences-dossards-table td[data-label="Catégorie"],
    .licences-dossards-table td[data-label="Danseur(s)"],
    .licences-danseurs-table td[data-label="Danseur"],
    .licences-danseurs-table td[data-label="Club"],
    .licences-danseurs-table td[data-label="Dossier"],
    .licences-danseurs-table td[data-label="Statut"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: start;
    }

    .licences-dossards-table td[data-label="Licences danseurs"],
    .licences-dossards-table td[data-label="Statut"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: center;
    }

    .licences-dossards-table td[data-label="Club"]::before,
    .licences-dossards-table td[data-label="Catégorie"]::before,
    .licences-dossards-table td[data-label="Danseur(s)"]::before,
    .licences-dossards-table td[data-label="Licences danseurs"]::before,
    .licences-dossards-table td[data-label="Statut"]::before,
    .licences-danseurs-table td[data-label="Danseur"]::before,
    .licences-danseurs-table td[data-label="Club"]::before,
    .licences-danseurs-table td[data-label="Dossier"]::before,
    .licences-danseurs-table td[data-label="Statut"]::before {
        margin-bottom: 0;
    }

    .licences-dossards-table td[data-label="Licences danseurs"] .licences-status-with-info,
    .licences-dossards-table td[data-label="Licences danseurs"] > .badge,
    .licences-dossards-table td[data-label="Statut"] > .badge {
        justify-self: start;
        align-self: center;
    }

    .licences-danseurs-table td[data-label="Documents"] {
        display: block !important;
    }

    .licences-danseurs-table td[data-label="Documents"]::before {
        margin-bottom: 8px;
    }

    .licences-dossards-table .actions-column,
    .licences-danseurs-table .actions-column {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        width: 100%;
        gap: 8px;
    }

    .licences-dossards-table .actions-column button,
    .licences-danseurs-table .actions-column button {
        width: 100%;
        margin: 0;
    }

    .licence-document-actions {
        flex-direction: column;
        align-items: stretch;
        width: 100%;
    }

    .licence-document-actions button,
    .licence-document-open-btn {
        width: 100%;
    }
}

/* =========================================================
   Licences / Validation des dossards : fiches compactes
   ========================================================= */

@media (max-width: 1100px) {

    .licences-dossards-table.mobile-card-table {
        width: 100% !important;
        min-width: 0 !important;
    }

    /* Organisation générale de chaque fiche */

    .licences-dossards-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) {
        display: flex !important;
        position: relative;
        flex-direction: column;
        width: 100%;
        box-sizing: border-box;
    }

    /* Numéro de dossard en évidence */

    .licences-dossards-table.mobile-card-table
    td[data-label="Dossard"] {
        display: block !important;
        order: 1;
        width: 100% !important;
        min-height: 0;
        padding: 12px 115px 3px 12px !important;
        border-bottom: 0 !important;
        text-align: left !important;
        box-sizing: border-box;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Dossard"]::before {
        display: none !important;
        content: none;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Dossard"] strong {
        display: inline-block;
        color: #1f2933;
        font-size: 16px;
        font-weight: 700;
        line-height: 1.35;
    }

    /* Catégorie directement sous le numéro */

    .licences-dossards-table.mobile-card-table
    td[data-label="Catégorie"] {
        display: block !important;
        order: 2;
        width: 100% !important;
        min-height: 0;
        padding: 2px 115px 12px 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
        color: #64748b;
        font-size: 13px;
        line-height: 1.4;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Catégorie"]::before {
        display: none !important;
        content: none;
    }

    /* Statut en haut à droite */

    .licences-dossards-table.mobile-card-table
    td[data-label="Statut"] {
        display: flex !important;
        position: absolute;
        top: 12px;
        right: 10px;
        align-items: flex-start;
        justify-content: flex-end;
        width: auto !important;
        min-width: 0 !important;
        max-width: 105px !important;
        min-height: 0;
        margin: 0;
        padding: 0 !important;
        border: 0 !important;
        background: transparent;
        text-align: right !important;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Statut"]::before {
        display: none !important;
        content: none;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Statut"] .badge {
        display: inline-flex;
        max-width: 100%;
        white-space: normal;
        text-align: center;
        line-height: 1.25;
    }

    /* Sections Club et Danseurs */

    .licences-dossards-table.mobile-card-table
    td[data-label="Club"],
    .licences-dossards-table.mobile-card-table
    td[data-label="Danseur(s)"] {
        display: block !important;
        width: 100% !important;
        min-height: 0;
        padding: 10px 12px !important;
        box-sizing: border-box;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Club"] {
        order: 3;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Danseur(s)"] {
        order: 4;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Club"]::before,
    .licences-dossards-table.mobile-card-table
    td[data-label="Danseur(s)"]::before {
        display: block !important;
        content: attr(data-label);
        margin: 0 0 5px;
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        text-align: left;
        text-transform: uppercase;
    }

    /* Licences des danseurs */

    .licences-dossards-table.mobile-card-table
    td[data-label="Licences danseurs"] {
        display: block !important;
        order: 5;
        width: 100% !important;
        min-height: 0;
        padding: 12px !important;
        box-sizing: border-box;
        text-align: left !important;
        overflow: visible;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Licences danseurs"]::before {
        display: block !important;
        content: attr(data-label);
        margin: 0 0 8px;
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        text-align: left;
        text-transform: uppercase;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Licences danseurs"]
    .licences-status-with-info {
        display: inline-flex;
        align-items: center;
        justify-content: flex-start;
        gap: 7px;
        max-width: 100%;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Licences danseurs"] > .badge {
        display: inline-flex;
        max-width: 100%;
        white-space: normal;
    }

    /* Actions en bas à droite */

    .licences-dossards-table.mobile-card-table
    td[data-label="Action"] {
        display: flex !important;
        order: 6;
        align-items: center;
        justify-content: flex-end;
        width: 100% !important;
        min-height: 0;
        padding: 9px 12px !important;
        border-bottom: 0 !important;
        box-sizing: border-box;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Action"]::before {
        display: none !important;
        content: none;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Action"] form {
        display: flex;
        justify-content: flex-end;
        width: auto;
        max-width: 100%;
        margin: 0;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Action"] .actions-column {
        display: flex;
        flex-direction: row;
        justify-content: flex-end;
        align-items: center;
        width: auto;
        max-width: 100%;
        gap: 6px;
    }

    .licences-dossards-table.mobile-card-table
    td[data-label="Action"] .actions-column button {
        flex: 0 0 auto;
        width: auto;
        max-width: 100%;
        min-height: 40px;
        margin: 0;
        white-space: normal;
    }
}

/* Amélioration mobile - inscriptions championnat admin et barème
   ========================================================= */

/* Administration / Inscriptions : badges et actions compacts sur tablette */
@media (max-width: 1100px) {
    .admin-inscriptions-table.mobile-card-table
    td[data-label="État"] .badge {
        display: inline-flex !important;
        width: fit-content !important;
        min-width: 0;
        max-width: 100%;
        justify-self: start;
        align-self: flex-start;
        white-space: normal;
    }

    .admin-inscriptions-table.mobile-card-table
    td[data-label="Action"] {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-end !important;
        flex-wrap: wrap;
        gap: 8px;
        width: 100% !important;
        text-align: right !important;
    }

    .admin-inscriptions-table.mobile-card-table
    td[data-label="Action"]::before {
        display: none !important;
        content: none !important;
    }

    .admin-inscriptions-table.mobile-card-table
    td[data-label="Action"] form {
        display: inline-flex !important;
        flex: 0 0 auto !important;
        width: auto !important;
        margin: 0 !important;
    }

    .admin-inscriptions-table.mobile-card-table
    td[data-label="Action"] button.fdo-registration-icon {
        flex: 0 0 40px !important;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
        margin: 0 !important;
    }
}

@media (max-width: 1100px) {

    .admin-inscription-selection-table,
    .admin-inscriptions-table,
    .bareme-points-table {
        min-width: 0 !important;
        width: 100% !important;
    }

    /* Inscriptions Admin : fiches mobiles compactes */
    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    tr[data-unified-row] {
        position: relative;
    }

    /* Case de sélection en haut à gauche */
    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    td[data-label="Sélection"] {
        display: flex !important;
        position: absolute;
        top: 12px;
        left: 12px;
        z-index: 1;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
        width: 22px !important;
        min-width: 22px !important;
        height: 22px;
        min-height: 22px;
        padding: 0 !important;
        margin: 0;
        border: 0 !important;
    }

    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    td[data-label="Sélection"]::before {
        display: none !important;
        content: none;
    }

    /* Dossard mis en évidence */
    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    tr[data-unified-row] td[data-label="Dossard"] {
        display: block !important;
        box-sizing: border-box;
        width: 100% !important;
        min-height: 0;
        padding: 12px 105px 3px 12px !important;
        text-align: left !important;
        border-bottom: 0;
    }

    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    tr[data-unified-row]:has(td[data-label="Sélection"])
    td[data-label="Dossard"] {
        padding-left: 44px !important;
    }

    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    td[data-label="Dossard"]::before {
        display: none !important;
        content: none;
    }

    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    td[data-label="Dossard"] strong {
        display: block;
        font-size: 16px;
        line-height: 1.35;
    }

    /* Catégorie sous le numéro de dossard */
    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    tr[data-unified-row] td[data-label="Catégorie"] {
        display: block !important;
        box-sizing: border-box;
        width: 100% !important;
        min-height: 0;
        padding: 2px 105px 12px 12px !important;
        border-bottom: 1px solid #e2e8f0;
        color: #64748b;
        font-size: 13px;
        line-height: 1.4;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    tr[data-unified-row]:has(td[data-label="Sélection"])
    td[data-label="Catégorie"] {
        padding-left: 44px !important;
    }

    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    td[data-label="Catégorie"]::before {
        display: none !important;
        content: none;
    }

    /* État affiché en haut à droite */
    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    tr[data-unified-row] td[data-label="État"] {
        display: block !important;
        position: absolute;
        top: 12px;
        right: 10px;
        box-sizing: border-box;
        width: auto !important;
        max-width: 95px;
        min-height: 0;
        padding: 0 !important;
        margin: 0;
        border: 0 !important;
        text-align: right !important;
    }

    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    td[data-label="État"]::before {
        display: none !important;
        content: none;
    }

    /* Club et danseurs sur des lignes lisibles */
    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    td[data-label="Club"],
    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    td[data-label="Danseur(s)"] {
        display: block !important;
        box-sizing: border-box;
        width: 100% !important;
        min-height: 0;
        padding: 9px 12px !important;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    td[data-label="Club"]::before,
    .admin-inscriptions-unified
    .admin-inscriptions-table.mobile-card-table
    td[data-label="Danseur(s)"]::before {
        display: block !important;
        content: attr(data-label);
        margin-bottom: 5px;
        font-size: 12px;
        font-weight: 700;
    }


    .admin-inscription-selection-table td[data-label="Club"],
    .admin-inscription-selection-table td[data-label="Catégorie"],
    .admin-inscription-selection-table td[data-label="Danseur(s)"],
    .admin-inscriptions-table td[data-label="Club"],
    .admin-inscriptions-table td[data-label="Catégorie"],
    .admin-inscriptions-table td[data-label="Danseur(s)"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: start;
        text-align: left !important;
    }

    .admin-inscription-selection-table td[data-label="Club"]::before,
    .admin-inscription-selection-table td[data-label="Catégorie"]::before,
    .admin-inscription-selection-table td[data-label="Danseur(s)"]::before,
    .admin-inscriptions-table td[data-label="Club"]::before,
    .admin-inscriptions-table td[data-label="Catégorie"]::before,
    .admin-inscriptions-table td[data-label="Danseur(s)"]::before {
        display: block;
        margin-bottom: 0;
    }


    .admin-inscriptions-table.mobile-card-table td[data-label="Action"] {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-end !important;
        flex-wrap: wrap;
        gap: 6px;
        width: 100% !important;
        text-align: right !important;
    }

    .admin-inscriptions-table.mobile-card-table td[data-label="Action"]::before {
        display: none !important;
        content: none;
    }

    .admin-inscriptions-table td[data-label="Action"] form {
        display: inline-flex;
        flex: 0 0 auto;
        width: auto !important;
        margin: 0;
    }

    .admin-inscriptions-table td[data-label="Action"] button.fdo-registration-icon {
        box-sizing: border-box;
        flex: 0 0 40px;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
        margin: 0;
    }

    .bareme-points-table td[data-label="Actions"] {
        display: block !important;
        text-align: right !important;
    }

    .bareme-points-table td[data-label="Actions"]::before {
        display: none !important;
        content: none;
    }


    .bareme-points-table .compact-actions,
    .bareme-points-table .inline-edit-form {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        width: 100%;
        gap: 8px;
    }

    .bareme-points-table .inline-form {
        width: 100%;
        margin: 0;
    }

    .bareme-points-table .small-number-input {
        width: 100%;
        max-width: none;
    }

    .bareme-points-table .checkbox-inline {
        justify-content: flex-start;
        min-height: 34px;
    }

    .bareme-points-table button {
        width: 100%;
        margin: 0;
    }
}

/* Amélioration mobile - utilisateurs et clubs admin
   ========================================================= */

@media (max-width: 1100px) {
    .admin-users-table,
    .admin-clubs-table {
        min-width: 0 !important;
        width: 100% !important;
    }

    .admin-users-table td[data-label="Prénom"],
    .admin-users-table td[data-label="Nom"],
    .admin-users-table td[data-label="Identifiant"],
    .admin-users-table td[data-label="Email"],
    .admin-users-table td[data-label="Rôle"],
    .admin-clubs-table td[data-label="Club"],
    .admin-clubs-table td[data-label="Contact"],
    .admin-clubs-table td[data-label="Responsable"],
    .admin-clubs-table td[data-label="Ville"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: start;
        text-align: left !important;
    }

    .admin-users-table td[data-label="Prénom"]::before,
    .admin-users-table td[data-label="Nom"]::before,
    .admin-users-table td[data-label="Identifiant"]::before,
    .admin-users-table td[data-label="Email"]::before,
    .admin-users-table td[data-label="Rôle"]::before,
    .admin-clubs-table td[data-label="Club"]::before,
    .admin-clubs-table td[data-label="Contact"]::before,
    .admin-clubs-table td[data-label="Responsable"]::before,
    .admin-clubs-table td[data-label="Ville"]::before {
        display: block;
        margin-bottom: 0;
    }

    .admin-users-table td[data-label="Statut"],
    .admin-clubs-table td[data-label="Statut"],
    .admin-clubs-table td[data-label="Danseurs"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: center;
        text-align: left !important;
    }

    .admin-users-table td[data-label="Statut"]::before,
    .admin-clubs-table td[data-label="Statut"]::before,
    .admin-clubs-table td[data-label="Danseurs"]::before {
        display: block;
    }

    .admin-users-table td[data-label="Actions"],
    .admin-clubs-table td[data-label="Actions"] {
        display: block !important;
        text-align: left !important;
    }

    .admin-users-table td[data-label="Actions"]::before,
    .admin-clubs-table td[data-label="Actions"]::before {
        display: block;
        margin-bottom: 8px;
    }

    .admin-users-table td[data-label="Actions"] .actions-column,
    .admin-clubs-table td[data-label="Actions"] .actions-column {
        display: flex;
        flex-direction: row;
        align-items: center;
        width: 100%;
        gap: 8px;
    }

    .admin-users-table td[data-label="Actions"] .actions-column form,
    .admin-clubs-table td[data-label="Actions"] .actions-column form {
        flex: 0 0 auto;
        width: auto;
        margin: 0;
    }

    .admin-users-table td[data-label="Actions"] .actions-column .btn,
    .admin-clubs-table td[data-label="Actions"] .actions-column .btn {
        flex: 1 1 auto;
        width: auto;
        margin: 0;
    }


    .admin-users-table td[data-label="Actions"] .actions-column button.btn-delete-icon,
    .admin-clubs-table td[data-label="Actions"] .actions-column button.btn-delete-icon {
        flex: 0 0 40px;
        box-sizing: border-box;
        width: 40px;
        min-width: 40px;
        max-width: 40px;
        height: 40px;
        min-height: 40px;
        max-height: 40px;
        padding: 0;
        margin: 0;
    }


    .admin-users-table td[data-label="Email"],
    .admin-clubs-table td[data-label="Contact"] {
        overflow-wrap: anywhere;
    }

    .admin-clubs-table .club-status-stack {
        align-items: flex-start;
    }

    .admin-clubs-table .text-center {
        text-align: left !important;
    }
}

/* Finitions mobile - championnats, résultats publics, formulaires et dossard
   ========================================================= */

@media (max-width: 900px) {
    .championship-item {
        gap: 12px;
    }

    .championship-dates {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
    }

    .championship-dates > div {
        padding: 8px 10px;
        border-radius: 10px;
        background: #f8fafc;
        border: 1px solid #e5eaf0;
    }

    .championship-status {
        display: flex;
        justify-content: flex-start;
    }

    .championship-actions {
        align-items: stretch;
    }

    .championship-actions form {
        margin: 0;
    }

    .championship-toolbar,
    .championship-season-form {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        gap: 8px;
    }

    .championship-toolbar .btn,
    .championship-season-form .btn,
    .championship-season-form button {
        width: 100%;
    }

    .championship-season-form .badge {
        justify-self: flex-start;
    }

    .public-results-card {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .public-results-card::after {
        content: "Faites défiler le tableau horizontalement si besoin.";
        display: block;
        margin-top: 8px;
        color: #7b8794;
        font-size: 12px;
        font-weight: 600;
    }

    .results-table {
        min-width: 760px;
    }

    .results-table th,
    .results-table td {
        white-space: nowrap;
    }

    .results-table td:nth-child(3),
    .results-table td:nth-child(4) {
        white-space: normal;
        min-width: 150px;
    }

    .form-grid input,
    .form-grid select,
    .form-grid textarea,
    .championship-create-form input,
    .championship-create-form select,
    .championship-create-form textarea {
        min-width: 0;
    }
}

@media (max-width: 640px) {
    .stats-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }

    .stat-card {
        padding: 12px;
    }

    .stat-card strong {
        font-size: 22px;
    }

    /*
     * Boutons mobiles :
     * dimensions communes sans modifier leurs couleurs
     * ni leur disposition dans les différents composants.
     */

    .main-content button:not(.btn-delete-icon):not(.category-modal-close),
    .main-content .btn:not(.btn-delete-icon):not(.category-modal-close) {
        box-sizing: border-box;
        min-height: 40px;
        padding: 8px 11px;
        border-radius: 8px;
        font-size: 14px;
        line-height: 1.1;
    }


    /*
     * Cartes des championnats :
     * numéro à gauche du contenu sur mobile.
     */
    .championship-main {
        align-items: flex-start;
        flex-direction: row;
        gap: 12px;
    }

    .championship-number {
        flex: 0 0 42px;
        width: 42px;
        height: 42px;
    }

    .championship-main h3 {
        font-size: 16px;
        line-height: 1.25;
    }

    .championship-main p {
        font-size: 13px;
    }

    .championship-dates {
        grid-template-columns: 1fr;
    }

    .championship-dates,
    .championship-status,
    .championship-actions {
        padding-left: 0;
    }

    .championship-status {
        width: 100%;
        justify-self: stretch;
        justify-content: flex-start;
        text-align: left;
    }

    .championship-status .badge {
        margin-left: 0;
        margin-right: auto;
    }

    .championship-actions,
    .championship-item .championship-actions {
        display: grid;
        grid-template-columns: 1fr;
        gap: 8px;
        width: 100%;
    }

    .championship-actions .btn,
    .championship-actions button,
    .championship-actions form {
        width: 100%;
    }

    /*
     * Formulaire de création / modification d'un championnat.
     */
    .championship-create-card .championship-create-form,
    .championship-edit-card .championship-create-form {
        padding: 14px;
    }

    .championship-create-fields-dates > div {
        width: 100%;
        min-width: 0;
        max-width: 100%;
    }

    /*
     * Safari iOS applique des dimensions natives particulières
     * aux champs date. On neutralise cette apparence sur mobile
     * afin qu'ils aient le même format que les autres champs.
     */
    .championship-create-fields-dates input[type="date"] {
        display: block;
        -webkit-appearance: none;
        appearance: none;
        box-sizing: border-box;
        width: 100%;
        max-width: 100%;
        min-width: 0;
        height: 38px !important;
        min-height: 38px !important;
        max-height: 38px;
        margin: 0;
        padding: 8px 10px;
        font-size: 16px;
        line-height: 20px;
        overflow: hidden;
    }

    .championship-create-fields-dates input[type="date"]::-webkit-date-and-time-value {
        min-height: 20px;
        margin: 0;
        padding: 0;
        text-align: left;
    }

    .checkbox-field {
        min-height: 0;
    }

    .checkbox-field label {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #d9e2ec;
        border-radius: 10px;
        background: #f8fafc;
    }

    .form-grid .actions-row,
    .championship-create-action {
        display: grid;
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .form-grid .actions-row button,
    .form-grid .actions-row .btn,
    .championship-create-action button,
    .championship-create-action .btn {
        width: 100%;
    }

    .print-actions {
        margin: 12px auto;
        padding: 0 12px;
        flex-direction: column;
    }

    .print-actions button,
    .print-actions .btn {
        width: 100%;
    }
}@media (max-width: 420px) {
    .stats-grid {
        grid-template-columns: 1fr;
    }

    .championship-dashboard-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .resultats-import-form .resultats-import-actions {
        display: grid;
        grid-template-columns: 1fr;
        width: auto;
        margin-left: -20px;
        margin-right: -20px;
        padding: 4px 0 0;
        gap: 8px;
    }

    .resultats-import-form .resultats-import-actions button,
    .resultats-import-form .resultats-import-actions .btn {
        width: 100%;
        margin: 0;
    }
}

/* Finitions mobile - dernières tables admin
   ========================================================= */

@media (max-width: 1100px) {
    .admin-danseurs-table,
    .admin-purge-table,
    .resultats-import-history-table {
        min-width: 0 !important;
        width: 100% !important;
    }


    /* Admin / Danseurs : présentation mobile compacte */
    .admin-danseurs-table.mobile-card-table td[data-label="Club"],
    .admin-danseurs-table.mobile-card-table td[data-label="Naissance"],
    .admin-danseurs-table.mobile-card-table td[data-label="Âge"] {
        display: none !important;
    }

    .admin-danseurs-table.mobile-card-table td[data-label="Danseur"] {
        display: block !important;
        width: 100%;
        padding: 12px 11px;
        text-align: left !important;
    }

    .admin-danseurs-table.mobile-card-table td[data-label="Danseur"]::before {
        display: none !important;
        content: none;
    }

    .admin-danseurs-table.mobile-card-table td[data-label="Danseur"] > strong {
        display: block;
        font-size: 16px;
        line-height: 1.3;
    }

    .admin-danseurs-table .admin-danseur-mobile-summary {
        display: block;
        margin-top: 4px;
        color: #64748b;
        font-size: 13px;
        line-height: 1.4;
        overflow-wrap: anywhere;
    }

    /* Historique des imports : présentation inchangée */
    .resultats-import-history-table td[data-label="Championnat"],
    .resultats-import-history-table td[data-label="Importé le"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: start;
        text-align: left !important;
    }

    .resultats-import-history-table td[data-label="Championnat"]::before,
    .resultats-import-history-table td[data-label="Importé le"]::before {
        display: block;
        margin-bottom: 0;
    }


    .admin-danseurs-table td[data-label="Naissance"],
    .admin-danseurs-table td[data-label="Âge"],
    .admin-danseurs-table td[data-label="Licence"],
    .admin-danseurs-table td[data-label="N° licence"],
    .admin-danseurs-table td[data-label="Dossards"],
    .admin-purge-table td[data-label="Saison"],
    .admin-purge-table td[data-label="Statut"],
    .admin-purge-table td[data-label="Championnats"],
    .admin-purge-table td[data-label="Dossards"],
    .resultats-import-history-table td[data-label="Date"],
    .resultats-import-history-table td[data-label="Résultats"] {
        display: grid !important;
        grid-template-columns: 115px minmax(0, 1fr);
        gap: 10px;
        align-items: center;
        text-align: left !important;
    }

    .admin-danseurs-table td[data-label="Naissance"]::before,
    .admin-danseurs-table td[data-label="Âge"]::before,
    .admin-danseurs-table td[data-label="Licence"]::before,
    .admin-danseurs-table td[data-label="N° licence"]::before,
    .admin-danseurs-table td[data-label="Dossards"]::before,
    .admin-purge-table td[data-label="Saison"]::before,
    .admin-purge-table td[data-label="Statut"]::before,
    .admin-purge-table td[data-label="Championnats"]::before,
    .admin-purge-table td[data-label="Dossards"]::before,
    .resultats-import-history-table td[data-label="Date"]::before,
    .resultats-import-history-table td[data-label="Résultats"]::before {
        display: block;
    }


    .admin-purge-table.mobile-card-table td[data-label="Action"] {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-end !important;
        flex-wrap: wrap;
        width: 100% !important;
        gap: 6px;
        text-align: right !important;
    }

    .admin-purge-table.mobile-card-table td[data-label="Action"]::before {
        display: none !important;
        content: none;
    }

    .admin-purge-table td[data-label="Action"] form {
        display: inline-flex;
        flex: 0 0 auto;
        width: auto !important;
        margin: 0;
    }

        .admin-purge-table td[data-label="Action"] button {
        box-sizing: border-box;
        width: auto !important;
        min-height: 40px;
        margin: 0;
    }

        /* Administration / Purge : fiches mobiles compactes */

    .admin-purge-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        align-items: stretch;
        width: 100%;
        box-sizing: border-box;
    }

    .admin-purge-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) > td {
        display: block !important;
        position: static !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        min-height: 0;
        box-sizing: border-box;
        margin: 0;
        text-align: left !important;
    }

    /* Première rangée : saison et statut */

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Saison"] {
        grid-column: 1;
        grid-row: 1;
        padding: 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Saison"]::before {
        display: none !important;
        content: none !important;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Saison"] strong {
        display: block;
        color: #1f2933;
        font-size: 18px;
        font-weight: 700;
        line-height: 1.35;
    }

    .admin-purge-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) > td[data-label="Statut"] {
        display: flex !important;
        position: static !important;
        flex-direction: row !important;
        grid-column: 2;
        grid-row: 1;
        align-items: center !important;
        justify-content: flex-end !important;
        justify-self: stretch;
        width: 100% !important;
        min-width: 0 !important;
        padding: 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
        background: transparent !important;
        text-align: right !important;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Statut"]::before {
        display: none !important;
        content: none !important;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Statut"] .badge {
        display: inline-flex;
        width: auto;
        max-width: 100%;
        margin: 0;
        white-space: normal;
        text-align: center;
    }

    /* Deuxième rangée : compteurs */

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Championnats"],
    .admin-purge-table.mobile-card-table
    tbody td[data-label="Dossards"] {
        display: flex !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        justify-content: flex-start;
        gap: 5px;
        padding: 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
        color: #1f2933;
        font-size: 18px;
        font-weight: 700;
        line-height: 1.35;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Championnats"] {
        grid-column: 1;
        grid-row: 2;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Dossards"] {
        grid-column: 2;
        grid-row: 2;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Championnats"]::before,
    .admin-purge-table.mobile-card-table
    tbody td[data-label="Dossards"]::before {
        display: block !important;
        content: attr(data-label);
        margin: 0;
        padding: 0;
        color: #64748b;
        font-size: 11px;
        font-weight: 700;
        line-height: 1.3;
        text-transform: uppercase;
    }

    /* Troisième rangée : actions */

    .admin-purge-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) > td[data-label="Action"] {
        display: flex !important;
        position: static !important;
        flex-direction: row !important;
        grid-column: 1 / -1;
        grid-row: 3;
        align-items: center !important;
        justify-content: flex-end !important;
        justify-self: stretch;
        width: 100% !important;
        min-width: 0 !important;
        padding: 9px 12px !important;
        border-bottom: 0 !important;
        text-align: right !important;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Action"]::before {
        display: none !important;
        content: none !important;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Action"] .muted-text {
        margin-left: auto;
        font-size: 13px;
        text-align: right;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Action"] form {
        display: inline-flex !important;
        flex: 0 0 auto;
        align-items: center;
        justify-content: flex-end;
        width: auto !important;
        max-width: 100%;
        margin: 0 0 0 auto !important;
    }

    .admin-purge-table.mobile-card-table
    tbody td[data-label="Action"] button {
        width: auto !important;
        min-height: 40px;
        margin: 0 !important;
    }

}

/* Boutons d'action responsive
   - les boutons peuvent revenir à la ligne
   - le dernier bouton texte reste groupé avec "Supprimer"
   - PC : le groupe ne s'étire pas inutilement
   - smartphone : tous les boutons passent en pleine largeur
   ========================================================= */

.championship-action-tail {
    display: flex;
    flex: 0 1 auto;
    align-items: stretch;
    gap: 8px;
    min-width: 0;
}

.championship-action-tail-with-import {
    flex: 0 1 auto;
    min-width: 0;
}

.championship-action-tail .btn {
    flex: 0 1 auto;
    min-width: 120px;
}

.championship-action-tail-with-import .btn {
    min-width: 145px;
}

.championship-action-tail form {
    flex: 0 0 42px;
    width: 42px;
    margin: 0;
}

.championship-action-tail button.btn-delete-icon {
    width: 42px;
    min-width: 42px;
    height: 100%;
    min-height: 40px;
    align-self: stretch;
}


@media (min-width: 641px) and (max-width: 1200px) {
    .championship-actions .btn,
    .championship-actions button {
        min-width: 0;
        padding-right: 10px;
        padding-left: 10px;
        font-size: 13px;
    }

    .championship-action-tail {
        flex-wrap: nowrap;
    }

    .championship-action-tail .btn {
        min-width: 110px;
        white-space: nowrap;
    }

    .championship-action-tail-with-import .btn {
        min-width: 135px;
    }

    .actions-row form:has(button.btn-delete-icon),
    .dossard-actions form:has(button.btn-delete-icon),
    .mobile-card-table td[data-label="Actions"] .actions-row form:has(button.btn-delete-icon) {
        margin-left: auto;
    }
}

@media (min-width: 641px) and (max-width: 900px) {
    .actions-row button.btn-delete-icon,
    .dossard-actions button.btn-delete-icon,
    .mobile-card-table td[data-label="Actions"] .actions-row button.btn-delete-icon {
        box-sizing: border-box;
        flex: 0 0 40px;
        width: 40px;
        min-width: 40px;
        max-width: 40px;
        height: 40px;
        min-height: 40px;
        max-height: 40px;
        padding: 0;
        align-self: center;
    }
}

@media (min-width: 901px) and (max-width: 1200px) {
    .actions-row button.btn-delete-icon,
    .dossard-actions button.btn-delete-icon,
    .mobile-card-table td[data-label="Actions"] .actions-row button.btn-delete-icon {
        box-sizing: border-box;
        flex: 0 0 36px;
        width: 36px;
        min-width: 36px;
        max-width: 36px;
        height: 36px;
        min-height: 36px;
        max-height: 36px;
        padding: 0;
        align-self: center;
    }
}

@media (max-width: 640px) {
    .championship-action-tail,
    .championship-action-tail-with-import {
        flex-direction: column;
        width: 100%;
        min-width: 0;
    }

    .championship-action-tail .btn,
    .championship-action-tail-with-import .btn {
        width: 100%;
        min-width: 0;
    }

    .actions-row form:has(button.btn-delete-icon),
    .championship-actions form:has(button.btn-delete-icon),
    .mobile-card-table td[data-label="Actions"] .actions-row form:has(button.btn-delete-icon) {
        width: 100%;
        margin-left: 0;
    }

    .actions-row button.btn-delete-icon,
    .championship-actions button.btn-delete-icon,
    .mobile-card-table td[data-label="Actions"] .actions-row button.btn-delete-icon {
        width: 100%;
        min-width: 0;
        height: 40px;
        align-self: stretch;
    }


    .club-dossards-table .dossard-actions form:has(button.btn-delete-icon) {
        flex: 0 0 40px;
        width: 40px;
        margin-left: 0;
    }

    .club-dossards-table .dossard-actions button.btn-delete-icon {
        box-sizing: border-box;
        flex: 0 0 40px;
        width: 40px;
        min-width: 40px;
        max-width: 40px;
        height: 40px;
        min-height: 40px;
        max-height: 40px;
        padding: 0;
        align-self: center;
    }

}

/* Ajustements finaux - actions championnats exportés
   ========================================================= */

@media (max-width: 640px) {
    .championship-actions-exported {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 52px;
        gap: 8px;
        width: 100%;
    }

    .championship-actions-exported > .btn,
    .championship-actions-exported > .championship-more-actions {
        width: 100%;
        min-width: 0;
    }

    .championship-actions-exported > .championship-more-actions {
        grid-column: 2;
        grid-row: 1;
    }

    .championship-actions-exported .championship-more-summary {
        width: 100%;
        min-width: 0;
    }

    .championship-actions-exported > .championship-primary-action {
        grid-column: 1 / -1;
        grid-row: 2;
        width: 100%;
    }

    .championship-actions-exported .championship-more-menu {
        right: 0;
        left: auto;
    }
}

/* Documents officiels
   ========================================================= */

.documents-card-fit {
    width: min(100%, 1050px);
    margin-left: auto;
    margin-right: auto;
}

.category-create-card.documents-card-fit {
    min-width: 0;
}

.documents-card-fit .category-create-form {
    width: 100%;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.documents-card-fit .category-create-form > div {
    min-width: 0;
}

.documents-card-fit .category-create-form input {
    width: 100%;
    min-width: 0;
}

@media (max-width: 640px) {
    .documents-card-fit .category-create-form {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* En-tête des documents transmis par les clubs */
.documents-table-card .table-header-line {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.documents-table-card .table-header-line h2 {
    margin: 0;
}

#open-club-document-types {
    margin-left: auto;
    flex-shrink: 0;
}

/* Tableau des documents */
.documents-table-card .data-table {
    width: 100%;
    min-width: 0;
}

.documents-table-card .data-table th:nth-child(1),
.documents-table-card .data-table td:nth-child(1) {
    width: 34%;
}

.documents-table-card .data-table th:nth-child(2),
.documents-table-card .data-table td:nth-child(2) {
    width: 24%;
}

.documents-table-card .data-table th:nth-child(3),
.documents-table-card .data-table td:nth-child(3) {
    width: 150px;
}

.documents-table-card .data-table th:nth-child(4),
.documents-table-card .data-table td:nth-child(4) {
    width: 140px;
}

.documents-table-card .data-table th:nth-child(5),
.documents-table-card .data-table td:nth-child(5) {
    width: 190px;
}

@media (min-width: 641px) {
    .documents-table-card td[data-label="Actions"] .compact-actions {
        flex-wrap: nowrap;
        gap: 8px;
    }

    .documents-table-card td[data-label="Actions"] .compact-actions form:has(button.btn-delete-icon) {
        flex: 0 0 auto;
        width: auto;
        margin-left: 0;
    }

    .documents-table-card td[data-label="Actions"] .compact-actions .btn {
        flex: 0 0 auto;
    }

    .documents-table-card td[data-label="Actions"] .compact-actions button.btn-delete-icon {
        flex: 0 0 36px;
        width: 36px;
        min-width: 36px;
        height: 36px;
        align-self: center;
    }
}

@media (max-width: 760px) {
    .documents-card-fit {
        width: 100%;
    }

    .documents-table-card .data-table {
        min-width: 0;
    }
}

/* =========================================================
   CATÉGORIES - OPTIMISATION MOBILE FINALE
   ========================================================= */

.category-mobile-meta {
    display: none;
}

@media (max-width: 1100px) {

    /* -----------------------------------------------------
       Page principale
       ----------------------------------------------------- */

    .category-page-header {
        margin-bottom: 10px;
    }

    .category-page-heading {
        gap: 12px;
    }

    .category-page-heading h1 {
        margin-bottom: 4px;
    }

    .category-page-heading p {
        margin-bottom: 0;
        line-height: 1.35;
    }

    .category-header-actions {
        gap: 7px;
        padding: 8px;
        border-radius: 10px;
    }

    .category-header-actions-label {
        font-size: 10.5px;
    }


    .category-reference-actions {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 6px;
    }

    .category-reference-actions .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
        width: 100%;
        min-width: 0;
        height: 40px;
        min-height: 40px;
        max-height: 40px;
        padding: 0 4px;
        border-radius: 8px;
        font-size: clamp(10px, 3vw, 12px);
        line-height: 1.1;
        text-align: center;
        white-space: nowrap;
    }


    .category-create-summary {
        min-height: 54px;
    }

    .category-list-card {
        padding: 10px;
    }

    .category-list-card .table-header-line {
        margin-bottom: 10px;
    }

    .category-list-card .table-header-line h2 {
        font-size: 18px;
    }

    .category-list-subtitle {
        font-size: 12px;
        line-height: 1.3;
    }

    .category-count-badge {
        min-height: 23px;
        padding: 2px 7px;
        font-size: 10.5px;
    }

    .category-filters {
        gap: 7px;
        margin: 10px 0 12px;
        padding: 8px;
    }

    .category-filter-count {
        font-size: 11px;
    }


    /* -----------------------------------------------------
       Cartes catégories
       ----------------------------------------------------- */

    .admin-categories-table {
        display: block;
        width: 100% !important;
    }

    .admin-categories-table tbody {
        display: grid;
        gap: 9px;
    }


    .admin-categories-table tr[data-category-row] {
        display: block;
        position: relative;
        overflow: hidden;
        border: 1px solid #d9e2ec;
        border-radius: 11px;
        background: #ffffff;
        box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
    }


    .admin-categories-table td {
        border: 0 !important;
    }


    .admin-categories-table td[data-label="Catégorie"] {
        display: flex !important;
        flex-direction: column;
        gap: 3px;
        padding: 11px 94px 9px 12px !important;
        border-bottom: 1px solid #edf2f7 !important;
    }


    .admin-categories-table td[data-label="Catégorie"]::before {
        display: none;
    }

    .category-name {
        font-size: 14px;
        line-height: 1.25;
    }

    .category-mobile-meta {
        display: block;
        color: #627d98;
        font-size: 11.5px;
        line-height: 1.25;
    }


    .admin-categories-table td[data-label="Danseurs"],
    .admin-categories-table td[data-label="Âges saison"] {
        display: none !important;
    }


    .admin-categories-table td[data-label="Options"] {
        display: block !important;
        padding: 8px 12px 4px !important;
    }

    .admin-categories-table td[data-label="Options"]::before {
        display: none;
    }

    .category-badges {
        gap: 4px;
    }

    .category-badge {
        min-height: 20px;
        padding: 1px 6px;
        font-size: 10px;
    }


    .admin-categories-table td[data-label="Statut"] {
        display: block !important;
        position: absolute;
        top: 10px;
        right: 10px;
        width: auto !important;
        max-width: 82px;
        padding: 0 !important;
        text-align: right !important;
    }

    .admin-categories-table td[data-label="Statut"]::before {
        display: none !important;
        content: none;
    }

    .admin-categories-table td[data-label="Statut"] .status-badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 21px;
        max-width: 100%;
        padding: 2px 7px;
        font-size: 10.5px;
    }


    .admin-categories-table td[data-label="Actions"] {
        display: block !important;
        padding: 0 10px 10px !important;
    }

    .admin-categories-table td[data-label="Actions"]::before {
        display: none;
    }

    .admin-categories-table td[data-label="Actions"] .actions-row {
        display: flex !important;
        flex-direction: row !important;
        align-items: stretch;
        width: 100%;
        gap: 7px;
    }


    .admin-categories-table td[data-label="Actions"] .actions-row .btn {
        flex: 0 0 auto;
        width: auto !important;
        min-height: 40px;
        margin: 0;
    }

    .admin-categories-table td[data-label="Actions"] .actions-row form,
    .mobile-card-table td[data-label="Actions"]
        .actions-row form:has(button.btn-delete-icon) {
        flex: 0 0 40px !important;
        width: 40px !important;
        margin: 0 !important;
    }

    .admin-categories-table td[data-label="Actions"]
        .actions-row button.btn-delete-icon,
    .mobile-card-table td[data-label="Actions"]
        .actions-row button.btn-delete-icon {
        box-sizing: border-box;
        flex: 0 0 40px !important;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
        margin: 0 !important;
        border-radius: 8px;
    }



    /* -----------------------------------------------------
       Modales
       ----------------------------------------------------- */

    .category-modal-header {
        min-height: 58px;
        padding: 11px 13px;
    }

    .category-modal-header h2 {
        font-size: 17px;
        line-height: 1.15;
    }

    .category-modal-header p {
        margin-top: 2px;
        font-size: 11.5px;
    }

    .category-modal-close {
        flex-basis: 36px;
        width: 36px;
        height: 36px;
        min-width: 36px;
        min-height: 36px;
    }

    .category-modal-body {
        overflow-y: auto;
    }

    .category-reference-list {
        max-height: 29vh;
        padding: 8px;
    }

    .category-reference-row {
        display: grid;
        grid-template-columns:
            minmax(0, 1fr)
            auto;
        align-items: center;
        gap: 8px;
        margin-bottom: 6px;
        padding: 8px 9px;
    }

    .category-reference-row > div:first-child {
        min-width: 0;
    }

    .category-reference-row strong {
        font-size: 13px;
    }

    .category-reference-row .muted-text {
        font-size: 10.5px;
        line-height: 1.25;
    }

    .category-reference-row .actions-row {
        display: flex;
        width: auto !important;
        gap: 5px;
    }


    .category-reference-row .actions-row .btn {
        width: auto !important;
        min-height: 40px;
        padding: 8px 11px;
        font-size: 12px;
    }

    .category-reference-row .actions-row form,
    .category-reference-row
        .actions-row form:has(button.btn-delete-icon) {
        width: 40px !important;
        flex: 0 0 40px !important;
    }

    .category-reference-row
        .actions-row button.btn-delete-icon {
        box-sizing: border-box;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
    }


    .category-reference-row
        .actions-row button.btn-delete-icon img {
        width: 15px;
        height: 15px;
    }

    .category-modal-form-panel {
        padding: 13px;
    }

    .category-modal-form-panel h3 {
        margin-bottom: 11px;
        font-size: 17px;
    }

    .category-modal-form {
        gap: 10px;
    }

    .category-modal-form label {
        font-size: 12px;
    }

    .category-modal-form input,
    .category-modal-form select {
        min-height: 38px;
    }

    .category-age-help {
        margin-top: 6px;
        padding: 8px 9px;
        font-size: 11.5px;
    }

    .category-modal-form-actions {
        position: static;
        margin: 8px 0 0;
        padding: 0;
        border-top: 0;
        background: transparent;
    }

    .category-modal-form-actions button,
    .category-modal-form-actions .btn {
        min-height: 40px;
    }

    .category-modal-category-body .category-editor-actions {
        position: static;
        margin: 8px 0 0;
        padding: 0;
        border-top: 0;
        background: transparent;
    }

    .category-modal-category-body {
        padding-bottom: 14px;
    }
}


@media (max-width: 420px) {

    .category-reference-actions {
        grid-template-columns:
            repeat(3, minmax(0, 1fr));
    }

    .category-reference-actions .btn {
        font-size: 12px;
    }

    .category-reference-row {
        grid-template-columns:
            minmax(0, 1fr)
            auto;
    }

    .category-reference-row .actions-row {
        flex-direction: row !important;
    }
}

/* =========================================================
   REFERENTIELS CATEGORIES - MOBILE
   Ne modifie pas le rendu desktop
   ========================================================= */

.category-mobile-reference-create,
.category-mobile-reference-back {
    display: none;
}

@media (max-width: 640px) {

    /* Référentiels : hauteur automatique et centrage sur mobile */

.category-modal[data-category-modal="types"],
.category-modal[data-category-modal="styles"],
.category-modal[data-category-modal="tranches"] {
    align-items: center;
    justify-content: center;
    padding: 10px;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

.category-modal[data-category-modal="types"] .category-modal-box,
.category-modal[data-category-modal="styles"] .category-modal-box,
.category-modal[data-category-modal="tranches"] .category-modal-box {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 20px);
    overflow: hidden;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    background: #f6f8fb;
}

    .category-modal[data-category-modal="types"] .category-modal-header,
    .category-modal[data-category-modal="styles"] .category-modal-header,
    .category-modal[data-category-modal="tranches"] .category-modal-header {
        min-height: 64px;
        padding: 12px 14px;
        background: #ffffff;
        box-shadow: 0 1px 0 #e2e8f0;
    }

    .category-modal[data-category-modal="types"] .category-modal-header h2,
    .category-modal[data-category-modal="styles"] .category-modal-header h2,
    .category-modal[data-category-modal="tranches"] .category-modal-header h2 {
        font-size: 18px;
    }

    .category-modal[data-category-modal="types"] .category-modal-header p,
    .category-modal[data-category-modal="styles"] .category-modal-header p,
    .category-modal[data-category-modal="tranches"] .category-modal-header p {
        margin-top: 2px;
        font-size: 11px;
        line-height: 1.25;
    }

    /* Corps compact des trois référentiels */

.category-modal[data-category-modal="types"] .category-modal-body,
.category-modal[data-category-modal="styles"] .category-modal-body,
.category-modal[data-category-modal="tranches"] .category-modal-body {
    position: relative;
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    overflow: hidden;
    background: #f6f8fb;
}

/* Liste : hauteur naturelle, puis défilement si nécessaire */

.category-modal[data-category-modal="types"] .category-reference-list,
.category-modal[data-category-modal="styles"] .category-reference-list,
.category-modal[data-category-modal="tranches"] .category-reference-list {
    display: block;
    box-sizing: border-box;
    flex: 0 1 auto;
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 180px);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding: 10px;
    border: 0;
    background: #f6f8fb;
}

/* Formulaire de création ou modification :
   conserver suffisamment d'espace pour les champs */

.category-modal.mobile-reference-form-open
.category-modal-body {
    flex: 1 1 auto;
    height: min(540px, calc(100dvh - 150px));
    min-height: 0;
}

.category-modal.mobile-reference-form-open
.category-modal-form-panel {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

    .category-reference-row {
        display: grid !important;
        grid-template-columns:
            minmax(0, 1fr)
            auto;
        align-items: center !important;
        gap: 10px;
        margin: 0 0 7px;
        padding: 10px 11px;
        border: 1px solid #d9e2ec;
        border-radius: 10px;
        background: #ffffff;
        box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
    }    .category-reference-row strong {
        font-size: 13.5px;
        line-height: 1.2;
    }

    .category-reference-row .muted-text {
        margin-top: 2px;
        font-size: 10.5px;
        line-height: 1.25;
    }

    /* Actions compactes sur une ligne */
    .category-reference-row .actions-row {
        display: flex !important;
        flex-direction: row !important;
        align-items: center;
        width: auto !important;
        gap: 5px;
    }


    .category-reference-row .actions-row .btn {
        width: auto !important;
        min-height: 40px;
        padding: 8px 11px;
        font-size: 12px;
        white-space: nowrap;
    }

    .category-reference-row .actions-row form {
        flex: 0 0 40px !important;
        width: 40px !important;
        margin: 0 !important;
    }

    .category-reference-row
        .actions-row
        button.btn-delete-icon {
        box-sizing: border-box;
        flex: 0 0 40px !important;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
        margin: 0 !important;
    }


    .category-reference-row
        .actions-row
        button.btn-delete-icon img {
        width: 15px;
        height: 15px;
    }

    /* Bouton Créer : toujours accessible sous la liste */

.category-mobile-reference-create {
    position: relative;
    z-index: 4;
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: calc(100% - 20px);
    min-height: 46px;
    margin: 0 10px 10px;
    padding: 10px 12px;
    border-radius: 9px;
    box-shadow: none;
    text-align: center;
    white-space: normal;
}

    /* Formulaire masqué tant qu'on ne l'ouvre pas */
    .category-modal[data-category-modal="types"]
        .category-modal-form-panel,
    .category-modal[data-category-modal="styles"]
        .category-modal-form-panel,
    .category-modal[data-category-modal="tranches"]
        .category-modal-form-panel {
        display: none;
        height: 100%;
        box-sizing: border-box;
        overflow-y: auto;
        padding: 10px 12px 20px;
        background: #ffffff;
    }

    /* Écran formulaire */
    .category-modal.mobile-reference-form-open
        .category-reference-list {
        display: none;
    }

    .category-modal.mobile-reference-form-open
        .category-mobile-reference-create {
        display: none;
    }

    .category-modal.mobile-reference-form-open
        .category-modal-form-panel {
        display: block;
    }

    /* Retour à la liste */
    .category-mobile-reference-back {
        display: inline-flex;
        align-items: center;
        justify-content: flex-start;
        gap: 6px;
        width: auto;
        min-height: 34px;
        margin: 0 0 12px;
        padding: 5px 0;
        border: 0;
        background: transparent;
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        box-shadow: none;
    }

    .category-mobile-reference-back-icon {
        display: block;
        width: 14px;
        height: 14px;
        object-fit: contain;
    }

    .category-mobile-reference-back:hover,
    .category-mobile-reference-back:focus {
        background: transparent;
        color: #102a43;
    }

    /* Formulaire mobile */
    .category-modal-form-panel h3 {
        margin: 0 0 14px;
        font-size: 18px;
    }

    .category-modal-form {
        gap: 11px;
    }    .category-modal-form input,
    .category-modal-form select {
        min-height: 40px;
    }

    .category-age-help {
        font-size: 11.5px;
        line-height: 1.4;
    }

    .category-modal-form-actions {
        position: static;
        display: flex;
        flex-direction: column;
        gap: 7px;
        margin: 15px 0 0;
        padding: 0;
        border: 0;
        background: transparent;
    }

    .category-modal-form-actions button,
    .category-modal-form-actions .btn {
        width: 100%;
        min-height: 42px;
    }
}

/* =========================================================
   07 - COMPOSANTS FDO RÉCENTS
   ========================================================= */

/* Tableaux standard FDO
   Inspirés de la liste des catégories
   ========================================================= */

.fdo-list-table {
    width: 100%;
    border: 1px solid #e2e8f0;
    border-collapse: separate;
    border-spacing: 0;
    border-radius: 10px;
    overflow: hidden;
    background: #ffffff;
}

/* Administration : aucun cadre supplémentaire autour des fiches */
@media (max-width: 1100px) {
    .admin-users-table.fdo-list-table,
    .bareme-points-table.fdo-list-table,
    .federal-music-table.fdo-list-table,
    .admin-categories-table.mobile-card-table,
    .documents-table-card .admin-official-documents-table,
    .documents-table-card .admin-club-submissions-table {
        border: 0 !important;
        border-radius: 0 !important;
        background: transparent !important;
        overflow: visible;
    }

    .admin-users-table.mobile-card-table tbody tr,
    .bareme-points-table.mobile-card-table tbody tr,
    .federal-music-table.mobile-card-table tbody tr,
    .admin-categories-table.mobile-card-table tbody tr,
    .documents-table-card .mobile-card-table tbody tr {
        border-radius: 12px !important;
        overflow: hidden;
    }
}

/* Administration : supprimer le cadre intermédiaire
   entre la carte principale et les fiches */
@media (max-width: 1100px) {
    .admin-clubs-table.fdo-list-table,
    .admin-danseurs-table.fdo-list-table {
        width: 100% !important;
        min-width: 0 !important;
        border: 0 !important;
        border-radius: 0 !important;
        background: transparent;
        overflow: visible;
    }

    .admin-clubs-table.mobile-card-table tbody tr,
    .admin-danseurs-table.mobile-card-table tbody tr {
        border-radius: 12px !important;
        overflow: hidden;
    }
}

/* Administration / Catégories : badges et actions compacts */
@media (max-width: 1100px) {
    .admin-categories-table.mobile-card-table
    td[data-label="Statut"] .status-badge {
        display: inline-flex !important;
        width: fit-content !important;
        min-width: 0;
        max-width: 100%;
        align-self: flex-start;
        justify-self: start;
        white-space: normal;
    }

    .admin-categories-table.mobile-card-table
    td[data-label="Actions"] .actions-row {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: wrap;
        justify-content: flex-end !important;
        align-items: center;
        gap: 8px;
        width: 100%;
    }

    .admin-categories-table.mobile-card-table
    td[data-label="Actions"] .actions-row .btn {
        flex: 0 0 auto !important;
        width: auto !important;
        max-width: 100%;
        min-width: 0;
        margin: 0 !important;
    }
}

.fdo-list-table thead th {
    padding-top: 9px;
    padding-bottom: 9px;
    background: #f8fafc;
    color: #334e68;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.035em;
    text-transform: uppercase;
}

.fdo-list-table tbody td {
    padding-top: 10px;
    padding-bottom: 10px;
}

.fdo-list-table tbody tr:last-child td {
    border-bottom: 0;
}

.fdo-list-table tbody tr:hover td {
    background: #fbfdff;
}


/* ---------------------------------------------------------
   TABLEAUX FDO - MOBILE
   --------------------------------------------------------- */

@media (max-width: 1100px) {

    .fdo-list-table {
        width: 100% !important;
        min-width: 0 !important;
        border: 0;
        border-radius: 0;
        background: transparent;
    }

    .fdo-list-table tbody {
        display: grid !important;
        gap: 9px;
    }

    .fdo-list-table tr {
        margin: 0 !important;
        border: 1px solid #d9e2ec !important;
        border-radius: 11px !important;
        background: #ffffff;
        box-shadow:
            0 1px 3px rgba(15, 23, 42, 0.04);
    }

    .fdo-list-table td {
        min-height: 34px !important;
        padding: 7px 10px !important;
        grid-template-columns:
            105px minmax(0, 1fr) !important;
        gap: 8px !important;
        border-bottom: 1px solid #edf2f7 !important;
        font-size: 12px;
    }

    .fdo-list-table td:last-child {
        border-bottom: 0 !important;
    }

    .fdo-list-table td::before {
        color: #334e68;
        font-size: 10.5px !important;
        font-weight: 800;
        letter-spacing: 0.03em;
    }

    .fdo-list-table td strong {
        color: #102a43;
    }

    /* Les actions restent compactes et horizontales */
    .fdo-list-table td[data-label="Actions"] .actions-row,
    .fdo-list-table td[data-label="Action"] .actions-row {
        display: flex !important;
        flex-direction: row !important;
        align-items: stretch;
        gap: 6px;
    }

    .fdo-list-table td[data-label="Actions"] .actions-row .btn,
    .fdo-list-table td[data-label="Action"] .actions-row .btn {
        flex: 1 1 auto;
        width: auto !important;
    }

    .fdo-list-table
        td[data-label="Actions"]
        .actions-row
        form:has(button.btn-delete-icon),
    .fdo-list-table
        td[data-label="Action"]
        .actions-row
        form:has(button.btn-delete-icon) {
        flex: 0 0 40px !important;
        width: 40px !important;
    }


    .fdo-list-table button.btn-delete-icon {
        box-sizing: border-box;
        flex: 0 0 40px !important;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
        border-radius: 8px;
    }

}

/* Fiche de pilotage d'un championnat
   ========================================================= */

.championship-dashboard-overview {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 20px;
    align-items: start;
}

.championship-dashboard-info {
    min-width: 0;
}

.championship-dashboard-title-line h2 {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.championship-dashboard-meta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 20px;
    margin-top: 18px;
}

.championship-dashboard-meta > div {
    min-width: 0;
}

.championship-dashboard-meta span {
    display: block;
    margin-bottom: 3px;
    color: #7b8794;
    font-size: 12px;
}

.championship-dashboard-meta strong {
    display: block;
    color: #243b53;
    font-size: 14px;
}

.championship-dashboard-meta small {
    color: #627d98;
    font-size: 12px;
    font-weight: 600;
}

.championship-dashboard-note {
    margin: 16px 0 0;
}

.championship-dashboard-poster {
    width: 120px;
}

.championship-dashboard-poster img {
    display: block;
    width: 100%;
    max-height: 170px;
    object-fit: contain;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #ffffff;
}

.championship-dashboard-stats {
    margin-top: 14px;
}

.championship-dashboard-actions-card {
    margin-top: 14px;
}

.championship-dashboard-section-title {
    text-align: center;
}

.championship-dashboard-section-title h2 {
    margin-bottom: 0;
}

.championship-dashboard-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 12px;
    margin-top: 18px;
}

.championship-dashboard-actions .btn {
    min-width: 170px;
}

.championship-dashboard-danger {
    display: flex;
    justify-content: flex-end;
    margin-top: 14px;
}

.championship-dashboard-danger form {
    margin: 0;
}

@media (max-width: 700px) {
    .championship-dashboard-overview {
        grid-template-columns: 1fr;
    }

    .championship-dashboard-poster {
        width: 100px;
    }

    .championship-dashboard-meta {
        grid-template-columns: 1fr;
    }

    .championship-dashboard-actions {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        justify-items: center;
        align-items: center;
        gap: 12px;
    }

    .championship-dashboard-actions > .btn {
        display: inline-flex;
        justify-content: center;
        justify-self: center;
        width: min(220px, 100%) !important;
        min-width: 0;
        max-width: 220px;
        margin: 0 auto !important;
        text-align: center;
        white-space: normal;
    }
}
/* Catégories - valeurs spécifiques et statut
   ========================================================= */

.category-custom-values {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.category-custom-value-card {
    display: grid;
    gap: 10px;
    padding: 12px 14px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    background: #fbfdff;
}

.category-custom-value-heading {
    display: grid;
    gap: 2px;
}

.category-custom-value-heading strong {
    color: #243b53;
    font-size: 13px;
}

.category-custom-value-heading span {
    color: #627d98;
    font-size: 11.5px;
}

.category-custom-value-inputs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.category-modal-header-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex: 0 0 auto;
}

.category-modal-header-actions .inline-form {
    margin: 0;
}

.category-status-toggle {
    min-height: 34px;
    padding: 7px 10px;
}

@media (max-width: 700px) {
    .category-custom-values {
        grid-template-columns: 1fr;
    }

    .category-modal-header-actions {
        gap: 5px;
    }

    .category-modal-header-actions .status-badge {
        display: none;
    }

    .category-status-toggle {
        min-height: 42px;
        padding: 10px 8px;
        font-size: 16px;
        font-weight: 700;
        line-height: 1.1;
    }
}

@media (max-width: 420px) {
    .category-custom-value-inputs {
        grid-template-columns: 1fr 1fr;
    }
}

.category-table-actions {
    width: 100%;
    justify-content: flex-end;
}

.category-list-header {
    display: flex;
    align-items: center;
    width: 100%;
    gap: 12px;
}

.category-list-header h2 {
    margin: 0;
}

.category-list-header .category-count-badge {
    margin-left: auto;
}


/* Administration - corrections cartes smartphone / paysage
   ========================================================= */

@media (max-width: 1100px) {
    .admin-clubs-table,
    .admin-users-table,
    .documents-table-card .mobile-card-table,
    .bareme-points-table {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        table-layout: auto !important;
        border-collapse: separate;
        border-spacing: 0;
    }

    .admin-clubs-table thead,
    .admin-users-table thead,
    .documents-table-card .mobile-card-table thead,
    .bareme-points-table thead {
        display: none;
    }

    .admin-clubs-table tbody,
    .admin-users-table tbody,
    .documents-table-card .mobile-card-table tbody,
    .bareme-points-table tbody {
        display: block;
        width: 100%;
    }

    .admin-clubs-table tr,
    .admin-users-table tr,
    .documents-table-card .mobile-card-table tr,
    .bareme-points-table tr {
        display: block;
        width: 100%;
        margin-bottom: 12px;
        border: 1px solid #e2e8f0;
        border-radius: 12px;
        background: #ffffff;
        overflow: hidden;
        box-shadow: 0 1px 5px rgba(15, 23, 42, 0.05);
    }

    .admin-clubs-table td,
    .admin-users-table td,
    .documents-table-card .mobile-card-table td,
    .bareme-points-table td,
    .admin-clubs-table td:nth-child(n),
    .admin-users-table td:nth-child(n),
    .documents-table-card .mobile-card-table td:nth-child(n),
    .bareme-points-table td:nth-child(n) {
        display: grid !important;
        grid-template-columns: 145px minmax(0, 1fr);
        gap: 12px;
        align-items: start;
        width: 100% !important;
        min-width: 0 !important;
        max-width: none !important;
        min-height: 44px;
        padding: 10px 12px;
        border-bottom: 1px solid #eef2f7;
        box-sizing: border-box;
        white-space: normal !important;
        text-align: left !important;
        overflow-wrap: normal;
        word-break: normal;
    }

    .admin-clubs-table td:last-child,
    .admin-users-table td:last-child,
    .documents-table-card .mobile-card-table td:last-child,
    .bareme-points-table td:last-child {
        border-bottom: 0;
    }

    .admin-clubs-table td::before,
    .admin-users-table td::before,
    .documents-table-card .mobile-card-table td::before,
    .bareme-points-table td::before {
        content: attr(data-label);
        display: block;
        float: none;
        width: auto;
        max-width: none;
        margin: 0;
        padding: 0;
        color: #334e68;
        font-size: 12px;
        font-weight: 800;
        line-height: 1.25;
        text-align: left;
        text-transform: uppercase;
        letter-spacing: 0.03em;
    }

    .admin-clubs-table td > *,
    .admin-users-table td > *,
    .documents-table-card .mobile-card-table td > *,
    .bareme-points-table td > * {
        min-width: 0;
        max-width: 100%;
    }

    .admin-users-table td[data-label="Statut"],
    .admin-clubs-table td[data-label="Statut"],
    .admin-clubs-table td[data-label="Danseurs"] {
        align-items: center;
    }

    /* Administration : badges compacts dans les fiches responsive */
    .admin-users-table.mobile-card-table td .badge,
    .admin-clubs-table.mobile-card-table td .badge,
    .admin-danseurs-table.mobile-card-table td .badge,
    .admin-categories-table.mobile-card-table td .badge,
    .bareme-points-table.mobile-card-table td .badge,
    .documents-table-card .mobile-card-table td .badge {
        display: inline-flex !important;
        flex: 0 0 auto;
        width: fit-content !important;
        min-width: 0;
        max-width: 100%;
        justify-self: start;
        align-self: start;
        align-items: center;
        white-space: normal;
        overflow-wrap: anywhere;
        line-height: 1.25;
    }

    .admin-clubs-table .club-status-stack {
        align-items: flex-start;
        justify-self: start;
    }


    .admin-clubs-table td[data-label="Actions"],
    .admin-users-table td[data-label="Actions"] {
        display: block !important;
        text-align: right !important;
    }

    .admin-clubs-table td[data-label="Actions"]::before,
    .admin-users-table td[data-label="Actions"]::before {
        display: none !important;
    }



    .documents-table-card .mobile-card-table td[data-label="Actions"] {
        display: block !important;
        width: 100% !important;
        text-align: right !important;
    }

    .documents-table-card .mobile-card-table td[data-label="Actions"]::before {
        display: none !important;
        content: none;
    }


    .bareme-points-table td[data-label="Actions"] {
        display: block !important;
        width: 100% !important;
        text-align: right !important;
    }

    .bareme-points-table td[data-label="Actions"]::before {
        display: none !important;
        content: none;
    }




    .admin-clubs-table td[data-label="Actions"] .actions-column,
    .admin-users-table td[data-label="Actions"] .actions-column {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-end !important;
        flex-wrap: wrap;
        width: 100% !important;
        max-width: 100%;
        gap: 8px;
        margin: 0 !important;
    }


    .documents-table-card td[data-label="Actions"] .compact-actions {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-end !important;
        flex-wrap: wrap;
        width: 100% !important;
        max-width: 100%;
        gap: 8px;
        margin: 0 !important;
    }


    .bareme-points-table td[data-label="Actions"] .compact-actions {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-end !important;
        flex-wrap: wrap;
        width: 100% !important;
        max-width: 100%;
        gap: 8px;
        margin: 0 !important;
    }




    .admin-clubs-table td[data-label="Actions"] form,
    .admin-users-table td[data-label="Actions"] form,
    .documents-table-card td[data-label="Actions"] form,
    .bareme-points-table td[data-label="Actions"] form {
        flex: 0 0 auto !important;
        width: auto !important;
        margin: 0 !important;
    }

    .admin-clubs-table td[data-label="Actions"] .btn,
    .admin-users-table td[data-label="Actions"] .btn,
    .documents-table-card td[data-label="Actions"] .btn,
    .bareme-points-table td[data-label="Actions"] .btn,
    .bareme-points-table td[data-label="Actions"] button {
        flex: 0 0 auto !important;
        width: auto !important;
        margin: 0 !important;
    }


    .admin-clubs-table td[data-label="Actions"] button.btn-delete-icon,
    .admin-users-table td[data-label="Actions"] button.btn-delete-icon,
    .documents-table-card td[data-label="Actions"] button.btn-delete-icon,
    .bareme-points-table td[data-label="Actions"] button.btn-delete-icon {
        box-sizing: border-box;
        flex: 0 0 40px !important;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
        margin: 0 !important;
        border-radius: 8px;
    }




    .admin-users-table td[data-label="Email"],
    .admin-clubs-table td[data-label="Contact"],
    .documents-table-card td[data-label="Titre"],
    .documents-table-card td[data-label="Fichier"] {
        overflow-wrap: anywhere;
    }

    /* Administration / Documents officiels : fiches mobiles */

    .documents-table-card .admin-official-documents-table tbody tr,
    .documents-table-card .admin-club-submissions-table tbody tr {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        position: relative;
        width: 100%;
        gap: 0;
    }

    .documents-table-card .admin-official-documents-table td,
    .documents-table-card .admin-club-submissions-table td,
    .documents-table-card .admin-official-documents-table td:nth-child(n),
    .documents-table-card .admin-club-submissions-table td:nth-child(n) {
        display: block !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        min-height: 0;
        box-sizing: border-box;
        padding: 10px 12px;
        overflow-wrap: anywhere;
        text-align: left !important;
    }

    /* Documents officiels : titre et description */

    .documents-table-card .admin-official-documents-table
    td[data-label="Titre"] {
        grid-column: 1 / -1;
        padding: 12px 12px 10px;
        border-bottom: 1px solid #e2e8f0;
    }

    .documents-table-card .admin-official-documents-table
    td[data-label="Titre"]::before,
    .documents-table-card .admin-official-documents-table
    td[data-label="Fichier"]::before {
        display: none !important;
        content: none;
    }

    .documents-table-card .admin-official-documents-table
    td[data-label="Titre"] strong {
        display: block;
        color: #1f2933;
        font-size: 16px;
        line-height: 1.35;
    }

    .documents-table-card .admin-official-documents-table
    td[data-label="Titre"] .muted-text {
        display: inline-block;
        margin-top: 5px;
        font-size: 13px;
        line-height: 1.4;
    }

    /* Documents officiels : fichier */

    .documents-table-card .admin-official-documents-table
    td[data-label="Fichier"] {
        grid-column: 1 / -1;
        background: #f8fafc;
        line-height: 1.5;
    }

    .documents-table-card .admin-official-documents-table
    td[data-label="Fichier"] .muted-text {
        font-size: 12px;
    }

    /* Documents officiels : date et auteur sur une rangée */

    .documents-table-card .admin-official-documents-table
    td[data-label="Ajouté le"],
    .documents-table-card .admin-official-documents-table
    td[data-label="Ajouté par"] {
        grid-column: auto;
        border-bottom: 1px solid #e2e8f0;
        font-size: 12px;
        line-height: 1.4;
    }

    .documents-table-card .admin-official-documents-table
    td[data-label="Ajouté par"] {
        text-align: right !important;
    }

    /* Documents des clubs : club et document */

    .documents-table-card .admin-club-submissions-table
    td[data-label="Document"] {
        grid-column: 1 / -1;
        grid-row: 1;
        padding: 12px 12px 4px;
        border-bottom: 0;
    }

    .documents-table-card .admin-club-submissions-table
    td[data-label="Club"] {
        grid-column: 1 / -1;
        grid-row: 2;
        padding: 4px 12px 12px;
        border-bottom: 1px solid #e2e8f0;
        color: #64748b;
        font-size: 13px;
    }

    .documents-table-card .admin-club-submissions-table
    td[data-label="Document"]::before,
    .documents-table-card .admin-club-submissions-table
    td[data-label="Club"]::before {
        display: none !important;
        content: none;
    }

    .documents-table-card .admin-club-submissions-table
    td[data-label="Document"] strong {
        display: block;
        font-size: 16px;
        color: #1f2933;
        line-height: 1.35;
    }

    .documents-table-card .admin-club-submissions-table
    td[data-label="Document"] .muted-text {
        display: inline-block;
        margin-top: 5px;
        font-size: 12px;
    }

    /* Documents des clubs : type et date sur une rangée */

    .documents-table-card .admin-club-submissions-table
    td[data-label="Type"] {
        grid-column: 1;
        grid-row: 3;
    }

    .documents-table-card .admin-club-submissions-table
    td[data-label="Ajouté le"] {
        grid-column: 2;
        grid-row: 3;
        text-align: right !important;
    }

    /* Libellés des métadonnées */

    .documents-table-card .admin-official-documents-table
    td[data-label="Ajouté le"]::before,
    .documents-table-card .admin-official-documents-table
    td[data-label="Ajouté par"]::before,
    .documents-table-card .admin-club-submissions-table
    td[data-label="Type"]::before,
    .documents-table-card .admin-club-submissions-table
    td[data-label="Ajouté le"]::before {
        display: block !important;
        margin: 0 0 6px;
        content: attr(data-label);
        font-size: 11px;
        font-weight: 700;
        color: #64748b;
        text-align: inherit;
        text-transform: uppercase;
    }

    /* Actions communes aux deux tableaux */

    .documents-table-card .admin-official-documents-table
    td[data-label="Actions"],
    .documents-table-card .admin-club-submissions-table
    td[data-label="Actions"] {
        display: flex !important;
        grid-column: 1 / -1;
        align-items: center;
        justify-content: flex-end;
        padding: 9px 12px !important;
        border-bottom: 0;
        text-align: right !important;
    }

    .documents-table-card .admin-official-documents-table
    td[data-label="Actions"] .compact-actions,
    .documents-table-card .admin-club-submissions-table
    td[data-label="Actions"] .compact-actions {
        display: flex !important;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-end !important;
        gap: 8px;
        width: auto !important;
        max-width: 100%;
        margin-left: auto;
    }

    /* Préserver les lignes vides des tableaux */

    .documents-table-card .admin-official-documents-table
    td.mobile-card-empty,
    .documents-table-card .admin-club-submissions-table
    td.mobile-card-empty {
        grid-column: 1 / -1;
        text-align: center !important;
    }

    /* Admin / Utilisateurs : fiches mobiles compactes */
    .admin-users-table.mobile-card-table td[data-label="Prénom"],
    .admin-users-table.mobile-card-table td[data-label="Identifiant"],
    .admin-users-table.mobile-card-table td[data-label="Statut"] {
        display: none !important;
    }

    .admin-users-table.mobile-card-table td[data-label="Nom"] {
        display: block !important;
        width: 100% !important;
        min-height: 0;
        padding: 12px !important;
        text-align: left !important;
    }

    .admin-users-table.mobile-card-table td[data-label="Nom"]::before {
        display: none !important;
        content: none;
    }

    .admin-users-table .admin-user-desktop-name {
        display: none;
    }

    .admin-users-table .admin-user-mobile-header {
        display: block;
        width: 100%;
        min-width: 0;
    }

    .admin-user-mobile-title {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 10px;
    }

    .admin-user-mobile-identity {
        display: flex;
        flex: 1 1 auto;
        flex-direction: column;
        min-width: 0;
        gap: 4px;
    }

    .admin-user-mobile-identity strong {
        font-size: 16px;
        line-height: 1.35;
        overflow-wrap: anywhere;
    }

    .admin-user-mobile-login {
        color: #64748b;
        font-size: 13px;
        line-height: 1.3;
        overflow-wrap: anywhere;
    }

    .admin-user-mobile-title .badge {
        flex: 0 0 auto;
        width: fit-content;
        max-width: 100%;
    }

    /* Admin / Utilisateurs : email et rôle sur mobile */
    .admin-users-table.mobile-card-table td[data-label="Email"],
    .admin-users-table.mobile-card-table td[data-label="Rôle"] {
        display: block !important;
        width: 100% !important;
        min-width: 0;
        padding: 10px 12px;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .admin-users-table.mobile-card-table td[data-label="Email"]::before,
    .admin-users-table.mobile-card-table td[data-label="Rôle"]::before {
        display: block !important;
        content: attr(data-label);
        margin-bottom: 5px;
        color: #64748b;
        font-size: 12px;
        font-weight: 700;
    }

    .admin-users-table.mobile-card-table td[data-label="Rôle"] .badge {
        display: block;
        width: fit-content;
        max-width: 100%;
        margin-top: 6px;
    }

    .admin-users-table td[data-label="Rôle"] .badge {
        display: inline-block;
        width: fit-content;
        max-width: 100%;
        margin-top: 5px;
        white-space: normal;
        overflow-wrap: anywhere;
    }


    /* Admin / Clubs : fiches mobiles compactes */
    .admin-clubs-table td[data-label="Club"] {
        display: block !important;
        width: 100% !important;
        padding: 12px !important;
        text-align: left !important;
    }

    .admin-clubs-table td[data-label="Club"]::before {
        display: none !important;
        content: none;
    }

    .admin-clubs-table .admin-club-desktop-name {
        display: none;
    }

    .admin-clubs-table .admin-club-mobile-header {
        display: block;
        width: 100%;
        min-width: 0;
    }

    .admin-club-mobile-title {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        flex-wrap: wrap;
        gap: 8px;
    }

    .admin-club-mobile-title strong {
        flex: 1 1 auto;
        min-width: 0;
        font-size: 16px;
        line-height: 1.35;
        overflow-wrap: anywhere;
    }

    .admin-club-mobile-title .badge {
        flex: 0 0 auto;
    }

    .admin-club-mobile-location {
        margin-top: 5px;
        color: #64748b;
        font-size: 13px;
        line-height: 1.4;
    }

    .admin-club-mobile-count {
        margin-top: 8px;
        font-size: 13px;
        font-weight: 700;
    }

    .admin-club-mobile-website {
        margin-top: 6px;
        font-size: 13px;
    }

    .admin-club-mobile-header > .club-delete-note {
        display: inline-block;
        margin-top: 8px;
    }

    .admin-clubs-table td[data-label="Ville"],
    .admin-clubs-table td[data-label="Statut"],
    .admin-clubs-table td[data-label="Danseurs"] {
        display: none !important;
    }

    .admin-clubs-table td[data-label="Contact"],
    .admin-clubs-table td[data-label="Responsable"] {
        display: block !important;
        width: 100% !important;
        min-height: 0;
        padding: 10px 12px;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .admin-clubs-table td[data-label="Contact"]::before,
    .admin-clubs-table td[data-label="Responsable"]::before {
        display: block !important;
        margin-bottom: 5px;
        content: attr(data-label);
    }

}

@media (max-width: 520px) {
    .admin-clubs-table td,
    .admin-users-table td,
    .documents-table-card .mobile-card-table td,
    .bareme-points-table td,
    .admin-clubs-table td:nth-child(n),
    .admin-users-table td:nth-child(n),
    .documents-table-card .mobile-card-table td:nth-child(n),
    .bareme-points-table td:nth-child(n) {
        grid-template-columns: 110px minmax(0, 1fr);
        gap: 10px;
    }
}

/* =========================================================
   Administration / Barème de points : fiches mobiles
   ========================================================= */

@media (max-width: 1100px) {

    /* Organisation générale des fiches */

    .bareme-points-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        align-items: start;
        width: 100%;
        box-sizing: border-box;
    }

    .bareme-points-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) td {
        display: block !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        min-height: 0;
        box-sizing: border-box;
        text-align: left !important;
    }

    /* Places : colonne gauche */

        .bareme-points-table.mobile-card-table
    td[data-label="Places"] {
        grid-column: 1;
        grid-row: 1;
        padding: 12px !important;
        border-bottom: 0 !important;
        text-align: left !important;
    }

    .bareme-points-table.mobile-card-table
    td[data-label="Places"]::before {
        display: block !important;
        content: "Places";
        margin: 0 0 5px;
        color: #64748b;
        font-size: 11px;
        font-weight: 700;
        text-transform: uppercase;
    }

    .bareme-points-table.mobile-card-table
    td[data-label="Places"] strong {
        display: block;
        color: #1f2933;
        font-size: 18px;
        font-weight: 700;
        line-height: 1.3;
    }

    /* Minimum : colonne droite, sans fond gris */
        /* Minimum : colonne droite, alignement vertical */

        /* Minimum : colonne droite, alignement vertical */

    .bareme-points-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty))
    td[data-label="Minimum"] {
        display: flex !important;
        position: static !important;
        flex-direction: column;
        align-items: flex-end;
        justify-content: flex-start;
        grid-column: 2;
        grid-row: 1;
        gap: 5px;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        min-height: 0;
        padding: 12px !important;
        margin: 0;
        border: 0 !important;
        border-radius: 0;
        background: transparent !important;
        color: #334155;
        font-size: 14px;
        font-weight: 700;
        line-height: 1.3;
        text-align: right !important;
        white-space: normal !important;
    }

    .bareme-points-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty))
    td[data-label="Minimum"]::before {
        display: block !important;
        align-self: flex-end;
        content: "Minimum";
        margin: 0;
        color: #64748b;
        font-size: 11px;
        font-weight: 700;
        line-height: 1.3;
        text-align: right !important;
        text-transform: uppercase;
    }

    /* Règle et actions sur toute la largeur */
    .bareme-points-table.mobile-card-table
    td[data-label="Règle"] {
        grid-column: 1 / -1;
        grid-row: 2;
        border-top: 1px solid #e2e8f0;
    }

    .bareme-points-table.mobile-card-table
    td[data-label="Actions"] {
        grid-column: 1 / -1;
        grid-row: 3;
    }    /* Règle de calcul */

    .bareme-points-table.mobile-card-table
    td[data-label="Règle"] {
        order: 2;
        padding: 12px !important;
        border-bottom: 1px solid #e2e8f0;
        color: #334e68;
        font-size: 13px;
        line-height: 1.5;
        overflow-wrap: anywhere;
    }

    .bareme-points-table.mobile-card-table
    td[data-label="Règle"]::before {
        display: block !important;
        content: "Règle de calcul";
        margin: 0 0 6px;
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        text-transform: uppercase;
    }

    /* Actions en bas à droite */

    .bareme-points-table.mobile-card-table
    td[data-label="Actions"] {
        display: flex !important;
        order: 3;
        align-items: center;
        justify-content: flex-end;
        width: 100% !important;
        min-height: 0;
        padding: 9px 12px !important;
        border-bottom: 0 !important;
        text-align: right !important;
    }

    .bareme-points-table.mobile-card-table
    td[data-label="Actions"]::before {
        display: none !important;
        content: none;
    }

    .bareme-points-table.mobile-card-table
    td[data-label="Actions"] .compact-actions {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-end !important;
        gap: 8px;
        width: auto !important;
        max-width: 100%;
        margin-left: auto;
    }

    .bareme-points-table.mobile-card-table
    td[data-label="Actions"] .inline-form {
        flex: 0 0 auto;
        width: auto !important;
        margin: 0 !important;
    }

    .bareme-points-table.mobile-card-table
    td[data-label="Actions"] .btn {
        width: auto !important;
        max-width: 100%;
        min-height: 40px;
        margin: 0 !important;
    }

    .bareme-points-table.mobile-card-table
    td[data-label="Actions"] .btn-delete-icon {
        flex: 0 0 40px !important;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
        padding: 0 !important;
        margin: 0 !important;
    }
}


/* =========================================================
   BOUTONS - LARGEUR MOBILE HARMONISÉE
   ========================================================= */

@media (max-width: 900px) {
    .main-content button:not(.btn-delete-icon):not(.category-mobile-reference-create),
    .main-content .btn:not(.btn-delete-icon):not(.category-mobile-reference-create) {
        width: fit-content;
        max-width: min(100%, 320px);
    }


    .main-content .btn-delete-icon,
    .main-content button.btn-delete-icon {
        box-sizing: border-box;
        flex-shrink: 0;
        width: 40px;
        min-width: 40px;
        max-width: 40px;
        height: 40px;
        min-height: 40px;
        max-height: 40px;
        padding: 0;
        border-radius: 8px;
    }


    .main-content .category-mobile-reference-create {
        width: 100%;
        max-width: none;
    }
}

/* =========================================================
   Attestation de licence
   ========================================================= */

.licence-attestation-page {
    margin: 0;
    background: #e9edf2;
}

.licence-attestation-toolbar {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    padding: 18px;
}

.licence-attestation-toolbar button {
    width: auto;
    max-width: 100%;
}

.licence-attestation-sheet {
    box-sizing: border-box;
    width: 210mm;
    min-height: 297mm;
    margin: 0 auto 30px;
    padding: 24mm 22mm 22mm;
    background: #fff;
    color: #17263a;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12);
}

.licence-attestation-header {
    display: flex;
    justify-content: center;
    margin-bottom: 28mm;
}

.licence-attestation-header img {
    width: 190px;
    max-width: 100%;
    height: auto;
}

.licence-attestation-sheet h1 {
    margin: 0 0 25mm;
    text-align: center;
    font-size: 24px;
    letter-spacing: 1px;
}

.licence-attestation-content {
    font-size: 16px;
    line-height: 1.8;
}

.licence-attestation-content p {
    margin: 0 0 18mm;
}

.licence-attestation-person {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    margin: 0 0 18mm;
    font-size: 17px;
    text-align: center;
}

.licence-attestation-person > strong {
    font-size: 21px;
}

.licence-attestation-footer {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-top: 30mm;
    font-size: 15px;
}

.licence-attestation-signature {
    display: flex;
    min-width: 210px;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    text-align: center;
}

.licence-attestation-signature img {
    display: block;
    width: auto;
    max-width: 170px;
    height: auto;
    max-height: 75px;
    object-fit: contain;
}

.licence-attestation-signature:not(.has-signature) span {
    margin-top: 37px;
}

@media (max-width: 900px) {
    .licence-attestation-page {
        min-width: 0;
    }

    .licence-attestation-toolbar {
        position: sticky;
        top: 0;
        z-index: 10;
        padding: 10px;
        background: rgba(233, 237, 242, 0.96);
    }

    .licence-attestation-toolbar button {
        flex: 1 1 180px;
        min-height: 44px;
    }

    .licence-attestation-sheet {
        width: calc(100% - 16px);
        min-height: 0;
        margin: 8px auto 18px;
        padding: 28px 22px 34px;
    }

    .licence-attestation-header {
        margin-bottom: 45px;
    }

    .licence-attestation-header img {
        width: 155px;
    }

    .licence-attestation-sheet h1 {
        margin-bottom: 45px;
        font-size: 21px;
    }

    .licence-attestation-content {
        font-size: 15px;
        line-height: 1.65;
    }

    .licence-attestation-content p,
    .licence-attestation-person {
        margin-bottom: 38px;
    }

    .licence-attestation-person {
        font-size: 15px;
    }

    .licence-attestation-person > strong {
        font-size: 19px;
    }

    .licence-attestation-footer {
        flex-direction: column;
        gap: 45px;
        margin-top: 55px;
    }

    .licence-attestation-signature {
        align-self: flex-end;
        min-width: 180px;
    }
}

@media print {
    @page {
        size: A4 portrait;
        margin: 10mm;
    }

    html,
    body.licence-attestation-page {
        width: auto !important;
        height: auto !important;
        min-height: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: visible !important;
        background: #fff;
    }

    .licence-attestation-toolbar {
        display: none !important;
    }

    .licence-attestation-sheet {
        box-sizing: border-box;
        width: auto !important;
        height: auto !important;
        min-height: 0 !important;
        max-height: none !important;
        margin: 0 !important;
        padding: 8mm 10mm !important;
        overflow: visible !important;
        box-shadow: none !important;
        page-break-before: avoid !important;
        page-break-after: avoid !important;
        page-break-inside: avoid !important;
        break-before: avoid !important;
        break-after: avoid !important;
        break-inside: avoid !important;
    }

    .licence-attestation-header {
        margin-bottom: 12mm !important;
    }

    .licence-attestation-header img {
        width: 170px !important;
    }

    .licence-attestation-sheet h1 {
        margin: 0 0 12mm !important;
        font-size: 23px !important;
    }

    .licence-attestation-content {
        font-size: 15px !important;
        line-height: 1.6 !important;
    }

    .licence-attestation-content p {
        margin: 0 0 9mm !important;
    }

    .licence-attestation-person {
        margin: 0 0 9mm !important;
        font-size: 16px !important;
    }

    .licence-attestation-person > strong {
        font-size: 20px !important;
    }

    .licence-attestation-footer {
        display: flex !important;
        flex-direction: row !important;
        justify-content: space-between !important;
        align-items: flex-start !important;
        gap: 15mm !important;
        margin-top: 12mm !important;
        font-size: 14px !important;
        page-break-inside: avoid !important;
        break-inside: avoid !important;
    }

    .licence-attestation-signature {
        align-self: auto !important;
        min-width: 50mm !important;
        gap: 4px !important;
    }

    .licence-attestation-signature img {
        max-width: 45mm !important;
        max-height: 20mm !important;
    }

    .licence-attestation-signature:not(.has-signature) span {
        margin-top: 10mm !important;
    }
}

/* =========================================================
   ESPACE FDO - FINITIONS RESPONSIVE LICENCES DANSEURS
   ========================================================= */

@media (max-width: 1100px) {

    /* 1. Club : badges des justificatifs sans étirement */

    #licence-documents-form
    .mobile-card-table td[data-label="Fichier actuel"] .badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: fit-content;
        max-width: 100%;
        justify-self: start;
        flex: 0 0 auto;
    }

    /* 2. Club : recherche adaptée à la largeur du mobile */

    .club-danseurs-filters-card {
        display: block;
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
        margin-left: 0;
        margin-right: 0;
    }

    .club-danseurs-filters-card .filters-row {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
        width: 100%;
    }

    .club-danseurs-filters-card .filters-row > div {
        width: 100%;
        min-width: 0;
        max-width: 100%;
        box-sizing: border-box;
    }

    .club-danseurs-filters-card input,
    .club-danseurs-filters-card select {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
    }

    .club-danseurs-filters-card .filters-actions {
        display: flex;
        flex-direction: row;
        justify-content: flex-start;
        align-items: center;
        flex-wrap: wrap;
        width: 100%;
        gap: 8px;
    }

    .club-danseurs-filters-card .filters-actions > * {
        width: auto;
        flex: 0 0 auto;
    }

    /* 3. Service licences : boutons de filtrage côte à côte */

    .licences-filters-card .filters-actions {
        display: flex;
        flex-direction: row;
        justify-content: flex-start;
        align-items: center;
        flex-wrap: wrap;
        width: 100%;
        gap: 8px;
    }

    .licences-filters-card .filters-actions > .btn,
    .licences-filters-card .filters-actions > button {
        width: auto;
        max-width: 100%;
        flex: 0 0 auto;
    }


    /* 4a. Liste licences : action alignée à droite */

    .licences-danseurs-table td[data-label="Action"] {
        display: flex !important;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-end;
        gap: 8px;
        text-align: right !important;
    }

    .licences-danseurs-table td[data-label="Action"]::before {
        display: none !important;
    }

        .licences-danseurs-table td[data-label="Action"] > .btn,
    .licences-danseurs-table td[data-label="Action"] > a {
        display: inline-flex;
        flex: 0 0 auto;
        width: auto;
        max-width: 100%;
        min-height: 40px;
        margin: 0;
    }

    /* Licences / Danseurs : fiches mobiles compactes */

    /* Licences / Danseurs : affichage des âges sur ordinateur */
@media (min-width: 641px) {
    .licences-danseurs-table .licence-danseur-age-sportif {
        display: block;
        margin-top: 3px;
    }
}

    .licences-danseurs-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) {
        display: grid !important;
        position: relative;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 0;
        width: 100%;
    }

    /* Identité du danseur en haut de la fiche */

    .licences-danseurs-table.mobile-card-table
    td[data-label="Danseur"] {
        display: block !important;
        grid-column: 1 / -1;
        width: 100% !important;
        min-height: 0;
        padding: 12px 125px 5px 12px;
        border-bottom: 0;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Danseur"]::before {
        display: none !important;
        content: none;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Danseur"] strong {
        display: block;
        font-size: 16px;
        line-height: 1.35;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Danseur"] .muted-text {
        display: block;
        margin-top: 4px;
        font-size: 12px;
    }

    /* Statut en haut à droite */

    .licences-danseurs-table.mobile-card-table
    td[data-label="Statut"] {
        display: block !important;
        position: absolute;
        top: 12px;
        right: 10px;
        width: auto !important;
        min-width: 0 !important;
        max-width: 115px !important;
        min-height: 0;
        margin: 0;
        padding: 0 !important;
        border: 0 !important;
        background: transparent;
        text-align: right !important;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Statut"]::before {
        display: none !important;
        content: none;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Statut"] .badge {
        display: inline-flex;
        max-width: 100%;
        white-space: normal;
        text-align: center;
        line-height: 1.25;
    }

    /* Club sous l'identité */

    .licences-danseurs-table.mobile-card-table
    td[data-label="Club"] {
        display: block !important;
        grid-column: 1 / -1;
        width: 100% !important;
        min-height: 0;
        padding: 5px 12px 12px;
        border-bottom: 1px solid #e2e8f0;
        color: #52616b;
        font-size: 13px;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Club"]::before {
        display: none !important;
        content: none;
    }

    /* Dossier et documents côte à côte */

    .licences-danseurs-table.mobile-card-table
    td[data-label="Dossier"],
    .licences-danseurs-table.mobile-card-table
    td[data-label="Documents"] {
        display: block !important;
        width: 100% !important;
        min-width: 0;
        min-height: 0;
        padding: 12px;
        border-bottom: 1px solid #e2e8f0;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Dossier"] {
        grid-column: 1;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Documents"] {
        display: flex !important;
        flex-direction: column;
        align-items: flex-end;
        justify-content: flex-start;
        grid-column: 2;
        text-align: right !important;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Documents"]::before {
        display: block !important;
        width: 100%;
        margin: 0 0 6px;
        content: "Documents";
        text-align: right !important;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Documents"] strong {
        display: block;
        width: 100%;
        text-align: right;
    }

    /* Âge réel et sportif sur une même ligne en mobile */
    .licences-danseurs-table.mobile-card-table
    .licence-danseur-age-sportif {
        display: inline;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Dossier"]::before,
    .licences-danseurs-table.mobile-card-table
    td[data-label="Documents"]::before {
        display: block !important;
        content: attr(data-label);
        margin: 0 0 6px;
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        text-transform: uppercase;
    }

    .licences-danseurs-table.mobile-card-table
    td[data-label="Dossier"] .badge-formation {
        display: inline-flex;
        margin-top: 6px;
    }

    /* Action en bas à droite */

    .licences-danseurs-table.mobile-card-table
    td[data-label="Action"] {
        display: flex !important;
        grid-column: 1 / -1;
        align-items: center;
        justify-content: flex-end;
        width: 100% !important;
        min-height: 0;
        padding: 9px 12px !important;
        border-bottom: 0 !important;
    }


    /* 4b. Détail licence : bouton Ouvrir et date d'envoi */

    .licence-detail-table td[data-label="Fichier"] {
        display: flex !important;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-start;
        gap: 8px 12px;
    }

    .licence-detail-table td[data-label="Fichier"]::before {
        flex: 0 0 100%;
        margin: 0;
    }

    .licence-detail-table td[data-label="Fichier"]
    .licence-document-open-btn {
        width: auto;
        max-width: 100%;
        flex: 0 0 auto;
    }

    .licence-detail-table td[data-label="Fichier"]
    .muted-text {
        flex: 0 1 auto;
        min-width: 0;
        overflow-wrap: anywhere;
        line-height: 1.4;
    }

    /* 5. Détail licence : boutons de validation finale */

    .licence-detail-final-actions {
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: flex-start;
        flex-wrap: wrap;
        width: 100%;
        gap: 8px;
    }

    .licence-detail-final-actions form {
        width: auto;
        max-width: 100%;
        flex: 0 0 auto;
        margin: 0;
    }

    .licence-detail-final-actions > .btn,
    .licence-detail-final-actions form > button {
        width: auto;
        max-width: 100%;
        white-space: normal;
    }
}

/* =========================================================
   Club / Mes championnats : tableaux mobiles
   ========================================================= */

/* Présentation des récompenses sur ordinateur */
.club-rewards-mobile-grid {
    display: none;
}

.club-rewards-desktop-values {
    display: inline;
}

@media (max-width: 1100px) {

    /* =====================================================
       1. Musiques personnelles
       ===================================================== */

    .club-music-inline-table.mobile-card-table {
        width: 100% !important;
        min-width: 0 !important;
    }

    .club-music-inline-table.mobile-card-table
    tr[data-music-row] {
        display: flex !important;
        position: relative;
        flex-direction: column;
        width: 100%;
        box-sizing: border-box;
    }

    /* Case de sélection en haut à gauche */

    .club-music-inline-table.mobile-card-table
    td[data-label="Sélection"] {
        display: flex !important;
        position: absolute;
        top: 12px;
        left: 12px;
        z-index: 1;
        align-items: center;
        justify-content: center;
        width: 22px !important;
        min-width: 22px !important;
        height: 22px;
        min-height: 22px;
        margin: 0;
        padding: 0 !important;
        border: 0 !important;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Sélection"]::before {
        display: none !important;
        content: none;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Sélection"] input[type="checkbox"] {
        width: 22px;
        height: 22px;
        min-height: 22px;
        margin: 0;
    }

    /* Numéro de dossard */

    .club-music-inline-table.mobile-card-table
    td[data-label="Dossard"] {
        display: block !important;
        order: 1;
        width: 100% !important;
        min-height: 0;
        padding: 12px 12px 3px 44px !important;
        border-bottom: 0 !important;
        text-align: left !important;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Dossard"]::before {
        display: none !important;
        content: none;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Dossard"] strong {
        font-size: 16px;
        line-height: 1.35;
        color: #1f2933;
    }

    /* Catégorie sous le dossard */

    .club-music-inline-table.mobile-card-table
    td[data-label="Catégorie"] {
        display: block !important;
        order: 2;
        width: 100% !important;
        min-height: 0;
        padding: 2px 12px 12px 44px !important;
        border-bottom: 1px solid #e2e8f0 !important;
        text-align: left !important;
        color: #64748b;
        font-size: 13px;
        line-height: 1.4;
        overflow-wrap: anywhere;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Catégorie"]::before {
        display: none !important;
        content: none;
    }

    /* Informations dans des sections distinctes */

    .club-music-inline-table.mobile-card-table
    td[data-label="Club"],
    .club-music-inline-table.mobile-card-table
    td[data-label="Danseurs"],
    .club-music-inline-table.mobile-card-table
    td[data-label="Thème"],
    .club-music-inline-table.mobile-card-table
    td[data-label="Musique"] {
        display: block !important;
        width: 100% !important;
        min-height: 0;
        padding: 10px 12px !important;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Club"] {
        order: 3;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Danseurs"] {
        order: 4;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Thème"] {
        order: 5;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Musique"] {
        order: 6;
        background: #f8fafc;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Club"]::before,
    .club-music-inline-table.mobile-card-table
    td[data-label="Danseurs"]::before,
    .club-music-inline-table.mobile-card-table
    td[data-label="Thème"]::before,
    .club-music-inline-table.mobile-card-table
    td[data-label="Musique"]::before {
        display: block !important;
        float: none !important;
        max-width: none !important;
        margin-bottom: 5px;
        padding: 0 !important;
        content: attr(data-label);
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        text-transform: uppercase;
    }

    /* Action de téléchargement */

    .club-music-inline-table.mobile-card-table
    td[data-label="Action"] {
        display: flex !important;
        order: 7;
        justify-content: flex-end;
        align-items: center;
        width: 100% !important;
        min-height: 0;
        padding: 9px 12px !important;
        border-bottom: 0 !important;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Action"]::before {
        display: none !important;
        content: none;
    }

    .club-music-inline-table.mobile-card-table
    td[data-label="Action"] .btn {
        display: inline-flex;
        width: auto !important;
        max-width: 100%;
        min-height: 40px;
        align-items: center;
        justify-content: center;
        white-space: normal;
    }

    /* =====================================================
       2. Détail des récompenses
       ===================================================== */

    .club-rewards-detail-table {
        display: block;
        width: 100%;
        min-width: 0 !important;
        border: 0;
        background: transparent;
    }

    .club-rewards-detail-table thead {
        display: none;
    }

    .club-rewards-detail-table tbody {
        display: block;
        width: 100%;
    }

    .club-rewards-detail-table tbody tr {
        display: flex;
        flex-direction: column;
        width: 100%;
        margin-bottom: 12px;
        border: 1px solid #e2e8f0;
        border-radius: 12px;
        background: #ffffff;
        overflow: hidden;
        box-shadow: 0 1px 5px rgba(15, 23, 42, 0.05);
    }

    .club-rewards-detail-table tbody td {
        display: block;
        width: 100%;
        min-width: 0;
        min-height: 0;
        padding: 10px 12px;
        border-bottom: 1px solid #eef2f7;
        box-sizing: border-box;
        text-align: left;
    }

    /* Nom de la catégorie */

    .club-rewards-detail-table tbody td:nth-child(1) {
        padding: 12px 12px 6px;
        border-bottom: 0;
        font-size: 16px;
        line-height: 1.4;
        overflow-wrap: anywhere;
    }

    /* Nombre de dossards et effectif maximum */

    .club-rewards-detail-table tbody td:nth-child(2),
    .club-rewards-detail-table tbody td:nth-child(3) {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        padding: 4px 12px;
        color: #52616b;
        font-size: 13px;
        border-bottom: 0;
    }

    .club-rewards-detail-table tbody td:nth-child(2)::before {
        content: "Dossards";
        font-weight: 600;
    }

    .club-rewards-detail-table tbody td:nth-child(3)::before {
        content: "Effectif maximum";
        font-weight: 600;
    }

    /* Sections Médailles et Coupes */

    .club-rewards-detail-table tbody td:nth-child(4),
    .club-rewards-detail-table tbody td:nth-child(5) {
        padding: 12px;
        text-align: left;
    }

    .club-rewards-detail-table tbody td:nth-child(4)::before,
    .club-rewards-detail-table tbody td:nth-child(5)::before {
        display: block;
        margin-bottom: 10px;
        font-size: 13px;
        font-weight: 700;
        color: #334e68;
    }

    .club-rewards-detail-table tbody td:nth-child(4)::before {
        content: "Médailles";
    }

    .club-rewards-detail-table tbody td:nth-child(5)::before {
        content: "Coupes";
    }

    .club-rewards-detail-table tbody td:last-child {
        border-bottom: 0;
    }

    /* Masquer les valeurs compactes PC */

    .club-rewards-detail-table .club-rewards-desktop-values {
        display: none;
    }

    /* Afficher les trois quantités séparément */

    .club-rewards-detail-table .club-rewards-mobile-grid {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 8px;
        width: 100%;
    }

    .club-rewards-detail-table .club-rewards-mobile-item {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 5px;
        min-width: 0;
        padding: 10px 6px;
        border-radius: 8px;
        background: #f1f5f9;
        text-align: center;
    }

    .club-rewards-detail-table .club-rewards-mobile-item span {
        color: #64748b;
        font-size: 12px;
        line-height: 1.3;
    }

    .club-rewards-detail-table .club-rewards-mobile-item strong {
        color: #1f2933;
        font-size: 18px;
        font-weight: 700;
        line-height: 1.2;
    }
}

/* =========================================================
   Licences / Fiche danseur : informations et documents
   ========================================================= */

/* Âge sportif dans les informations sur PC */
.licence-detail-mobile-age {
    display: none;
}

.licence-detail-age-season {
    display: block;
    margin-top: 3px;
    color: #64748b;
    font-size: 12px;
    font-weight: 400;
    line-height: 1.4;
}

@media (max-width: 1100px) {

    /* Informations de licence */

    .licence-detail-summary {
        display: grid;
        position: relative;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
        width: 100%;
    }

    .licence-detail-summary > .licence-detail-identity {
        grid-column: 1 / -1;
        padding: 0 112px 12px 0;
        border-bottom: 1px solid #e2e8f0;
    }

    .licence-detail-summary .licence-detail-identity > .muted-text {
        display: none;
    }

    .licence-detail-summary .licence-detail-identity > strong {
        display: block;
        color: #1f2933;
        font-size: 17px;
        line-height: 1.35;
        overflow-wrap: anywhere;
    }

    .licence-detail-summary .licence-detail-mobile-age {
        display: block;
        margin-top: 5px;
        color: #64748b;
        font-size: 13px;
        line-height: 1.4;
    }

    .licence-detail-summary > .licence-detail-age {
        display: none;
    }

    /* Statut en haut à droite */

    .licence-detail-summary > .licence-detail-status {
        display: block;
        position: absolute;
        top: 0;
        right: 0;
        width: auto;
        max-width: 105px;
        margin: 0;
        padding: 0;
    }

    .licence-detail-summary .licence-detail-status > .muted-text {
        display: none;
    }

    .licence-detail-summary .licence-detail-status .badge {
        display: inline-flex;
        max-width: 100%;
        white-space: normal;
        text-align: center;
        line-height: 1.25;
    }

    /* Club sur une ligne complète */

    .licence-detail-summary > .licence-detail-club {
        grid-column: 1 / -1;
        padding-bottom: 12px;
        border-bottom: 1px solid #e2e8f0;
    }

    /* Demande et type de licence sur deux colonnes */

    .licence-detail-summary > .licence-detail-demand {
        grid-column: 1;
    }

    .licence-detail-summary > .licence-detail-type {
        grid-column: 2;
        min-width: 0;
    }

    .licence-detail-summary .licence-detail-demand strong,
    .licence-detail-summary .licence-detail-type strong {
        font-size: 13px;
        line-height: 1.4;
        overflow-wrap: anywhere;
    }

    .licence-detail-summary .licence-detail-disciplines {
        overflow-wrap: anywhere;
    }

    /* Documents : fiches mobiles compactes */

    .licence-detail-table.mobile-card-table tbody tr {
        display: flex !important;
        position: relative;
        flex-direction: column;
        width: 100%;
        box-sizing: border-box;
    }

    /* Nom du document */

    .licence-detail-table.mobile-card-table
    td[data-label="Document"] {
        display: block !important;
        order: 1;
        width: 100% !important;
        min-height: 0;
        padding: 12px 112px 12px 12px !important;
        border-bottom: 1px solid #e2e8f0;
        box-sizing: border-box;
        text-align: left !important;
    }

    .licence-detail-table.mobile-card-table
    td[data-label="Document"]::before {
        display: none !important;
        content: none;
    }

    .licence-detail-table.mobile-card-table
    td[data-label="Document"] strong {
        display: block;
        color: #1f2933;
        font-size: 15px;
        line-height: 1.4;
        overflow-wrap: anywhere;
    }

    /* État en haut à droite */

    .licence-detail-table.mobile-card-table
    td[data-label="État"] {
        display: block !important;
        position: absolute;
        top: 12px;
        right: 10px;
        width: auto !important;
        min-width: 0 !important;
        max-width: 105px !important;
        min-height: 0;
        margin: 0;
        padding: 0 !important;
        border: 0 !important;
        background: transparent;
        text-align: right !important;
    }

    .licence-detail-table.mobile-card-table
    td[data-label="État"]::before {
        display: none !important;
        content: none;
    }

    .licence-detail-table.mobile-card-table
    td[data-label="État"] .badge {
        display: inline-flex;
        max-width: 100%;
        white-space: normal;
        text-align: center;
        line-height: 1.25;
    }

    /* Commentaire de refus conservé */

    .licence-detail-table.mobile-card-table
    td[data-label="État"] .licence-document-comment {
        display: block;
        max-width: 105px;
        margin-top: 6px;
        text-align: left;
        overflow-wrap: anywhere;
    }

    /* Fichier et date d'envoi */

    .licence-detail-table.mobile-card-table
    td[data-label="Fichier"] {
        display: flex !important;
        order: 2;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-start;
        gap: 8px 12px;
        width: 100% !important;
        min-height: 0;
        padding: 12px !important;
        box-sizing: border-box;
        text-align: left !important;
    }

    .licence-detail-table.mobile-card-table
    td[data-label="Fichier"]::before {
        display: none !important;
        content: none;
    }

    .licence-detail-table.mobile-card-table
    td[data-label="Fichier"] .licence-document-open-btn {
        display: inline-flex;
        flex: 0 0 auto;
        width: auto !important;
        max-width: 100%;
        min-height: 40px;
    }

    .licence-detail-table.mobile-card-table
    td[data-label="Fichier"] .muted-text {
        flex: 0 1 auto;
        min-width: 0;
        overflow-wrap: anywhere;
    }

    /* Actions en bas à droite */

    .licence-detail-table.mobile-card-table
    td[data-label="Actions"] {
        display: flex !important;
        order: 3;
        align-items: center;
        justify-content: flex-end;
        width: 100% !important;
        min-height: 0;
        padding: 9px 12px !important;
        border-bottom: 0 !important;
        box-sizing: border-box;
        text-align: right !important;
    }

    .licence-detail-table.mobile-card-table
    td[data-label="Actions"]::before {
        display: none !important;
        content: none;
    }

    .licence-detail-table.mobile-card-table
    .licence-document-actions {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-end;
        width: auto;
        max-width: 100%;
        gap: 6px;
    }

    .licence-detail-table.mobile-card-table
    .licence-document-actions form {
        width: auto;
        margin: 0;
    }

    .licence-detail-table.mobile-card-table
    .licence-document-actions button {
        flex: 0 0 auto;
        width: auto !important;
        max-width: 100%;
        min-height: 40px;
        margin: 0;
    }
}

/* =========================================================
   Club / Attestations et Documents officiels
   Alignement des actions sur ordinateur
   ========================================================= */

@media (min-width: 1101px) {

    .club-attestations-table
    tbody td[data-label="Actions"] {
        text-align: right !important;
    }
}

/* =========================================================
   Club / Attestations et Documents officiels
   Fiches mobiles compactes
   ========================================================= */

@media (max-width: 1100px) {

    /* Présentation commune */

    .club-attestations-table.mobile-card-table tbody tr,
    .club-official-documents-table.mobile-card-table tbody tr {
        display: flex !important;
        position: relative;
        flex-direction: column;
        width: 100%;
        box-sizing: border-box;
    }

    .club-attestations-table.mobile-card-table tbody td:not(.mobile-card-empty),
    .club-official-documents-table.mobile-card-table tbody td:not(.mobile-card-empty) {
        display: block !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        min-height: 0;
        box-sizing: border-box;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    /* =====================================================
       1. Club / Attestations
       ===================================================== */

    /* Danseur en évidence */

    .club-attestations-table.mobile-card-table
    td[data-label="Danseur"] {
        order: 1;
        padding: 12px 12px 3px !important;
        border-bottom: 0 !important;
    }

    .club-attestations-table.mobile-card-table
    td[data-label="Danseur"]::before {
        display: none !important;
        content: none;
    }

    .club-attestations-table.mobile-card-table
    td[data-label="Danseur"] strong {
        display: block;
        color: #1f2933;
        font-size: 16px;
        line-height: 1.35;
    }

    /* Date de naissance sous le nom */

    .club-attestations-table.mobile-card-table
    td[data-label="Naissance"] {
        order: 2;
        padding: 3px 12px 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
        color: #64748b;
        font-size: 13px;
        line-height: 1.4;
    }

    .club-attestations-table.mobile-card-table
    td[data-label="Naissance"]::before {
        display: inline !important;
        float: none !important;
        content: "Né(e) le ";
        margin: 0;
        padding: 0;
        color: inherit;
        font-size: inherit;
        font-weight: 400;
        text-transform: none;
        letter-spacing: normal;
    }

    /* Numéro de licence */

    .club-attestations-table.mobile-card-table
    td[data-label="N° licence"] {
        order: 3;
        padding: 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
    }

    .club-attestations-table.mobile-card-table
    td[data-label="N° licence"]::before {
        display: block !important;
        float: none !important;
        max-width: none !important;
        content: "N° DE LICENCE";
        margin: 0 0 6px;
        padding: 0;
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        text-transform: uppercase;
    }

    .club-attestations-table.mobile-card-table
    td[data-label="N° licence"] strong {
        display: block;
        font-size: 14px;
    }

        /* Bouton Attestation : alignement à droite */

    .club-attestations-table.mobile-card-table
    tbody td[data-label="Actions"] {
        display: flex !important;
        flex-direction: row !important;
        order: 4;
        align-items: center !important;
        justify-content: flex-end !important;
        width: 100% !important;
        min-width: 0 !important;
        padding: 9px 12px !important;
        border-bottom: 0 !important;
        text-align: right !important;
    }

    .club-attestations-table.mobile-card-table
    tbody td[data-label="Actions"]::before {
        display: none !important;
        content: none !important;
    }

    .club-attestations-table.mobile-card-table
    tbody td[data-label="Actions"] > .btn {
        display: inline-flex !important;
        flex: 0 0 auto;
        width: auto !important;
        max-width: 100%;
        min-height: 40px;
        margin: 0 0 0 auto !important;
        align-items: center;
        justify-content: center;
    }

    /* =====================================================
       2. Club / Documents officiels
       ===================================================== */

    /* Titre et description */

    .club-official-documents-table.mobile-card-table
    td[data-label="Document"] {
        order: 1;
        padding: 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
    }

    .club-official-documents-table.mobile-card-table
    td[data-label="Document"]::before {
        display: none !important;
        content: none;
    }

    .club-official-documents-table.mobile-card-table
    td[data-label="Document"] strong {
        display: block;
        color: #1f2933;
        font-size: 16px;
        line-height: 1.35;
    }

    .club-official-documents-table.mobile-card-table
    td[data-label="Document"] .muted-text {
        display: inline-block;
        margin-top: 5px;
        font-size: 13px;
        line-height: 1.4;
    }

        /* Format et date sur la même rangée */

    .club-official-documents-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: stretch;
        width: 100%;
    }

    .club-official-documents-table.mobile-card-table
    tbody td[data-label="Document"] {
        grid-column: 1 / -1;
        grid-row: 1;
    }

    .club-official-documents-table.mobile-card-table
    tbody td[data-label="Format"] {
        grid-column: 1;
        grid-row: 2;
        padding: 12px !important;
        border-bottom: 0 !important;
        text-align: left !important;
    }

    .club-official-documents-table.mobile-card-table
    tbody td[data-label="Ajouté le"] {
        grid-column: 2;
        grid-row: 2;
        padding: 12px !important;
        border-bottom: 0 !important;
        text-align: right !important;
    }

    .club-official-documents-table.mobile-card-table
    td[data-label="Format"]::before,
    .club-official-documents-table.mobile-card-table
    td[data-label="Ajouté le"]::before {
        display: block !important;
        float: none !important;
        max-width: none !important;
        content: attr(data-label);
        margin: 0 0 6px;
        padding: 0;
        color: #64748b;
        font-size: 11px;
        font-weight: 700;
        text-transform: uppercase;
    }

    .club-official-documents-table.mobile-card-table
    td[data-label="Ajouté le"]::before {
        text-align: right !important;
    }

    .club-official-documents-table.mobile-card-table
    td[data-label="Format"] .muted-text {
        display: inline;
        margin-left: 4px;
        font-size: 12px;
    }

    /* Téléchargement en bas à droite, avec séparation continue */

    .club-official-documents-table.mobile-card-table
    tbody td[data-label="Action"] {
        display: flex !important;
        flex-direction: row !important;
        grid-column: 1 / -1;
        grid-row: 3;
        align-items: center !important;
        justify-content: flex-end !important;
        width: 100% !important;
        min-width: 0 !important;
        padding: 9px 12px !important;
        border-top: 1px solid #e2e8f0 !important;
        border-bottom: 0 !important;
        text-align: right !important;
    }

    .club-official-documents-table.mobile-card-table
    td[data-label="Action"]::before {
        display: none !important;
        content: none !important;
    }

    .club-official-documents-table.mobile-card-table
    tbody td[data-label="Action"] > .btn {
        display: inline-flex !important;
        flex: 0 0 auto;
        align-items: center;
        justify-content: center;
        width: auto !important;
        max-width: 100%;
        min-height: 40px;
        margin: 0 0 0 auto !important;
        white-space: normal;
    }

    /* Lignes de tableau vide */

    .club-attestations-table.mobile-card-table
    td.mobile-card-empty,
    .club-official-documents-table.mobile-card-table
    td.mobile-card-empty {
        display: block !important;
        width: 100% !important;
        text-align: center !important;
    }
}

/* =========================================================
   Club / Gestion de licence : documents à fournir
   ========================================================= */

/* Badge supplémentaire masqué sur ordinateur */

/* Badge supplémentaire masqué sur ordinateur */

.club-licence-documents-table
.club-licence-document-mobile-status {
    display: none;
}

/* Club / Licence danseur : répartition des colonnes sur PC */

@media (min-width: 1101px) {

    .club-licence-documents-table {
        width: 100%;
        table-layout: fixed;
    }

    .club-licence-documents-table th:nth-child(1),
    .club-licence-documents-table td:nth-child(1) {
        width: 34%;
    }

    .club-licence-documents-table th:nth-child(2),
    .club-licence-documents-table td:nth-child(2) {
        width: 18%;
    }

    .club-licence-documents-table th:nth-child(3),
    .club-licence-documents-table td:nth-child(3) {
        width: 48%;
    }

    .club-licence-documents-table td {
        overflow-wrap: anywhere;
        vertical-align: middle;
    }

    .club-licence-documents-table
    td[data-label="Remplacer / envoyer"] input[type="file"] {
        display: block;
        width: 100%;
        max-width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }
}

@media (max-width: 1100px) {

    /* Fiches mobiles */

    #licence-documents-form
    .club-licence-documents-table.mobile-card-table
    tbody tr {
        display: flex !important;
        flex-direction: column;
        width: 100%;
        box-sizing: border-box;
    }

    #licence-documents-form
    .club-licence-documents-table.mobile-card-table
    tbody td {
        display: block !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        min-height: 0;
        box-sizing: border-box;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    /* En-tête : document et statut */

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Document"] {
        order: 1;
        padding: 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
    }

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Document"]::before {
        display: none !important;
        content: none;
    }

    .club-licence-documents-table
    .club-licence-document-heading {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 10px;
        width: 100%;
    }

    .club-licence-documents-table
    .club-licence-document-heading > strong {
        display: block;
        flex: 1 1 auto;
        min-width: 0;
        color: #1f2933;
        font-size: 16px;
        line-height: 1.35;
        overflow-wrap: anywhere;
    }

    #licence-documents-form
    .club-licence-documents-table
    .club-licence-document-mobile-status {
        display: inline-flex !important;
        flex: 0 0 auto;
        align-items: center;
        justify-content: center;
        max-width: 115px;
        margin: 0;
        text-align: center;
        white-space: normal;
        line-height: 1.25;
    }

    /* Explications du document */

    .club-licence-documents-table
    td[data-label="Document"] .muted-text {
        display: block;
        margin-top: 8px;
        color: #64748b;
        font-size: 12px;
        line-height: 1.5;
        white-space: pre-line;
    }

    /* Fichier actuel */

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Fichier actuel"] {
        order: 2;
        padding: 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
        font-size: 13px;
        line-height: 1.5;
    }

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Fichier actuel"]::before {
        display: block !important;
        content: "Fichier actuel";
        margin: 0 0 7px;
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        text-transform: uppercase;
    }

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Fichier actuel"] > a {
        display: inline-block;
        max-width: 100%;
        overflow-wrap: anywhere;
    }

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Fichier actuel"] > .badge {
        display: none !important;
    }

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Fichier actuel"] .muted-text {
        display: block;
        margin-top: 5px;
        overflow-wrap: anywhere;
    }

    /* Champ de remplacement ou d'envoi */

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Remplacer / envoyer"] {
        order: 3;
        padding: 12px !important;
        border-bottom: 0 !important;
        background: #f8fafc;
    }

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Remplacer / envoyer"]::before {
        display: block !important;
        content: "Remplacer / envoyer";
        margin: 0 0 8px;
        color: #334e68;
        font-size: 12px;
        font-weight: 700;
        text-transform: uppercase;
    }

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Remplacer / envoyer"] input[type="file"] {
        display: block;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        box-sizing: border-box;
        font-size: 13px;
    }

    #licence-documents-form
    .club-licence-documents-table
    td[data-label="Remplacer / envoyer"] input[type="file"]:disabled {
        opacity: 0.6;
        cursor: not-allowed;
    }
}

/* =========================================================
   Club / Mon club : documents transmis
   ========================================================= */

/* Alignement des actions sur ordinateur */

@media (min-width: 1101px) {

    .club-my-documents-table
    tbody td[data-label="Actions"] {
        text-align: right !important;
    }

    .club-my-documents-table
    tbody td[data-label="Actions"] .compact-actions {
        display: flex !important;
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: center;
        justify-content: flex-end !important;
        gap: 8px;
        width: 100%;
        margin-left: auto;
    }

    .club-my-documents-table
    tbody td[data-label="Actions"] .compact-actions .inline-form {
        flex: 0 0 auto;
        width: auto;
        margin: 0;
    }
}

@media (max-width: 1100px) {

    /* Organisation générale des fiches */

    .club-my-documents-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: stretch;
        width: 100%;
        box-sizing: border-box;
    }

    .club-my-documents-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) > td {
        display: block !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        min-height: 0;
        box-sizing: border-box;
        text-align: left !important;
        overflow-wrap: anywhere;
    }

    /* Titre et nom du fichier */

    .club-my-documents-table.mobile-card-table
    tbody td[data-label="Titre"] {
        grid-column: 1 / -1;
        grid-row: 1;
        padding: 12px !important;
        border-bottom: 1px solid #e2e8f0 !important;
    }

    .club-my-documents-table.mobile-card-table
    td[data-label="Titre"]::before {
        display: none !important;
        content: none !important;
    }

    .club-my-documents-table.mobile-card-table
    td[data-label="Titre"] strong {
        display: block;
        color: #1f2933;
        font-size: 16px;
        line-height: 1.35;
    }

    .club-my-documents-table.mobile-card-table
    td[data-label="Titre"] .muted-text {
        display: block;
        margin-top: 5px;
        color: #64748b;
        font-size: 13px;
        line-height: 1.4;
        overflow-wrap: anywhere;
    }

    /* Type et date sur deux colonnes */

    .club-my-documents-table.mobile-card-table
    tbody td[data-label="Type"],
    .club-my-documents-table.mobile-card-table
    tbody td[data-label="Ajouté le"] {
        padding: 12px !important;
        border-bottom: 0 !important;
        line-height: 1.4;
    }

    .club-my-documents-table.mobile-card-table
    tbody td[data-label="Type"] {
        grid-column: 1;
        grid-row: 2;
        text-align: left !important;
    }

    .club-my-documents-table.mobile-card-table
    tbody tr:not(:has(.mobile-card-empty)) > td[data-label="Ajouté le"] {
        display: block !important;
        grid-column: 2;
        grid-row: 2;
        grid-template-columns: none !important;
        padding: 12px !important;
        text-align: right !important;
    }

    .club-my-documents-table.mobile-card-table
    td[data-label="Type"]::before,
    .club-my-documents-table.mobile-card-table
    td[data-label="Ajouté le"]::before {
        display: block !important;
        float: none !important;
        max-width: none !important;
        content: attr(data-label);
        margin: 0 0 6px;
        padding: 0;
        color: #64748b;
        font-size: 11px;
        font-weight: 700;
        line-height: 1.3;
        text-transform: uppercase;
    }

    .club-my-documents-table.mobile-card-table
    td[data-label="Ajouté le"]::before {
        text-align: right !important;
    }

    /* Actions : une seule séparation continue */

    .club-my-documents-table.mobile-card-table
    tbody td[data-label="Actions"] {
        display: flex !important;
        flex-direction: row !important;
        grid-column: 1 / -1;
        grid-row: 3;
        align-items: center !important;
        justify-content: flex-end !important;
        width: 100% !important;
        min-width: 0 !important;
        padding: 9px 12px !important;
        border-top: 1px solid #e2e8f0 !important;
        border-bottom: 0 !important;
        text-align: right !important;
    }

    .club-my-documents-table.mobile-card-table
    td[data-label="Actions"]::before {
        display: none !important;
        content: none !important;
    }

    .club-my-documents-table.mobile-card-table
    td[data-label="Actions"] .compact-actions {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-end !important;
        gap: 8px;
        width: auto !important;
        max-width: 100%;
        margin: 0 0 0 auto !important;
    }

    .club-my-documents-table.mobile-card-table
    td[data-label="Actions"] .inline-form {
        display: inline-flex;
        flex: 0 0 auto;
        width: auto !important;
        margin: 0 !important;
    }

    .club-my-documents-table.mobile-card-table
    td[data-label="Actions"] .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        width: auto !important;
        max-width: 100%;
        min-height: 40px;
        margin: 0 !important;
    }

    .club-my-documents-table.mobile-card-table
    td[data-label="Actions"] .btn-delete-icon {
        display: inline-flex;
        flex: 0 0 40px;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        padding: 0 !important;
        margin: 0 !important;
        align-items: center;
        justify-content: center;
    }

    /* Ligne affichée en absence de documents */

    .club-my-documents-table.mobile-card-table
    tbody td.mobile-card-empty {
        display: block !important;
        width: 100% !important;
        text-align: center !important;
    }
}

/* Impression : conserver la présentation tabulaire */

@media print {
    .club-rewards-detail-table .club-rewards-mobile-grid {
        display: none !important;
    }

    .club-rewards-detail-table .club-rewards-desktop-values {
        display: inline !important;
    }
}

/* =========================================================
   HARMONISATION RESPONSIVE - ACTIONS DES MODALES
   ========================================================= */

@media screen and (max-width: 1000px) {

    /* Centrage des zones d'actions communes */

    .category-modal-form-actions,
    .category-modal-category-body .category-editor-actions,
    .admin-users-modal-actions,
    .confirm-modal-actions,
    .club-presences-form-actions,
    .print-actions {
        justify-content: center;
    }

    /* Largeur limitée et boutons centrés */

    .category-modal-form-actions > .btn,
    .category-modal-form-actions > button,
    .category-modal-category-body .category-editor-actions > .btn,
    .category-modal-category-body .category-editor-actions > button,
    .admin-users-modal-actions > .btn,
    .admin-users-modal-actions > button,
    .confirm-modal-actions > .btn,
    .confirm-modal-actions > button,
    .club-presences-form-actions > .btn,
    .club-presences-form-actions > button,
    .print-actions > .btn,
    .print-actions > button {
        width: 100%;
        max-width: 280px;
        margin-left: auto;
        margin-right: auto;
    }

    /* Groupe d'actions dans les modales de création */

    .category-modal.admin-users-modal .admin-users-modal-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        max-width: none;
        margin: 6px 0 0;
    }

    .category-modal.admin-users-modal .admin-users-modal-actions > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        white-space: normal;
        text-align: center;
    }

    .category-modal.admin-users-modal .admin-users-modal-actions > .btn:only-child {
        grid-column: 1 / -1;
        width: min(280px, 100%);
        justify-self: center;
    }
}

/* Paysage et tablette : boutons compacts alignés à droite */

@media screen and (min-width: 701px) and (max-width: 1000px) {
    .category-modal.admin-users-modal .admin-users-modal-actions {
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
    }
}

/* =========================================================
   ADMIN USERS - ACTIONS RESPONSIVE DEFINITIVES
   ========================================================= */

.admin-user-edit-modal-footer > button[hidden] {
    display: none !important;
}

@media screen and (max-width: 700px) {
    .category-modal.admin-user-edit-modal .admin-user-edit-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.admin-user-edit-modal .admin-user-edit-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        white-space: normal;
        text-align: center;
    }

    /* Trois boutons : Désactiver et Annuler sur la première ligne */

    .admin-user-edit-modal-footer > #edit-user-toggle {
        grid-column: 1;
        grid-row: 1;
    }

    .admin-user-edit-modal-footer > [data-close-user-edit] {
        grid-column: 2;
        grid-row: 1;
    }

    .admin-user-edit-modal-footer > button[value="save"] {
        grid-column: 1 / -1;
        grid-row: 2;
    }

    /* Deux boutons : Annuler et Enregistrer côte à côte */

    .admin-user-edit-modal-footer:has(> #edit-user-toggle[hidden])
    > [data-close-user-edit] {
        grid-column: 1;
        grid-row: 1;
    }

    .admin-user-edit-modal-footer:has(> #edit-user-toggle[hidden])
    > button[value="save"] {
        grid-column: 2;
        grid-row: 1;
    }
}

/* Paysage et tablette : actions compactes à droite */

/* Paysage et tablette : action Désactiver isolée à gauche */

@media screen and (min-width: 701px) and (max-width: 1000px) {
    .category-modal.admin-user-edit-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.admin-user-edit-modal-box {
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
    }

    .category-modal.admin-user-edit-modal .admin-user-edit-modal-footer {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 170px 170px;
        justify-content: stretch;
        align-items: center;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.admin-user-edit-modal .admin-user-edit-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        white-space: normal;
        text-align: center;
    }

    .category-modal.admin-user-edit-modal
    .admin-user-edit-modal-footer > #edit-user-toggle:not([hidden]) {
        grid-column: 1;
        grid-row: 1;
        justify-self: start;
        width: auto;
        max-width: 220px;
    }

    .category-modal.admin-user-edit-modal
    .admin-user-edit-modal-footer > [data-close-user-edit] {
        grid-column: 2;
        grid-row: 1;
    }

    .category-modal.admin-user-edit-modal
    .admin-user-edit-modal-footer > button[value="save"] {
        grid-column: 3;
        grid-row: 1;
    }

    /* Sans bouton Désactiver : deux actions à droite */

    .category-modal.admin-user-edit-modal
    .admin-user-edit-modal-footer:has(> #edit-user-toggle[hidden]) {
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
    }

    .category-modal.admin-user-edit-modal
    .admin-user-edit-modal-footer:has(> #edit-user-toggle[hidden])
    > [data-close-user-edit] {
        grid-column: 1;
    }

    .category-modal.admin-user-edit-modal
    .admin-user-edit-modal-footer:has(> #edit-user-toggle[hidden])
    > button[value="save"] {
        grid-column: 2;
    }
}/* =========================================================
   ADMIN CLUBS - MODALE DE CREATION
   ========================================================= */

.admin-club-create-modal-box {
    width: min(780px, 100%);
    max-height: calc(100dvh - 40px);
    display: flex;
    flex-direction: column;
}

.admin-club-create-form {
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1 1 auto;
    margin: 0;
}

.admin-club-create-modal-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    background: #ffffff;
    overscroll-behavior: contain;
}

.admin-club-create-modal-body > .alert {
    margin-bottom: 16px;
}

.admin-club-create-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 16px;
}

.admin-club-create-fields > div {
    min-width: 0;
}

.admin-club-create-fields > .full {
    grid-column: 1 / -1;
}

.admin-club-create-fields label {
    display: block;
    margin-bottom: 6px;
}

.admin-club-create-fields input {
    display: block;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.admin-club-create-section {
    margin-top: 8px;
    padding-top: 16px;
    border-top: 1px solid #e2e8f0;
}

.admin-club-create-section h3 {
    margin: 0;
    color: #102a43;
    font-size: 18px;
}

.admin-club-create-modal-footer {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    flex: 0 0 auto;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.admin-club-create-modal-footer > .btn {
    flex: 0 1 auto;
    width: auto;
    max-width: 280px;
    min-width: 0;
    margin: 0;
    text-align: center;
    white-space: normal;
}

/* Affichage mobile et dimensions intermédiaires */

@media screen and (max-width: 700px) {
    .admin-club-create-modal {
        padding: 10px;
    }

    .admin-club-create-modal-box {
        width: 100%;
        max-height: calc(100dvh - 20px);
    }

    .admin-club-create-modal-body {
        padding: 16px;
    }

    .admin-club-create-fields {
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
    }

    .admin-club-create-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 210px));
        justify-content: center;
        align-items: stretch;
        gap: 10px;
        padding: 12px 16px;
    }

    .admin-club-create-modal-footer > .btn {
        width: 100%;
        max-width: none;
        margin: 0;
        justify-self: stretch;
    }
}

@media screen and (max-width: 380px) {
    .admin-club-create-modal-footer {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .admin-club-create-modal-footer > .btn {
        padding: 8px;
        font-size: 13px;
    }
}

/* =========================================================
   ADMIN CLUBS - MODALE DE MODIFICATION
   ========================================================= */

.admin-club-edit-modal-box {
    width: min(780px, 100%);
    max-height: calc(100dvh - 40px);
    display: flex;
    flex-direction: column;
}

.admin-club-edit-modal-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    background: #ffffff;
    overscroll-behavior: contain;
}

.admin-club-edit-modal-body > .alert {
    margin-bottom: 16px;
}

.admin-club-edit-form {
    margin: 0;
}

.admin-club-edit-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 16px;
}

.admin-club-edit-fields > div {
    min-width: 0;
}

.admin-club-edit-fields > .full {
    grid-column: 1 / -1;
}

.admin-club-edit-fields label {
    display: block;
    margin-bottom: 6px;
}

.admin-club-edit-fields input {
    display: block;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.admin-club-edit-section {
    margin-top: 8px;
    padding-top: 16px;
    border-top: 1px solid #e2e8f0;
}

.admin-club-edit-section h3,
.admin-club-edit-account h3 {
    margin: 0;
    color: #102a43;
    font-size: 18px;
}

.admin-club-edit-account {
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px solid #e2e8f0;
}

.admin-club-edit-account-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 14px;
}

.admin-club-edit-account-grid p {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    min-width: 0;
    margin: 0;
    overflow-wrap: anywhere;
    font-size: 14px;
}

.admin-club-edit-account-grid strong {
    color: #334e68;
}

.admin-club-edit-account-grid .badge {
    align-self: flex-start;
}

.admin-club-edit-account [hidden] {
    display: none !important;
}

.admin-club-edit-password {
    margin-top: 20px;
    border: 1px solid #d9e2ec;
    border-radius: 10px;
    overflow: hidden;
}

.admin-club-edit-password[hidden] {
    display: none !important;
}

.admin-club-edit-password > .user-password-card-summary::after {
    right: 16px;
}

.admin-club-edit-modal-footer {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 0 0 auto;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.admin-club-edit-modal-footer > [data-close-club-edit] {
    margin-left: auto;
}

.admin-club-edit-modal-footer > button {
    max-width: 280px;
}

@media screen and (max-width: 700px) {
    .admin-club-edit-modal {
        padding: 10px;
    }

    .admin-club-edit-modal-box {
        width: 100%;
        max-height: calc(100dvh - 20px);
    }

    .admin-club-edit-modal-body {
        padding: 16px;
    }

    .admin-club-edit-fields {
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
    }

    .admin-club-edit-account-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .admin-club-edit-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: center;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .admin-club-edit-modal-footer > #edit-club-toggle,
    .admin-club-edit-modal-footer > [data-close-club-edit] {
        width: 100%;
        min-width: 0;
        max-width: none;
        margin: 0;
        justify-self: stretch;
        white-space: normal;
        text-align: center;
    }

    .admin-club-edit-modal-footer > #edit-club-toggle {
        grid-column: 1;
        grid-row: 1;
    }

    .admin-club-edit-modal-footer > [data-close-club-edit] {
        grid-column: 2;
        grid-row: 1;
    }

    .admin-club-edit-modal-footer > button[value="edit_club_save"] {
        grid-column: 1 / -1;
        grid-row: 2;
        justify-self: center;
        width: 100%;
        max-width: 350px;
        min-width: 0;
        margin: 0;
        white-space: normal;
        text-align: center;
    }
}

@media screen and (max-width: 380px) {
    .admin-club-edit-modal-footer {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .admin-club-edit-modal-footer > button {
        padding: 8px;
        font-size: 13px;
    }
}

/* =========================================================
   ADMIN CHAMPIONNATS - MODALE DE CREATION
   ========================================================= */

/* =========================================================
   ADMIN CHAMPIONNATS - SEPARATION DE L'EN-TETE
   ========================================================= */

/* Conserver le style standard des en-têtes Espace FDO */

.championship-page-header {
    margin-bottom: 0;
    padding-bottom: 20px;
    border-bottom: 1px solid #d9e2ec;
}

/* Espace entre la séparation et les filtres */

.championship-list-section {
    margin-top: 20px;
}

/* Titre conservé uniquement dans les archives */

.championship-list-section > .section-title-row {
    margin-bottom: 18px;
}

.championship-list-section > .section-title-row h2 {
    margin: 0 0 7px;
    color: #243b53;
    font-size: 21px;
    font-weight: 800;
}

.championship-list-section > .section-title-row .muted-text {
    margin: 0;
    color: #64748b;
    font-size: 13px;
    line-height: 1.5;
}

@media (max-width: 700px) {
    .championship-page-header {
        padding-bottom: 16px;
    }

    .championship-list-section {
        margin-top: 16px;
    }

    .championship-list-section > .section-title-row h2 {
        font-size: 19px;
    }
}

.championship-create-modal-box {
    display: flex;
    flex-direction: column;
    width: min(780px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 40px);
}

.championship-modal-form {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    margin: 0;
    padding: 0;
}

.championship-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

/* Espacement des cartes de création */

.championship-create-modal
.championship-create-group + .championship-create-group {
    margin-top: 14px;
}

.championship-create-modal .championship-create-group {
    padding: 16px;
    border-color: #d9e2ec;
    border-radius: 12px;
    background: #f8fafc;
}

.championship-create-modal .championship-create-group-title {
    margin-bottom: 12px;
    color: #334e68;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.04em;
}

.championship-create-modal .championship-create-fields {
    gap: 12px;
}

@media (max-width: 700px) {
    .championship-create-modal
    .championship-create-group + .championship-create-group {
        margin-top: 12px;
    }

    .championship-create-modal .championship-create-group {
        padding: 13px;
    }
}

.championship-modal-body > .alert {
    margin-bottom: 16px;
}

.championship-modal-footer {
    display: flex;
    flex: 0 0 auto;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.championship-modal-footer > .btn {
    flex: 0 1 auto;
    width: auto;
    max-width: 280px;
    margin: 0;
    text-align: center;
    white-space: normal;
}

@media screen and (max-width: 700px) {
    .category-modal.championship-create-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.championship-create-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .championship-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .championship-modal-body .championship-create-fields {
        grid-template-columns: minmax(0, 1fr);
    }

    .category-modal.championship-create-modal .championship-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.championship-create-modal .championship-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        white-space: normal;
        text-align: center;
    }
}

@media screen and (min-width: 701px) and (max-width: 1000px) {
    .category-modal.championship-create-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.championship-create-modal-box {
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
    }

    .category-modal.championship-create-modal .championship-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
        gap: 10px;
        padding: 12px 16px;
    }

    .category-modal.championship-create-modal .championship-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        margin: 0;
        padding: 10px 8px;
        justify-content: center;
        white-space: normal;
        text-align: center;
    }
}

@media screen and (max-width: 380px) {
    .championship-modal-footer {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .championship-modal-footer > .btn {
        padding: 8px;
        font-size: 13px;
    }
}

/* =========================================================
   ADMIN CHAMPIONNAT - MODALE DE MODIFICATION
   ========================================================= */

.championship-edit-modal-box {
    display: flex;
    flex-direction: column;
    width: min(780px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 40px);
}

.championship-edit-modal-form {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    margin: 0;
    padding: 0;
}

.championship-edit-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.championship-edit-modal-body > .alert {
    margin-bottom: 16px;
}

/* Cartes identiques à la modale de création */

.championship-edit-modal
.championship-create-group + .championship-create-group {
    margin-top: 14px;
}

.championship-edit-modal .championship-create-group {
    padding: 16px;
    border-color: #d9e2ec;
    border-radius: 12px;
    background: #f8fafc;
}

.championship-edit-modal .championship-create-group-title {
    margin-bottom: 12px;
    color: #334e68;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.04em;
}

.championship-edit-modal .championship-create-fields {
    gap: 12px;
}

/* Pied de modale fixe */

.championship-edit-modal-footer {
    display: flex;
    flex: 0 0 auto;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.championship-edit-modal-footer > .btn {
    flex: 0 1 auto;
    width: auto;
    max-width: 280px;
    margin: 0;
    text-align: center;
    white-space: normal;
}

/* Adaptation mobile */

/* Adaptation smartphone */

@media screen and (max-width: 700px) {
    .category-modal.championship-edit-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.championship-edit-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .championship-edit-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .championship-edit-modal
    .championship-create-group + .championship-create-group {
        margin-top: 12px;
    }

    .championship-edit-modal .championship-create-group {
        padding: 13px;
    }

    .championship-edit-modal .championship-create-fields {
        grid-template-columns: minmax(0, 1fr);
    }

    .category-modal.championship-edit-modal .championship-edit-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.championship-edit-modal .championship-edit-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        white-space: normal;
        text-align: center;
    }
}

/* Paysage et tablette : boutons compacts à droite */

@media screen and (min-width: 701px) and (max-width: 1000px) {
    .category-modal.championship-edit-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.championship-edit-modal-box {
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
    }

    .category-modal.championship-edit-modal .championship-edit-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
        gap: 10px;
        padding: 12px 16px;
    }

    .category-modal.championship-edit-modal .championship-edit-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        margin: 0;
        padding: 10px 8px;
        justify-content: center;
        white-space: normal;
        text-align: center;
    }
}

@media screen and (max-width: 380px) {
    .championship-edit-modal-footer {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .championship-edit-modal-footer > .btn {
        padding: 8px;
        font-size: 13px;
    }
}

/* =========================================================
   ADMIN DANSEURS - MODALE DE CREATION
   ========================================================= */

/* Stabilisation des textes sur iPhone après rotation */
.category-modal.admin-danseur-create-modal,
.category-modal.admin-danseur-edit-modal,
.category-modal.admin-users-modal,
.category-modal.admin-user-edit-modal,
.category-modal.championship-create-modal,
.category-modal.championship-edit-modal,
.category-modal.bareme-modal,
.category-modal.official-document-modal,
.category-modal.federal-function-modal,
.category-modal.club-danseur-create-modal,
.category-modal.club-danseur-edit-modal,
.category-modal[data-presences-modal],
.category-modal.club-document-upload-modal,
.category-modal.federal-music-modal,
.category-modal[data-category-modal="categorie"] {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

.admin-danseur-create-modal-box {
    display: flex;
    flex-direction: column;
    width: min(680px, 100%);
    height: auto;
    max-height: calc(100dvh - 40px);
}

.admin-danseur-modal-form {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    margin: 0;
    padding: 0;
}

.admin-danseur-create-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    background: #ffffff;
    overscroll-behavior: contain;
}

.admin-danseur-create-modal-body > .alert {
    margin-bottom: 16px;
}

.admin-danseur-create-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 16px;
}

.admin-danseur-create-fields > div {
    min-width: 0;
}

.admin-danseur-create-fields > .full {
    grid-column: 1 / -1;
}

.admin-danseur-create-fields label {
    display: block;
    margin-bottom: 6px;
}

.admin-danseur-create-fields input,
.admin-danseur-create-fields select {
    display: block;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
}

.admin-danseur-create-fields input[type="date"] {
    display: block;
    -webkit-appearance: none;
    appearance: none;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    height: 40px;
    min-height: 40px;
    max-height: 40px;
    margin: 0;
    padding: 8px 10px;
    font-size: 16px;
    line-height: 22px;
    text-align: left;
    overflow: hidden;
}

.admin-danseur-create-fields input[type="date"]::-webkit-date-and-time-value {
    min-height: 22px;
    margin: 0;
    padding: 0;
    text-align: left;
}

.admin-danseur-create-modal-footer {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.admin-danseur-create-modal-footer > .btn {
    flex: 0 1 auto;
    width: auto;
    max-width: 280px;
    min-width: 0;
    margin: 0;
    text-align: center;
    white-space: normal;
}

@media screen and (max-width: 700px) {
    .category-modal.admin-danseur-create-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.admin-danseur-create-modal-box {
        width: 100%;
        height: auto;
        max-height: calc(100dvh - 20px);
        min-height: 0;
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .admin-danseur-modal-form {
        flex: 0 1 auto;
        min-height: 0;
    }

    .admin-danseur-create-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .admin-danseur-create-fields {
        grid-template-columns: minmax(0, 1fr);
        gap: 12px;
    }

    .category-modal.admin-danseur-create-modal .admin-danseur-create-modal-footer {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        justify-items: stretch;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.admin-danseur-create-modal .admin-danseur-create-modal-footer > .btn {
        display: inline-flex;
        flex: none !important;
        width: 100% !important;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0 !important;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        white-space: normal;
        text-align: center;
    }
}

@media screen and (min-width: 501px) and (max-width: 700px) {
    .category-modal.admin-danseur-create-modal .admin-danseur-create-modal-footer {
        grid-template-columns: repeat(2, minmax(0, 170px));
    }
}

@media screen and (max-width: 380px) {
    .admin-danseur-create-modal-footer {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .admin-danseur-create-modal-footer > .btn {
        padding: 8px;
        font-size: 13px;
    }
}

/* =========================================================
   ADMIN DANSEURS - MODALE DE MODIFICATION
   ========================================================= */

.admin-danseur-edit-modal-box {
    display: flex;
    flex-direction: column;
    width: min(680px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 40px);
}

.admin-danseur-edit-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    background: #ffffff;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.admin-danseur-edit-modal-body > .alert {
    margin-bottom: 16px;
}

.admin-danseur-edit-form {
    margin: 0;
    min-width: 0;
}

.admin-danseur-edit-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 16px;
}

.admin-danseur-edit-fields > div {
    min-width: 0;
}

.admin-danseur-edit-fields > .full {
    grid-column: 1 / -1;
}

.admin-danseur-edit-fields label {
    display: block;
    margin-bottom: 6px;
}

.admin-danseur-edit-fields input,
.admin-danseur-edit-fields select {
    display: block;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
}

/* Date de naissance : compatibilité Safari iOS */

.admin-danseur-edit-fields input[type="date"] {
    display: block;
    -webkit-appearance: none;
    appearance: none;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    height: 40px;
    min-height: 40px;
    max-height: 40px;
    margin: 0;
    padding: 8px 10px;
    font-size: 16px;
    line-height: 22px;
    text-align: left;
    overflow: hidden;
}

.admin-danseur-edit-fields input[type="date"]::-webkit-date-and-time-value {
    min-height: 22px;
    margin: 0;
    padding: 0;
    text-align: left;
}

/* Vérification de l'identité */

.admin-danseur-identity-section {
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px solid #d9e2ec;
}

.admin-danseur-identity-section h3 {
    margin: 0 0 14px;
    color: #102a43;
    font-size: 18px;
}

.admin-danseur-identity-section p {
    margin: 0 0 10px;
}

.admin-danseur-identity-section .muted-text {
    margin-top: -4px;
}

.admin-danseur-identity-section form {
    margin-top: 14px;
}

.admin-danseur-identity-section form[hidden] {
    display: none !important;
}

/* Pied de modale */

.admin-danseur-edit-modal-footer {
    display: flex;
    flex: 0 0 auto;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.admin-danseur-edit-modal-footer > .btn {
    flex: 0 1 auto;
    width: auto;
    max-width: 280px;
    min-width: 0;
    margin: 0;
    text-align: center;
    white-space: normal;
}

/* Smartphone et tablette */

@media screen and (max-width: 700px) {
    .category-modal.admin-danseur-edit-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.admin-danseur-edit-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .admin-danseur-edit-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .admin-danseur-edit-fields {
        grid-template-columns: minmax(0, 1fr);
        gap: 12px;
    }

    .category-modal.admin-danseur-edit-modal .admin-danseur-edit-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        justify-items: stretch;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.admin-danseur-edit-modal .admin-danseur-edit-modal-footer > .btn {
        display: inline-flex;
        flex: none;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        white-space: normal;
        text-align: center;
    }
}

/* Mode paysage : boutons compacts à droite */

@media screen and (min-width: 501px) and (max-width: 700px) {
    .category-modal.admin-danseur-edit-modal .admin-danseur-edit-modal-footer {
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
    }
}

@media screen and (max-width: 380px) {
    .admin-danseur-edit-modal-footer > .btn {
        padding: 8px;
        font-size: 13px;
    }
}/* =========================================================
   ADMIN CATEGORIES - REFERENTIELS
   ========================================================= */

.category-references-section {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin: 18px 0;
    padding: 14px 18px;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    background: #ffffff;
}

.category-references-heading {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.category-references-heading strong {
    font-size: 15px;
}

.category-references-heading span {
    color: #627d98;
    font-size: 12px;
}

.category-references-section .category-reference-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}

.category-references-section .category-reference-actions .btn {
    width: auto;
    min-width: 100px;
    max-width: none;
    min-height: 40px;
    padding: 8px 14px;
    white-space: normal;
}

/* =========================================================
   ADMIN CATEGORIES - PIED DE MODALE PRINCIPAL
   ========================================================= */

.category-unified-footer {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.category-unified-footer-left {
    flex: 0 0 auto;
}

.category-unified-footer-left .inline-form {
    margin: 0;
}

.category-unified-footer-right {
    display: flex;
    justify-content: flex-end;
    min-width: 0;
    flex: 1 1 auto;
}

.category-unified-footer .category-editor-actions {
    position: static;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
}

.category-unified-footer .btn,
.category-unified-footer button {
    width: auto;
    min-width: 0;
    max-width: 260px;
    margin: 0;
    white-space: normal;
    text-align: center;
}

/* =========================================================
   ADMIN CATEGORIES - REFERENTIELS : ORDRE DES ACTIONS
   ========================================================= */

.category-modal-form-actions {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
}

.category-modal-form-actions > button[value^="toggle_"] {
    order: 0;
    margin-right: auto;
}

.category-modal-form-actions > a.btn-secondary {
    order: 1;
}

.category-modal-form-actions > button[value^="save_"] {
    order: 2;
}

/* =========================================================
   ADMIN CATEGORIES - RESPONSIVE
   ========================================================= */

@media screen and (max-width: 700px) {
    .category-page-heading {
        align-items: stretch;
    }

    .category-page-heading > .btn {
        align-self: center;
        width: auto;
        max-width: 260px;
    }

    .category-references-section {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
        padding: 14px;
    }

    .category-references-heading {
        text-align: center;
    }

    .category-references-section .category-reference-actions {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        align-items: stretch;
        justify-items: stretch;
        gap: 8px;
        width: 100%;
        margin: 0;
    }

    .category-references-section .category-reference-actions > .btn {
        display: flex;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        box-sizing: border-box;
        width: 100% !important;
        min-width: 0;
        max-width: none;
        min-height: 44px;
        height: 100%;
        margin: 0 !important;
        padding: 8px 5px;
        font-size: 12px;
        font-weight: 600;
        line-height: 1.3;
        text-align: center;
        white-space: normal;
        overflow-wrap: break-word;
    }

    .category-unified-footer {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
        padding: 12px 16px;
    }

    .category-unified-footer-left {
        display: flex;
        justify-content: center;
    }

    .category-unified-footer-left:empty {
        display: none;
    }

    /* Modification d'une catégorie : trois actions en portrait.
       Première ligne : Désactiver / Annuler.
       Deuxième ligne : Enregistrer sur toute la largeur. */

    .category-unified-footer:has(.category-status-toggle) {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
        align-items: stretch;
    }

    .category-unified-footer:has(.category-status-toggle)
    .category-unified-footer-left {
        display: flex;
        grid-column: 1;
        grid-row: 1;
        width: 100%;
        min-width: 0;
    }

    .category-unified-footer:has(.category-status-toggle)
    .category-unified-footer-left .inline-form {
        display: flex;
        width: 100%;
        min-width: 0;
    }

    .category-unified-footer:has(.category-status-toggle)
    .category-unified-footer-right,
    .category-unified-footer:has(.category-status-toggle)
    .category-editor-actions {
        display: contents;
    }

    .category-unified-footer:has(.category-status-toggle)
    .category-status-toggle {
        width: 100%;
        max-width: none;
        min-width: 0;
        margin: 0;
        white-space: normal;
    }

    .category-unified-footer:has(.category-status-toggle)
    .category-editor-actions > a.btn-secondary {
        grid-column: 2;
        grid-row: 1;
        width: 100%;
        max-width: none;
        min-width: 0;
        margin: 0;
    }

    .category-unified-footer:has(.category-status-toggle)
    .category-editor-actions > button[type="submit"] {
        grid-column: 1 / -1;
        grid-row: 2;
        width: 100%;
        max-width: none;
        min-width: 0;
        min-height: 44px;
        margin: 0;
        white-space: normal;
        text-align: center;
    }

    .category-unified-footer-right {
        width: 100%;
        justify-content: center;
    }

    .category-unified-footer .category-editor-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: center;
        width: 100%;
        gap: 10px;
    }

    .category-unified-footer .category-editor-actions > * {
        width: 100%;
        max-width: none;
        margin: 0;
        text-align: center;
    }

    .category-modal-form-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: center;
        gap: 10px;
    }

    .category-modal-form-actions > button[value^="toggle_"] {
        grid-column: 1 / -1;
        justify-self: center;
        width: 100%;
        max-width: 220px;
        margin: 0;
    }

    .category-modal-form-actions > a.btn-secondary {
        grid-column: 1;
        width: 100%;
        max-width: none;
        margin: 0;
    }

    .category-modal-form-actions > button[value^="save_"] {
        grid-column: 2;
        width: 100%;
        max-width: none;
        margin: 0;
    }

    .category-modal-form-actions > button[value^="save_"]:only-child {
        grid-column: 1 / -1;
        justify-self: center;
        max-width: 220px;
    }
}

@media screen and (max-width: 380px) {
    .category-unified-footer .category-editor-actions,
    .category-modal-form-actions {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .category-unified-footer .btn,
    .category-unified-footer button,
    .category-modal-form-actions .btn,
    .category-modal-form-actions button {
        font-size: 12px;
        padding: 8px;
    }
}

/* =========================================================
   ADMIN - DOCUMENTS OFFICIELS : AJOUT EN MODALE
   ========================================================= */

.official-documents-page-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    width: 100%;
}

.official-documents-page-heading > div {
    min-width: 0;
}

.official-documents-page-heading > .btn {
    flex: 0 0 auto;
    width: auto;
    max-width: 280px;
    margin: 0;
}

.official-document-modal-box {
    display: flex;
    flex-direction: column;
    width: min(620px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 40px);
}

.official-document-modal-form {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    margin: 0;
}

.official-document-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    background: #ffffff;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.official-document-modal-body > .alert {
    margin-bottom: 16px;
}

.official-document-fields {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 16px;
}

.official-document-fields > div {
    min-width: 0;
}

.official-document-fields label {
    display: block;
    margin-bottom: 6px;
}

.official-document-fields input,
.official-document-fields textarea {
    display: block;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.official-document-fields input[type="file"] {
    height: auto;
    padding: 10px;
}

.official-document-fields .muted-text {
    margin: 6px 0 0;
    font-size: 12px;
}

.official-document-modal-footer {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.official-document-modal-footer > .btn {
    width: auto;
    min-width: 0;
    max-width: 240px;
    margin: 0;
    text-align: center;
    white-space: normal;
}

@media screen and (max-width: 700px) {
    .official-documents-page-heading {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }

    .official-documents-page-heading > .btn {
        align-self: center;
        width: auto;
        max-width: min(280px, 100%);
    }

    .category-modal.official-document-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.official-document-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .category-modal.official-document-modal .official-document-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .category-modal.official-document-modal .official-document-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.official-document-modal .official-document-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        white-space: normal;
        text-align: center;
    }
}

@media screen and (max-width: 380px) {
    .official-document-modal-footer {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .official-document-modal-footer > .btn {
        padding: 8px;
        font-size: 12px;
    }
}

/* Paysage et tablette : boutons compacts à droite */

@media screen and (min-width: 701px) and (max-width: 1000px) {
    .category-modal.official-document-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.official-document-modal-box {
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
    }

    .category-modal.official-document-modal .official-document-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
        align-items: stretch;
        gap: 10px;
        padding: 12px 16px;
    }

    .category-modal.official-document-modal .official-document-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        white-space: normal;
        text-align: center;
    }
}

/* =========================================================
   MUSIQUES FEDERALES - MODALE D'AJOUT
   ========================================================= */

.federal-music-page-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    width: 100%;
}

.federal-music-page-heading > div {
    min-width: 0;
}

.federal-music-page-heading > .btn {
    flex: 0 0 auto;
    width: auto;
    max-width: 280px;
    margin: 0;
}

.federal-music-modal-box {
    display: flex;
    flex-direction: column;
    width: min(700px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 40px);
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    overflow: hidden;
    background: #ffffff;
}

.federal-music-modal-form {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    gap: 0;
    min-height: 0;
    margin: 0;
}

.federal-music-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    background: #ffffff;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.federal-music-modal-body .federal-upload-fields {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
}

.federal-music-modal-body select,
.federal-music-modal-body input[type="file"] {
    display: block;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.federal-music-modal-body input[type="file"] {
    height: auto;
    padding: 10px;
}

.federal-music-modal-footer {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.federal-music-modal-footer > .btn {
    width: auto;
    min-width: 0;
    max-width: 250px;
    margin: 0;
    white-space: normal;
    text-align: center;
}

@media screen and (max-width: 700px) {
    .federal-music-page-heading {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }

    .federal-music-page-heading > .btn {
        align-self: center;
        width: auto;
        max-width: min(280px, 100%);
    }

    .category-modal.federal-music-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.federal-music-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
        overflow: hidden;
    }

    .category-modal.federal-music-modal .federal-music-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .category-modal.federal-music-modal .federal-music-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: stretch;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.federal-music-modal .federal-music-modal-footer > .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        text-align: center;
        white-space: normal;
    }
}

@media screen and (max-width: 380px) {
    .federal-music-modal-footer {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .federal-music-modal-footer > .btn {
        padding: 8px;
        font-size: 12px;
    }
}

/* =========================================================
   ADMIN - FONCTIONS FEDERALES : CREATION EN MODALE
   ========================================================= */

.federal-function-page-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    width: 100%;
}

.federal-function-page-heading > div {
    min-width: 0;
}

.federal-function-page-heading > .btn {
    flex: 0 0 auto;
    width: auto;
    max-width: 280px;
    margin: 0;
}

.federal-function-modal-box {
    display: flex;
    flex-direction: column;
    width: min(580px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 40px);
}

.federal-function-modal-form {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    margin: 0;
}

.federal-function-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    background: #ffffff;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.federal-function-modal-body > .alert {
    margin-bottom: 16px;
}

.federal-function-modal-field label {
    display: block;
    margin-bottom: 6px;
}

.federal-function-modal-field input {
    display: block;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.federal-function-modal-footer {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.federal-function-modal-footer > .btn {
    width: auto;
    min-width: 0;
    max-width: 250px;
    margin: 0;
    white-space: normal;
    text-align: center;
}

@media screen and (max-width: 700px) {
    .federal-function-page-heading {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }

    .federal-function-page-heading > .btn {
        align-self: center;
        width: auto;
        max-width: min(280px, 100%);
    }

    .category-modal.federal-function-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.federal-function-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .category-modal.federal-function-modal .federal-function-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .category-modal.federal-function-modal .federal-function-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        justify-items: stretch;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        max-width: none;
        margin: 0;
        padding: 12px 16px;
        box-sizing: border-box;
    }

    .category-modal.federal-function-modal .federal-function-modal-footer > .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        text-align: center;
        white-space: normal;
    }
}

@media screen and (max-width: 380px) {
    .category-modal.federal-function-modal .federal-function-modal-footer {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .category-modal.federal-function-modal .federal-function-modal-footer > .btn {
        padding: 8px;
        font-size: 12px;
    }
}

/* Paysage et tablette : boutons compacts à droite */

@media screen and (min-width: 701px) and (max-width: 1000px) {
    .category-modal.federal-function-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.federal-function-modal-box {
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
    }

    .category-modal.federal-function-modal .federal-function-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
        align-items: stretch;
        gap: 10px;
        padding: 12px 16px;
    }

    .category-modal.federal-function-modal .federal-function-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        white-space: normal;
        text-align: center;
    }
}
/* =========================================================
   FONCTIONS FEDERALES - BOUTON SUPPRIMER COMPACT
   ========================================================= */

.admin-federal-functions-table .actions-column
form:has(button.btn-delete-icon) {
    flex: 0 0 36px !important;
    width: 36px !important;
    min-width: 36px !important;
    max-width: 36px !important;
    margin: 0 !important;
}

.admin-federal-functions-table .actions-column
button.btn-delete-icon {
    box-sizing: border-box;
    display: inline-flex;
    flex: 0 0 36px !important;
    align-items: center;
    justify-content: center;
    width: 36px !important;
    min-width: 36px !important;
    max-width: 36px !important;
    height: 36px !important;
    min-height: 36px !important;
    max-height: 36px !important;
    padding: 0 !important;
    margin: 0 !important;
}

@media (max-width: 900px) {
    .admin-federal-functions-table .actions-column
    form:has(button.btn-delete-icon) {
        flex-basis: 40px !important;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
    }

    .admin-federal-functions-table .actions-column
    button.btn-delete-icon {
        flex-basis: 40px !important;
        width: 40px !important;
        min-width: 40px !important;
        max-width: 40px !important;
        height: 40px !important;
        min-height: 40px !important;
        max-height: 40px !important;
    }
}

/* =========================================================
   FONCTIONS FEDERALES - CREATION / MODIFICATION
   ========================================================= */

.federal-function-modal-box {
    width: min(680px, 100%);
}

.federal-function-holder-section {
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px solid #d9e2ec;
}

.federal-function-holder-section h3 {
    margin: 0 0 12px;
    color: #102a43;
    font-size: 18px;
}

.federal-function-holder-section > .muted-text {
    margin: 0 0 16px;
}

.federal-function-modal-field + .federal-function-modal-field {
    margin-top: 16px;
}

.federal-function-holder-section > .federal-function-modal-field {
    margin-bottom: 16px;
}

.federal-function-modal-field select,
.federal-function-modal-field input {
    display: block;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.federal-function-holder-manual {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.federal-function-holder-manual .federal-function-modal-field {
    min-width: 0;
    margin: 0;
}

.federal-function-holder-section[hidden],
.federal-function-holder-section [hidden] {
    display: none !important;
}

@media screen and (max-width: 700px) {
    .federal-function-holder-manual {
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
    }

    .federal-function-holder-section {
        margin-top: 18px;
        padding-top: 16px;
    }
}

/* =========================================================
   ADMIN - BAREME POINTS : CREATION / MODIFICATION
   ========================================================= */

.bareme-page-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    width: 100%;
}

.bareme-page-heading > div {
    min-width: 0;
}

.bareme-page-heading > .btn {
    flex: 0 0 auto;
    width: auto;
    max-width: 280px;
    margin: 0;
}

.bareme-modal-box {
    display: flex;
    flex-direction: column;
    width: min(650px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 40px);
}

.bareme-modal-form {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    margin: 0;
}

.bareme-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    background: #ffffff;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.bareme-modal-body > .alert {
    margin-bottom: 16px;
}

.bareme-modal-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    align-items: start;
}

.bareme-modal-fields > div {
    min-width: 0;
}

.bareme-modal-fields label {
    display: block;
    margin-bottom: 6px;
}

.bareme-modal-fields input {
    display: block;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.bareme-modal-footer {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.bareme-modal-footer > .btn {
    width: auto;
    min-width: 0;
    max-width: 250px;
    margin: 0;
    white-space: normal;
    text-align: center;
}

@media screen and (max-width: 700px) {
    .bareme-page-heading {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }

    .bareme-page-heading > .btn {
        align-self: center;
        width: auto;
        max-width: min(280px, 100%);
    }

    .category-modal.bareme-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.bareme-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .category-modal.bareme-modal .bareme-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .bareme-modal-fields {
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
    }

    .category-modal.bareme-modal .bareme-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        justify-items: stretch;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        max-width: none;
        margin: 0;
        padding: 12px 16px;
        box-sizing: border-box;
    }

    .category-modal.bareme-modal .bareme-modal-footer > .btn {
        display: inline-flex;
        flex: 0 1 auto;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        white-space: normal;
        text-align: center;
    }
}

@media screen and (max-width: 380px) {
    .category-modal.bareme-modal .bareme-modal-footer > .btn {
        padding: 8px;
        font-size: 12px;
    }
}

/* Paysage et tablette : boutons compacts à droite */

@media screen and (min-width: 701px) and (max-width: 1000px) {
    .category-modal.bareme-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.bareme-modal-box {
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
    }

    .category-modal.bareme-modal .bareme-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
        gap: 10px;
        padding: 12px 16px;
    }

    .category-modal.bareme-modal .bareme-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        margin: 0;
        padding: 10px 8px;
        justify-content: center;
        white-space: normal;
        text-align: center;
    }
}

/* =========================================================
   CLUB - MON CLUB : DOCUMENTS EN MODALE
   ========================================================= */

.club-documents-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
}

.club-documents-card-header h2 {
    margin: 0;
}

.club-documents-card-header > .btn {
    flex: 0 0 auto;
    width: auto;
    min-width: 0;
    max-width: 270px;
    margin: 0;
    text-align: center;
    white-space: normal;
}

.club-document-upload-modal-box {
    display: flex;
    flex-direction: column;
    width: min(620px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 40px);
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    overflow: hidden;
    background: #ffffff;
}

.club-document-upload-modal-form {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    margin: 0;
}

.club-document-upload-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 20px;
    background: #ffffff;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.club-document-upload-fields {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 16px;
}

.club-document-upload-fields > div {
    min-width: 0;
}

.club-document-upload-fields label {
    display: block;
    margin-bottom: 6px;
}

.club-document-upload-fields input,
.club-document-upload-fields select {
    display: block;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.club-document-upload-fields input[type="file"] {
    height: auto;
    padding: 10px;
}

.club-document-upload-modal-footer {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #ffffff;
}

.club-document-upload-modal-footer > .btn {
    width: auto;
    min-width: 0;
    max-width: 260px;
    margin: 0;
    text-align: center;
    white-space: normal;
}

/* =========================================================
   CLUB - DOSSARDS : EN-TETE INTEGRE A LA LISTE
   ========================================================= */

.dossards-list-card .dossards-integrated-header {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    width: 100%;
    margin-bottom: 18px;
}

.dossards-integrated-header h2 {
    margin: 0;
    flex: 0 0 auto;
}

.dossards-integrated-header .dossard-print-actions {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 0 auto;
}

.dossards-integrated-header .dossard-print-actions .btn {
    width: auto;
    min-width: 0;
    max-width: 240px;
    margin: 0;
    text-align: center;
    white-space: normal;
}

@media screen and (max-width: 700px) {

    .club-documents-card-header {
        flex-direction: column;
        align-items: center;
        gap: 12px;
    }

    .club-documents-card-header h2 {
        align-self: stretch;
        text-align: left;
    }

    .club-documents-card-header > .btn {
        align-self: center;
        width: auto;
        max-width: 100%;
    }

    .category-modal.club-document-upload-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.club-document-upload-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
        overflow: hidden;
    }

    .category-modal.club-document-upload-modal .club-document-upload-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .category-modal.club-document-upload-modal .club-document-upload-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        max-width: none;
        margin: 0;
        padding: 12px 16px;
        box-sizing: border-box;
    }

    .category-modal.club-document-upload-modal .club-document-upload-modal-footer > .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        text-align: center;
        white-space: normal;
    }

    .dossards-list-card .dossards-integrated-header {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }

    .dossards-integrated-header h2 {
        text-align: left;
    }

    .dossards-integrated-header .dossard-print-actions {
        display: grid;
        grid-template-columns: minmax(0, 1fr) max-content;
        align-items: stretch;
        justify-content: center;
        gap: 8px;
        width: 100%;
        max-width: 380px;
        margin: 0 auto;
    }

    .dossards-integrated-header .dossard-print-actions .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 100%;
        min-width: 0;
        max-width: none;
        margin: 0;
        padding: 8px;
        font-size: 12px;
        text-align: center;
        white-space: nowrap;
    }
}

@media screen and (max-width: 380px) {
    .club-document-upload-modal-footer > .btn,
    .dossards-integrated-header .dossard-print-actions .btn {
        padding: 8px;
        font-size: 12px;
    }
}

/* Paysage et tablette : boutons compacts à droite */

@media screen and (min-width: 701px) and (max-width: 1000px) {
    .category-modal.club-document-upload-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.club-document-upload-modal-box {
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
    }

    .category-modal.club-document-upload-modal .club-document-upload-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.club-document-upload-modal .club-document-upload-modal-footer > .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 100%;
        min-width: 0;
        max-width: none;
        margin: 0;
        padding: 10px 8px;
        text-align: center;
        white-space: normal;
    }
}

/* =========================================================
   CLUB DANSEURS - MODALE DE CREATION
   ========================================================= */

.club-danseur-create-modal-box {
    display: flex;
    flex-direction: column;
    width: min(680px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 40px);
}

.club-danseur-create-modal-form {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    margin: 0;
}

.club-danseur-create-modal-body {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding: 20px;
    background: #fff;
}

.club-danseur-create-modal-body .alert {
    margin-bottom: 16px;
}

.club-danseur-create-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 16px;
}

.club-danseur-create-fields > div {
    min-width: 0;
}

.club-danseur-create-fields > .full {
    grid-column: 1 / -1;
}

.club-danseur-create-fields label:not(.checkbox-line) {
    display: block;
    margin-bottom: 6px;
}

.club-danseur-create-fields input:not([type="checkbox"]),
.club-danseur-create-fields select {
    display: block;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

/* Date de naissance : correction Safari iOS */

.club-danseur-create-fields input[type="date"] {
    display: block;
    -webkit-appearance: none;
    appearance: none;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    height: 40px;
    min-height: 40px;
    max-height: 40px;
    margin: 0;
    padding: 8px 10px;
    font-size: 16px;
    line-height: 22px;
    text-align: left;
    overflow: hidden;
}

.club-danseur-create-fields input[type="date"]::-webkit-date-and-time-value {
    min-height: 22px;
    margin: 0;
    padding: 0;
    text-align: left;
}

.club-danseur-create-fields .checkbox-line {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 8px 0;
}

.club-danseur-create-fields .checkbox-line input {
    flex: 0 0 auto;
    width: auto;
    margin: 0;
}

.club-create-formation-fields[hidden] {
    display: none !important;
}

.club-danseur-create-modal-footer {
    display: flex;
    flex: 0 0 auto;
    justify-content: flex-end;
    align-items: center;
    gap: 10px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #fff;
}

.club-danseur-create-modal-footer > .btn {
    flex: 0 1 auto;
    width: auto;
    min-width: 0;
    max-width: 260px;
    margin: 0;
    white-space: normal;
    text-align: center;
}

@media screen and (max-width: 700px) {
    .category-modal.club-danseur-create-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.club-danseur-create-modal-box {
        width: 100%;
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        border: 1px solid #d9e2ec;
        border-radius: 12px;
    }

    .club-danseur-create-modal-body {
        flex: 0 1 auto;
        min-height: 0;
        overflow-y: auto;
        padding: 16px;
    }

    .club-danseur-create-fields {
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
    }

    .category-modal.club-danseur-create-modal .club-danseur-create-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: center;
        align-items: stretch;
        gap: 10px;
        width: 100%;
        max-width: none;
        margin: 0;
        padding: 12px 16px;
        box-sizing: border-box;
    }

    .category-modal.club-danseur-create-modal .club-danseur-create-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        text-align: center;
        white-space: normal;
    }
}

@media screen and (max-width: 380px) {
    .category-modal.club-danseur-create-modal .club-danseur-create-modal-footer > .btn {
        padding: 8px;
        font-size: 12px;
    }
}

/* Paysage et tablette : boutons compacts à droite */

@media screen and (min-width: 701px) and (max-width: 1000px) {
    .category-modal.club-danseur-create-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.club-danseur-create-modal-box {
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
    }

    .category-modal.club-danseur-create-modal .club-danseur-create-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 170px));
        justify-content: end;
        align-items: stretch;
        gap: 10px;
        padding: 12px 16px;
    }

    .category-modal.club-danseur-create-modal .club-danseur-create-modal-footer > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        white-space: normal;
        text-align: center;
    }
}
/* =========================================================
   CLUB DANSEURS - MODALE DE MODIFICATION
   ========================================================= */

.club-danseur-edit-modal-box {
    display: flex;
    flex-direction: column;
    width: min(680px, 100%);
    max-height: calc(100dvh - 40px);
    border: 1px solid #d9e2ec;
    border-radius: 12px;
    overflow: hidden;
    background: #ffffff;
}

.club-danseur-edit-modal-form {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    margin: 0;
}

.club-danseur-edit-modal-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 20px;
    background: #fff;
}

.club-danseur-edit-modal-body > .alert {
    margin-bottom: 16px;
}

.club-danseur-edit-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 16px;
}

.club-danseur-edit-fields > div {
    min-width: 0;
}

.club-danseur-edit-fields label {
    display: block;
    margin-bottom: 6px;
}

.club-danseur-edit-fields input,
.club-danseur-edit-fields select {
    display: block;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

/* Correction du champ date sur Safari iOS */

.club-danseur-edit-fields input[type="date"] {
    display: block;
    -webkit-appearance: none;
    appearance: none;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    height: 40px;
    min-height: 40px;
    max-height: 40px;
    margin: 0;
    padding: 8px 10px;
    font-size: 16px;
    line-height: 22px;
    text-align: left;
    overflow: hidden;
}

.club-danseur-edit-fields input[type="date"]::-webkit-date-and-time-value {
    min-height: 22px;
    margin: 0;
    padding: 0;
    text-align: left;
}

.club-danseur-edit-management {
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px solid #d9e2ec;
}

.club-danseur-edit-management h3 {
    margin: 0 0 8px;
    font-size: 18px;
    color: #102a43;
}

.club-danseur-edit-management p {
    margin: 0;
}

.club-danseur-edit-modal-footer {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 20px;
    border-top: 1px solid #d9e2ec;
    background: #fff;
}

.club-danseur-edit-footer-danger {
    display: flex;
    flex: 0 1 auto;
}

.club-danseur-edit-footer-danger > .btn {
    width: auto;
    min-width: 0;
    max-width: 200px;
    margin: 0;
    text-align: center;
    white-space: normal;
}

.club-danseur-edit-footer-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
}

.club-danseur-edit-footer-actions > .btn {
    width: auto;
    min-width: 0;
    max-width: 220px;
    margin: 0;
    text-align: center;
}

#club-danseur-management-form[hidden] {
    display: none !important;
}

@media screen and (max-width: 700px) {
    .club-danseur-edit-modal {
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .club-danseur-edit-modal > .club-danseur-edit-modal-box {
        display: flex;
        flex-direction: column;
        flex: 0 1 auto;
        align-self: center;
        width: 100%;
        height: fit-content !important;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        margin: auto;
    }

    .club-danseur-edit-modal-form {
        flex: 0 1 auto;
        height: auto;
        min-height: 0;
    }

    .club-danseur-edit-modal-body {
        flex: 0 1 auto;
        height: auto;
        min-height: 0;
        overflow-y: auto;
    }

    .club-danseur-edit-modal-body {
        padding: 16px;
    }

    .club-danseur-edit-fields {
        grid-template-columns: minmax(0, 1fr);
        gap: 14px;
    }

    .club-danseur-edit-management {
        margin-top: 18px;
        padding-top: 16px;
    }

        /* Actions en portrait : Supprimer / Annuler puis Enregistrer */

    .category-modal.club-danseur-edit-modal .club-danseur-edit-modal-footer {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: stretch;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.club-danseur-edit-modal .club-danseur-edit-footer-danger,
    .category-modal.club-danseur-edit-modal .club-danseur-edit-footer-actions {
        display: contents;
    }

    .category-modal.club-danseur-edit-modal .club-danseur-edit-modal-footer .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        justify-self: stretch;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        white-space: normal;
        text-align: center;
    }

    /* Première ligne : Supprimer à gauche et Annuler à droite */

    .category-modal.club-danseur-edit-modal
    .club-danseur-edit-footer-danger > .btn {
        grid-column: 1;
        grid-row: 1;
    }

    .category-modal.club-danseur-edit-modal
    .club-danseur-edit-footer-actions > .btn:first-child {
        grid-column: 2;
        grid-row: 1;
    }

    /* Deuxième ligne : Enregistrer sur toute la largeur */

    .category-modal.club-danseur-edit-modal
    .club-danseur-edit-footer-actions > .btn:last-child {
        grid-column: 1 / -1;
        grid-row: 2;
    }
}

@media screen and (max-width: 380px) {
    .category-modal.club-danseur-edit-modal
    .club-danseur-edit-modal-footer .btn {
        padding: 8px;
        font-size: 12px;
    }
}

/* Paysage et tablette : Supprimer à gauche, actions à droite */

@media screen and (min-width: 701px) and (max-width: 1000px) {
    .category-modal.club-danseur-edit-modal {
        align-items: center;
        justify-content: center;
        padding: 10px;
    }

    .category-modal .category-modal-box.club-danseur-edit-modal-box {
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
    }

    .category-modal.club-danseur-edit-modal .club-danseur-edit-modal-footer {
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        width: 100%;
        padding: 12px 16px;
    }

    .category-modal.club-danseur-edit-modal .club-danseur-edit-footer-danger {
        display: flex;
        flex: 0 1 auto;
        min-width: 0;
        margin: 0;
    }

    .category-modal.club-danseur-edit-modal .club-danseur-edit-footer-danger > .btn {
        display: inline-flex;
        width: auto;
        min-width: 0;
        max-width: 220px;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        white-space: normal;
        text-align: center;
    }

    .category-modal.club-danseur-edit-modal .club-danseur-edit-footer-actions {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 140px));
        justify-content: end;
        gap: 10px;
        min-width: 0;
        margin: 0 0 0 auto;
    }

    .category-modal.club-danseur-edit-modal .club-danseur-edit-footer-actions > .btn {
        display: inline-flex;
        width: 100%;
        min-width: 0;
        max-width: none;
        min-height: 42px;
        margin: 0;
        padding: 10px 8px;
        align-items: center;
        justify-content: center;
        white-space: normal;
        text-align: center;
    }
}

/* =========================================================
   ADMINISTRATION - GESTION DES JUGES
   Dimensions et défilement
   ========================================================= */

#juges-modal {
    align-items: center;
    justify-content: center;
    padding: 12px;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

#juges-modal > .category-modal-box {
    display: flex;
    flex-direction: column;
    width: min(940px, 100%);
    height: auto;
    min-height: 0;
    max-height: calc(100dvh - 24px);
    overflow: hidden;
    border: 1px solid #d9e2ec;
    border-radius: 12px;
}

/* Deux colonnes en affichage large */

#juges-modal > .category-modal-box > .category-modal-body {
    display: grid;
    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
    grid-template-rows: minmax(0, 1fr);
    flex: 0 1 auto;
    height: 440px;
    min-height: 0;
    max-height: calc(100dvh - 115px);
    overflow: hidden;
}

/* La liste est la seule zone qui défile normalement */

#juges-modal .category-reference-list {
    box-sizing: border-box;
    min-width: 0;
    min-height: 0;
    height: 100%;
    max-height: none;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

/* Formulaire fixe dans la colonne de droite */

#juges-modal .category-modal-form-panel {
    box-sizing: border-box;
    min-width: 0;
    min-height: 0;
    height: 100%;
    overflow: visible;
}

/* Bouton d'ajout */

#juges-modal .category-modal-form-actions {
    position: static;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 12px;
}

#juges-modal .category-modal-form-actions > button {
    width: 100%;
    max-width: 320px;
    min-height: 42px;
    white-space: normal;
    text-align: center;
}

/* Portrait et fenêtres étroites */

@media screen and (max-width: 700px) {
    #juges-modal {
        padding: 10px;
    }

    #juges-modal > .category-modal-box {
        width: 100%;
        max-height: calc(100dvh - 20px);
    }

    #juges-modal > .category-modal-box > .category-modal-body {
        display: flex;
        flex-direction: column;
        flex: 0 1 auto;
        height: auto;
        min-height: 0;
        max-height: none;
        overflow: hidden;
    }

    #juges-modal .category-reference-list {
        flex: 0 0 auto;
        height: min(30dvh, 270px);
        min-height: 150px;
        max-height: min(30dvh, 270px);
        overflow-x: hidden;
        overflow-y: auto;
        border-right: 0;
        border-bottom: 1px solid #e2e8f0;
    }

    #juges-modal .category-modal-form-panel {
        flex: 0 0 auto;
        height: auto;
        min-height: 0;
        overflow: visible;
    }

    #juges-modal .category-modal-form-actions {
        margin: 12px -14px -14px;
        padding: 12px 14px;
    }

    #juges-modal .category-modal-form-actions > button {
        max-width: none;
    }
}

/* Paysage sur smartphone : formulaire plus compact */

@media screen and (min-width: 701px) and (max-height: 520px) {
    #juges-modal .category-modal-form-panel {
        padding: 10px 14px 12px;
    }

    #juges-modal .category-modal-form-panel h3 {
        margin-bottom: 8px;
    }

    #juges-modal .category-modal-form {
        gap: 7px;
    }

    #juges-modal .category-modal-form-actions {
        margin: 2px -14px -12px;
        padding: 8px 14px 12px;
    }
}

/* Repli pour les fenêtres exceptionnellement basses.
   Garantir l'accès au formulaire plutôt que le tronquer. */

@media screen and (max-height: 560px) {
    #juges-modal > .category-modal-box {
        overflow-y: auto;
        overscroll-behavior: contain;
    }

    #juges-modal > .category-modal-box > .category-modal-body {
        flex-shrink: 0;
        min-height: 300px;
        max-height: none;
    }
}

@media screen and (max-width: 700px) and (max-height: 650px) {
    #juges-modal > .category-modal-box {
        overflow-y: auto;
    }

    #juges-modal > .category-modal-box > .category-modal-body {
        flex-shrink: 0;
        min-height: 0;
    }

    #juges-modal .category-reference-list {
        height: 170px;
        min-height: 170px;
        max-height: 170px;
    }
}

/* =========================================================
   ADMINISTRATION - REFERENTIELS EN PAYSAGE
   Types, styles et tranches d'age
   ========================================================= */

@media screen and (min-width: 701px) and (max-width: 1100px)
       and (max-height: 550px) {

    .category-modal[data-category-modal="types"],
    .category-modal[data-category-modal="styles"],
    .category-modal[data-category-modal="tranches"] {
        align-items: center;
        justify-content: center;
        padding: 10px;
        -webkit-text-size-adjust: 100%;
        text-size-adjust: 100%;
    }

    .category-modal[data-category-modal="types"] .category-modal-box,
    .category-modal[data-category-modal="styles"] .category-modal-box,
    .category-modal[data-category-modal="tranches"] .category-modal-box {
        display: flex;
        flex-direction: column;
        width: min(940px, 100%);
        height: auto;
        min-height: 0;
        max-height: calc(100dvh - 20px);
        overflow: hidden;
        border-radius: 12px;
    }

    /* Conserver deux colonnes sur toute la hauteur disponible */

    .category-modal[data-category-modal="types"] .category-modal-body,
    .category-modal[data-category-modal="styles"] .category-modal-body,
    .category-modal[data-category-modal="tranches"] .category-modal-body {
        display: grid;
        grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
        grid-template-rows: minmax(0, 1fr);
        flex: 0 1 auto;
        height: calc(100dvh - 115px);
        min-height: 0;
        max-height: none;
        overflow: hidden;
    }

    /* Colonne gauche : défilement des éléments */

    .category-modal[data-category-modal="types"] .category-reference-list,
    .category-modal[data-category-modal="styles"] .category-reference-list,
    .category-modal[data-category-modal="tranches"] .category-reference-list {
        display: block;
        box-sizing: border-box;
        height: 100%;
        min-height: 0;
        max-height: none;
        overflow-x: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
        padding: 10px;
    }

    /* Colonne droite : formulaire défilant si nécessaire */

    .category-modal[data-category-modal="types"] .category-modal-form-panel,
    .category-modal[data-category-modal="styles"] .category-modal-form-panel,
    .category-modal[data-category-modal="tranches"] .category-modal-form-panel {
        box-sizing: border-box;
        height: 100%;
        min-height: 0;
        overflow-x: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
        padding: 12px 14px;
    }

    /* Espacements plus compacts */

    .category-modal[data-category-modal="types"] .category-modal-form,
    .category-modal[data-category-modal="styles"] .category-modal-form,
    .category-modal[data-category-modal="tranches"] .category-modal-form {
        gap: 8px;
    }

    .category-modal[data-category-modal="types"] .category-modal-form-panel h3,
    .category-modal[data-category-modal="styles"] .category-modal-form-panel h3,
    .category-modal[data-category-modal="tranches"] .category-modal-form-panel h3 {
        margin-bottom: 8px;
    }

    .category-modal[data-category-modal="types"] .category-modal-form-actions,
    .category-modal[data-category-modal="styles"] .category-modal-form-actions,
    .category-modal[data-category-modal="tranches"] .category-modal-form-actions {
        position: static;
        margin-top: 10px;
        padding: 0 0 4px;
    }
}

/* =========================================================
   TYPES DE DOCUMENTS - ADAPTATION DU SWIPE COMMUN
   ========================================================= */

/* Le conteneur de suppression est différent de celui des juges. */

#club-document-types-modal.fdo-swipe-enabled
.fdo-swipe-delete {
    position: absolute !important;
    display: block !important;
    top: 0;
    right: 0;
    bottom: 0;
    left: auto;
    width: 72px !important;
    min-width: 72px !important;
    max-width: 72px !important;
    height: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden;
    background: #b42318;
}

/* Formulaire de suppression sur toute la hauteur */

#club-document-types-modal.fdo-swipe-enabled
.fdo-swipe-delete form {
    position: absolute !important;
    display: block !important;
    inset: 0;
    box-sizing: border-box;
    flex: none !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    height: 100% !important;
    min-height: 0 !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* Bouton et icône centrés dans la zone rouge */

#club-document-types-modal.fdo-swipe-enabled
.fdo-swipe-delete form button.btn-delete-icon {
    position: absolute !important;
    display: flex !important;
    inset: 0;
    box-sizing: border-box;
    flex: none !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    height: 100% !important;
    min-height: 0 !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: #b42318 !important;
}

#club-document-types-modal.fdo-swipe-enabled
.fdo-swipe-delete form button.btn-delete-icon img {
    display: block;
    flex: 0 0 20px;
    width: 20px;
    min-width: 20px;
    max-width: 20px;
    height: 20px;
    min-height: 20px;
    max-height: 20px;
    margin: 0;
    object-fit: contain;
    pointer-events: none;
}

/* =========================================
   PARAMETRES - GESTION DES SAISONS
   ========================================= */

.fdo-saisons-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
    align-items: start;
}

.fdo-saisons-card {
    min-width: 0;
    box-sizing: border-box;
}

.fdo-saisons-card h2 {
    margin-bottom: 16px;
}

.fdo-saisons-active {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.fdo-saisons-active strong {
    font-size: 24px;
    line-height: 1.25;
}

.fdo-saisons-help {
    margin: 0 0 16px;
}

.fdo-saisons-field {
    margin-bottom: 16px;
}

.fdo-saisons-field label {
    display: block;
    margin-bottom: 6px;
}

.fdo-saisons-field input {
    display: block;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.fdo-saisons-card .btn {
    max-width: 100%;
    white-space: normal;
}

.fdo-saisons-card .table-wrap {
    width: 100%;
    min-width: 0;
}

.fdo-saisons-card .data-table {
    width: 100%;
    min-width: 0;
}

.fdo-saisons-card .data-table th,
.fdo-saisons-card .data-table td {
    padding: 10px 8px;
}

@media (max-width: 1050px) and (min-width: 701px) {
    .fdo-saisons-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .fdo-saisons-list-card {
        grid-column: 1 / -1;
    }
}

@media (max-width: 700px) {
    .fdo-saisons-grid {
        grid-template-columns: minmax(0, 1fr);
        gap: 16px;
    }
}

/* =========================================
   GESTION DES SAISONS - PURGE ET SWIPE
   ========================================= */

.fdo-saisons-entries {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.fdo-saisons-row {
    position: relative;
    display: flex;
    align-items: center;
    min-width: 0;
    border-bottom: 1px solid #e5e7eb;
}

.fdo-saisons-row:last-child {
    border-bottom: 0;
}

.fdo-saisons-row-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    flex: 1 1 auto;
    min-width: 0;
    min-height: 48px;
    padding: 8px 0;
}

.fdo-saisons-row-content strong {
    white-space: nowrap;
}

.fdo-saisons-row-content .muted-text {
    font-size: 12px;
    white-space: nowrap;
}

.fdo-saisons-delete {
    flex: 0 0 auto;
    margin: 0 0 0 8px;
}

.fdo-saisons-delete .btn-delete-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    min-width: 36px;
    padding: 0;
    border: 0;
    border-radius: 8px;
    background: #b42318;
    cursor: pointer;
}

.fdo-saisons-delete .btn-delete-icon img {
    width: 18px;
    height: 18px;
    object-fit: contain;
    filter: brightness(0) invert(1);
}

/* Swipe mobile : zone de purge rouge */

#fdo-saisons-list.fdo-swipe-enabled
.fdo-saisons-row {
    border-bottom: 1px solid #e5e7eb;
}

#fdo-saisons-list.fdo-swipe-enabled
.fdo-saisons-row-content {
    padding: 10px 12px;
    min-height: 56px;
}

#fdo-saisons-list.fdo-swipe-enabled
.fdo-saisons-delete {
    position: absolute;
    inset: 0 0 0 auto;
    box-sizing: border-box;
    width: 72px;
    height: 100%;
    margin: 0;
    background: #b42318;
}

#fdo-saisons-list.fdo-swipe-enabled
.fdo-saisons-delete .btn-delete-icon {
    width: 100%;
    height: 100%;
    min-width: 0;
    border-radius: 0;
    background: #b42318;
}

@media (max-width: 700px) {
    .fdo-saisons-row-content strong {
        font-size: 14px;
    }
}
