@import '_content/Microsoft.AspNetCore.Components.QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.boiwgh0w5b.bundle.scp.css';

/* /Components/Account/Pages/AccessDenied.razor.rz.scp.css */
.pal-denied[b-alj4ynhdid] {
    max-width: 34rem;
    margin: 0 auto;
    padding: 3.5rem 1rem 4rem;
    text-align: center;
}

.pal-denied-icon[b-alj4ynhdid] {
    width: 4rem;
    height: 4rem;
    margin: 0 auto 1.25rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background-color: color-mix(in srgb, var(--pal-red) 12%, transparent);
    color: var(--pal-red);
    font-size: 1.6rem;
}

.pal-denied h1[b-alj4ynhdid] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    color: var(--text);
}

.pal-denied p[b-alj4ynhdid] {
    margin: 0 0 1.5rem;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-muted);
}

/* Bouton "Retour a l'accueil" : voir .pal-btn-home (app.css) — applique directement sur le markup. */

.pal-denied-home:hover[b-alj4ynhdid] {
    background-color: color-mix(in srgb, var(--pal-red) 82%, black 18%);
}
/* /Components/Account/Pages/ForgotPassword.razor.rz.scp.css */
.pal-forgot[b-elk2dm19sd] {
    max-width: 34rem;
    margin: 0 auto;
    padding: 1.75rem 1rem 3rem;
}

.pal-forgot-hero[b-elk2dm19sd] {
    padding-bottom: 1.5rem;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid var(--surface-border);
    text-align: center;
}

.pal-forgot-hero h1[b-elk2dm19sd] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}

.pal-forgot-hero p[b-elk2dm19sd] {
    color: var(--text-muted);
    margin: 0;
}

/* Carte isolee : voir .pal-card-isolated (app.css) — appliquee directement sur le markup. */

[b-elk2dm19sd] .alert {
    background: color-mix(in srgb, var(--pal-red) 10%, var(--surface-card));
    border: 1px solid color-mix(in srgb, var(--pal-red) 30%, var(--surface-border));
    color: var(--text);
    border-radius: 10px;
    margin-bottom: 1.25rem;
}

.pal-forgot-field[b-elk2dm19sd] {
    margin-bottom: 1.25rem;
}

[b-elk2dm19sd] .form-control {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
}

[b-elk2dm19sd] .form-control:focus {
    background: var(--surface-bg);
    color: var(--text);
}

[b-elk2dm19sd] .form-floating > .form-control {
    height: calc(3.3rem + 2px);
}

[b-elk2dm19sd] .form-floating > label {
    color: var(--text-muted);
}

[b-elk2dm19sd] .form-floating > .form-control:focus ~ label,
[b-elk2dm19sd] .form-floating > .form-control:not(:placeholder-shown) ~ label {
    color: var(--pal-red-mid);
}

[b-elk2dm19sd] .text-danger {
    color: var(--pal-red-mid) !important;
    font-size: .85rem;
}

.pal-forgot-submit[b-elk2dm19sd] {
    width: 100%;
    padding: .85rem 1.3rem;
    font-size: 1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    border-radius: var(--pal-btn-radius);
}

.pal-forgot-help[b-elk2dm19sd] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    margin-top: 1.25rem;
    color: var(--text-muted);
    font-size: .85rem;
    text-decoration: none;
}

.pal-forgot-help:hover[b-elk2dm19sd] {
    color: var(--pal-red-mid);
}
/* /Components/Account/Pages/Lockout.razor.rz.scp.css */
.pal-lockout[b-7pw4cacd3w] {
    max-width: 34rem;
    margin: 0 auto;
    padding: 3.5rem 1rem 4rem;
    text-align: center;
}

.pal-lockout-icon[b-7pw4cacd3w] {
    width: 4rem;
    height: 4rem;
    margin: 0 auto 1.25rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background-color: color-mix(in srgb, var(--pal-red) 12%, transparent);
    color: var(--pal-red);
    font-size: 1.6rem;
}

.pal-lockout h1[b-7pw4cacd3w] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    color: var(--text);
}

.pal-lockout p[b-7pw4cacd3w] {
    margin: 0 0 1.5rem;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-muted);
}

/* Bouton "Retour a l'accueil" : voir .pal-btn-home (app.css) — applique directement sur le markup. */

.pal-lockout-home:hover[b-7pw4cacd3w] {
    background-color: color-mix(in srgb, var(--pal-red) 82%, black 18%);
}
/* /Components/Account/Pages/Login.razor.rz.scp.css */
.pal-login[b-5us20z20t3] {
    max-width: 30rem;
    margin: 0 auto;
    padding: 1.75rem 1rem 3rem;
}

.pal-login-hero[b-5us20z20t3] {
    padding-bottom: 1.5rem;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid var(--surface-border);
    text-align: center;
}

.pal-login-hero h1[b-5us20z20t3] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}

.pal-login-hero p[b-5us20z20t3] {
    color: var(--text-muted);
    margin: 0;
}

/* Carte isolee : voir .pal-card-isolated (app.css) — appliquee directement sur le markup. */

[b-5us20z20t3] .alert {
    background: color-mix(in srgb, var(--pal-red) 10%, var(--surface-card));
    border: 1px solid color-mix(in srgb, var(--pal-red) 30%, var(--surface-border));
    color: var(--text);
    border-radius: 10px;
    margin-bottom: 1.25rem;
}

.pal-login-field[b-5us20z20t3] {
    margin-bottom: 1rem;
}

[b-5us20z20t3] .form-control {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
}

[b-5us20z20t3] .form-control:focus {
    background: var(--surface-bg);
    color: var(--text);
}

[b-5us20z20t3] .form-floating > .form-control {
    height: calc(3.3rem + 2px);
}

[b-5us20z20t3] .form-floating > label {
    color: var(--text-muted);
}

[b-5us20z20t3] .form-floating > .form-control:focus ~ label,
[b-5us20z20t3] .form-floating > .form-control:not(:placeholder-shown) ~ label {
    color: var(--pal-red-mid);
}

[b-5us20z20t3] .text-danger {
    color: var(--pal-red-mid) !important;
    font-size: .85rem;
}

.pal-login-row[b-5us20z20t3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .75rem;
    margin: .25rem 0 1.5rem;
}

.pal-login-remember[b-5us20z20t3] {
    display: flex;
    align-items: center;
    gap: .6rem;
    cursor: pointer;
}

[b-5us20z20t3] .pal-login-remember .switch {
    flex: none;
}

.pal-login-remember span[b-5us20z20t3] {
    color: var(--text);
    font-size: .9rem;
}

.pal-login-forgot[b-5us20z20t3] {
    color: var(--pal-red-mid);
    font-size: .87rem;
    font-weight: 600;
    text-decoration: none;
}

.pal-login-forgot:hover[b-5us20z20t3] {
    color: var(--pal-red);
    text-decoration: underline;
}

.pal-login-submit[b-5us20z20t3] {
    width: 100%;
    padding: .85rem 1.3rem;
    font-size: 1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    border-radius: var(--pal-btn-radius);
}

.pal-login-help[b-5us20z20t3] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    margin-top: 1.25rem;
    color: var(--text-muted);
    font-size: .85rem;
    text-decoration: none;
}

.pal-login-help:hover[b-5us20z20t3] {
    color: var(--pal-red-mid);
}

.pal-login-cta[b-5us20z20t3] {
    margin-top: 1.5rem;
    padding: 1.1rem 1.5rem;
    text-align: center;
    border-radius: 14px;
    background: color-mix(in srgb, var(--pal-red) 8%, var(--surface-card));
    border: 1px solid color-mix(in srgb, var(--pal-red) 25%, var(--surface-border));
}

.pal-login-cta span[b-5us20z20t3] {
    color: var(--text-muted);
    margin-right: .4rem;
}

.pal-login-cta a[b-5us20z20t3] {
    color: var(--pal-red);
    font-weight: 800;
    text-decoration: none;
}

.pal-login-cta a:hover[b-5us20z20t3] {
    color: var(--pal-red-mid);
    text-decoration: underline;
}
/* /Components/Account/Pages/Register.razor.rz.scp.css */
.pal-register[b-nownf9aa53] {
    max-width: 54rem;
    margin: 0 auto;
    padding: 1.75rem 1rem 3rem;
}

.pal-register-hero[b-nownf9aa53] {
    padding-bottom: 1.5rem;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid var(--surface-border);
}

.pal-register-hero h1[b-nownf9aa53] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}

.pal-register-hero p[b-nownf9aa53] {
    color: var(--text-muted);
    margin: 0;
}

/* Carte isolee : voir .pal-card-isolated (app.css) — appliquee directement sur le markup. */

[b-nownf9aa53] .alert {
    background: color-mix(in srgb, var(--pal-red) 10%, var(--surface-card));
    border: 1px solid color-mix(in srgb, var(--pal-red) 30%, var(--surface-border));
    color: var(--text);
    border-radius: 10px;
}

.pal-register-section[b-nownf9aa53] {
    padding: 1.5rem 0;
    border-top: 1px solid var(--surface-border);
}

.pal-register-section:first-child[b-nownf9aa53] {
    padding-top: 0;
    border-top: none;
}

.pal-register-section-title[b-nownf9aa53] {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: 1.1rem;
}

.pal-register-section-icon[b-nownf9aa53] {
    width: 2.6rem;
    height: 2.6rem;
    flex: none;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: color-mix(in srgb, var(--pal-red) 14%, transparent);
    color: var(--pal-red);
    font-size: 1.1rem;
}

.pal-register-section-title h2[b-nownf9aa53] {
    margin: 0;
    font-size: 1.15rem;
    color: var(--text);
}

.pal-register-grid[b-nownf9aa53] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem .85rem;
}

.pal-register-field-full[b-nownf9aa53] {
    grid-column: 1 / -1;
}

.pal-register-field:not(.form-floating) label[b-nownf9aa53] {
    color: var(--text-muted);
    font-weight: 600;
    font-size: .9rem;
    margin-bottom: .35rem;
    display: inline-block;
}

[b-nownf9aa53] .form-control {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
}

[b-nownf9aa53] .form-control:focus {
    background: var(--surface-bg);
    color: var(--text);
}

[b-nownf9aa53] .form-floating > .form-control {
    height: calc(3.3rem + 2px);
}

[b-nownf9aa53] .form-floating > label {
    color: var(--text-muted);
}

[b-nownf9aa53] .form-floating > .form-control:focus ~ label,
[b-nownf9aa53] .form-floating > .form-control:not(:placeholder-shown) ~ label {
    color: var(--pal-red-mid);
}

[b-nownf9aa53] .text-danger {
    color: var(--pal-red-mid) !important;
    font-size: .85rem;
}

:root[data-theme="dark"] .pal-register input[type="date"][b-nownf9aa53] {
    color-scheme: dark;
}

.pal-register-prefs[b-nownf9aa53] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
}

.pal-register-prefs-group h3[b-nownf9aa53] {
    margin: 0 0 .85rem;
    padding-bottom: .5rem;
    font-size: .78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--pal-red);
    border-bottom: 1px solid var(--surface-border);
}

.pal-register-switch-row[b-nownf9aa53] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .6rem 0;
    border-top: 1px solid var(--surface-border);
    cursor: pointer;
}

.pal-register-prefs-group h3 + .pal-register-switch-row[b-nownf9aa53] {
    border-top: none;
}

.pal-register-switch-row span[b-nownf9aa53] {
    color: var(--text);
    font-size: .92rem;
    flex: 1 1 auto;
    min-width: 0;
}

[b-nownf9aa53] .pal-register-switch-row .switch {
    flex: none;
}

.pal-register-submit[b-nownf9aa53] {
    width: 100%;
    margin-top: 1.75rem;
    padding: .85rem 1.3rem;
    font-size: 1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    border-radius: var(--pal-btn-radius);
}

/* seuil: --bp-tablet */
@media (min-width: 600px) {
    .pal-register-grid[b-nownf9aa53] {
        grid-template-columns: repeat(2, 1fr);
    }

    .pal-register-prefs[b-nownf9aa53] {
        grid-template-columns: repeat(2, 1fr);
    }
}
/* /Components/Account/Pages/ResendEmailConfirmation.razor.rz.scp.css */
.pal-resend[b-15jrvmub4z] {
    max-width: 34rem;
    margin: 0 auto;
    padding: 1.75rem 1rem 3rem;
}

.pal-resend-hero[b-15jrvmub4z] {
    padding-bottom: 1.5rem;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid var(--surface-border);
    text-align: center;
}

.pal-resend-hero h1[b-15jrvmub4z] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}

.pal-resend-hero p[b-15jrvmub4z] {
    color: var(--text-muted);
    margin: 0;
}

/* Carte isolee : voir .pal-card-isolated (app.css) — appliquee directement sur le markup. */

[b-15jrvmub4z] .alert {
    background: color-mix(in srgb, var(--pal-red) 10%, var(--surface-card));
    border: 1px solid color-mix(in srgb, var(--pal-red) 30%, var(--surface-border));
    color: var(--text);
    border-radius: 10px;
    margin-bottom: 1.25rem;
}

.pal-resend-field[b-15jrvmub4z] {
    margin-bottom: 1.25rem;
}

[b-15jrvmub4z] .form-control {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
}

[b-15jrvmub4z] .form-control:focus {
    background: var(--surface-bg);
    color: var(--text);
}

[b-15jrvmub4z] .form-floating > .form-control {
    height: calc(3.3rem + 2px);
}

[b-15jrvmub4z] .form-floating > label {
    color: var(--text-muted);
}

[b-15jrvmub4z] .form-floating > .form-control:focus ~ label,
[b-15jrvmub4z] .form-floating > .form-control:not(:placeholder-shown) ~ label {
    color: var(--pal-red-mid);
}

[b-15jrvmub4z] .text-danger {
    color: var(--pal-red-mid) !important;
    font-size: .85rem;
}

.pal-resend-submit[b-15jrvmub4z] {
    width: 100%;
    padding: .85rem 1.3rem;
    font-size: 1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    border-radius: var(--pal-btn-radius);
}

.pal-resend-help[b-15jrvmub4z] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    margin-top: 1.25rem;
    color: var(--text-muted);
    font-size: .85rem;
    text-decoration: none;
}

.pal-resend-help:hover[b-15jrvmub4z] {
    color: var(--pal-red-mid);
}
/* /Components/Layout/BackOfficeLayout.razor.rz.scp.css */
.pal-bo-shell[b-qllrfl0w45] {
    display: flex;
    min-height: 100vh;
    background: var(--surface-bg);
}

/* seuil: --bp-desktop-sm — sidebar passe en barre horizontale sous ce seuil (cf. BackOfficeMenu.razor.css) */
@media (max-width: 1023px) {
    .pal-bo-shell[b-qllrfl0w45] {
        flex-direction: column;
    }
}

.pal-bo-main[b-qllrfl0w45] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.pal-bo-top[b-qllrfl0w45] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.75rem 1.5rem;
    background: var(--surface-card);
    border-bottom: 1px solid var(--surface-border);
    position: sticky;
    top: 0;
    z-index: 10;
}

.pal-bo-search[b-qllrfl0w45] {
    position: relative;
    flex: 1;
    max-width: 380px;
}

    .pal-bo-search > i[b-qllrfl0w45] {
        position: absolute;
        left: 12px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--text-muted);
    }

    .pal-bo-search input[b-qllrfl0w45] {
        width: 100%;
        padding: 9px 12px 9px 36px;
        border-radius: 999px;
        border: 1px solid var(--surface-border);
        background: var(--surface-bg);
        color: var(--text);
        font: inherit;
        font-size: .86rem;
    }

        .pal-bo-search input[b-qllrfl0w45]::placeholder {
            color: var(--text-muted);
        }

        .pal-bo-search input:focus[b-qllrfl0w45] {
            outline: 2px solid var(--pal-red);
            outline-offset: 1px;
        }

.pal-bo-search-results[b-qllrfl0w45] {
    display: none;
    position: absolute;
    top: calc(100% + 0.4rem);
    left: 0;
    right: 0;
    max-height: 320px;
    overflow-y: auto;
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    box-shadow: var(--pal-card-shadow);
    padding: 0.4rem;
    z-index: 20;
    /* Panneau sur --surface-* (suit le theme, contrairement au chrome de la sidebar) : scrollbar
       theme sur les memes tokens plutot que la barre grise par defaut du navigateur. */
    scrollbar-width: thin;
    scrollbar-color: var(--surface-border) transparent;
}

    .pal-bo-search-results[b-qllrfl0w45]::-webkit-scrollbar {
        width: 8px;
    }

    .pal-bo-search-results[b-qllrfl0w45]::-webkit-scrollbar-track {
        background: transparent;
    }

    .pal-bo-search-results[b-qllrfl0w45]::-webkit-scrollbar-thumb {
        background-color: var(--surface-border);
        border-radius: 999px;
    }

        .pal-bo-search-results[b-qllrfl0w45]::-webkit-scrollbar-thumb:hover {
            background-color: var(--text-muted);
        }

/* Ouvert au focus du champ ; le :hover sur le panneau lui-meme le maintient ouvert le temps de
   cliquer un resultat (sinon le blur du champ le referme avant que le clic ne soit traite). */
.pal-bo-search input:focus + .pal-bo-search-results[b-qllrfl0w45],
.pal-bo-search-results:hover[b-qllrfl0w45] {
    display: block;
}

.pal-bo-search-result[b-qllrfl0w45] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.4rem 0.5rem;
    border-radius: 8px;
    color: var(--text);
    text-decoration: none;
}

    .pal-bo-search-result:hover[b-qllrfl0w45] {
        background: var(--bo-row-hover);
    }

.pal-bo-search-result-main[b-qllrfl0w45] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}

    .pal-bo-search-result-main strong[b-qllrfl0w45] {
        font-size: .84rem;
    }

    .pal-bo-search-result-main span[b-qllrfl0w45] {
        font-size: .74rem;
        color: var(--text-muted);
    }

.pal-bo-search-result-badge[b-qllrfl0w45] {
    flex: none;
}

.pal-bo-top-spacer[b-qllrfl0w45] {
    flex: 1;
}

.pal-bo-user[b-qllrfl0w45] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.pal-bo-user-meta[b-qllrfl0w45] {
    text-align: right;
    line-height: 1.15;
}

    .pal-bo-user-meta strong[b-qllrfl0w45] {
        display: block;
        font-size: .84rem;
    }

    .pal-bo-user-meta span[b-qllrfl0w45] {
        font-size: .72rem;
        color: var(--text-muted);
    }

.pal-bo-avatar[b-qllrfl0w45] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    object-fit: cover;
}

.pal-bo-content[b-qllrfl0w45] {
    padding: 1.625rem 1.875rem 3.75rem;
    flex: 1;
}

/* seuil: --bp-desktop-sm */
@media (max-width: 1023px) {
    .pal-bo-content[b-qllrfl0w45] {
        padding: 1.125rem 1rem 3rem;
    }

    .pal-bo-user-meta[b-qllrfl0w45] {
        display: none;
    }
}
/* /Components/Layout/BackOfficeMenu.razor.rz.scp.css */
.pal-bo-side[b-7ufo886ng2] {
    width: 264px;
    flex: none;
    background: var(--chrome-bg);
    color: var(--chrome-text);
    display: flex;
    flex-direction: column;
    border-right: 1px solid var(--chrome-border);
    position: sticky;
    top: 0;
    height: 100vh;
    overflow: hidden;
}

.pal-bo-side-brand[b-7ufo886ng2] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 1rem 1.125rem;
    border-bottom: 1px solid var(--chrome-border);
}

.pal-bo-side-brand-mark[b-7ufo886ng2] {
    width: 34px;
    height: 34px;
    border-radius: 9px;
    background: var(--pal-red);
    display: grid;
    place-items: center;
    color: var(--pal-on-accent);
    font-weight: 800;
    font-size: .95rem;
    flex: none;
}

.pal-bo-side-brand-text[b-7ufo886ng2] {
    line-height: 1.15;
    overflow: hidden;
}

    .pal-bo-side-brand-text strong[b-7ufo886ng2] {
        display: block;
        font-size: .92rem;
    }

    .pal-bo-side-brand-text span[b-7ufo886ng2] {
        font-size: .72rem;
        color: var(--chrome-text-muted);
    }

.pal-bo-side-scroll[b-7ufo886ng2] {
    flex: 1;
    overflow-y: auto;
    padding: 0.625rem 0.625rem 0.375rem;
    display: flex;
    flex-direction: column;
    /* Sidebar toujours sur le chrome sombre (independant du theme site) : scrollbar theme sur
       les memes tokens --chrome-*, sinon barre grise par defaut du navigateur, hors charte. */
    scrollbar-width: thin;
    scrollbar-color: var(--chrome-border) transparent;
}

    .pal-bo-side-scroll[b-7ufo886ng2]::-webkit-scrollbar {
        width: 8px;
    }

    .pal-bo-side-scroll[b-7ufo886ng2]::-webkit-scrollbar-track {
        background: transparent;
    }

    .pal-bo-side-scroll[b-7ufo886ng2]::-webkit-scrollbar-thumb {
        background-color: var(--chrome-border);
        border-radius: 999px;
    }

        .pal-bo-side-scroll[b-7ufo886ng2]::-webkit-scrollbar-thumb:hover {
            background-color: color-mix(in srgb, white 15%, var(--chrome-border));
        }

.pal-bo-side-sep[b-7ufo886ng2] {
    height: 1px;
    background: var(--chrome-border);
    margin: 0.625rem 0.625rem;
}

.pal-bo-side-title[b-7ufo886ng2] {
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--chrome-text-muted);
    padding: 0.875rem 0.625rem 0.375rem;
}

.pal-bo-side-link[b-7ufo886ng2] {
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 9px 10px;
    border-radius: 9px;
    color: var(--chrome-text);
    text-decoration: none;
    font-size: .87rem;
    font-weight: 600;
    border: 1px solid transparent;
    white-space: nowrap;
}

    .pal-bo-side-link i[b-7ufo886ng2] {
        opacity: .85;
        width: 1.1rem;
        text-align: center;
    }

    .pal-bo-side-link:hover[b-7ufo886ng2] {
        background: var(--bo-chrome-hover);
    }

    .pal-bo-side-link.active[b-7ufo886ng2] {
        background: var(--bo-chrome-active);
        border-color: color-mix(in srgb, var(--pal-red) 45%, transparent);
    }

        .pal-bo-side-link.active i[b-7ufo886ng2] {
            opacity: 1;
            color: var(--bo-chrome-active-icon);
        }

.pal-bo-side-foot[b-7ufo886ng2] {
    padding: 0.625rem;
    border-top: 1px solid var(--chrome-border);
}

.pal-bo-side-back[b-7ufo886ng2] {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 8px 10px;
    border-radius: 9px;
    color: var(--chrome-text-muted);
    font-size: .82rem;
    text-decoration: none;
}

    .pal-bo-side-back:hover[b-7ufo886ng2] {
        background: var(--bo-chrome-hover);
        color: var(--chrome-text);
    }

/* seuil: --bp-desktop-sm — sous ce seuil, la sidebar sticky pleine hauteur laisserait le
   contenu principal coince a cote d'elle sur un ecran etroit : passe en barre empilee au-dessus,
   hauteur naturelle, nav en scroll horizontal (usage back-office = desktop en grande majorite,
   pas besoin d'un systeme de panneau coulissant complet ici). */
@media (max-width: 1023px) {
    .pal-bo-side[b-7ufo886ng2] {
        width: 100%;
        height: auto;
        position: static;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
    }

    .pal-bo-side-brand[b-7ufo886ng2] {
        border-bottom: none;
        border-right: 1px solid var(--chrome-border);
    }

    .pal-bo-side-scroll[b-7ufo886ng2] {
        flex-direction: row;
        overflow-x: auto;
        overflow-y: hidden;
        padding: 0.5rem;
        gap: 0.375rem;
    }

    .pal-bo-side-sep[b-7ufo886ng2] {
        width: 1px;
        height: 1.5rem;
        margin: 0 0.375rem;
        flex: none;
    }

    .pal-bo-side-title[b-7ufo886ng2] {
        display: none;
    }

    .pal-bo-side-link[b-7ufo886ng2] {
        white-space: nowrap;
    }

        .pal-bo-side-link span[b-7ufo886ng2] {
            display: none;
        }

    .pal-bo-side-foot[b-7ufo886ng2] {
        border-top: none;
        border-left: 1px solid var(--chrome-border);
    }

        .pal-bo-side-foot .pal-bo-side-back span[b-7ufo886ng2] {
            display: none;
        }
}
/* /Components/Layout/ErrorUI.razor.rz.scp.css */
#blazor-error-ui[b-lnti79njdz] {
   
    bottom: 0;
    display: none;
    left: 0;
    position: absolute;
    width: 100%;
    height: 100%;
    z-index: 1000;
}
.error-overlay[b-lnti79njdz]{
    position:absolute;
    width:100%;
    height:100%;
    display:flex;
    justify-content:center;
    align-items:center;
    backdrop-filter:blur(3px);
}
.error-body[b-lnti79njdz] {
    max-width:60%;
    text-align:justify;
    box-shadow:black 5px 5px 30px;
    position:relative;
    border-radius:5px;
    padding:2rem;
    background: #febfbf;
}
#blazor-error-ui .dismiss[b-lnti79njdz] {
    cursor: pointer;
    position: absolute;
    right: 3px;
    top: 0rem;
}
/* /Components/Layout/MonCompteLayout.razor.rz.scp.css */
/* Sidebar "Mon compte" (zone /GestionUtilisateur). La classe .pal-dash-menu est partagee avec
   BackOfficeMenu.razor (zone admin, fond --pal-bo-bg constant, cf. app.css) : ce fichier est scope
   a ce layout (isolation CSS Blazor), donc sans aucun risque pour le back-office qui garde son
   style d'origine inchange — chaque regle ci-dessous gagne sur l'equivalent non-scope d'app.css
   grace a l'attribut de scope (specificite plus elevee), pas besoin de !important. */

/* display/flex-direction pilotes ici (pas des classes utilitaires Bootstrap d-flex/flex-column/
   flex-md-row sur l'element, cf. markup) : ces utilitaires posent leurs valeurs en !important
   (verifie sur bootstrap.min.css), ce qui aurait rendu la media query desktop ci-dessous totalement
   sans effet (flex-direction serait reste bloque sur "column" quel que soit le breakpoint). */
.pal-dash-shell[b-pyhny3249j] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    /* Espace haut commun sidebar+contenu : gere ici, une seule fois pour toutes les pages
       /GestionUtilisateur/*, plutot que duplique (et desynchronise) dans le padding-top de
       chaque page — la sidebar (.pal-dash-menu) et le contenu (@Body) demarrent alors toujours
       a la meme hauteur, quelle que soit la page. */
    padding-top: 1.75rem;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-dash-shell[b-pyhny3249j] {
        flex-direction: row;
        align-items: flex-start;
    }
}

/* Item flex en rangee (desktop) : sans min-width:0, un contenu large (tableau) l'empeche de
   retrecir sous sa largeur min-content et elargit la page au lieu de defiler en interne. */
.pal-dash-shell > main[b-pyhny3249j] {
    min-width: 0;
}

.pal-dash-menu[b-pyhny3249j] {
    /* !important necessaire ici : la regle globale non scopee (app.css, partagee avec
       BackOfficeMenu.razor) pose deja background-color en !important — seul un autre !important
       peut le battre, l'attribut de scope (specificite) ne suffit pas face a !important. */
    background-color: var(--surface-card) !important;
    color: var(--text);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 0;
    min-width: 0;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-dash-menu[b-pyhny3249j] {
        width: 300px;
        flex: 0 0 300px;
        min-height: auto;
        height: fit-content;
        position: sticky;
        top: 1.5rem;
        padding: 1.5rem 0 .75rem;
    }
}

/* --- En-tete compte : barre compacte sur mobile, mais garde l'essentiel en 3 zones (avatar+pseudo/
   prenom | infos d'adhesion poussees a droite) plutot que de tout masquer sauf l'avatar. Le badge
   PAL (span, inline-block par defaut cote Bootstrap) ne doit JAMAIS passer en display:block — sinon
   il s'etire en pleine largeur au lieu de rester un badge ; seul .name/.summary (des <div>, deja
   block par defaut) sont concernes par le display:none/block ci-dessous.
   A partir de --bp-desktop-sm, redevient l'entete verticale/centree d'origine (3 zones empilees). --- */
.pal-account-header[b-pyhny3249j] {
    display: flex;
    align-items: center;
    gap: .65rem;
    padding: .65rem 1rem;
    border-bottom: 1px solid var(--surface-border);
}

.pal-account-header .pal-img-150[b-pyhny3249j] {
    width: 2.5rem;
    height: 2.5rem;
}

.pal-account-identity[b-pyhny3249j] {
    min-width: 0;
}

.pal-account-header .nickname[b-pyhny3249j] {
    margin: 0;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.2;
    color: var(--text);
}

.pal-account-header .name[b-pyhny3249j] {
    margin: 0;
    font-size: .78rem;
    color: var(--text-muted);
}

.pal-account-status[b-pyhny3249j] {
    margin-left: auto;
    flex: none;
    text-align: right;
}

/* Badge PAL (span, deja inline-block par defaut cote Bootstrap) : reste visible sur mobile,
   affiche sous le pseudo/prenom dans .pal-account-identity, colle directement dessous (le
   margin-bottom du nom, mb-2 du badge lui-meme geraient deja l'espacement autour). */
.pal-account-header .badge[b-pyhny3249j] {
    margin-top: 0;
}

.pal-account-header .summary[b-pyhny3249j] {
    font-size: .68rem;
    line-height: 1.35;
    color: var(--text-muted);
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-account-header[b-pyhny3249j] {
        display: block;
        text-align: center;
        padding: 0 1.5rem 1.25rem;
        margin-bottom: .5rem;
    }

    .pal-account-header .pal-img-150[b-pyhny3249j] {
        width: calc(0.8 * 150px);
        height: calc(0.8 * 150px);
    }

    .pal-account-identity[b-pyhny3249j] {
        min-width: unset;
    }

    .pal-account-header .nickname[b-pyhny3249j] {
        margin-top: .6rem;
        font-size: 1.3rem;
    }

    .pal-account-header .name[b-pyhny3249j] {
        font-size: 1rem;
    }

    .pal-account-header .name span[b-pyhny3249j] {
        color: var(--text-muted);
        font-size: .9rem;
    }

    .pal-account-status[b-pyhny3249j] {
        margin-left: 0;
        text-align: center;
    }

    .pal-account-header .summary[b-pyhny3249j] {
        font-size: .78rem;
        line-height: 1.5;
    }
}

/* seuil: --bp-desktop-lg */
@media (min-width: 1440px) {
    .pal-account-header .pal-img-150[b-pyhny3249j] {
        width: 150px;
        height: 150px;
    }
}

/* Le menu n'est pas un vrai accordeon Bootstrap (aucune classe .accordion-item/.accordion-button/
   .collapse dans ce fichier, juste des .accordion-fakebutton statiques) : les regles ::after/chevron/
   focus d'app.css ne s'appliquent jamais ici, seules .accordion-fakebutton/a/button comptent. */

/* .pal-dash-menu .accordion / .accordion-fakebutton (app.css, non scope) posent un fond
   --pal-bo-bg (gris fonce constant, pense pour l'ancien style) sans !important cette fois — mais
   comme je n'avais jamais redeclare background-color sur ces 2 selecteurs precis (seuls les liens
   internes etaient recolores), le gris fonce restait visible derriere tout le bas du menu.
   Mirroring de la chaine de selecteurs d'origine pour etre sûr de gagner en specificite. */
.pal-dash-menu .accordion[b-pyhny3249j],
.pal-dash-menu .accordion-fakebutton[b-pyhny3249j] {
    background-color: transparent;
}

/* --- Nav : rangee horizontale defilable (icone + mini-label empiles) sur mobile — evite les ~5
   items empiles en pleine largeur qui forcaient a scroller avant d'atteindre le contenu de page.
   Redevient la colonne verticale d'origine a partir de --bp-desktop-sm. --- */
.accordion[b-pyhny3249j] {
    display: flex;
    overflow-x: auto;
    scrollbar-width: none;
    gap: .2rem;
    padding: .4rem;
}

.accordion[b-pyhny3249j]::-webkit-scrollbar {
    display: none;
}

.accordion-fakebutton[b-pyhny3249j] {
    flex: 0 0 auto;
    margin: 0;
    border-radius: 10px;
    transition: background-color .15s ease-in-out;
}

.accordion-fakebutton a[b-pyhny3249j],
.accordion-fakebutton button[b-pyhny3249j] {
    /* La regle globale .pal-dash-menu a (app.css) colore en --chrome-text-muted (blanc a faible
       opacite, pense pour l'ancien fond sombre constant) : quasi illisible sur le nouveau fond
       clair --surface-card en theme clair. Recolore explicitement sur les tokens du theme. */
    color: var(--text);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .25rem;
    padding: .5rem .65rem;
    font-size: .66rem;
    font-weight: 600;
    white-space: nowrap;
    border-radius: 10px;
}

.accordion-fakebutton a i[b-pyhny3249j],
.accordion-fakebutton button i[b-pyhny3249j] {
    width: auto;
    text-align: center;
    color: var(--text-muted);
    font-size: 1.2rem;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .accordion[b-pyhny3249j] {
        display: block;
        overflow-x: visible;
        gap: 0;
        padding: 0;
    }

    .accordion-fakebutton[b-pyhny3249j] {
        margin: .15rem .75rem;
    }

    .accordion-fakebutton a[b-pyhny3249j],
    .accordion-fakebutton button[b-pyhny3249j] {
        flex-direction: row;
        gap: .75rem;
        padding: .7rem .85rem;
        font-size: 1rem;
        white-space: normal;
    }

    .accordion-fakebutton a i[b-pyhny3249j],
    .accordion-fakebutton button i[b-pyhny3249j] {
        width: 1.2rem;
        font-size: 1.05rem;
    }
}

.accordion-fakebutton:hover[b-pyhny3249j] {
    background-color: var(--surface-bg);
}

.accordion-fakebutton a:hover[b-pyhny3249j],
.accordion-fakebutton button:hover[b-pyhny3249j] {
    color: var(--pal-red);
}

.accordion-fakebutton a:hover i[b-pyhny3249j],
.accordion-fakebutton button:hover i[b-pyhny3249j] {
    color: var(--pal-red);
}

/* Etat actif (page courante) : n'avait jusqu'ici aucun style associe nulle part (classe "active"
   posee par GetActive() mais jamais consommee en CSS) — le lien courant etait donc visuellement
   indiscernable des autres. Soulignement bas sur la rangee horizontale mobile (repere de tab
   classique), barre laterale gauche une fois revenu en colonne verticale (--bp-desktop-sm). */
.accordion-fakebutton a.active[b-pyhny3249j] {
    background-color: hsl(from var(--pal-red) h s l / .12);
    color: var(--pal-red);
    box-shadow: inset 0 -3px 0 var(--pal-red);
}

.accordion-fakebutton a.active i[b-pyhny3249j] {
    color: var(--pal-red);
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .accordion-fakebutton a.active[b-pyhny3249j] {
        box-shadow: inset 3px 0 0 var(--pal-red);
    }
}

/* Deconnexion : sur mobile, simple item de la rangee horizontale, juste separe du reste par un
   filet vertical (pas de bande pleine largeur, qui n'a de sens qu'en colonne). Redevient la bande
   de fond distincte d'origine (--surface-bg, le fond de PAGE) a partir de --bp-desktop-sm. */
.accordion-fakebutton:last-child[b-pyhny3249j] {
    margin-left: .3rem;
    padding-left: .3rem;
    border-left: 1px solid var(--surface-border);
}

.accordion-fakebutton:last-child button[b-pyhny3249j] {
    color: var(--text-muted);
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .accordion-fakebutton:last-child[b-pyhny3249j] {
        margin: 1rem 0 -.75rem;
        padding: .85rem 0 1rem;
        display: flex;
        justify-content: center;
        background-color: var(--surface-bg);
        border-radius: 0 0 15px 15px;
        border-left: none;
    }

    .accordion-fakebutton:last-child button[b-pyhny3249j] {
        justify-content: center;
        flex: none;
        background-color: var(--surface-card);
        border: 1px solid var(--surface-border);
        color: var(--text-muted);
        font-weight: 600;
        font-size: .88rem;
        padding: .55rem 1.3rem;
        border-radius: var(--pal-btn-radius);
    }
}

.accordion-fakebutton:last-child:hover[b-pyhny3249j] {
    background-color: var(--surface-bg);
}

.accordion-fakebutton:last-child button:hover[b-pyhny3249j] {
    background-color: color-mix(in srgb, var(--pal-red) 12%, var(--surface-card));
    border-color: var(--pal-red);
    color: var(--pal-red);
}
/* /Components/Layout/NoReconnect.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-ka7fu0w2l8],
.components-reconnect-repeated-attempt-visible[b-ka7fu0w2l8],
.components-reconnect-failed-visible[b-ka7fu0w2l8],
.components-pause-visible[b-ka7fu0w2l8],
.components-resume-failed-visible[b-ka7fu0w2l8],
.components-rejoining-animation[b-ka7fu0w2l8] {
    display: none;
}

/* /Components/Layout/PalFoot.razor.rz.scp.css */
footer[b-uqt6ogn3da] {
    background: linear-gradient(160deg, var(--footer-grad-start) 0%, var(--footer-grad-end) 100%);
    color: var(--chrome-text-muted);
}

footer a[b-uqt6ogn3da] {
    color: inherit;
}

footer .title[b-uqt6ogn3da] {
    color: var(--chrome-text);
    font-size: 1.1rem;
    font-weight: bold;
    margin-bottom: 5px;
}

.pal-footer-columns[b-uqt6ogn3da] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

/* seuil: --bp-tablet */
@media (min-width:600px) {
    .pal-footer-columns[b-uqt6ogn3da] {
        flex-direction: row;
        gap: 0;
    }

        .pal-footer-columns > div[b-uqt6ogn3da] {
            flex: 1 1 0;
            padding-inline: 0.75rem;
        }
}

.pal-footer-copyright[b-uqt6ogn3da] {
    font-size: 0.8rem;
    margin-top: 0.75rem;
}

.pal-footer-social[b-uqt6ogn3da] {
    display: flex;
    gap: 0.25rem;
}

    footer a.social[b-uqt6ogn3da] {
        display: inline-block;
        width: 35px;
        line-height: 35px;
        background: var(--pal-red);
        text-align: center;
        color: var(--chrome-text);
        margin: 3px;
    }

.pal-legal-bar[b-uqt6ogn3da] {
    margin-top: 1.5rem;
    padding: 0.6rem 1.25rem;
    text-align: center;
    font-size: 0.8rem;
    background-color: var(--chrome-bg);
    color: var(--chrome-text-muted);
}

.rounded-circle[b-uqt6ogn3da] {
    border-radius: 50% !important;
}
/* /Components/Layout/PalHeaderTop.razor.rz.scp.css */

.pal-navbar[b-bxpj7sjwqn] {
    background: var(--chrome-bg);
    border-bottom: 1px solid var(--chrome-border);
    /* Gabarit du bloc compte dans la barre : l'avatar et le bouton de connexion qui le remplace
       hors session doivent faire exactement la meme taille, sinon la barre change de silhouette
       entre les deux etats. Une seule valeur, consommee par .pal-header-avatar et .pal-bar-login. */
    --pal-header-avatar-size: 44px;
}

.pal-navbar .dropdown-menu[b-bxpj7sjwqn] {
    background-color: var(--chrome-bg);
}

.pal-navbar .dropdown-item[b-bxpj7sjwqn] {
    color: var(--chrome-text);
    font-weight: 600;
    font-size: 0.8rem;
    letter-spacing: 0.02em;
}

    .pal-navbar .dropdown-item:hover[b-bxpj7sjwqn] {
        background-color: color-mix(in srgb, var(--chrome-bg) 85%, white 15%);
    }

.pal-navbar-inner[b-bxpj7sjwqn] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-start;
    padding-block: 0.85rem;
    column-gap: 0.75rem;
    row-gap: 0.5rem;
    width: 100%;
    margin-inline: auto;
}

/* seuil: --bp-desktop-sm */
@media (min-width:1024px) {
    .pal-navbar-inner[b-bxpj7sjwqn] {
        max-width: 1180px;
    }
}

/* seuil: --bp-desktop-lg — largeur volontairement plus genereuse que .pal-content (1320px)
   pour laisser au menu (logo+nav+recherche+compte) la place de tenir sur une ligne. */
@media (min-width:1440px) {
    .pal-navbar-inner[b-bxpj7sjwqn] {
        max-width: 1540px;
    }
}

.pal-brand[b-bxpj7sjwqn] {
    order: 1;
    flex: none;
    text-decoration: none;
    gap: 0.6rem;
}

.pal-logo[b-bxpj7sjwqn] {
    height: 2.5rem;
    width: auto;
}

.pal-brand-text[b-bxpj7sjwqn] {
    display: none;
    line-height: 1.2;
}

/* seuil: --bp-tablet */
@media (min-width:600px) {
    .pal-brand-text[b-bxpj7sjwqn] {
        display: flex;
    }
}

.pal-head-text[b-bxpj7sjwqn] {
    font-weight: 700;
    font-size: 1.1rem;
    letter-spacing: 0.02em;
    color: var(--chrome-text);
    line-height: 1.2;
}

.pal-title[b-bxpj7sjwqn] {
    margin: 0;
    font-size: 0.75rem;
    color: var(--chrome-text-muted);
    max-width: 14rem;
}

.navbar-collapse[b-bxpj7sjwqn] {
    order: 2;
    flex: 0 1 auto;
}

.pal-account-actions[b-bxpj7sjwqn] {
    order: 3;
    flex: none;
    margin-left: auto;
    gap: 0.5rem !important;
}

.navbar-toggler[b-bxpj7sjwqn] {
    order: 4;
    background-color: var(--chrome-text);
}

/* Bloc compte de la barre reduite : avatar si connecte, acces a la connexion sinon. Masque au
   dessus du seuil, ou la barre desktop (.pal-account-actions) porte deja l'avatar.
   C'est lui qui porte desormais le margin-left:auto (il precede le hamburger dans l'ordre
   flex) : la marge vivait sur .navbar-toggler, ce qui aurait laisse l'avatar colle au logo
   pendant que le hamburger partait seul a droite. */
.pal-bar-account[b-bxpj7sjwqn] {
    display: none;
    order: 3;
    align-items: center;
    flex: none;
    margin-left: auto;
    gap: 0.5rem;
}

/* L'icone de connexion reprend le gabarit rond de l'avatar : la barre garde la meme silhouette
   qu'on soit connecte ou non. */
.pal-bar-login[b-bxpj7sjwqn] {
    display: grid;
    place-items: center;
    width: var(--pal-header-avatar-size);
    height: var(--pal-header-avatar-size);
    border-radius: 50%;
    color: var(--chrome-text);
    font-size: 1.25rem;
    background-color: color-mix(in srgb, var(--chrome-text) 12%, transparent);
}

    .pal-bar-login:hover[b-bxpj7sjwqn] {
        color: var(--chrome-text);
        background-color: color-mix(in srgb, var(--chrome-text) 22%, transparent);
    }

/* exclusion par classe propre (.pal-search-submit), pas par conteneur ancetre : le bouton
   recherche vit soit dans .pal-search-menu (desktop) soit dans .pal-mobile-search-inline
   (mobile) — une exclusion basee sur .pal-search-menu .btn ratait le cas mobile. */
.pal-account-actions-scope .btn:not(.pal-search-toggle):not(.pal-search-submit)[b-bxpj7sjwqn] {
    border-radius: 20px !important;
    padding: 4px 16px;
    font-size: 0.9rem;
}

.pal-account-actions-scope .btn-primary[b-bxpj7sjwqn] {
    background-color: var(--pal-red);
    border-color: color-mix(in srgb,var(--pal-red) 50%,black 50%);
}

    .pal-account-actions-scope .btn-primary:hover[b-bxpj7sjwqn] {
        background-color: var(--pal-red-deep);
        border-color: color-mix(in srgb,var(--pal-red-deep) 50%,black 50%);
    }

.pal-account-actions-scope .dropdown-menu[b-bxpj7sjwqn] {
    --bs-dropdown-divider-bg: var(--chrome-border);
}

.pal-avatar[b-bxpj7sjwqn] {
    border-radius: 50%;
    height: 3.5rem;
    width: 3.5rem;
    padding: 0;
}

.navbar-nav.text-uppercase[b-bxpj7sjwqn] {
    --bs-navbar-active-color: var(--chrome-text-muted);
}

    .navbar-nav.text-uppercase[b-bxpj7sjwqn] {
        column-gap: 0.15rem;
    }

    .navbar-nav.text-uppercase .nav-link[b-bxpj7sjwqn] {
        --bs-nav-link-color: var(--chrome-text);
        --bs-navbar-nav-link-padding-x: 0.4rem;
        color: var(--chrome-text);
        font-weight: 600;
        font-size: 0.8rem;
        letter-spacing: 0.02em;
        position: relative;
        transition: color 0.2s ease;
    }

        .navbar-nav.text-uppercase .nav-link:hover[b-bxpj7sjwqn] {
            color: var(--pal-red);
        }

    .navbar-nav.text-uppercase .nav-link[b-bxpj7sjwqn]:before {
        bottom: 0;
        left: 0;
        display: block;
        height: 3px;
        width: 0%;
        content: "";
        background-color: var(--pal-red);
        vertical-align: middle;
        margin: 0px;
        position: absolute;
        -webkit-transition: all 0.35s ease;
        transition: all 0.35s ease;
    }

    .navbar-nav.text-uppercase .nav-link.active[b-bxpj7sjwqn]:before, .navbar-nav.text-uppercase .nav-link:hover[b-bxpj7sjwqn]:before {
        width: 100%;
    }

    .navbar-nav.text-uppercase .nav-link.active[b-bxpj7sjwqn] {
        color: var(--pal-red);
    }

.pal-header-avatar[b-bxpj7sjwqn] {
    --img-size: var(--pal-header-avatar-size);
}

.pal-header-icon-btn[b-bxpj7sjwqn] {
    border-radius: 999px;
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--chrome-border);
    font-size: 1.1rem;
}

.pal-search-toggle[b-bxpj7sjwqn] {
    color: var(--pal-red);
    border-color: var(--pal-red);
    /* Exception a la regle "icone seule = rond" (harmonisation boutons, decisions.md
       [[boutons-forme-role]]) : le bouton de recherche du header est volontairement
       carre-arrondi, surcharge le 999px de .pal-header-icon-btn. */
    border-radius: var(--pal-btn-radius);
}

    .pal-search-toggle:hover[b-bxpj7sjwqn], .pal-search-toggle:focus[b-bxpj7sjwqn] {
        background-color: var(--pal-red);
        color: var(--chrome-text);
    }

.pal-search-menu[b-bxpj7sjwqn] {
    min-width: 280px;
    padding: 0.75rem !important;
    background-color: var(--chrome-bg);
    border-color: var(--chrome-border);
}

/* Bouton de soumission a l'interieur du menu de recherche ouvert — meme bouton "recherche",
   deuxieme rendu (etait btn-outline-success, vert Bootstrap non theme : bug reel, pas un choix). */
.pal-search-submit[b-bxpj7sjwqn] {
    border-radius: var(--pal-btn-radius);
    color: var(--pal-red);
    border-color: var(--pal-red);
    background-color: transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

    .pal-search-submit:hover[b-bxpj7sjwqn], .pal-search-submit:focus[b-bxpj7sjwqn] {
        background-color: var(--pal-red);
        color: var(--pal-on-accent);
        border-color: var(--pal-red);
    }

.pal-search-menu .btn-outline-success[b-bxpj7sjwqn] {
    --bs-btn-color: var(--pal-red);
    --bs-btn-border-color: var(--pal-red);
    --bs-btn-hover-bg: var(--pal-red);
    --bs-btn-hover-border-color: var(--pal-red);
    --bs-btn-active-bg: var(--pal-red-deep);
    --bs-btn-active-border-color: var(--pal-red-deep);
}

/* seuil: sous --bp-desktop-lg (1440px), complementaire au bloc min-width:1440px plus haut */
@media screen and (max-width:1439px) {
    .navbar-collapse[b-bxpj7sjwqn] {
        position: absolute;
        width: 100%;
        top: 100%;
        left: 0;
        z-index: 100;
        background-color: var(--chrome-bg);
        padding: 0 15px;
    }
}

.pal-mobile-account-actions[b-bxpj7sjwqn] {
    display: none;
}

/* seuil: sous --bp-desktop-lg (1440px) — les actions compte (recherche/messages/avatar ou
   inscription/connexion) quittent la barre du header pour rejoindre le panneau hamburger :
   sinon elles ne tiennent plus a cote du logo+hamburger et retombent sur une 2e ligne (bug
   reel corrige, cf. decisions.md [[header-mobile-hamburger-actions-compte]]). */
@media screen and (max-width:1439px) {
    /* !important necessaire : la div porte aussi la classe Bootstrap d-flex, qui est
       display:flex!important dans ce projet (meme piege deja rencontre sur .pal-dash-menu) —
       sans !important ici, la barre desktop restait visible sous 1440px. */
    .pal-account-actions[b-bxpj7sjwqn] {
        display: none !important;
    }

    /* L'avatar (ou l'acces a la connexion) revient dans la barre, colle au hamburger. Seul cet
       element remonte : a trois, la ligne debordait — c'est le bug d'origine. */
    .pal-bar-account[b-bxpj7sjwqn] {
        display: flex;
    }

    .pal-mobile-account-actions[b-bxpj7sjwqn] {
        display: flex;
        align-items: center;
        justify-content: center;
        flex-wrap: wrap;
        gap: 0.6rem;
        padding-block: 0.85rem;
        margin-bottom: 0.5rem;
        border-bottom: 1px solid var(--chrome-border);
    }

    /* Recherche mobile : champ directement ouvert (pas de bouton+dropdown comme en desktop,
       cf. AccountActionsContent) — occupe sa propre ligne pleine largeur en tete du panneau. */
    .pal-mobile-search-inline[b-bxpj7sjwqn] {
        flex: 1 0 100%;
        width: 100%;
    }
}

/* seuil: --bp-desktop-lg — remplace le mecanisme Bootstrap navbar-expand-xxl (bascule a
   1400px, un breakpoint Bootstrap qu'on evite desormais) par une regle equivalente alignee
   sur notre propre seuil (1440px). Reprend a l'identique ce que faisait navbar-expand-xxl :
   masquer le hamburger, forcer le menu visible en ligne, et repasser les sous-menus en
   dropdowns flottants plutot qu'empiles. */
@media (min-width:1440px) {
    .pal-navbar .navbar-toggler[b-bxpj7sjwqn] {
        display: none;
    }

    .pal-navbar .navbar-collapse[b-bxpj7sjwqn] {
        display: flex !important;
        flex-basis: auto;
    }

    .pal-navbar .navbar-nav[b-bxpj7sjwqn] {
        flex-direction: row;
    }

    .pal-navbar .navbar-nav .dropdown-menu[b-bxpj7sjwqn] {
        position: absolute;
    }

    .pal-navbar .navbar-nav .nav-link[b-bxpj7sjwqn] {
        padding-right: var(--bs-navbar-nav-link-padding-x);
        padding-left: var(--bs-navbar-nav-link-padding-x);
    }
}

/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-xinew3i8zz],
.components-reconnect-repeated-attempt-visible[b-xinew3i8zz],
.components-reconnect-failed-visible[b-xinew3i8zz],
.components-pause-visible[b-xinew3i8zz],
.components-resume-failed-visible[b-xinew3i8zz],
.components-rejoining-animation[b-xinew3i8zz] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-xinew3i8zz],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-xinew3i8zz],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-xinew3i8zz],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-xinew3i8zz],
#components-reconnect-modal.components-reconnect-retrying[b-xinew3i8zz],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-xinew3i8zz],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-xinew3i8zz],
#components-reconnect-modal.components-reconnect-failed[b-xinew3i8zz],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-xinew3i8zz] {
    display: block;
}


#components-reconnect-modal[b-xinew3i8zz] {
    background-color: var(--surface-bg);
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-xinew3i8zz 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-xinew3i8zz 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-xinew3i8zz 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-xinew3i8zz]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-xinew3i8zz 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-xinew3i8zz {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-xinew3i8zz {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-xinew3i8zz {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-xinew3i8zz] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-xinew3i8zz] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-xinew3i8zz] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-xinew3i8zz] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-xinew3i8zz] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-xinew3i8zz] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-xinew3i8zz] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-xinew3i8zz 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-xinew3i8zz] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-xinew3i8zz {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/AdhesionProcess.razor.rz.scp.css */
/* Page jamais retouchee par la refonte avant cette session (tout etait en Bootstrap brut). */

.pal-sub-page[b-8zkot9hyqq] {
    max-width: 60rem;
    margin: 0 auto;
    padding: 1.75rem 1rem 3rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.pal-sub-hero[b-8zkot9hyqq] {
    text-align: center;
    max-width: 34rem;
    margin: 0 auto .5rem;
}

.pal-sub-hero h1[b-8zkot9hyqq] {
    margin: 0;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}

.pal-sub-hero p[b-8zkot9hyqq] {
    margin: .5rem 0 0;
    color: var(--text-muted);
}

.pal-sub-alert[b-8zkot9hyqq] {
    display: flex;
    align-items: center;
    gap: .6rem;
    background: var(--pal-warning-bg);
    color: var(--pal-warning);
    border-radius: 10px;
    padding: .9rem 1.2rem;
    max-width: 34rem;
    margin: 0 auto;
}

.pal-sub-alert a[b-8zkot9hyqq] {
    color: inherit;
    font-weight: 700;
}

.pal-sub-section-title[b-8zkot9hyqq] {
    margin: 0;
    /* etait 1.05rem — harmonisation titres, decisions.md [[titres-echelle-h1]] : aligne sur
       le 1.15rem deja utilise pour ce meme role (titre de section de carte) sur Register/Profil. */
    font-size: 1.15rem;
    color: var(--text);
}

/* Toujours empilee (le bloc de don d'abord, la jauge en dessous) — y compris sur grand ecran,
   demande explicite pour garder le formulaire seul au premier plan. */
.pal-sub-two[b-8zkot9hyqq] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.pal-sub-card[b-8zkot9hyqq],
.pal-ladder-card[b-8zkot9hyqq] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1.5rem 1.6rem;
}

.pal-sub-card-head[b-8zkot9hyqq] {
    text-align: center;
    margin-bottom: 1.3rem;
}

.pal-sub-card-head h2[b-8zkot9hyqq] {
    margin: 0;
    /* etait 1.1rem — harmonisation titres, decisions.md [[titres-echelle-h1]]. */
    font-size: 1.15rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    color: var(--pal-red);
}

.pal-sub-card-head p[b-8zkot9hyqq] {
    margin: .4rem 0 0;
    color: var(--text-muted);
    font-size: .85rem;
}

.pal-sub-amount[b-8zkot9hyqq] {
    text-align: center;
    margin-bottom: 1.1rem;
}

.pal-sub-amount label[b-8zkot9hyqq] {
    display: block;
    font-weight: 700;
    font-size: .82rem;
    color: var(--text-muted);
    margin-bottom: .5rem;
}

.pal-sub-amount-input[b-8zkot9hyqq] {
    display: inline-flex;
    align-items: center;
    gap: .6rem;
}

.pal-amt-step[b-8zkot9hyqq] {
    width: 2.4rem;
    height: 2.4rem;
    border-radius: 50%;
    border: 1px solid var(--surface-border);
    background: var(--surface-bg);
    color: var(--text);
    font-size: 1.2rem;
    cursor: pointer;
    display: grid;
    place-items: center;
}

.pal-amt-step:hover[b-8zkot9hyqq] {
    border-color: var(--pal-red);
    color: var(--pal-red);
}

.pal-sub-amount-input input[b-8zkot9hyqq] {
    width: 7rem;
    text-align: center;
    font-size: 1.9rem;
    font-weight: 700;
    border: none;
    background: transparent;
    color: var(--text);
}

.pal-sub-amount-input input:focus[b-8zkot9hyqq] {
    outline: none;
}

.pal-sub-amount-input .unit[b-8zkot9hyqq] {
    font-size: 1.3rem;
    color: var(--text-muted);
    font-weight: 700;
}

.pal-sub-legal[b-8zkot9hyqq] {
    color: var(--text-muted);
    font-size: .8rem;
    line-height: 1.6;
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    border-radius: 10px;
    padding: .85rem 1rem;
    margin-bottom: 1.2rem;
    display: flex;
    gap: .6rem;
}

.pal-sub-legal i[b-8zkot9hyqq] {
    color: var(--pal-red);
    flex: none;
    margin-top: .15rem;
}

.pal-sub-cta[b-8zkot9hyqq] {
    width: 100%;
    justify-content: center;
    padding: .8rem 1rem;
    font-size: .95rem;
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    /* etait en Bootstrap brut — harmonisation boutons, decisions.md [[boutons-forme-role]]. */
    border-radius: var(--pal-btn-radius);
}

.btn-warn[b-8zkot9hyqq] {
    background: transparent;
    border: 1px solid var(--pal-warning);
    color: var(--pal-warning);
}

.btn-warn:hover[b-8zkot9hyqq] {
    background: var(--pal-warning-bg);
    color: var(--pal-warning);
}

.pal-ladder-head[b-8zkot9hyqq] {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: 1.4rem;
}

.pal-ladder-head h2[b-8zkot9hyqq] {
    margin: 0;
    /* etait 1rem — harmonisation titres, decisions.md [[titres-echelle-h1]]. */
    font-size: 1.15rem;
    color: var(--text);
}

.pal-ladder-head i[b-8zkot9hyqq] {
    color: var(--pal-red);
}
/* /Components/Pages/Archives.razor.rz.scp.css */
.pal-archives[b-nkv0nm4gxw] {
    padding: 1.5rem 1rem 3rem;
}

.pal-archives-select-row[b-nkv0nm4gxw] {
    margin-bottom: 1.5rem;
}

.pal-archives-select[b-nkv0nm4gxw] {
    appearance: none;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--text);
    background-color: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: 10px;
    padding: 0.65rem 2.4rem 0.65rem 1rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236e6c66' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    cursor: pointer;
    max-width: 20rem;
}

.pal-archives-card[b-nkv0nm4gxw] {
    background-color: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}

.pal-archives-card-head[b-nkv0nm4gxw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--surface-border);
}

.pal-archives-card-head h2[b-nkv0nm4gxw] {
    font-size: 1.15rem;
    color: var(--text);
    margin: 0;
}

.pal-archives-card-head .sub[b-nkv0nm4gxw] {
    font-size: 0.82rem;
    color: var(--text-muted);
    margin-top: 0.2rem;
}

.pal-archives-pill[b-nkv0nm4gxw] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.3rem 0.7rem;
    border-radius: 999px;
    font-size: 0.76rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    flex: none;
}

.pal-archives-pill .dot[b-nkv0nm4gxw] {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    background-color: currentColor;
}

.pal-archives-pill.live[b-nkv0nm4gxw] {
    color: var(--agenda-live);
    background-color: color-mix(in srgb, var(--agenda-live) 14%, transparent);
}

.pal-archives-pill.online[b-nkv0nm4gxw] {
    color: var(--agenda-online);
    background-color: color-mix(in srgb, var(--agenda-online) 16%, transparent);
}

.pal-archives-body[b-nkv0nm4gxw] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-archives-body[b-nkv0nm4gxw] {
        grid-template-columns: 1fr 1.7fr;
    }
}

.pal-archives-podium[b-nkv0nm4gxw] {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 0.75rem;
    padding: 0.5rem 0 1.25rem;
}

.pal-archives-podium .p-slot[b-nkv0nm4gxw] {
    text-align: center;
    position: relative;
}

.pal-archives-podium .pal-img[b-nkv0nm4gxw] {
    display: block;
    margin: 0 auto;
}

.pal-archives-podium .p-slot.first .pal-img[b-nkv0nm4gxw] {
    --img-size: 76px;
}

.pal-archives-medal[b-nkv0nm4gxw] {
    display: block;
    font-size: 1.15rem;
    margin-bottom: 0.35rem;
}

.pal-archives-podium .p-slot.first .pal-archives-medal[b-nkv0nm4gxw] {
    font-size: 1.35rem;
}

.pal-archives-medal.color-gold[b-nkv0nm4gxw] {
    color: var(--podium-gold);
}

.pal-archives-medal.color-silver[b-nkv0nm4gxw] {
    color: var(--podium-silver);
}

.pal-archives-medal.color-bronze[b-nkv0nm4gxw] {
    color: var(--podium-bronze);
}

.pal-archives-podium .name[b-nkv0nm4gxw] {
    font-size: 0.82rem;
    font-weight: 700;
    margin-top: 0.5rem;
    max-width: 6.5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--text);
}

.pal-archives-podium .pts[b-nkv0nm4gxw] {
    font-size: 0.76rem;
    color: var(--text-muted);
}

.pal-archives-mini-table[b-nkv0nm4gxw] {
    width: 100%;
    border-collapse: collapse;
}

.pal-archives-mini-table tr[b-nkv0nm4gxw] {
    border-top: 1px solid var(--surface-border);
}

.pal-archives-mini-table tr:nth-child(odd)[b-nkv0nm4gxw] {
    background-color: color-mix(in srgb, var(--text) 3%, transparent);
}

.pal-archives-mini-table td[b-nkv0nm4gxw] {
    padding: 0.5rem 0.4rem;
    font-size: 0.85rem;
    vertical-align: middle;
    color: var(--text);
}

.pal-archives-mini-table .rank[b-nkv0nm4gxw] {
    color: var(--pal-red);
    font-weight: 900;
    width: 1.6rem;
    text-align: center;
}

.pal-archives-mini-table .player[b-nkv0nm4gxw] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.pal-archives-mini-table .pts[b-nkv0nm4gxw] {
    text-align: right;
    font-weight: 700;
    color: var(--text-muted);
}

.pal-archives-cta[b-nkv0nm4gxw] {
    margin-top: 1rem;
    text-align: center;
}

.pal-archives-link[b-nkv0nm4gxw] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--pal-red);
    text-decoration: none;
}

.pal-archives-link:hover[b-nkv0nm4gxw] {
    color: var(--pal-red-mid);
    text-decoration: underline;
}

.pal-archives-tournoi-wrap[b-nkv0nm4gxw] {
    overflow: auto;
    max-height: 20rem;
    border: 1px solid var(--surface-border);
    border-radius: 10px;
}

.pal-archives-tournoi-table[b-nkv0nm4gxw] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.87rem;
}

.pal-archives-tournoi-table thead th[b-nkv0nm4gxw] {
    position: sticky;
    top: 0;
    background-color: var(--surface-card);
    text-align: left;
    padding: 0.65rem 0.85rem;
    font-size: 0.72rem;
    text-transform: var(--pal-th-text-transform);
    letter-spacing: 0.04em;
    color: var(--text-muted);
    border-bottom: 1px solid var(--surface-border);
}

.pal-archives-tournoi-table td[b-nkv0nm4gxw] {
    padding: 0.6rem 0.85rem;
    border-bottom: 1px solid var(--surface-border);
    color: var(--text);
}

.pal-archives-tournoi-table tbody tr:nth-child(odd)[b-nkv0nm4gxw] {
    background-color: color-mix(in srgb, var(--text) 2.5%, transparent);
}

.pal-archives-tournoi-table tbody tr:last-child td[b-nkv0nm4gxw] {
    border-bottom: none;
}

.pal-archives-tournoi-table .date[b-nkv0nm4gxw] {
    color: var(--text-muted);
    white-space: nowrap;
}

.pal-archives-tournoi-table .winner[b-nkv0nm4gxw] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
/* /Components/Pages/BackOffice/Agenda/BOChampionnats.razor.rz.scp.css */
/* Vide depuis le 2026-08-13 : la grille pal-bo-championnats-grid ne portait plus rien d'unique par
   rapport a la classe partagee .pal-bo-grid (pal-backoffice.css) — le composant porte desormais
   les deux classes (Class="pal-bo-grid pal-bo-championnats-grid"), pal-bo-championnats-grid ne
   sert plus qu'a garder un nom stable si un style specifique redevient necessaire un jour. */
/* /Components/Pages/BackOffice/Agenda/BOTournoiDetail.razor.rz.scp.css */
/* ---- segmented control Live/Online ---- */
.pal-bo-seg[b-gk9988f65k] {
    display: flex;
    gap: .5rem;
}

.pal-bo-seg-btn[b-gk9988f65k] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    padding: .85rem 1rem;
    border-radius: 10px;
    border: 1px solid var(--surface-border);
    background: var(--surface-bg);
    color: var(--text-muted);
    font-weight: 700;
    font-size: .92rem;
    cursor: pointer;
    appearance: none;
    font-family: inherit;
}

    .pal-bo-seg-btn.is-active[b-gk9988f65k] {
        border-color: var(--pal-red);
        background: var(--bo-danger-bg);
        color: var(--pal-red);
    }

.pal-bo-toggle-row-actions[b-gk9988f65k] {
    display: flex;
    align-items: center;
    gap: .6rem;
}

/* ---- selecteur cherche-et-choisis (Room) ---- */
.pal-bo-picker[b-gk9988f65k] {
    display: flex;
    align-items: center;
    gap: .5rem;
}

.pal-bo-picker-val[b-gk9988f65k] {
    flex: 1;
    padding: 8px 10px;
    border-radius: 7px;
    border: 1px dashed var(--surface-border);
    background: var(--surface-bg);
    color: var(--text-muted);
    font-size: .88rem;
}

    .pal-bo-picker-val.is-set[b-gk9988f65k] {
        border-style: solid;
        color: var(--text);
        font-weight: 600;
    }

.pal-bo-alert-warning[b-gk9988f65k] {
    padding: .6rem .9rem;
    border-radius: 10px;
    background: var(--pal-warning-bg);
    color: var(--pal-warning);
    font-size: .82rem;
    font-weight: 600;
    margin-top: .7rem;
}

/* ---- cellule joueur (avatar + pseudo + lien sur toute la ligne) ---- */
[b-gk9988f65k] .pal-bo-player-cell {
    display: flex;
    align-items: center;
    gap: .6rem;
    font-weight: 600;
    position: relative;
}

/* ---- table "Joueurs inscrits" (HTML brut, pas une QuickGrid) ---- */
.pal-bo-inscrits-table[b-gk9988f65k] {
    width: 100%;
    border-collapse: collapse;
}

    .pal-bo-inscrits-table thead th[b-gk9988f65k] {
        text-align: left;
        font-size: .68rem;
        font-weight: 700;
        text-transform: var(--pal-th-text-transform);
        letter-spacing: .05em;
        color: var(--text-muted);
        padding: 8px 1.1rem;
        border-bottom: 1px solid var(--surface-border);
        white-space: nowrap;
    }

    .pal-bo-inscrits-table tbody td[b-gk9988f65k] {
        padding: 8px 1.1rem;
        border-bottom: 1px solid var(--surface-border);
        font-size: .85rem;
        vertical-align: middle;
    }

    .pal-bo-inscrits-table tbody tr:last-child td[b-gk9988f65k] {
        border-bottom: none;
    }

    .pal-bo-inscrits-table tbody tr:hover[b-gk9988f65k] {
        background: var(--bo-row-hover);
    }

    .pal-bo-inscrits-table .pal-bo-waitlist-row td[b-gk9988f65k] {
        background: var(--chrome-bg);
        color: var(--chrome-text);
        text-align: center;
        font-size: .72rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .06em;
        padding: 6px;
    }

/* ---- ligne "Joueurs totaux" au-dessus de la grille Classement : label, champ (.pal-bo-input-num-sm,
   voir pal-backoffice.css) et texte explicatif sur une seule ligne (le label ne contient qu'un mot,
   pas besoin de l'empiler au-dessus comme .pal-bo-form-row le fait par defaut pour les formulaires
   generiques), avec une separation nette avant le tableau. */
[b-gk9988f65k] .pal-bo-classement-total-body {
    padding-bottom: 1.1rem;
}

[b-gk9988f65k] .pal-bo-classement-total-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .6rem;
}

[b-gk9988f65k] .pal-bo-classement-total-row .pal-bo-form-label {
    margin-bottom: 0;
    white-space: nowrap;
}

/* ---- grille "Classement" (QuickGrid, editable) : la plupart du theme vient desormais de la
   classe partagee .pal-bo-grid (pal-backoffice.css, composant porte les deux classes) — ne reste
   ici que ce qui differe reellement (padding td plus resserre, pas de zebrage vu les champs
   editables, style des inputs). ---- */
[b-gk9988f65k] .pal-bo-classement-grid td {
    color: var(--text);
    vertical-align: middle;
    padding: 0.5rem 0.875rem;
}

[b-gk9988f65k] .pal-bo-classement-grid td input {
    width: 5.5rem;
    padding: 5px 7px;
    padding-right: var(--pal-number-input-gutter);
    border-radius: 6px;
    border: 1px solid var(--surface-border);
    background: var(--surface-bg);
    color: var(--text);
    font: inherit;
    font-size: .85rem;
    font-variant-numeric: tabular-nums;
}
/* /Components/Pages/BackOffice/Agenda/BOTournois.razor.rz.scp.css */
/* Vide depuis le 2026-08-13 : la grille pal-bo-tournois-grid ne portait plus rien d'unique par
   rapport a la classe partagee .pal-bo-grid (pal-backoffice.css) — le composant porte desormais
   les deux classes (Class="pal-bo-grid pal-bo-tournois-grid"), pal-bo-tournois-grid ne sert plus
   qu'a garder un nom stable si un style specifique redevient necessaire un jour. */
/* /Components/Pages/BackOffice/BODashboard.razor.rz.scp.css */
/* Repartition des adherents par palier — barre segmentee (voir maquette A validee) + legende
   sur 2 colonnes qui se remplissent de haut en bas (colonne de gauche d'abord, colonne de
   droite ensuite) via CSS multi-colonnes, plutot qu'une grille qui lirait l'ordre
   gauche->droite avant haut->bas. */

.pal-dash-tier-card[b-22u8s6rzob],
.pal-dash-affil-card[b-22u8s6rzob] {
    margin-bottom: 1.25rem;
}

.pal-dash-tier-bar[b-22u8s6rzob] {
    display: flex;
    height: 20px;
    border-radius: 999px;
    overflow: hidden;
    background: var(--surface-border);
    margin-bottom: 1.1rem;
}

    .pal-dash-tier-bar .seg[b-22u8s6rzob] {
        height: 100%;
    }

.pal-dash-tier-legend[b-22u8s6rzob] {
    display: block;
}

/* seuil: --bp-tablet (600px, cf. PalGauge.razor.css) — une seule colonne en dessous, sinon les
   libelles les plus longs ("Tableau des champions") n'ont plus la place de tenir sur une ligne. */
@media (min-width: 600px) {
    .pal-dash-tier-legend[b-22u8s6rzob] {
        column-count: 2;
        column-gap: 1.75rem;
    }
}

.pal-dash-tier-item[b-22u8s6rzob] {
    display: flex;
    align-items: center;
    gap: .6rem;
    break-inside: avoid;
    margin-bottom: .65rem;
}

    .pal-dash-tier-item:last-child[b-22u8s6rzob] {
        margin-bottom: 0;
    }

    .pal-dash-tier-item .sw[b-22u8s6rzob] {
        width: 12px;
        height: 12px;
        border-radius: 3px;
        flex: none;
    }

    .pal-dash-tier-item .lbl[b-22u8s6rzob] {
        flex: 1;
        min-width: 0;
        font-size: .85rem;
        font-weight: 700;
    }

        .pal-dash-tier-item .lbl .amt[b-22u8s6rzob] {
            display: block;
            font-weight: 500;
            color: var(--text-muted);
            font-size: .74rem;
        }

    .pal-dash-tier-item .nb[b-22u8s6rzob] {
        font-size: .88rem;
        font-weight: 800;
        white-space: nowrap;
        font-variant-numeric: tabular-nums;
    }

    .pal-dash-tier-item .pc[b-22u8s6rzob] {
        font-size: .76rem;
        color: var(--text-muted);
        white-space: nowrap;
        margin-left: .3rem;
        font-variant-numeric: tabular-nums;
    }

/* Adhésions à valider : membre qui a déclaré avoir fait son virement (« J'ai fait le virement »). */
.pal-dash-row-virement[b-22u8s6rzob] {
    background: color-mix(in srgb, var(--pal-info) 6%, transparent);
}

.pal-dash-virement[b-22u8s6rzob] {
    color: var(--pal-info);
    font-weight: 700;
}
/* /Components/Pages/BackOffice/BONettoyageComptes.razor.rz.scp.css */
/* ---- Page « Gestion des doublons » ---- */

.pal-bo-callout-info[b-j5uru3wsef] {
    margin-bottom: 1.1rem;
}

.pal-bo-callout-info .pal-bo-card-body[b-j5uru3wsef] {
    padding-block: .85rem;
}


/* ---- liste des groupes ---- */
.pal-doublon-groupes[b-j5uru3wsef] {
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

.pal-doublon-groupe[b-j5uru3wsef] {
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    overflow: hidden;
}

.pal-doublon-groupe-head[b-j5uru3wsef] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .7rem .9rem;
    background: var(--bo-row-hover);
    border-bottom: 1px solid var(--surface-border);
    flex-wrap: wrap;
}

.pal-doublon-raisons[b-j5uru3wsef] {
    display: flex;
    gap: .35rem;
    flex-wrap: wrap;
}

.pal-doublon-groupe-count[b-j5uru3wsef] {
    font-size: .76rem;
    font-weight: 700;
    color: var(--text-muted);
}

/* ---- grille des comptes du groupe ---- */
.pal-doublon-grid[b-j5uru3wsef] {
    width: 100%;
    font-size: .82rem;
}

.pal-doublon-grid th.num[b-j5uru3wsef],
.pal-doublon-grid td.num[b-j5uru3wsef] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.pal-doublon-grid td input[type="radio"][b-j5uru3wsef],
.pal-doublon-grid td input[type="checkbox"][b-j5uru3wsef] {
    width: 1.05rem;
    height: 1.05rem;
    accent-color: var(--pal-red);
}

/* ---- colonne « à garder / compte distinct » ---- */
.pal-doublon-choix[b-j5uru3wsef] {
    white-space: nowrap;
}

.pal-doublon-choix-opt[b-j5uru3wsef] {
    display: flex;
    align-items: center;
    gap: .35rem;
    cursor: pointer;
    line-height: 1.4;
}

    .pal-doublon-choix-opt > span[b-j5uru3wsef] {
        font-size: .74rem;
    }

.pal-doublon-choix-distinct[b-j5uru3wsef] {
    margin-top: .15rem;
    color: var(--text-muted);
}

.pal-doublon-grid tr.pal-doublon-distinct > td[b-j5uru3wsef] {
    background: color-mix(in srgb, var(--text-muted) 8%, var(--surface-card));
    color: var(--text-muted);
}

    .pal-doublon-grid tr.pal-doublon-distinct .pal-player-name[b-j5uru3wsef] {
        text-decoration: line-through;
    }

.pal-doublon-ident[b-j5uru3wsef] {
    display: flex;
    flex-direction: column;
    gap: .15rem;
    align-items: flex-start;
}

.pal-doublon-badges[b-j5uru3wsef] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .3rem;
}

/* Badge PAL coloré selon le statut du compte (vert actif / jaune demande / rouge inactif /
   gris verrouillé) — mêmes classes bg-* que le reste du back-office. */
.pal-doublon-pal[b-j5uru3wsef] {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .02em;
}

/* ---- filtre (adhésion active) ---- */
.pal-doublon-filtres[b-j5uru3wsef] {
    display: flex;
    gap: .5rem;
    padding-bottom: 0;
}

.pal-doublon-filtre[b-j5uru3wsef] {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding: .35rem .7rem;
    border-radius: 999px;
    border: 1px solid var(--surface-border);
    background: var(--surface-card);
    color: var(--text-muted);
    font-size: .8rem;
    cursor: pointer;
}

    .pal-doublon-filtre:hover[b-j5uru3wsef] {
        border-color: var(--pal-red-mid);
    }

    .pal-doublon-filtre.actif[b-j5uru3wsef] {
        background: var(--pal-red-bg);
        border-color: var(--pal-red);
        color: var(--pal-red);
        font-weight: 600;
    }

    .pal-doublon-filtre .n[b-j5uru3wsef] {
        font-variant-numeric: tabular-nums;
        font-weight: 700;
    }

.pal-doublon-grid tr.pal-doublon-garde > td[b-j5uru3wsef] {
    background: color-mix(in srgb, var(--pal-success) 10%, var(--surface-card));
}

/* ---- encarts d'alerte ---- */
.pal-doublon-alerte[b-j5uru3wsef] {
    display: flex;
    align-items: center;
    gap: .6rem;
    flex-wrap: wrap;
    padding: .6rem .9rem;
    font-size: .8rem;
    background: var(--pal-warning-bg);
    border-top: 1px solid var(--surface-border);
}

.pal-doublon-alerte > i[b-j5uru3wsef] {
    color: var(--pal-warning);
    font-size: 1rem;
    flex: none;
}

.pal-doublon-alerte span[b-j5uru3wsef] {
    flex: 1;
    min-width: 12rem;
}

.pal-doublon-alerte-warn[b-j5uru3wsef] {
    background: var(--bo-danger-bg);
}

.pal-doublon-alerte-warn > i[b-j5uru3wsef] {
    color: var(--pal-red);
}

/* ---- barre d'actions du groupe ---- */
.pal-doublon-groupe-actions[b-j5uru3wsef] {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    padding: .8rem .9rem;
    border-top: 1px solid var(--surface-border);
    background: var(--surface-card);
}
/* /Components/Pages/BackOffice/BOSaison.razor.rz.scp.css */
/* Tableau des paliers de don : colonnes serrees (Montant/Herite doivent tenir sur une ligne avec
   leur icone d'info, cf. pal-bo-info-hint) — padding horizontal reduit par rapport au standard
   .pal-bo-grid (0.875rem) pour degager de la place sans reduire davantage Titre/Description. */
[b-ooglxsf3lo] .pal-bo-paliers-grid th {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
}

[b-ooglxsf3lo] .pal-bo-paliers-grid td {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
}
/* /Components/Pages/BackOffice/BOTransactions.razor.rz.scp.css */
/* ---- carte "Saison" ---- */
.pal-bo-transactions-saison[b-zwroq5o06a] {
    margin-bottom: 1.375rem;
}

.pal-bo-transactions-saison-label[b-zwroq5o06a] {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: .78rem;
    font-weight: 700;
    color: var(--text-muted);
    margin-bottom: .5rem;
}

.pal-bo-transactions-select[b-zwroq5o06a] {
    width: 100%;
    padding: 8px 10px;
    border-radius: 8px;
    border: 1px solid var(--surface-border);
    background: var(--surface-bg);
    color: var(--text);
    font: inherit;
    font-size: .9rem;
}

/* ---- KPI : variante 3 colonnes de .pal-bo-grid-kpi (par defaut prevue pour 4) ---- */
/* Sous --bp-tablet : une seule colonne — l'anneau "Donateurs" et le montant scinde valides/en
   attente ne tiennent pas dans une demi-largeur d'ecran de telephone. */
@media (max-width: 599px) {
    .pal-bo-grid-kpi.cols-3[b-zwroq5o06a] {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (min-width: 1024px) {
    .pal-bo-grid-kpi.cols-3[b-zwroq5o06a] {
        grid-template-columns: repeat(3, 1fr);
    }
}

.pal-bo-kpi-split[b-zwroq5o06a] {
    display: flex;
    align-items: center;
    gap: 1rem;
}

    .pal-bo-kpi-split .pal-bo-kpi-value[b-zwroq5o06a] {
        font-size: 1.3rem;
    }

.pal-bo-kpi-split-sep[b-zwroq5o06a] {
    width: 1px;
    align-self: stretch;
    background: var(--surface-border);
}

.pal-bo-transactions-donateurs-row[b-zwroq5o06a] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
}

.pal-bo-transactions-donateurs-row .pal-bo-kpi-delta[b-zwroq5o06a] {
    display: flex;
    align-items: center;
    gap: .3rem;
}

/* anneau de progression pur CSS (conic-gradient + trou masque), pas de canvas/JS pour un simple
   pourcentage statique */
.pal-bo-donut[b-zwroq5o06a] {
    --pct: 0;
    width: 62px;
    height: 62px;
    border-radius: 50%;
    flex: none;
    position: relative;
    display: grid;
    place-items: center;
    background: conic-gradient(var(--pal-success) calc(var(--pct) * 1%), var(--surface-border) 0);
}

    .pal-bo-donut[b-zwroq5o06a]::before {
        content: "";
        position: absolute;
        inset: 6px;
        border-radius: 50%;
        background: var(--surface-card);
    }

    .pal-bo-donut span[b-zwroq5o06a] {
        position: relative;
        font-size: .6rem;
        font-weight: 800;
        white-space: nowrap;
        color: var(--text);
    }

/* ---- grille des dons : ne reste ici que l'en-tete collant au scroll, le reste vient de la
   classe partagee .pal-bo-grid (pal-backoffice.css, composant porte les deux classes). ---- */
[b-zwroq5o06a] .pal-bo-transactions-grid th {
    position: sticky;
    top: 0;
    z-index: 1;
}
/* /Components/Pages/BackOffice/BOUtilisateurDetail.razor.rz.scp.css */
/* ============================================================
   Fiche adherent (/BackOffice/Utilisateur/{SqId}) — reprend les tokens/classes
   de pal-backoffice.css (carte, boutons, chips) ; tout ce qui est specifique
   a cette page (identite, onglets de contenu, dons, timelines) reste ici,
   scope au composant.
   ============================================================ */

/* ---- carte identite (persistante, en tete) ---- */
.pal-bo-fiche-identity[b-db06pkeci0] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1.5rem;
    padding: 1.25rem 1.5rem;
}

.pal-bo-fiche-avatar[b-db06pkeci0] {
    flex: none;
}

.pal-bo-fiche-main[b-db06pkeci0] {
    display: flex;
    flex-direction: column;
    gap: .35rem;
    min-width: 12rem;
}

.pal-bo-fiche-badges[b-db06pkeci0] {
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-wrap: wrap;
}

.pal-bo-fiche-name[b-db06pkeci0] {
    font-size: 1.4rem;
    font-weight: 800;
}

.pal-bo-fiche-sub[b-db06pkeci0] {
    font-size: .82rem;
    color: var(--text-muted);
    display: flex;
    align-items: center;
    gap: .4rem;
}

.pal-bo-fiche-stats[b-db06pkeci0] {
    display: flex;
    gap: .75rem;
    margin-left: auto;
    flex-wrap: wrap;
}

.pal-bo-fiche-stat[b-db06pkeci0] {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    border-radius: 10px;
    padding: .6rem .9rem;
    min-width: 9.5rem;
}

    .pal-bo-fiche-stat .label[b-db06pkeci0] {
        font-size: .68rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .05em;
        color: var(--text-muted);
        display: block;
    }

    .pal-bo-fiche-stat .value[b-db06pkeci0] {
        font-size: 1.2rem;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
        color: var(--pal-red);
        margin-top: .15rem;
    }

        .pal-bo-fiche-stat .value.neutral[b-db06pkeci0] {
            color: var(--text);
        }

/* ---- fiabilite (saison en cours) : anneau en degrade conique, fraction au centre ----
   Couleur pilotee par palier (tier-bonne/moyenne/faible/inconnue), memes seuils que
   .pal-bo-chip-success/warning/danger utilises ailleurs pour ce meme score. */
.pal-bo-fiabilite-stat[b-db06pkeci0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    min-width: 6.5rem;
}

.pal-bo-fiabilite-ring[b-db06pkeci0] {
    --pct: 0;
    --ring-color: var(--text-muted);
    width: 2.8rem;
    height: 2.8rem;
    border-radius: 50%;
    background: conic-gradient(var(--ring-color) calc(var(--pct) * 1%), var(--surface-border) 0);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: .4rem;
    position: relative;
}

    .pal-bo-fiabilite-ring[b-db06pkeci0]::before {
        content: "";
        position: absolute;
        inset: 3px;
        border-radius: 50%;
        background: var(--surface-bg);
    }

    .pal-bo-fiabilite-ring .ring-val[b-db06pkeci0] {
        position: relative;
        font-size: .62rem;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
        color: var(--text);
    }

    .pal-bo-fiabilite-ring.tier-bonne[b-db06pkeci0] { --ring-color: var(--pal-success); }
    .pal-bo-fiabilite-ring.tier-moyenne[b-db06pkeci0] { --ring-color: var(--pal-warning); }
    .pal-bo-fiabilite-ring.tier-faible[b-db06pkeci0] { --ring-color: var(--pal-red); }
    .pal-bo-fiabilite-ring.tier-inconnue[b-db06pkeci0] { --ring-color: var(--text-muted); }

/* ---- onglets de contenu (distinct de .pal-bo-pill-tabs = pastilles de filtre) ---- */
/* ---- grilles utilitaires ---- */
.pal-bo-fiche-grid-2[b-db06pkeci0] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
}

@media (min-width: 900px) {
    .pal-bo-fiche-grid-2[b-db06pkeci0] {
        grid-template-columns: 1fr 1fr;
    }
    /* la carte "Dons" a besoin de plus de largeur pour tenir sur une ligne */
    .pal-bo-fiche-grid-2.don[b-db06pkeci0] {
        grid-template-columns: 1fr 1.7fr;
    }
}

/* ---- dons : cartes texte (validees) + lignes editables (en attente) ---- */
.pal-bo-don-list[b-db06pkeci0] {
    display: flex;
    flex-direction: column;
    gap: .6rem;
}

.pal-bo-don-card[b-db06pkeci0] {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .7rem .9rem;
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    border-radius: 10px;
}

.pal-bo-don-icon[b-db06pkeci0] {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    flex: none;
    background: var(--bo-danger-bg);
    color: var(--pal-red);
}

.pal-bo-don-main[b-db06pkeci0] {
    flex: 1;
    min-width: 0;
}

    .pal-bo-don-main .amount[b-db06pkeci0] {
        font-weight: 800;
        font-size: 1rem;
        font-variant-numeric: tabular-nums;
    }

    .pal-bo-don-main .meta[b-db06pkeci0] {
        font-size: .76rem;
        color: var(--text-muted);
    }

/* Don en attente avec un bandeau dessous (date de promesse, rappels envoyés, virement déclaré) ;
   liseré bleu « info » quand l'adhérent a déclaré son virement. */
.pal-bo-don-attente.has-bandeau .pal-bo-don-row[b-db06pkeci0] {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.pal-bo-don-attente.is-virement .pal-bo-don-row[b-db06pkeci0] {
    border-color: color-mix(in srgb, var(--pal-info) 35%, var(--surface-border));
}

.pal-bo-don-virement[b-db06pkeci0] {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem 1.1rem;
    padding: .55rem .9rem;
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-top: none;
    border-radius: 0 0 10px 10px;
    font-size: .8rem;
    color: var(--text);
}

.pal-bo-don-attente.is-virement .pal-bo-don-virement[b-db06pkeci0] {
    background: var(--pal-info-bg);
    border-color: color-mix(in srgb, var(--pal-info) 35%, var(--surface-border));
}

    .pal-bo-don-virement .is-info[b-db06pkeci0] {
        color: var(--pal-info);
        font-weight: 700;
    }

.pal-bo-don-row[b-db06pkeci0] {
    display: flex;
    align-items: center;
    gap: .6rem;
    flex-wrap: wrap;
    padding: .6rem .8rem;
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    border-radius: 10px;
}

    .pal-bo-don-row input[b-db06pkeci0],
    .pal-bo-don-row select[b-db06pkeci0] {
        padding: 7px 10px;
        border-radius: 7px;
        border: 1px solid var(--surface-border);
        background: var(--surface-bg);
        color: var(--text);
        font: inherit;
        font-size: .86rem;
    }

    .pal-bo-don-row .amount-field[b-db06pkeci0] {
        display: flex;
        align-items: center;
        gap: .3rem;
    }

        .pal-bo-don-row .amount-field input[b-db06pkeci0] {
            width: 6.5rem;
        }

    .pal-bo-don-row select[b-db06pkeci0] {
        width: 9rem;
    }

    .pal-bo-don-row input[type="date"][b-db06pkeci0] {
        width: 9.5rem;
    }

    .pal-bo-don-row .spacer[b-db06pkeci0] {
        flex: 1;
        min-width: .5rem;
    }

.pal-bo-don-divider[b-db06pkeci0] {
    border: none;
    border-top: 1px solid var(--surface-border);
    margin: .9rem 0;
}

.pal-bo-don-delete[b-db06pkeci0] {
    color: var(--pal-red);
    border-color: color-mix(in srgb, var(--pal-red) 35%, var(--surface-border));
}

    .pal-bo-don-delete:hover[b-db06pkeci0] {
        background: var(--bo-danger-bg);
        border-color: var(--pal-red);
    }

.pal-bo-empty-hint[b-db06pkeci0] {
    padding: .9rem;
    text-align: center;
    color: var(--text-muted);
    font-size: .82rem;
}

.pal-bo-fiche-create-abo[b-db06pkeci0] {
    display: flex;
    justify-content: center;
    margin-top: 1.25rem;
}

/* ---- historique : 2 timelines de pseudo + journal ---- */
.pal-bo-fiche-timeline-title[b-db06pkeci0] {
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--text);
    margin: 0 0 .85rem;
    display: flex;
    align-items: center;
    gap: .5rem;
}

.pal-bo-fiche-timeline[b-db06pkeci0] {
    position: relative;
    padding-left: 1.4rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

    .pal-bo-fiche-timeline[b-db06pkeci0]::before {
        content: "";
        position: absolute;
        left: .3rem;
        top: .3rem;
        bottom: .3rem;
        width: 1px;
        background: var(--surface-border);
    }

.pal-bo-tl-item[b-db06pkeci0] {
    position: relative;
}

    .pal-bo-tl-item[b-db06pkeci0]::before {
        content: "";
        position: absolute;
        left: -1.4rem;
        top: .2rem;
        width: 9px;
        height: 9px;
        border-radius: 50%;
        background: var(--surface-border);
        border: 2px solid var(--surface-card);
    }

    .pal-bo-tl-item.current[b-db06pkeci0]::before {
        background: var(--pal-red);
    }

    .pal-bo-tl-item .name[b-db06pkeci0] {
        font-weight: 700;
        font-size: .88rem;
        display: flex;
        align-items: center;
        gap: .5rem;
    }

    .pal-bo-tl-item .range[b-db06pkeci0] {
        font-size: .76rem;
        color: var(--text-muted);
    }

.pal-bo-badge-current[b-db06pkeci0] {
    font-size: .64rem;
    font-weight: 800;
    color: var(--pal-success);
    background: var(--pal-success-bg);
    padding: 1px 7px;
    border-radius: 999px;
    text-transform: uppercase;
}

.pal-bo-log-list[b-db06pkeci0] {
    display: flex;
    flex-direction: column;
}

.pal-bo-log-row[b-db06pkeci0] {
    display: flex;
    gap: .8rem;
    padding: .65rem 1.25rem;
    border-bottom: 1px solid var(--surface-border);
    font-size: .85rem;
}

    .pal-bo-log-row:last-child[b-db06pkeci0] {
        border-bottom: none;
    }

    .pal-bo-log-row .when[b-db06pkeci0] {
        flex: none;
        width: 9.5rem;
        color: var(--text-muted);
        font-size: .78rem;
        font-variant-numeric: tabular-nums;
    }

/* ---- adhesions passees : rien de propre a cette grille, tout vient de la classe partagee
   .pal-bo-grid (pal-backoffice.css, composant porte les deux classes) ---- */

/* ---- reskin EditUserView (partage avec Profil.razor front-office, meme technique ::deep,
   composant non modifie hormis le parametre NoWinamax) ---- */
[b-db06pkeci0] .col-lg-6 > label {
    display: block;
    margin: 1rem 0 .35rem;
    font-weight: 600;
    font-size: .9rem;
    color: var(--text-muted);
}

[b-db06pkeci0] .col-lg-6 > label:first-child {
    margin-top: 0;
}

[b-db06pkeci0] .col-lg-6 > input.form-control {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
    border-radius: 8px;
}

[b-db06pkeci0] .col-lg-6 > input.form-control:focus {
    background: var(--surface-bg);
    color: var(--text);
    border-color: var(--pal-red-mid);
    box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--pal-red) 25%, transparent);
}

[b-db06pkeci0] .col-lg-6:nth-child(3),
[b-db06pkeci0] .col-lg-6:nth-child(4) {
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px dashed var(--surface-border);
}

[b-db06pkeci0] .droparea {
    border-radius: 10px;
    margin-top: .5rem;
}

[b-db06pkeci0] .col-lg-6 label.text-center {
    color: var(--text-muted);
    font-weight: 600;
    font-size: .85rem;
    margin-top: .75rem;
}

/* ---- affiliation : commentaire du statut manuel ---- */
.pal-affil-commentaire .v[b-db06pkeci0] {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
}

.pal-affil-commentaire-txt[b-db06pkeci0] {
    flex: 1;
    min-width: 0;
    white-space: pre-wrap;
}

.pal-affil-commentaire-vide[b-db06pkeci0] {
    flex: 1;
    color: var(--text-muted);
    font-style: italic;
}

/* ---- compte & securite ---- */
.pal-bo-fiche-account-row[b-db06pkeci0] {
    display: flex;
    align-items: center;
    gap: 2rem;
    flex-wrap: wrap;
}

/* ---- preferences du membre (lecture seule, onglet Profil) ---- */
.pal-bo-fiche-prefs[b-db06pkeci0] {
    margin-top: 1.25rem;
}

.pal-bo-fiche-prefs-body[b-db06pkeci0] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem 2rem;
}

@media (min-width: 900px) {
    .pal-bo-fiche-prefs-body[b-db06pkeci0] {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    }
}

.pal-bo-fiche-prefs-row[b-db06pkeci0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .45rem 0;
    border-top: 1px solid var(--surface-border);
}

.pal-bo-fiche-account-group .label[b-db06pkeci0],
.pal-bo-fiche-prefs-group .label[b-db06pkeci0] {
    display: block;
    font-size: .78rem;
    font-weight: 700;
    color: var(--text-muted);
    margin-bottom: .3rem;
}

/* ---- doublon de compte ---- */
.pal-bo-doublon-parent[b-db06pkeci0] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .5rem;
}

.pal-bo-doublon-mail[b-db06pkeci0] {
    color: var(--text-muted);
    font-size: .85rem;
}

.pal-bo-doublon-actions[b-db06pkeci0] {
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
    margin-top: 1rem;
}

.pal-bo-doublon-search[b-db06pkeci0] {
    position: relative;
    margin-top: .75rem;
    max-width: 32rem;
}

    .pal-bo-doublon-search > i[b-db06pkeci0] {
        position: absolute;
        left: .75rem;
        top: .7rem;
        color: var(--text-muted);
        font-size: .9rem;
    }

    .pal-bo-doublon-search > input[b-db06pkeci0] {
        width: 100%;
        padding: .55rem .75rem .55rem 2.1rem;
        background: var(--surface-bg);
        border: 1px solid var(--surface-border);
        border-radius: 8px;
        color: var(--text);
    }

    .pal-bo-doublon-search > input:focus[b-db06pkeci0] {
        outline: none;
        border-color: var(--pal-red-mid);
        box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--pal-red) 25%, transparent);
    }

.pal-bo-doublon-results[b-db06pkeci0] {
    position: absolute;
    z-index: 5;
    left: 0;
    right: 0;
    margin-top: .25rem;
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: 8px;
    box-shadow: 0 8px 24px color-mix(in srgb, var(--chrome-bg) 25%, transparent);
    max-height: 20rem;
    overflow-y: auto;
}

.pal-bo-doublon-result[b-db06pkeci0] {
    display: flex;
    align-items: center;
    gap: .75rem;
    width: 100%;
    padding: .5rem .75rem;
    background: none;
    border: none;
    border-bottom: 1px solid var(--surface-border);
    text-align: left;
    cursor: pointer;
    color: var(--text);
}

    .pal-bo-doublon-result:last-child[b-db06pkeci0] {
        border-bottom: none;
    }

    .pal-bo-doublon-result:hover[b-db06pkeci0],
    .pal-bo-doublon-result.sel[b-db06pkeci0] {
        background: var(--pal-red-bg);
    }

    .pal-bo-doublon-result .main[b-db06pkeci0] {
        display: flex;
        flex-direction: column;
        flex: 1;
        min-width: 0;
    }

        .pal-bo-doublon-result .main > span[b-db06pkeci0] {
            color: var(--text-muted);
            font-size: .82rem;
        }

.pal-bo-doublon-sub[b-db06pkeci0] {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: .95rem;
    font-weight: 700;
    margin: 0 0 .75rem;
}

.pal-bo-doublon-ident[b-db06pkeci0] {
    display: flex;
    flex-direction: column;
    gap: .2rem;
}

/* Bandeau « ce compte est un doublon » sous la carte d'identité, visible sur tous les onglets */
.pal-bo-doublon-bandeau[b-db06pkeci0] {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    margin: 1rem 0 0;
    padding: .75rem 1rem;
    border-radius: 10px;
    background: var(--pal-doublon-bg);
    border: 1px solid color-mix(in srgb, var(--pal-doublon) 40%, transparent);
    color: var(--text);
    font-size: .85rem;
    line-height: 1.5;
}

    .pal-bo-doublon-bandeau > i[b-db06pkeci0] {
        color: var(--pal-doublon);
        font-size: 1rem;
        margin-top: .1rem;
        flex: none;
    }

    .pal-bo-doublon-bandeau a[b-db06pkeci0] {
        font-weight: 700;
    }

.pal-bo-doublon-bandeau-lien[b-db06pkeci0] {
    background: none;
    border: none;
    padding: 0;
    color: var(--pal-red);
    font: inherit;
    font-weight: 700;
    text-decoration: underline;
    cursor: pointer;
}
/* /Components/Pages/BackOffice/BOUtilisateurs.razor.rz.scp.css */
/* Reste ici uniquement ce qui est propre a cette grille (en-tete collant au scroll) — le reste
   (fond/couleur/casse/zebrage/hover/td) vient desormais de la classe partagee .pal-bo-grid
   (pal-backoffice.css, composant porte les deux classes) plutot que d'etre duplique ici. */
[b-deo7cz3g9p] .pal-bo-adherents-grid th {
    position: sticky;
    top: 0;
    z-index: 1;
}
/* /Components/Pages/BackOffice/Documentation/BONouveautes.razor.rz.scp.css */
/* Journal des nouveautés du back-office (BONouveautes.razor) : une frise verticale, la plus
   récente en haut. Les nouveautés d'une même journée sont regroupées sous une seule date
   (un point de frise par jour). Reprend les jetons du design system back-office
   (pal-backoffice.css) et de thème (app.css) — aucune couleur en dur. Le contenu d'une entrée
   (.pal-bo-news-content) garde le même contrat de classes que la version d'origine. */

/* Sommaire ---------------------------------------------------------------------- */
.pal-bo-news-toc[b-kua3sx1uif] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    box-shadow: var(--pal-card-shadow);
    padding: 0.9rem 1.1rem;
    margin-bottom: 1.9rem;
}

.pal-bo-news-toc-title[b-kua3sx1uif] {
    display: block;
    font-weight: 800;
    font-size: 0.72rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 0.55rem;
}

.pal-bo-news-toc ul[b-kua3sx1uif] {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 0.32rem;
}

.pal-bo-news-toc li[b-kua3sx1uif] {
    display: flex;
    align-items: baseline;
    gap: 0.75rem;
    font-size: 0.85rem;
}

.pal-bo-news-toc a[b-kua3sx1uif] {
    color: var(--pal-red);
    text-decoration: none;
}

.pal-bo-news-toc a:hover[b-kua3sx1uif] {
    text-decoration: underline;
}

.pal-bo-news-toc-date[b-kua3sx1uif] {
    margin-left: auto;
    flex: none;
    font-size: 0.72rem;
    color: var(--text-muted);
    white-space: nowrap;
}

/* « Tout le sommaire » : dépliant sous les dernières entrées, contenu groupé par mois */
.pal-bo-news-toc-more[b-kua3sx1uif],
.pal-bo-news-toc-mois[b-kua3sx1uif] {
    margin: 0;
}

.pal-bo-news-toc-more[b-kua3sx1uif] {
    margin-top: 0.55rem;
    padding-top: 0.5rem;
    border-top: 1px dashed var(--surface-border);
}

.pal-bo-news-toc-more > summary[b-kua3sx1uif],
.pal-bo-news-toc-mois > summary[b-kua3sx1uif] {
    cursor: pointer;
    list-style: none;
}

.pal-bo-news-toc-more > summary[b-kua3sx1uif]::-webkit-details-marker,
.pal-bo-news-toc-mois > summary[b-kua3sx1uif]::-webkit-details-marker {
    display: none;
}

.pal-bo-news-toc-more > summary[b-kua3sx1uif] {
    display: flex;
    justify-content: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--pal-red);
}

.pal-bo-news-toc-more > summary[b-kua3sx1uif]::before {
    content: "\25BE";
    font-size: 0.72rem;
}

.pal-bo-news-toc-more[open] > summary[b-kua3sx1uif]::before {
    content: "\25B4";
}

.pal-bo-news-toc-mois[b-kua3sx1uif] {
    margin-top: 0.6rem;
}

.pal-bo-news-toc-mois > summary[b-kua3sx1uif] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    font-weight: 800;
    font-size: 0.72rem;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--text-muted);
    padding: 0.2rem 0;
}

.pal-bo-news-toc-mois > summary[b-kua3sx1uif]::before {
    content: "\25B8";
    font-size: 0.68rem;
    color: var(--pal-red);
}

.pal-bo-news-toc-mois[open] > summary[b-kua3sx1uif]::before {
    content: "\25BE";
}

.pal-bo-news-toc-cnt[b-kua3sx1uif] {
    margin-left: auto;
    font-weight: 700;
    letter-spacing: 0;
}

.pal-bo-news-toc-mois ul[b-kua3sx1uif] {
    margin: 0.35rem 0 0.2rem 0.9rem;
}

/* Frise ----------------------------------------------------------------------- */
.pal-bo-news-feed[b-kua3sx1uif] {
    --pal-news-rail: 9rem;
    position: relative;
    display: flex;
    flex-direction: column;
}

.pal-bo-news-groups[b-kua3sx1uif] {
    display: flex;
    flex-direction: column;
}

/* Un jour = un point sur la frise + une ou plusieurs cartes. Mobile : empilé, ligne à gauche. */
.pal-bo-news-group[b-kua3sx1uif] {
    position: relative;
    display: block;
    padding: 0 0 1.75rem 1.5rem;
}

.pal-bo-news-group:last-child[b-kua3sx1uif] {
    padding-bottom: 0;
}

/* Plusieurs nouveautés le même jour : cartes empilées sous la même date */
.pal-bo-news-stack[b-kua3sx1uif] {
    display: flex;
    flex-direction: column;
    gap: 1.4rem;
}

/* La ligne continue de la frise */
.pal-bo-news-feed[b-kua3sx1uif]::before {
    content: "";
    position: absolute;
    top: 0.4rem;
    bottom: 1.5rem;
    left: 5px;
    width: 2px;
    background: var(--surface-border);
}

/* Pastille d'année */
.pal-bo-news-year[b-kua3sx1uif] {
    position: relative;
    min-height: 1.6rem;
    margin-bottom: 0.6rem;
}

.pal-bo-news-year span[b-kua3sx1uif] {
    position: absolute;
    left: 5px;
    transform: translateX(-50%);
    background: var(--surface-bg);
    padding: 0.15rem 0;
    font-weight: 800;
    font-size: 0.8rem;
    letter-spacing: 0.1em;
    color: var(--text-muted);
}

/* Colonne date + point */
.pal-bo-news-when[b-kua3sx1uif] {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.5rem;
    margin-bottom: 0.55rem;
}

.pal-bo-news-when[b-kua3sx1uif]::after {
    content: "";
    position: absolute;
    top: 0.15rem;
    left: calc(-1.5rem - 1px);
    width: 13px;
    height: 13px;
    border-radius: 50%;
    background: var(--pal-red);
    box-shadow: 0 0 0 4px var(--surface-bg), 0 0 0 5px var(--surface-border);
}

/* Le point le plus récent : anneau rouge */
.pal-bo-news-group:first-child .pal-bo-news-when[b-kua3sx1uif]::after {
    box-shadow: 0 0 0 4px var(--surface-bg), 0 0 0 5px var(--pal-red);
}

.pal-bo-news-date[b-kua3sx1uif] {
    font-weight: 800;
    font-size: 0.9rem;
}

.pal-bo-news-ago[b-kua3sx1uif] {
    font-size: 0.72rem;
    color: var(--text-muted);
}

/* La carte de contenu */
.pal-bo-news-content[b-kua3sx1uif] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    box-shadow: var(--pal-card-shadow);
    padding: 1.25rem 1.4rem;
    scroll-margin-top: 1rem;
}

.pal-bo-news-group:first-child .pal-bo-news-stack > .pal-bo-news-content:first-child[b-kua3sx1uif] {
    border-color: color-mix(in srgb, var(--pal-red) 35%, var(--surface-border));
}

.pal-bo-news-content > h2[b-kua3sx1uif] {
    font-size: 1.15rem;
    margin: 0 0 0.55rem;
    line-height: 1.35;
}

.pal-bo-news-tags[b-kua3sx1uif] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 0 0 0.85rem;
}

.pal-bo-news-content > h3[b-kua3sx1uif] {
    font-size: 0.92rem;
    margin: 1.15rem 0 0.35rem;
}

.pal-bo-news-content p[b-kua3sx1uif] {
    margin: 0.5rem 0;
    font-size: 0.9rem;
    line-height: 1.6;
}

.pal-bo-news-content > p:first-of-type[b-kua3sx1uif] {
    margin-top: 0;
}

.pal-bo-news-content ul[b-kua3sx1uif] {
    margin: 0.35rem 0;
    padding-left: 1.15rem;
    font-size: 0.9rem;
    line-height: 1.6;
}

.pal-bo-news-content li[b-kua3sx1uif] {
    margin: 0.35rem 0;
}

/* Tablette et plus : la date passe dans une colonne dédiée à gauche de la ligne */
/* seuil: --bp-tablet */
@media (min-width: 600px) {
    .pal-bo-news-feed[b-kua3sx1uif]::before {
        left: calc(var(--pal-news-rail) - 1px);
    }

    .pal-bo-news-year span[b-kua3sx1uif] {
        left: calc(var(--pal-news-rail) - 1px);
    }

    .pal-bo-news-group[b-kua3sx1uif] {
        display: grid;
        grid-template-columns: var(--pal-news-rail) 1fr;
        column-gap: 2rem;
        padding: 0 0 1.75rem;
    }

    .pal-bo-news-when[b-kua3sx1uif] {
        flex-direction: column;
        align-items: flex-end;
        text-align: right;
        gap: 0.15rem;
        margin-bottom: 0;
        padding-top: 0.1rem;
    }

    .pal-bo-news-when[b-kua3sx1uif]::after {
        top: 0.3rem;
        left: auto;
        right: calc((2rem / -2) - (13px / 2) + 1px);
    }
}
/* /Components/Pages/ChampionnatDetail.razor.rz.scp.css */
.pal-champ[b-1cxht3612j] {
    padding: 1.5rem 1rem 3rem;
}

.pal-champ-tablewrap[b-1cxht3612j] {
    overflow: auto;
    position: relative;
    /* cf. ClassementGeneral/QualifiesPast : hauteur bornee necessaire pour que le header sticky
       ait un scroll interne auquel s'accrocher. Anciennement en style inline sur un <div> imbrique
       sans classe (overflow:visible) — fonctionnait par effet de bord du box model (max-height
       plafonne la hauteur de layout meme en overflow:visible, et l'overflow:auto du parent
       recuperait le debordement), mais fragile et incoherent avec les 2 autres pages. Un seul div. */
    max-height: calc(100vh - 280px);
    /* Plancher absolu : en paysage sur telephone, 100vh tombe autour de 400-450px, et
       calc(100vh - 280px) ne laisse quasiment plus rien aux lignes (seul l'en-tete collant reste
       visible) — table qui semble vide. ~10 lignes + en-tete garanties quoi qu'il arrive ; sur un
       viewport court, c'est alors la PAGE qui defile, plus seulement le tableau (accepte). */
    min-height: 24rem;
    /* Indice visuel qu'il reste des colonnes tournoi a decouvrir a droite (peut en compter des
       dizaines) : ombre interne statique sur le bord droit du conteneur de scroll. Un box-shadow
       inset se dessine relatif au viewport visible du conteneur (pas au contenu scrolle), donc
       reste bien ancre au bord meme quand on scroll horizontalement. */
    box-shadow: inset -14px 0 10px -10px var(--pal-edge-fade-color);
}

/* Meme principe que ClassementGeneral/QualifiesPast : le theme QuickGrid par defaut (app.css)
   est partage par toutes les grilles du site (back-office compris), on ne le touche pas
   globalement, on surcharge ici via ::deep uniquement pour cette page. */
[b-1cxht3612j] .pal-champ-grid.quickgrid {
    width: 100%;
}

[b-1cxht3612j] .pal-champ-grid th {
    position: sticky;
    top: 0;
    z-index: 3;
    background-color: color-mix(in srgb, var(--surface-card) 92%, var(--text) 8%);
    color: var(--text);
    border-color: var(--surface-border);
    padding: .55rem .75rem;
    font-size: .74rem;
    font-weight: 700;
}

[b-1cxht3612j] .pal-champ-grid th button {
    color: var(--text);
}

/* cf. ClassementGeneral.razor.css pour le detail : --pal-icon-invert-filter (app.css) pilote
   par theme la recoloration de l'icone de tri QuickGrid (image de fond, pas du texte). */
[b-1cxht3612j] .pal-champ-grid th .sort-indicator {
    filter: var(--pal-icon-invert-filter);
}

[b-1cxht3612j] .pal-champ-grid > tbody > tr {
    border-bottom: 1px solid var(--surface-border);
}

[b-1cxht3612j] .pal-champ-grid tbody tr:nth-of-type(odd) {
    background-color: color-mix(in srgb, var(--text) 3%, transparent);
}

[b-1cxht3612j] .pal-champ-grid td {
    color: var(--text);
    vertical-align: middle;
    padding: .5rem .75rem;
    font-size: .88rem;
}

[b-1cxht3612j] .pal-champ-grid td.pal-rank {
    color: var(--pal-red);
    font-weight: 800;
    font-size: .88rem;
}

[b-1cxht3612j] .pal-champ-grid td.pal-point {
    font-weight: 800;
    font-size: .88rem;
}

/* .pal-player-cell/.pal-player-name (base) centralises dans app.css — reutilises tels quels sur
   ClassementGeneral/QualifiesPast. Ici, complement specifique a cette page uniquement : la colonne
   Pseudo est figee a largeur constante (.pal-sticky-2), un pseudo long doit donc etre tronque
   plutot que d'elargir la colonne et desynchroniser le calc() de left qui suppose cette largeur
   fixe. */
.pal-player-name[b-1cxht3612j] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

/* Colonnes figees (Place + Pseudo) : la grille peut compter des dizaines de colonnes "1 par
   tournoi" et defiler tres loin horizontalement (cf. demande utilisateur) — sans ancrage, on perd
   de vue a qui appartient la ligne consultee. Seules ces 2 colonnes d'identite sont figees (pas
   Total/Participation) car une 3e colonne optionnelle ("Online", visible seulement en mode
   Online) s'intercale juste apres le Pseudo : figer plus loin que le Pseudo demanderait un
   decalage variable selon le mode, fragile a maintenir. Largeurs fixees en dur (place + avatar
   40px+nom) pour que le calc() de la 2e colonne reste juste. */
[b-1cxht3612j] .pal-champ-grid th.pal-sticky-1,
[b-1cxht3612j] .pal-champ-grid td.pal-sticky-1 {
    position: sticky;
    left: 0;
    z-index: 2;
    /* Mobile (<600px) : la boite fleche+numero (.pal-rank-cell) ne prend plus que sa largeur de
       contenu (fini le justify-content-between qui les ecartait dans une boite a 100px fixes,
       cf. .pal-rank-cell plus bas) — la colonne peut donc retrecir d'autant, ce qui libere de la
       place pour la colonne Total juste apres (demande utilisateur). Elargie a nouveau a partir
       de la tablette (--bp-tablet, cf. decisions.md), ou la place ne manque plus. */
    width: 4rem;
    min-width: 4rem;
}

@media (min-width: 600px) {
    [b-1cxht3612j] .pal-champ-grid th.pal-sticky-1,
    [b-1cxht3612j] .pal-champ-grid td.pal-sticky-1 {
        width: 6.5rem;
        min-width: 6.5rem;
    }
}

[b-1cxht3612j] .pal-champ-grid th.pal-sticky-2,
[b-1cxht3612j] .pal-champ-grid td.pal-sticky-2 {
    position: sticky;
    /* Doit matcher la largeur courante de pal-sticky-1 (4rem mobile, 6.5rem desktop ci-dessous) —
       sinon la colonne Pseudo chevauche ou laisse un trou apres Place. */
    left: 4rem;
    z-index: 2;
    /* Mobile (<600px) : 13rem sature la quasi-totalite d'un viewport telephone, ne laissant
       presque plus rien pour la colonne Total juste apres — points illisibles/coupes des
       l'ouverture, sans avoir a scroller (demande utilisateur). Retreci sur mobile ; le pseudo
       tronque en ellipsis ci-dessus encaisse la perte de largeur sans rien casser. Elargi a
       nouveau a partir de la tablette (--bp-tablet, cf. decisions.md), ou la place ne manque plus. */
    width: 7.5rem;
    min-width: 7.5rem;
    box-shadow: var(--pal-sticky-shadow);
}

@media (min-width: 600px) {
    [b-1cxht3612j] .pal-champ-grid th.pal-sticky-2,
    [b-1cxht3612j] .pal-champ-grid td.pal-sticky-2 {
        left: 6.5rem;
        width: 13rem;
        min-width: 13rem;
    }
}

/* Boite fleche d'evolution + numero de place, a l'interieur de la colonne pal-sticky-1. Etait en
   d-flex justify-content-between dans une boite a 100px fixes : ecartait artificiellement les 2
   elements aux extremites d'une boite bien plus large que leur contenu reel (ecart visuel
   important signale par l'utilisateur), et empechait de retrecir la colonne sans les faire se
   chevaucher. Gap fixe + largeur au contenu : les 2 elements restent proches quel que soit
   l'espace disponible. */
.pal-rank-cell[b-1cxht3612j] {
    display: flex;
    align-items: center;
    gap: .35rem;
}

[b-1cxht3612j] .pal-champ-grid td.pal-sticky-1,
[b-1cxht3612j] .pal-champ-grid td.pal-sticky-2 {
    background-color: var(--surface-bg);
}

[b-1cxht3612j] .pal-champ-grid tbody tr:nth-of-type(odd) td.pal-sticky-1,
[b-1cxht3612j] .pal-champ-grid tbody tr:nth-of-type(odd) td.pal-sticky-2 {
    background-color: color-mix(in srgb, var(--surface-bg) 97%, var(--text) 3%);
}

/* Coin figee (Place/Pseudo au croisement du header sticky en haut ET des colonnes sticky a
   gauche) : doit passer au-dessus de tout le reste (lignes de donnees ET header des colonnes
   tournoi qui scrollent seulement horizontalement), d'ou un z-index superieur aux deux regles
   sticky generiques (th: 3, td.pal-sticky-*: 2) ci-dessus. */
[b-1cxht3612j] .pal-champ-grid th.pal-sticky-1,
[b-1cxht3612j] .pal-champ-grid th.pal-sticky-2 {
    z-index: 4;
}

/* Regle dupliquee a l'identique (deux blocs .col-title separes, preexistant avant cette session)
   fusionnee en une seule regle. */
.col-title[b-1cxht3612j] {
    display: flex;
    align-items: center;
    min-width: 0px;
    flex-grow: 1;
    gap: 0.4rem;
    font-weight: bold;
    padding: 0;
}

.col-title-stack[b-1cxht3612j] {
    display: flex;
    flex-direction: column;
    gap: .1rem;
    min-width: 0;
}

.col-title-date[b-1cxht3612j] {
    font-weight: 500;
    font-size: .68rem;
    color: var(--text-muted);
}

.col-justify-end .col-title[b-1cxht3612j] {
    flex-direction: row-reverse;
}

button.col-title[b-1cxht3612j] {
    border: none;
    background: none;
    position: relative;
    cursor: pointer;
}

/* Colonne "Voir plus" : renvoie vers la fiche trombinoscope du membre (historique complet de la
   saison), affichee uniquement si TrombiLink autorise le lien (profil public, soi-meme, ou Admin) —
   sinon la cellule reste simplement vide, meme comportement que partout ailleurs sur le site. */
.pal-champ-voirplus[b-1cxht3612j] {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    color: var(--text-muted);
    font-size: .78rem;
    font-weight: 700;
    white-space: nowrap;
}

.pal-champ-voirplus[b-1cxht3612j]::after {
    content: "\203A";
}

.pal-champ-voirplus:hover[b-1cxht3612j] {
    color: var(--pal-red);
}
/* /Components/Pages/ClassementGeneral.razor.rz.scp.css */
.pal-classement[b-9t7ge6vl5v] {
    padding: 1.5rem 1rem 3rem;
}

/* Carte (harmonisation cartes/sections, cf. decisions.md [[cartes-sections-elevation]]) —
   role "annuaire/liste de personnes" identique a /trombinoscope, meme traitement. Le padding vit
   sur ce conteneur (pas visible) plutot que sur .pal-classement-tablewrap : le sticky ci-dessous
   a besoin d'un ancetre a scroll SANS padding pour que "top:0" colle exactement au bord. */
.pal-classement-card[b-9t7ge6vl5v] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: .5rem;
}

/* max-height + overflow:auto (au lieu du seul overflow-x d'avant) : necessaire pour que le
   header sticky ci-dessous ait reellement un scroll interne auquel s'accrocher (position:sticky
   se fige par rapport au scroll de son plus proche ancetre qui overflow — sans hauteur bornee ici,
   le conteneur ne scroll jamais lui-meme, la page defile "autour" de lui et le sticky ne s'active
   jamais). Consequence acceptee : la table scrolle desormais dans sa propre fenetre plutot que
   sur la page entiere (demande explicite utilisateur, cf. decisions.md [[header-sticky-quickgrid]]). */
.pal-classement-tablewrap[b-9t7ge6vl5v] {
    overflow: auto;
    max-height: calc(100vh - 280px);
    /* Plancher absolu : en paysage sur telephone, 100vh tombe autour de 400-450px, et
       calc(100vh - 280px) ne laisse quasiment plus rien aux lignes (seul l'en-tete collant reste
       visible) — table qui semble vide. ~10 lignes + en-tete garanties quoi qu'il arrive ; sur un
       viewport court, c'est alors la PAGE qui defile, plus seulement le tableau (accepte). */
    min-height: 24rem;
}

/* Le theme QuickGrid par defaut (app.css, .quickgrid th/tbody...) est code en dur (fond gris
   fonce, texte blanc fixe, zebrage rgba(0,0,0,.05), rang en bleu #1031f5) et partage par toutes
   les grilles du site (back-office compris) : on ne le touche pas globalement, on le surcharge
   ici uniquement pour cette page via ::deep (QuickGrid est un composant tiers). */
[b-9t7ge6vl5v] .pal-classement-grid.quickgrid {
    width: 100%;
}

[b-9t7ge6vl5v] .pal-classement-grid th {
    position: sticky;
    top: 0;
    z-index: 1;
    /* legerement plus sombre que .pal-classement-card (surface-card) pour rester distinct du
       corps du tableau maintenant que les deux partagent le meme fond de carte. */
    background-color: color-mix(in srgb, var(--surface-card) 92%, var(--text) 8%);
    color: var(--text);
    border-color: var(--surface-border);
    padding: .55rem .75rem;
    font-size: .74rem;
    font-weight: 700;
}

[b-9t7ge6vl5v] .pal-classement-grid th button {
    color: var(--text);
}

/* .sort-indicator est une icone en image de fond (pas du texte), recoloree en blanc par un filtre
   CSS global fige (app.css, .sort-indicator{filter:invert(100%)...}) — correct pour l'entete gris
   fonce par defaut de QuickGrid (fixe, non theme-aware), mais invisible sur notre entete a nous
   desormais claire en theme clair. --pal-icon-invert-filter (app.css) porte la meme valeur mais
   pilotee par theme : "none" en clair (icone native, sombre, visible sur fond clair), le filtre
   blanc en sombre (comme le comportement par defaut). */
[b-9t7ge6vl5v] .pal-classement-grid th .sort-indicator {
    filter: var(--pal-icon-invert-filter);
}

[b-9t7ge6vl5v] .pal-classement-grid > tbody > tr {
    border-bottom: 1px solid var(--surface-border);
}

/* etait background-color: var(--surface-card), devenu invisible depuis que .pal-classement-card
   (le nouveau conteneur carte) porte ce meme fond — tint plus subtil, distinct du fond de carte. */
[b-9t7ge6vl5v] .pal-classement-grid tbody tr:nth-of-type(odd) {
    background-color: color-mix(in srgb, var(--text) 3%, transparent);
}

[b-9t7ge6vl5v] .pal-classement-grid td {
    color: var(--text);
    vertical-align: middle;
    padding: .5rem .75rem;
    font-size: .88rem;
}

[b-9t7ge6vl5v] .pal-classement-grid td.pal-rank {
    color: var(--pal-red);
    font-weight: 800;
    font-size: .88rem;
}

[b-9t7ge6vl5v] .pal-classement-grid td.pal-point {
    font-weight: 800;
    font-size: .88rem;
}

/* Mobile (<600px, cf. decisions.md --bp-tablet) : sans largeur figee, un pseudo long + la colonne
   "Pseudo Online" poussent Total hors du viewport telephone — points illisibles/coupes sans avoir
   a scroller (demande utilisateur). Pseudo Online est l'info la moins essentielle des 4 colonnes,
   on la cache sur mobile plutot que de figer des colonnes comme sur ChampionnatDetail (ici pas de
   colonnes "1 par tournoi" a faire defiler, donc pas besoin du meme mecanisme sticky). Le pseudo
   est borne en largeur (ellipsis) en filet de securite pour les noms tres longs. */
@media (max-width: 599px) {
    [b-9t7ge6vl5v] .pal-classement-grid th.pal-online-col,
    [b-9t7ge6vl5v] .pal-classement-grid td.pal-online-col {
        display: none;
    }

    .pal-player-name[b-9t7ge6vl5v] {
        display: inline-block;
        max-width: 8rem;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        vertical-align: middle;
    }
}

/* /Components/Pages/Contact.razor.rz.scp.css */
.pal-contact[b-9f46vuq8pg] {
    padding: 1.75rem 1rem 3rem;
}

.pal-contact-grid[b-9f46vuq8pg] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
    align-items: start;
}

.pal-contact-card h2[b-9f46vuq8pg] {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin: 0 0 1.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--surface-border);
    font-size: 1.2rem;
    color: var(--text);
}

.pal-contact-card h2 i[b-9f46vuq8pg] {
    color: var(--pal-red);
}

.pal-contact-field[b-9f46vuq8pg] {
    margin-bottom: 1rem;
}

.pal-contact-field > label[b-9f46vuq8pg] {
    display: inline-block;
    margin-bottom: .35rem;
    color: var(--text-muted);
    font-weight: 600;
    font-size: .9rem;
}

.form-control[b-9f46vuq8pg] {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
}

.form-control:focus[b-9f46vuq8pg] {
    background: var(--surface-bg);
    color: var(--text);
}

.form-floating > .form-control[b-9f46vuq8pg] {
    height: calc(3.3rem + 2px);
}

.form-floating > label[b-9f46vuq8pg] {
    color: var(--text-muted);
}

.form-floating > .form-control:focus ~ label[b-9f46vuq8pg],
.form-floating > .form-control:not(:placeholder-shown) ~ label[b-9f46vuq8pg] {
    color: var(--pal-red-mid);
}

.pal-captcha[b-9f46vuq8pg] {
    margin-bottom: 1.25rem;
}

.pal-captcha-label[b-9f46vuq8pg] {
    display: block;
    margin-bottom: .6rem;
    color: var(--text-muted);
    font-weight: 600;
    font-size: .9rem;
}

.pal-captcha-row[b-9f46vuq8pg] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .75rem;
}

.pal-contact-submit[b-9f46vuq8pg] {
    width: 100%;
    padding: .85rem 1.3rem;
    font-size: 1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    border-radius: 8px;
}

/* seuil: --bp-tablet */
@media (min-width: 600px) {
    .pal-captcha-row[b-9f46vuq8pg] {
        flex-direction: row;
        align-items: center;
    }

    .pal-captcha-input[b-9f46vuq8pg] {
        width: auto;
        max-width: 12rem;
    }

    .pal-contact-submit[b-9f46vuq8pg] {
        width: auto;
        margin-left: auto;
    }
}

.pal-contact-row[b-9f46vuq8pg] {
    display: flex;
    align-items: center;
    gap: .6rem;
    padding: .7rem 0;
    border-top: 1px solid var(--surface-border);
    color: var(--text-muted);
}

.pal-contact-row:first-of-type[b-9f46vuq8pg] {
    border-top: none;
    padding-top: 0;
}

.pal-contact-row i[b-9f46vuq8pg] {
    color: var(--pal-red);
    font-size: 1.1rem;
    flex: none;
}

.pal-contact-row a[b-9f46vuq8pg] {
    color: var(--pal-red-mid);
    text-decoration: none;
    font-weight: 600;
}

.pal-contact-row a:hover[b-9f46vuq8pg] {
    color: var(--pal-red);
    text-decoration: underline;
}

.pal-contact-map[b-9f46vuq8pg] {
    margin-top: 1.25rem;
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid var(--surface-border);
}

.pal-contact-map iframe[b-9f46vuq8pg] {
    display: block;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-contact-grid[b-9f46vuq8pg] {
        grid-template-columns: 1fr 1fr;
    }
}
/* /Components/Pages/Error.razor.rz.scp.css */
.pal-error[b-0ky9nwvidv] {
    max-width: 34rem;
    margin: 0 auto;
    padding: 3.5rem 1rem 4rem;
    text-align: center;
}

.pal-error-icon[b-0ky9nwvidv] {
    width: 4rem;
    height: 4rem;
    margin: 0 auto 1.25rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background-color: color-mix(in srgb, var(--pal-red) 12%, transparent);
    color: var(--pal-red);
    font-size: 1.6rem;
}

.pal-error h1[b-0ky9nwvidv] {
    margin: 0 0 .5rem;
    font-size: clamp(1.8rem, 4vw, 2.4rem);
    color: var(--text);
}

.pal-error h2[b-0ky9nwvidv] {
    margin: 0 0 1.5rem;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-muted);
}

.pal-error-request-id[b-0ky9nwvidv] {
    margin: 0 0 1.5rem;
    color: var(--text-muted);
    font-size: .9rem;
}

.pal-error-request-id code[b-0ky9nwvidv] {
    background-color: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: 6px;
    padding: .15rem .5rem;
    color: var(--pal-red-mid);
}

/* Bouton "Retour a l'accueil" : voir .pal-btn-home (app.css) — applique directement sur le markup. */

.pal-error-home:hover[b-0ky9nwvidv] {
    background-color: color-mix(in srgb, var(--pal-red) 82%, black 18%);
}

.pal-error-dev[b-0ky9nwvidv] {
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--surface-border);
    text-align: left;
}

.pal-error-dev h3[b-0ky9nwvidv] {
    margin: 0 0 .75rem;
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--text-muted);
}

.pal-error-dev p[b-0ky9nwvidv] {
    color: var(--text-muted);
    font-size: .85rem;
    line-height: 1.6;
}

.pal-error-dev strong[b-0ky9nwvidv] {
    color: var(--text);
}
/* /Components/Pages/EventDetail.razor.rz.scp.css */
/* Meme traitement que TournoiDetail.razor.css (maquette A "Fiche stats" + Agenda/Partenaires
   façon /news), adapte au jeu de champs plus reduit d'un Evenement (pas de buy-in/format/variante/
   stack... juste Mode + Lieu + une eventuelle image de couverture). Pas de composant partage
   equivalent a TournoiVignette ici (un seul consommateur) : classes dediees a cette page. */

.pal-event-layout[b-ttwjtze3ef] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2.25rem;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-event-layout[b-ttwjtze3ef] {
        grid-template-columns: minmax(0, 1fr) 300px;
    }
}

.pal-event-card[b-ttwjtze3ef] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1.6rem 1.7rem;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-event-card[b-ttwjtze3ef] {
        flex-direction: row;
        align-items: flex-start;
    }
}

.pal-event-card-main[b-ttwjtze3ef] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

.pal-event-start[b-ttwjtze3ef] {
    display: flex;
    align-items: center;
    gap: .85rem;
}

.pal-event-start-icon[b-ttwjtze3ef] {
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--pal-red);
    color: var(--pal-on-accent);
    font-size: 1.3rem;
    flex: none;
}

.pal-event-start-label[b-ttwjtze3ef] {
    display: block;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted);
    font-weight: 700;
}

.pal-event-start-time[b-ttwjtze3ef] {
    display: block;
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--text);
    line-height: 1.2;
}

.pal-event-tags[b-ttwjtze3ef] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.pal-event-tag[b-ttwjtze3ef] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .3rem .75rem;
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 700;
}

.pal-event-tag.is-club[b-ttwjtze3ef] {
    background: color-mix(in srgb, var(--agenda-club) 14%, transparent);
    color: var(--agenda-club);
}

.pal-event-tag.is-external[b-ttwjtze3ef] {
    background: color-mix(in srgb, var(--agenda-ext) 14%, transparent);
    color: var(--agenda-ext);
}

.pal-event-tag.is-other_tournament[b-ttwjtze3ef] {
    background: color-mix(in srgb, var(--agenda-other-t) 14%, transparent);
    color: var(--agenda-other-t);
}

.pal-event-tag.is-other[b-ttwjtze3ef] {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
}

.pal-event-cover[b-ttwjtze3ef] {
    display: block;
    width: 100%;
    max-height: 22rem;
    object-fit: cover;
    border-radius: 12px;
}

.pal-event-footer[b-ttwjtze3ef] {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: .85rem;
    color: var(--text-muted);
}

.pal-event-card-side[b-ttwjtze3ef] {
    flex: none;
    display: flex;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-event-card-side[b-ttwjtze3ef] {
        width: 18rem;
        border-left: 1px solid var(--surface-border);
        padding-left: 1.7rem;
    }
}

.pal-event-side-box[b-ttwjtze3ef] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .6rem;
    padding: 1rem 1.1rem;
    border-radius: 12px;
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    width: 100%;
}

.pal-event-side-box.is-success[b-ttwjtze3ef] {
    background: var(--pal-success-bg);
    border-color: transparent;
    color: var(--pal-success);
}

.pal-event-side-box.is-warning[b-ttwjtze3ef] {
    background: var(--pal-warning-bg);
    border-color: transparent;
    color: var(--pal-warning);
}

.pal-event-side-box p[b-ttwjtze3ef] {
    margin: 0;
    color: inherit;
    font-size: .88rem;
    line-height: 1.5;
}

.pal-event-side-box strong[b-ttwjtze3ef] {
    color: inherit;
}

.pal-event-cta-group[b-ttwjtze3ef] {
    display: flex;
    flex-direction: column;
    gap: .6rem;
    width: 100%;
}

.pal-event-cta-btn[b-ttwjtze3ef] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    gap: .5rem;
    padding: .65rem 1.2rem;
    border-radius: 8px;
    font-weight: 700;
    font-size: .88rem;
    text-decoration: none;
    border: none;
    cursor: pointer;
}

.pal-event-cta-btn.is-primary[b-ttwjtze3ef] {
    background: var(--pal-red);
    color: var(--pal-on-accent);
}

.pal-event-cta-btn.is-primary:hover[b-ttwjtze3ef] {
    background: var(--pal-red-mid);
}

.pal-event-cta-btn.is-secondary[b-ttwjtze3ef] {
    background: transparent;
    border: 1px solid var(--surface-border);
    color: var(--text);
}

.pal-event-cta-btn.is-secondary:hover[b-ttwjtze3ef] {
    border-color: var(--pal-red);
    color: var(--pal-red);
}

.pal-event-cta-btn.is-warning[b-ttwjtze3ef] {
    background: var(--pal-warning);
    color: var(--pal-on-accent);
}

.pal-event-cta-btn.is-warning:hover[b-ttwjtze3ef] {
    background: color-mix(in srgb, var(--pal-warning) 82%, black 18%);
}

.pal-event-cta-link[b-ttwjtze3ef] {
    color: var(--pal-red-mid);
    font-weight: 700;
}

.pal-event-cta-link:hover[b-ttwjtze3ef] {
    color: var(--pal-red);
}
/* /Components/Pages/Forum/ForumCreationSujet.razor.rz.scp.css */
/* etait en Bootstrap brut — harmonisation boutons, decisions.md [[boutons-forme-role]].
   Scope au bouton "Sauvegarder" de cette page uniquement : .pal-sticky-button (app.css) est
   partagee par 14 pages front+back-office, ne pas toucher globalement. */
.pal-sticky-button .btn[b-mke9ghu04c] {
    border-radius: var(--pal-btn-radius);
}

/* Le h1 existait deja mais n'avait jamais recu de style (heritait du defaut Bootstrap) —
   harmonisation titres, decisions.md [[titres-echelle-h1]] : meme echelle que le Cas 2 et
   que ForumForumView/ForumSujetView (.title) ci-dessus dans pal-forum.css. */
.pal-forum-create-hero h1[b-mke9ghu04c] {
    margin: 0;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}
/* /Components/Pages/Forum/ForumHome.razor.rz.scp.css */
/* /Components/Pages/Home.razor.rz.scp.css */
.pal-home-hero[b-ariqworntl] {
    width: 100%;
    margin-top: 1.5rem;
    background-color: var(--hero-bg);
}

.pal-hero-slide[b-ariqworntl] {
    /* z-index explicite ajoute par precaution (fonctionnait deja par effet de bord de la
       transformation posee par Bootstrap sur .carousel-item, qui cree son propre contexte
       d'empilement — voir .pal-vignette-media pour le cas ou cet effet de bord n'existe pas). */
    position: relative;
    z-index: 0;
    overflow: hidden;
    background-color: var(--chrome-bg);
    background-size: cover;
    background-position: center;
}

    .pal-hero-slide[b-ariqworntl]::before {
        content: "";
        position: absolute;
        inset: -70px;
        z-index: -1;
        background-image: inherit;
        background-size: cover;
        background-position: center;
        filter: blur(70px) saturate(1.25) brightness(.75);
        transform: scale(1.2);
    }

.pal-hero-img[b-ariqworntl] {
    width: 100%;
    height: 200px;
    object-fit: contain;
    display: block;
}

.pal-hero-fallback[b-ariqworntl] {
    background-color: var(--hero-bg);
}

.pal-hero-date[b-ariqworntl] {
    z-index: 2;
}

.pal-hero-overlay[b-ariqworntl] {
    /* Mobile : les images "a la une" sont des affiches promo avec leur propre titraille centree.
       Plutot que de les recouvrir d'un degrade (qui les rendait illisibles) le texte passe dans un
       bandeau plein SOUS la photo : image montree a 100%, aucune superposition. L'overlay facon
       "panneau par-dessus l'image" reprend a partir de --bp-tablet (voir plus bas). */
    position: static;
    z-index: 1;
    display: flex;
    flex-direction: column;
    padding: 1rem 1.4rem 2.4rem;
    max-width: 100%;
    color: var(--chrome-text);
    background: var(--chrome-bg);
}

.pal-home-hero .carousel-indicators[b-ariqworntl] {
    margin-bottom: 0.4rem;
}

.carousel-control-prev[b-ariqworntl],
.carousel-control-next[b-ariqworntl] {
    width: 3rem;
    z-index: 2;
}

.carousel-indicators [data-bs-target][b-ariqworntl] {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    border: none;
}

:root[data-theme="dark"] .carousel-indicators [data-bs-target][b-ariqworntl] {
    background-color: var(--pal-red);
}

.pal-hero-eyebrow[b-ariqworntl] {
    color: var(--pal-red);
    font-weight: 700;
    text-transform: uppercase;
    font-size: 0.78rem;
    letter-spacing: 0.05em;
}

.pal-hero-title[b-ariqworntl] {
    font-size: 1.2rem;
    margin: 0.35rem 0;
    color: var(--chrome-text);
}

.pal-hero-lede[b-ariqworntl] {
    color: var(--chrome-text-muted);
    font-size: 0.88rem;
    margin-bottom: 0.75rem;
}

.pal-hero-cta[b-ariqworntl] {
    align-self: flex-start;
    /* etait en Bootstrap brut (radius 0.375rem par defaut) — harmonisation boutons,
       decisions.md [[boutons-forme-role]] : boutons d'action = carre-arrondi. */
    border-radius: var(--pal-btn-radius);
}

/* seuil: --bp-tablet */
@media (min-width: 600px) {
    .pal-hero-img[b-ariqworntl] {
        height: 320px;
    }

    /* A partir du tablette : l'overlay redevient un panneau a gauche EN OVERLAY, le texte est
       verticalement centre et l'image reste visible sur sa moitie droite. Degrade lateral
       legerement allege par rapport a avant (65%->58%) suite au retour "images trop masquees". */
    .pal-hero-overlay[b-ariqworntl] {
        position: absolute;
        inset: 0;
        justify-content: center;
        max-width: 28rem;
        padding: 1.25rem;
        padding-left: 3.25rem;
        background: linear-gradient(100deg, var(--chrome-bg) 0%, color-mix(in srgb, var(--chrome-bg) 58%, transparent) 58%, transparent 90%);
    }

    .pal-hero-title[b-ariqworntl] {
        font-size: 1.6rem;
    }
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-hero-img[b-ariqworntl] {
        height: 440px;
    }

    .pal-hero-overlay[b-ariqworntl] {
        max-width: 32rem;
        padding: 2rem;
        padding-left: 3.5rem;
    }

    .pal-hero-title[b-ariqworntl] {
        font-size: 2rem;
    }
}

.pal-home-news-container[b-ariqworntl] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.pal-home-news[b-ariqworntl] {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    min-height: 6rem; /* aligne la hauteur des lignes sur .pal-widget-event (app.css), utilise par le bloc Agenda voisin — 3 lignes de contenu des deux cotes */
    padding: 5px;
    background-color: var(--surface-card);
    border: solid 1px var(--surface-border);
    border-radius: var(--pal-card-radius); /* etait 4px, ilot isole — harmonisation cartes/sections, cf. decisions.md */
    text-decoration: none !important;
    transition: background-color .15s ease;
}

    .pal-home-news:hover[b-ariqworntl] {
        background-color: color-mix(in srgb, var(--surface-card) 85%, var(--text) 15%);
    }

.pal-home-news-thumb[b-ariqworntl] {
    flex: 0 0 auto;
    width: 7rem;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 4px;
    /* position:relative seul ne cree pas de contexte d'empilement propre — z-index explicite
       necessaire pour que le pseudo-element flouté (z-index:-1) reste bien derriere l'image plutot
       que de s'echapper derriere le fond de la page. */
    position: relative;
    z-index: 0;
    background-color: var(--chrome-bg);
    background-size: cover;
    background-position: center;
}

    .pal-home-news-thumb[b-ariqworntl]::before {
        content: "";
        position: absolute;
        inset: -40px;
        z-index: -1;
        background-image: inherit;
        background-size: cover;
        background-position: center;
        filter: blur(40px) saturate(1.25) brightness(.75);
        transform: scale(1.25);
    }

.pal-home-news-thumb img[b-ariqworntl],
.pal-home-news-thumb-fallback[b-ariqworntl] {
    width: 100%;
    height: 100%;
    display: block;
}

.pal-home-news-thumb img[b-ariqworntl] {
    object-fit: contain;
}

.pal-home-news-thumb-fallback[b-ariqworntl] {
    background-color: var(--chrome-bg);
}

.pal-home-news-info[b-ariqworntl] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: 0;
}

.pal-home-news-title[b-ariqworntl] {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--text);
    line-height: 1.25;
}

.pal-home-news-meta[b-ariqworntl] {
    font-size: 0.78rem;
    color: var(--text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pal-home-news-stats[b-ariqworntl] {
    display: flex;
    gap: 0.9rem;
    font-size: 0.78rem;
    color: var(--text-muted);
}

.pal-home-columns[b-ariqworntl] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
}

/* Sans ca, la piste 1fr se resout a la largeur min-content de la colonne (vignette 7rem fixe +
   .pal-home-news-meta en white-space:nowrap) au lieu de la largeur du conteneur : la grille
   deborde d'une largeur fixe (~398px) => scroll horizontal sur tout mobile. min-width:0 laisse
   la piste retrecir, l'ellipsis deja pose sur .pal-home-news-meta prend alors le relais. */
.pal-home-columns .pal-home-col[b-ariqworntl] {
    min-width: 0;
}

.pal-home-columns .pal-home-col:first-child[b-ariqworntl] {
    grid-column: 1 / -1;
}

/* seuil: --bp-tablet */
@media (min-width: 600px) {
    .pal-home-columns[b-ariqworntl] {
        grid-template-columns: 1fr 1fr;
    }
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-home-columns[b-ariqworntl] {
        grid-template-columns: 1.2fr 1fr 1fr;
    }

    .pal-home-columns .pal-home-col:first-child[b-ariqworntl] {
        grid-column: auto;
    }
}
/* /Components/Pages/MonCompte/Agenda.razor.rz.scp.css */
/* Meme famille visuelle que Profil.razor.css (hero + charte du site). TournoiVignette est un
   composant partage (aussi utilise par TournoiDetail) : son rendu par defaut (Detailed="false",
   seul consomme ici) a ete theme le 2026-08-07 directement dans TournoiVignette.razor(.css) —
   voir ce fichier pour le detail. Ici, seul le badge "+ d'infos" -> bouton et la mise en page de
   la carte evenement restent proches a cette page. */

.pal-dash-agenda-page[b-1rt44ijr63] {
    max-width: 60rem;
    margin: 0 auto;
    /* Pas de padding-top : gere une seule fois pour toutes les pages /GestionUtilisateur/* par
       .pal-dash-shell (MonCompteLayout.razor.css), pour rester aligne avec la sidebar. */
    padding: 0 1rem 3rem;
}

.pal-dash-agenda-header[b-1rt44ijr63] {
    padding-bottom: 1.5rem;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid var(--surface-border);
}

.pal-dash-agenda-header h1[b-1rt44ijr63] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}

.pal-dash-agenda-header p[b-1rt44ijr63] {
    color: var(--text-muted);
    margin: 0;
}

.pal-dash-agenda-list[b-1rt44ijr63] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

/* Mobile : date+titre sur une ligne (date centree verticalement si le titre est plus court/haut
   qu'elle), actions en pleine largeur en dessous (sous la date aussi, boutons empiles). */
.pal-dash-agenda-card[b-1rt44ijr63] {
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-areas:
        "date    content"
        "actions actions";
    column-gap: 1rem;
    row-gap: .85rem;
    align-items: center;
    padding: 1.1rem;
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: 12px;
}

.pal-dash-agenda-date[b-1rt44ijr63] {
    grid-area: date;
    width: 4.5rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    border: 1px solid var(--surface-border);
    border-radius: 8px;
    overflow: hidden;
}

.pal-dash-agenda-date .month[b-1rt44ijr63] {
    width: 100%;
    padding: .25rem 0;
    background-color: var(--pal-red);
    color: var(--pal-on-accent);
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .03em;
}

.pal-dash-agenda-date .number[b-1rt44ijr63] {
    padding-top: .2rem;
    font-weight: 800;
    font-size: 1.5rem;
    line-height: 1.3;
    color: var(--text);
}

.pal-dash-agenda-date .day[b-1rt44ijr63] {
    padding-bottom: .3rem;
    font-size: .72rem;
    color: var(--pal-red);
}

.pal-dash-agenda-content[b-1rt44ijr63] {
    grid-area: content;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: .4rem;
}

.pal-dash-agenda-title[b-1rt44ijr63] {
    margin: 0;
    font-size: 1.05rem;
    color: var(--text);
}

.pal-dash-agenda-info[b-1rt44ijr63] {
    display: flex;
    align-items: center;
    gap: .4rem;
    color: var(--text-muted);
    font-size: .88rem;
}

.pal-dash-agenda-actions[b-1rt44ijr63] {
    grid-area: actions;
    display: flex;
    flex-direction: column;
    gap: .6rem;
    justify-content: center;
}

.pal-dash-agenda-actions .btn[b-1rt44ijr63] {
    width: 100%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
}

.pal-dash-agenda-actions .pal-dash-agenda-vip[b-1rt44ijr63] {
    align-self: center;
    padding: .5rem 1.1rem;
    background-color: var(--pal-red);
    color: var(--pal-on-accent);
    font-weight: 700;
}

.pal-dash-agenda-info-btn[b-1rt44ijr63] {
    color: var(--text);
    background: transparent;
    border: 1px solid var(--surface-border);
}

.pal-dash-agenda-info-btn:hover[b-1rt44ijr63] {
    color: var(--pal-red);
    border-color: var(--pal-red);
    background: transparent;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-dash-agenda-card[b-1rt44ijr63] {
        grid-template-columns: auto 1fr auto;
        grid-template-areas: "date content actions";
    }

    .pal-dash-agenda-actions[b-1rt44ijr63] {
        width: 11.5rem;
    }
}
/* /Components/Pages/MonCompte/Dashboard.razor.rz.scp.css */
.pal-dashboard-page[b-cnxvmx4v6l] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    /* Pas de padding-top : gere une seule fois pour toutes les pages /GestionUtilisateur/* par
       .pal-dash-shell (MonCompteLayout.razor.css), pour rester aligne avec la sidebar. */
    padding: 0 1.25rem 3rem;
}

/* Harmonisation titres (audit graphique axe 3/3, decisions.md [[titres-echelle-h1]]) : la page
   n'avait auparavant aucun h1 — gagne le meme traitement "hero" que les pages soeurs
   (MesTournois/MesMessages/Agenda). Pas de margin-bottom ici : .pal-dashboard-page est deja en
   flex + gap, qui espace ce bloc du suivant. */
.pal-dashboard-hero[b-cnxvmx4v6l] {
    padding-bottom: 1.25rem;
    border-bottom: 1px solid var(--surface-border);
}

.pal-dashboard-hero h1[b-cnxvmx4v6l] {
    margin: 0 0 .35rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}

.pal-dashboard-hero p[b-cnxvmx4v6l] {
    margin: 0;
    color: var(--text-muted);
}

/* Colonne unique : bloc de statut (AdhesionActive) en pleine largeur, puis une carte regroupant
   les sections (Saison+stats, Historique des dons) separees par un simple filet horizontal. */
.pal-dashboard-body[b-cnxvmx4v6l] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1.5rem 1.6rem;
    display: flex;
    flex-direction: column;
    gap: 1.4rem;
}

.pal-dashboard-section[b-cnxvmx4v6l] {
    border-top: 1px solid var(--surface-border);
    padding-top: 1.1rem;
}

.pal-dashboard-section:first-child[b-cnxvmx4v6l] {
    border-top: none;
    padding-top: 0;
}

.pal-dashboard-section-head[b-cnxvmx4v6l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .9rem;
}

.pal-dashboard-section-head h2[b-cnxvmx4v6l] {
    margin: 0;
    font-size: .95rem;
    color: var(--text);
}

.pal-dashboard-season[b-cnxvmx4v6l] {
    display: flex;
    align-items: center;
    gap: .75rem;
}

/* .form-select derive ses couleurs de --bs-body-bg/--bs-body-color/--bs-border-color, jamais
   redefinies par ce site (qui pilote via [data-theme], pas [data-bs-theme]) : redefinies ici,
   scopees a ce select uniquement (ne fuite pas vers les autres .form-select du site). */
.pal-season-select[b-cnxvmx4v6l] {
    --bs-body-bg: var(--surface-bg);
    --bs-body-color: var(--text);
    --bs-border-color: var(--surface-border);
    max-width: 14rem;
    font-weight: 600;
}

.pal-season-select:focus[b-cnxvmx4v6l] {
    border-color: var(--pal-red-mid);
    box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--pal-red) 25%, transparent);
}

[b-cnxvmx4v6l] .pal-dons-grid.quickgrid {
    width: 100%;
}

[b-cnxvmx4v6l] .pal-dons-grid th {
    background-color: transparent;
    color: var(--text-muted);
    border-color: var(--surface-border);
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    padding-bottom: .6rem;
}

[b-cnxvmx4v6l] .pal-dons-grid th button {
    color: var(--text-muted);
}

[b-cnxvmx4v6l] .pal-dons-grid th .sort-indicator {
    filter: var(--pal-icon-invert-filter);
}

[b-cnxvmx4v6l] .pal-dons-grid > tbody > tr {
    border-bottom: 1px solid var(--surface-border);
}

[b-cnxvmx4v6l] .pal-dons-grid tbody tr:nth-of-type(even) {
    background-color: var(--surface-bg);
}

[b-cnxvmx4v6l] .pal-dons-grid td {
    color: var(--text);
    vertical-align: middle;
    padding: .55rem .5rem;
}

.pal-status-chip[b-cnxvmx4v6l] {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    padding: .15rem .6rem;
    border-radius: 999px;
    font-size: .74rem;
    font-weight: 700;
}

.pal-status-chip.is-valide[b-cnxvmx4v6l] {
    background: var(--pal-success-bg);
    color: var(--pal-success);
}

.pal-status-chip.is-attente[b-cnxvmx4v6l] {
    background: var(--pal-warning-bg);
    color: var(--pal-warning);
}
/* /Components/Pages/MonCompte/MesMessages.razor.rz.scp.css */
/* Boite de reception "moderne" (maquette approuvee, option A "Boite classique") : liste de lignes
   sans entete de tableau visible, chaque ligne QuickGrid stylee comme une rangee de messagerie
   (pas de grille/bordures de cellule), accent + gras sur les messages non lus. Carte "edge to edge"
   (pas de padding horizontal, cf. .pal-messages-body) pour que les filets separateurs des lignes
   traversent toute la largeur de la carte, comme une vraie boite mail. Pas de padding-top : gere
   une seule fois pour toutes les pages /GestionUtilisateur/* par .pal-dash-shell
   (MonCompteLayout.razor.css). */

.pal-messages-page[b-gz5sha2ao4] {
    max-width: 60rem;
    margin: 0 auto;
    padding: 0 1rem 3rem;
}

.pal-messages-hero[b-gz5sha2ao4] {
    padding-bottom: 1.5rem;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid var(--surface-border);
}

.pal-messages-hero h1[b-gz5sha2ao4] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}

.pal-messages-hero p[b-gz5sha2ao4] {
    margin: 0;
    color: var(--text-muted);
}

.pal-messages-toolbar[b-gz5sha2ao4] {
    display: flex;
    justify-content: flex-end;
    margin-bottom: .85rem;
}

.pal-messages-delete[b-gz5sha2ao4] {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    background: transparent;
    border: 1px solid var(--surface-border);
    color: var(--pal-red);
    border-radius: 8px;
    padding: .5rem 1rem;
    font-weight: 700;
    font-size: .85rem;
    cursor: pointer;
    transition: background-color .15s ease-in-out, border-color .15s ease-in-out, color .15s ease-in-out;
}

.pal-messages-delete:hover:not(:disabled)[b-gz5sha2ao4] {
    background: var(--pal-red);
    border-color: var(--pal-red);
    color: var(--pal-on-accent);
}

.pal-messages-delete:disabled[b-gz5sha2ao4] {
    color: var(--text-muted);
    cursor: default;
    opacity: .6;
}

.pal-messages-body[b-gz5sha2ao4] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    overflow: hidden;
}

[b-gz5sha2ao4] .pal-mail-grid.quickgrid {
    width: 100%;
    /* table-layout:auto laisserait la colonne Message s'etirer a la largeur de son contenu au lieu
       de se faire tronquer par l'ellipsis (.pal-mail-subject) : fixed force les colonnes a largeur
       fixe (check/who/time) a respecter leur largeur, et Message se contente du reste. */
    table-layout: fixed;
    border-collapse: collapse;
}

[b-gz5sha2ao4] .pal-mail-grid thead {
    display: none;
}

/* QuickGrid pave toujours la page jusqu'a Pagination.ItemsPerPage avec des <tr> vides (visibles des
   que TotalItemCount < ItemsPerPage) : bordure/hover/padding cibles uniquement sur .pal-mail-row
   (posee par GetRow, cf. code-behind) pour que ces lignes fantomes restent invisibles comme prevu
   par defaut, plutot que d'etirer la carte avec des dizaines de filets vides. */
[b-gz5sha2ao4] .pal-mail-grid > tbody > tr.pal-mail-row {
    border-bottom: 1px solid var(--surface-border);
}

[b-gz5sha2ao4] .pal-mail-grid > tbody > tr.pal-mail-row:last-child {
    border-bottom: none;
}

[b-gz5sha2ao4] .pal-mail-grid > tbody > tr.pal-mail-row:hover {
    background-color: var(--surface-bg);
}

[b-gz5sha2ao4] .pal-mail-grid tr.pal-mail-row > td {
    padding: .85rem 1.1rem;
    vertical-align: middle;
    color: var(--text);
    font-size: .88rem;
}

[b-gz5sha2ao4] td.pal-mail-col-check {
    width: 3.6rem;
    padding-right: 0;
}

[b-gz5sha2ao4] td.pal-mail-col-who {
    width: 11rem;
}

[b-gz5sha2ao4] td.pal-mail-col-subject {
    min-width: 0;
}

[b-gz5sha2ao4] td.pal-mail-col-time {
    width: 6rem;
    color: var(--text-muted);
    font-size: .78rem;
    white-space: nowrap;
}

/* Sous --bp-tablet, les 3 colonnes fixes (check/who/time) ne laissent plus assez de place au sujet
   avec leurs largeurs desktop (table-layout:fixed, cf. plus haut) : on les retrecit et on autorise
   "il y a X mois" a passer sur 2 lignes plutot que de le tronquer ou de faire deborder la carte. */
@media (max-width: 599px) {
    [b-gz5sha2ao4] td.pal-mail-col-who {
        width: 5.5rem;
    }

    [b-gz5sha2ao4] td.pal-mail-col-time {
        width: 3.6rem;
        font-size: .68rem;
        white-space: normal;
        line-height: 1.3;
    }

    [b-gz5sha2ao4] .pal-mail-grid tr.pal-mail-row > td {
        padding: .7rem .5rem;
    }

    .pal-mail-check-wrap[b-gz5sha2ao4] {
        gap: .3rem;
    }
}

.pal-player-cell[b-gz5sha2ao4] {
    min-width: 0;
}

.pal-player-name[b-gz5sha2ao4] {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

.pal-mail-check-wrap[b-gz5sha2ao4] {
    display: flex;
    align-items: center;
    gap: .55rem;
}

.pal-mail-check input[type="checkbox"][b-gz5sha2ao4] {
    width: 1rem;
    height: 1rem;
    margin: 0;
    accent-color: var(--pal-red);
    cursor: pointer;
}

.pal-mail-dot[b-gz5sha2ao4] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--pal-red);
    flex: none;
}

.pal-mail-subject[b-gz5sha2ao4] {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--text);
}

.pal-mail-subject:hover[b-gz5sha2ao4] {
    color: var(--pal-red);
}

.pal-mail-snip[b-gz5sha2ao4] {
    color: var(--text-muted);
    font-weight: 400;
    margin-left: .35rem;
}

.pal-mail-snip[b-gz5sha2ao4]::before {
    content: "— ";
}

[b-gz5sha2ao4] tr.pal-mail-row-unread .pal-mail-subject,
[b-gz5sha2ao4] tr.pal-mail-row-unread .pal-player-name {
    font-weight: 700;
}

.pal-messages-paginator[b-gz5sha2ao4] {
    padding: 1rem 1.1rem;
    border-top: 1px solid var(--surface-border);
}
/* /Components/Pages/MonCompte/MessageThread.razor.rz.scp.css */
/* Fil de discussion (maquette approuvee, option A "Boite classique") : messages en cartes
   empilees, accent + filet gauche sur mes propres messages. Pas de padding-top : gere une seule
   fois pour toutes les pages /GestionUtilisateur/* par .pal-dash-shell
   (MonCompteLayout.razor.css). */

.pal-thread-page[b-v9fkq6pm3d] {
    max-width: 60rem;
    margin: 0 auto;
    padding: 0 1rem 3rem;
}

.pal-thread-hero[b-v9fkq6pm3d] {
    padding-bottom: 1.5rem;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid var(--surface-border);
}

.pal-thread-back[b-v9fkq6pm3d] {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    color: var(--text-muted);
    font-weight: 700;
    font-size: .82rem;
    text-decoration: none;
    margin-bottom: .75rem;
}

.pal-thread-back:hover[b-v9fkq6pm3d] {
    color: var(--pal-red);
}

.pal-thread-hero h1[b-v9fkq6pm3d] {
    margin: 0;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.2;
    color: var(--text);
}

.pal-thread-stack[b-v9fkq6pm3d] {
    display: flex;
    flex-direction: column;
    gap: .9rem;
    margin-bottom: 1.5rem;
}

.pal-thread-card[b-v9fkq6pm3d] {
    display: flex;
    gap: 1rem;
    padding: 1.1rem 1.3rem;
    border-radius: var(--pal-card-radius);
    border: 1px solid var(--surface-border);
    background: var(--surface-card);
}

.pal-thread-card.is-me[b-v9fkq6pm3d] {
    background: color-mix(in srgb, var(--pal-red) 5%, var(--surface-card));
    border-left: 3px solid var(--pal-red);
}

.pal-thread-avatar[b-v9fkq6pm3d] {
    flex: none;
}

.pal-thread-content[b-v9fkq6pm3d] {
    min-width: 0;
    flex: 1 1 auto;
}

.pal-thread-head[b-v9fkq6pm3d] {
    display: flex;
    align-items: baseline;
    gap: .6rem;
    flex-wrap: wrap;
    margin-bottom: .5rem;
}

.pal-thread-who[b-v9fkq6pm3d] {
    font-weight: 700;
    color: var(--text);
    font-size: .92rem;
}

.pal-thread-time[b-v9fkq6pm3d] {
    font-size: .76rem;
    color: var(--text-muted);
}

.pal-thread-composer[b-v9fkq6pm3d] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: 14px;
    padding: 1.3rem 1.4rem;
}

.pal-thread-composer-actions[b-v9fkq6pm3d] {
    display: flex;
    justify-content: flex-end;
    margin-top: 1rem;
}

.pal-thread-reply-btn[b-v9fkq6pm3d] {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    background: var(--pal-red);
    color: var(--pal-on-accent);
    border: none;
    padding: .6rem 1.3rem;
    border-radius: var(--pal-btn-radius);
    font-weight: 700;
    font-size: .88rem;
    cursor: pointer;
}

.pal-thread-reply-btn:hover[b-v9fkq6pm3d] {
    background: color-mix(in srgb, var(--pal-red) 82%, black 18%);
}
/* /Components/Pages/MonCompte/MesTournois.razor.rz.scp.css */
/* Meme famille visuelle que Profil/Agenda (hero) + meme tableau theme que Dashboard (Historique
   des dons) / ClassementGeneral. Pas de padding-top : gere une seule fois pour toutes les pages
   /GestionUtilisateur/* par .pal-dash-shell (MonCompteLayout.razor.css). */

/* width:100% indispensable : margin auto sur un item flex (.pal-profil, colonne) annule l'etirement
   — la page prenait alors la largeur de son contenu, tableau compris, et elargissait tout l'ecran. */
.pal-tournois-page[b-rt1sgxztsr] {
    width: 100%;
    max-width: 60rem;
    margin: 0 auto;
    padding: 0 1rem 3rem;
}

.pal-tournois-hero[b-rt1sgxztsr] {
    padding-bottom: 1.5rem;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid var(--surface-border);
}

.pal-tournois-hero h1[b-rt1sgxztsr] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}

.pal-tournois-hero p[b-rt1sgxztsr] {
    margin: 0;
    color: var(--text-muted);
}

.pal-tournois-body[b-rt1sgxztsr] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: 14px;
    padding: 1.5rem 1.6rem;
}

.pal-tournois-head[b-rt1sgxztsr] {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: 1.1rem;
}

.pal-tournois-head label[b-rt1sgxztsr] {
    font-weight: 700;
    font-size: .85rem;
    color: var(--text-muted);
}

/* .form-select derive ses couleurs de --bs-body-bg/--bs-body-color/--bs-border-color, jamais
   redefinies par ce site (qui pilote via [data-theme], pas [data-bs-theme]) : redefinies ici,
   scopees a ce select uniquement (ne fuite pas vers les autres .form-select du site). */
.pal-season-select[b-rt1sgxztsr] {
    --bs-body-bg: var(--surface-bg);
    --bs-body-color: var(--text);
    --bs-border-color: var(--surface-border);
    max-width: 14rem;
    font-weight: 600;
}

.pal-season-select:focus[b-rt1sgxztsr] {
    border-color: var(--pal-red-mid);
    box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--pal-red) 25%, transparent);
}

/* 6 colonnes : sur mobile le tableau depasse la largeur d'ecran. Sans conteneur defilant, il
   elargissait toute la page (le header/footer du site restant, eux, a la largeur d'ecran) ;
   le defilement horizontal est ici confine au seul tableau, pagination comprise hors du scroll. */
.pal-tournois-scroll[b-rt1sgxztsr] {
    overflow-x: auto;
}

[b-rt1sgxztsr] .pal-tournois-grid.quickgrid {
    width: 100%;
}

[b-rt1sgxztsr] .pal-tournois-grid th {
    background-color: transparent;
    color: var(--text-muted);
    border-color: var(--surface-border);
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    padding-bottom: .6rem;
}

[b-rt1sgxztsr] .pal-tournois-grid th button {
    color: var(--text-muted);
}

[b-rt1sgxztsr] .pal-tournois-grid th .sort-indicator {
    filter: var(--pal-icon-invert-filter);
}

[b-rt1sgxztsr] .pal-tournois-grid > tbody > tr {
    border-bottom: 1px solid var(--surface-border);
}

[b-rt1sgxztsr] .pal-tournois-grid tbody tr:nth-of-type(even) {
    background-color: var(--surface-bg);
}

[b-rt1sgxztsr] .pal-tournois-grid td {
    color: var(--text);
    vertical-align: middle;
    padding: .55rem .5rem;
}

[b-rt1sgxztsr] td.pal-tournois-name {
    font-weight: 700;
    min-width: var(--pal-grid-name-col-min-width);
}

.pal-mode-chip[b-rt1sgxztsr] {
    display: inline-flex;
    align-items: center;
    padding: .15rem .6rem;
    border-radius: 999px;
    font-size: .74rem;
    font-weight: 700;
}

.pal-mode-chip.is-live[b-rt1sgxztsr] {
    background: color-mix(in srgb, var(--agenda-live) 14%, transparent);
    color: var(--agenda-live);
}

.pal-mode-chip.is-online[b-rt1sgxztsr] {
    background: color-mix(in srgb, var(--agenda-online) 16%, transparent);
    color: var(--agenda-online);
}

/* Meme traitement "chip aplati + icone trophee" que la colonne Championnat de
   /BackOffice/Tournois (.pal-bo-chip-flat), recree ici avec les tokens front-office
   puisque pal-backoffice.css n'est pas charge sur cette page. */
/* width:max-content + max-width : la puce garde sa largeur naturelle (1 ligne) jusqu'au plafond,
   puis passe sur 2 lignes — et le tableau (qui defile desormais) ne peut plus l'ecraser a la
   largeur de son mot le plus long, ce qui l'empilait sur 4-5 lignes en "gros rond" sur mobile. */
.pal-championnat-chip[b-rt1sgxztsr] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    width: max-content;
    max-width: var(--pal-chip-wrap-max-width);
    line-height: 1.3;
    padding: 4px 11px;
    border-radius: var(--pal-chip-wrap-radius);
    font-size: .74rem;
    font-weight: 700;
    background: color-mix(in srgb, var(--pal-red) 10%, transparent);
    color: var(--pal-red);
}
/* /Components/Pages/MonCompte/Profil.razor.rz.scp.css */
/* Reprend la presentation de Register.razor.css (meme famille visuelle : hero + carte + sections
   a icone). EditUserView/PreferencesUser sont des composants partages (EditUserView est aussi
   utilise par BackOffice/BOUtilisateurDetail.razor) : leur markup n'est pas modifie ici pour ne
   pas impacter le back-office — tout le style ci-dessous passe par ::deep depuis CETTE page
   uniquement (isolation CSS Blazor : sans effet sur le rendu de EditUserView ailleurs). */

.pal-profil-page[b-wt5nbg1qmt] {
    max-width: 54rem;
    margin: 0 auto;
    /* Pas de padding-top : gere une seule fois pour toutes les pages /GestionUtilisateur/* par
       .pal-dash-shell (MonCompteLayout.razor.css), pour rester aligne avec la sidebar. */
    padding: 0 1rem 3rem;
}

.pal-profil-hero[b-wt5nbg1qmt] {
    padding-bottom: 1.5rem;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid var(--surface-border);
}

.pal-profil-hero h1[b-wt5nbg1qmt] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    line-height: 1.15;
    color: var(--text);
}

.pal-profil-hero p[b-wt5nbg1qmt] {
    color: var(--text-muted);
    margin: 0;
}

.pal-profil-card[b-wt5nbg1qmt] {
    /* Pas de fond/carte (demande explicite) : les sections restent a plat sur la page, separees
       par leur simple bordure superieure (cf. .pal-profil-section), comme sur Register. */
}

.pal-profil-section[b-wt5nbg1qmt] {
    padding: 1.5rem 0;
    border-top: 1px solid var(--surface-border);
}

.pal-profil-section:first-child[b-wt5nbg1qmt] {
    padding-top: 0;
    border-top: none;
}

.pal-profil-section-title[b-wt5nbg1qmt] {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: 1.1rem;
}

.pal-profil-section-icon[b-wt5nbg1qmt] {
    width: 2.6rem;
    height: 2.6rem;
    flex: none;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: color-mix(in srgb, var(--pal-red) 14%, transparent);
    color: var(--pal-red);
    font-size: 1.1rem;
}

.pal-profil-section-title h2[b-wt5nbg1qmt] {
    margin: 0;
    font-size: 1.15rem;
    color: var(--text);
}

/* --- EditUserView : grille Bootstrap .row/.col-lg-6 non touchee (partagee avec BackOffice),
   seule l'apparence des champs est reskinnee. --- */
[b-wt5nbg1qmt] .col-lg-6 > label {
    display: block;
    margin: 1rem 0 .35rem;
    font-weight: 600;
    font-size: .9rem;
    color: var(--text-muted);
}

[b-wt5nbg1qmt] .col-lg-6 > label:first-child {
    margin-top: 0;
}

[b-wt5nbg1qmt] .col-lg-6 > input.form-control {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
    border-radius: 8px;
}

[b-wt5nbg1qmt] .col-lg-6 > input.form-control:focus {
    background: var(--surface-bg);
    color: var(--text);
    border-color: var(--pal-red-mid);
    box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--pal-red) 25%, transparent);
}

/* Avatar/Trombinoscope : 3e et 4e colonnes de la grille (visibles seulement si NoPic=false,
   toujours le cas sur cette page) — separees visuellement du bloc d'infos personnelles au-dessus.
   Couplage fragile assume : suppose l'ordre actuel des colonnes dans EditUserView.razor. */
[b-wt5nbg1qmt] .col-lg-6:nth-child(3),
[b-wt5nbg1qmt] .col-lg-6:nth-child(4) {
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px dashed var(--surface-border);
}

[b-wt5nbg1qmt] .droparea {
    border-radius: 10px;
    margin-top: .5rem;
}

[b-wt5nbg1qmt] .col-lg-6 label.text-center {
    color: var(--text-muted);
    font-weight: 600;
    font-size: .85rem;
    margin-top: .75rem;
}

/* --- PreferencesUser : structure de switch-rows propre a ce composant (non partage ailleurs). --- */
[b-wt5nbg1qmt] .pal-profil-prefs {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
}

[b-wt5nbg1qmt] .pal-profil-prefs-group h3 {
    margin: 0 0 .85rem;
    padding-bottom: .5rem;
    font-size: .78rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--pal-red);
    border-bottom: 1px solid var(--surface-border);
}

[b-wt5nbg1qmt] .pal-profil-switch-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .6rem 0;
    border-top: 1px solid var(--surface-border);
    cursor: pointer;
}

[b-wt5nbg1qmt] .pal-profil-prefs-group h3 + .pal-profil-switch-row {
    border-top: none;
}

[b-wt5nbg1qmt] .pal-profil-switch-row span {
    color: var(--text);
    font-size: .92rem;
    flex: 1 1 auto;
    min-width: 0;
}

[b-wt5nbg1qmt] .pal-profil-switch-row .switch {
    flex: none;
}

/* --- Identification : email en lecture seule + lien "Reinitialiser le mot de passe", sur 2
   colonnes des --bp-tablet (empiles en dessous). --- */
.pal-profil-identification[b-wt5nbg1qmt] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.1rem;
}

.pal-profil-field[b-wt5nbg1qmt] {
    margin: 0;
}

.pal-profil-field label[b-wt5nbg1qmt] {
    display: block;
    margin-bottom: .35rem;
    font-weight: 600;
    font-size: .9rem;
    color: var(--text-muted);
}

.pal-profil-readonly[b-wt5nbg1qmt] {
    /* Texte simple, sans fond/bordure : un encadre faisait penser a un champ de formulaire
       modifiable, alors que l'email n'est pas editable ici. */
    color: var(--text);
    font-size: .95rem;
}

/* seuil: --bp-tablet */
@media (min-width: 600px) {
    .pal-profil-identification[b-wt5nbg1qmt] {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

.pal-profil-password-btn[b-wt5nbg1qmt] {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    padding: .6rem 1.1rem;
    border: 1px solid var(--pal-red);
    border-radius: 8px;
    color: var(--pal-red);
    font-weight: 700;
    text-decoration: none;
    transition: background-color .15s ease-in-out, color .15s ease-in-out;
}

.pal-profil-password-btn:hover[b-wt5nbg1qmt] {
    background-color: var(--pal-red);
    color: var(--pal-on-accent);
}

/* seuil: --bp-tablet */
@media (min-width: 600px) {
    [b-wt5nbg1qmt] .pal-profil-prefs {
        grid-template-columns: repeat(2, 1fr);
    }
}
/* /Components/Pages/MonCompte/UserStats.razor.rz.scp.css */
.pal-kpi-row[b-iq1jzpl0ba] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
    gap: .85rem;
    margin-bottom: 1.1rem;
}

.pal-kpi-tile[b-iq1jzpl0ba] {
    /* Le composant est desormais imbrique dans une carte --surface-card (Dashboard.razor) :
       --surface-bg (fond de page) cree le contraste, --surface-card serait invisible ici. */
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    border-radius: 14px;
    padding: 1rem 1rem .9rem;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.pal-kpi-icon[b-iq1jzpl0ba] {
    width: 2.3rem;
    height: 2.3rem;
    border-radius: 10px;
    display: grid;
    place-items: center;
    background: color-mix(in srgb, var(--pal-red) 12%, transparent);
    color: var(--pal-red);
    font-size: 1.1rem;
}

.pal-kpi-value[b-iq1jzpl0ba] {
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

.pal-kpi-label[b-iq1jzpl0ba] {
    color: var(--text-muted);
    font-size: .8rem;
}

.pal-perf-card[b-iq1jzpl0ba] {
    border-top: 1px solid var(--surface-border);
    padding-top: 1.1rem;
    margin-top: 1.4rem;
}

.pal-perf-head[b-iq1jzpl0ba] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: .9rem;
}

.pal-perf-head h2[b-iq1jzpl0ba] {
    margin: 0;
    font-size: 1rem;
    color: var(--text);
}

.pal-perf-head .muted[b-iq1jzpl0ba] {
    color: var(--text-muted);
    font-size: .8rem;
}

.pal-userstats-charts[b-iq1jzpl0ba] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 1.5rem;
    padding: .5rem 0 .8rem;
}

.pal-chart-col[b-iq1jzpl0ba] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .7rem;
}

.pal-chart-box[b-iq1jzpl0ba] {
    position: relative;
    width: min(180px, 38vw);
    aspect-ratio: 1;
}

.pal-chart-caption[b-iq1jzpl0ba] {
    font-weight: 700;
    font-size: .85rem;
    color: var(--text);
    text-align: center;
}
/* /Components/Pages/NewsDetail.razor.rz.scp.css */
.pal-news-detail[b-yrsph7luid] {
    padding: 1.5rem 1rem 3rem;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.pal-news-detail-hero[b-yrsph7luid] {
    display: flex;
    justify-content: center;
    border-radius: 16px;
    overflow: hidden;
}

.pal-news-detail-hero img[b-yrsph7luid] {
    max-height: 480px;
    max-width: 100%;
    display: block;
    object-fit: cover;
}

.pal-news-detail-meta[b-yrsph7luid] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 1.25rem;
    color: var(--text-muted);
    font-size: .9rem;
}

.pal-news-detail-meta-item[b-yrsph7luid] {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
}

.pal-news-detail-meta-item i[b-yrsph7luid] {
    color: var(--pal-red);
}

.pal-news-comments-title-row[b-yrsph7luid] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.pal-news-like-row[b-yrsph7luid] {
    display: flex;
    align-items: center;
    gap: .75rem;
}

.pal-news-like-btn[b-yrsph7luid] {
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--pal-btn-radius);
    border: 1px solid var(--pal-red);
    background: transparent;
    color: var(--pal-red);
    font-size: 1.1rem;
}

.pal-news-like-btn:hover[b-yrsph7luid],
.pal-news-like-btn:focus[b-yrsph7luid] {
    background: var(--pal-red);
    color: var(--chrome-text);
}

.pal-forum-like-ribbon[b-yrsph7luid] {
    /* etait pensee pour le Forum (bordure/marge/padding hauts = separateur de bas de message) —
       ici la ribbon est juste un cluster d'avatars aligne au bouton like, pas une section a part. */
    padding-top: 0;
    margin-top: 0;
    border-top: none;
}

.pal-forum-like-ribbon img[b-yrsph7luid] {
    --pal-like-size: 2.5rem;
    border-color: var(--surface-bg) !important;
}

.pal-news-comments-title[b-yrsph7luid] {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin: 0;
    font-size: 1.2rem;
    color: var(--text);
}

.pal-news-comments-title i[b-yrsph7luid] {
    color: var(--pal-red);
}

.pal-news-comments-count[b-yrsph7luid] {
    color: var(--text-muted);
    font-weight: 400;
    font-size: 1rem;
}

.pal-news-comment[b-yrsph7luid] {
    display: flex;
    gap: 1rem;
    padding: 1.1rem 0;
    border-bottom: 1px solid var(--surface-border);
}

.pal-news-comment:last-child[b-yrsph7luid] {
    border-bottom: none;
}

.pal-news-comment-avatar[b-yrsph7luid] {
    flex: none;
}

.pal-news-comment-body[b-yrsph7luid] {
    flex: 1 1 auto;
    min-width: 0;
}

.pal-news-comment-header[b-yrsph7luid] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .6rem;
    margin-bottom: .4rem;
}

.pal-news-comment-author[b-yrsph7luid] {
    font-weight: 700;
    color: var(--pal-red-mid);
}

.pal-news-comment-date[b-yrsph7luid] {
    color: var(--text-muted);
    font-size: .8rem;
}

.pal-news-comment-delete[b-yrsph7luid] {
    margin-left: auto;
    color: var(--text-muted);
    padding: .1rem .4rem;
}

.pal-news-comment-delete:hover[b-yrsph7luid] {
    color: var(--pal-red);
}

.pal-news-comment-text[b-yrsph7luid] {
    margin: 0;
    color: var(--text);
    line-height: 1.6;
    white-space: pre-wrap;
}

.pal-news-comment-form[b-yrsph7luid] {
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--surface-border);
}

.pal-news-comment-form h3[b-yrsph7luid] {
    margin: 0 0 1rem;
    font-size: 1.05rem;
    color: var(--text);
}

.pal-news-comment-textarea[b-yrsph7luid] {
    margin-bottom: 1rem;
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
}

.pal-news-comment-textarea:focus[b-yrsph7luid] {
    background: var(--surface-bg);
    color: var(--text);
}

.pal-captcha[b-yrsph7luid] {
    margin-bottom: 1.25rem;
}

.pal-captcha-label[b-yrsph7luid] {
    display: block;
    margin-bottom: .6rem;
    color: var(--text-muted);
    font-weight: 600;
    font-size: .9rem;
}

.pal-captcha-row[b-yrsph7luid] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .75rem;
}

.pal-captcha-input[b-yrsph7luid] {
    width: 100%;
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
}

.pal-news-comment-submit[b-yrsph7luid] {
    width: 100%;
    padding: .7rem 1.5rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    border-radius: 8px;
}

/* seuil: --bp-tablet */
@media (min-width: 600px) {
    .pal-captcha-row[b-yrsph7luid] {
        flex-direction: row;
        align-items: center;
    }

    .pal-captcha-input[b-yrsph7luid] {
        width: auto;
        max-width: 12rem;
    }

    .pal-news-comment-submit[b-yrsph7luid] {
        width: auto;
        margin-left: auto;
    }
}
/* /Components/Pages/NewsList.razor.rz.scp.css */
.pal-news-loading-overlay[b-jjmvlu9496] {
    height: 600px;
    background-color: var(--surface-bg);
}

.pal-news-featured[b-jjmvlu9496] {
    margin-bottom: 1.75rem;
}

.pal-news-layout[b-jjmvlu9496] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2.25rem;
    margin-top: 1.75rem;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-news-layout[b-jjmvlu9496] {
        grid-template-columns: minmax(0, 1fr) 300px;
    }
}
/* /Components/Pages/QualifiesPast.razor.rz.scp.css */
.pal-qualifies[b-zfrkseq8oh] {
    padding: 1.5rem 1rem 3rem;
}

/* Carte (harmonisation cartes/sections, cf. decisions.md [[cartes-sections-elevation]]) — meme
   traitement que ClassementGeneral.razor.css (role "annuaire" identique). */
.pal-qualifies-card[b-zfrkseq8oh] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: .5rem;
}

/* cf. ClassementGeneral.razor.css pour le detail : max-height+overflow (au lieu du seul
   overflow-x d'avant) necessaire pour que le header sticky ci-dessous ait un scroll interne
   auquel s'accrocher. */
.pal-qualifies-tablewrap[b-zfrkseq8oh] {
    overflow: auto;
    max-height: calc(100vh - 280px);
    /* Plancher absolu : en paysage sur telephone, 100vh tombe autour de 400-450px, et
       calc(100vh - 280px) ne laisse quasiment plus rien aux lignes (seul l'en-tete collant reste
       visible) — table qui semble vide. ~10 lignes + en-tete garanties quoi qu'il arrive ; sur un
       viewport court, c'est alors la PAGE qui defile, plus seulement le tableau (accepte). */
    min-height: 24rem;
}

/* Meme constat que ClassementGeneral.razor.css : le theme QuickGrid par defaut (app.css) est
   partage par toutes les grilles du site, on ne le touche pas globalement, on surcharge ici via
   ::deep uniquement pour cette page. */
[b-zfrkseq8oh] .pal-qualifies-grid.quickgrid {
    width: 100%;
}

[b-zfrkseq8oh] .pal-qualifies-grid th {
    position: sticky;
    top: 0;
    /* 3 (et non 1) : sur mobile la colonne Pseudo est figee a gauche (td z-index 2 plus bas) ; sans
       ce cran, une cellule Pseudo passerait AU-DESSUS de l'en-tete collant au scroll vertical.
       Meme hierarchie que ChampionnatDetail (th 3 / td sticky 2 / coin th 4). */
    z-index: 3;
    /* legerement plus sombre que .pal-qualifies-card (surface-card), cf. ClassementGeneral.razor.css */
    background-color: color-mix(in srgb, var(--surface-card) 92%, var(--text) 8%);
    color: var(--text);
    border-color: var(--surface-border);
    padding-top: .85rem;
    padding-bottom: .85rem;
    font-size: 1.15rem;
    font-weight: 800;
}

[b-zfrkseq8oh] .pal-qualifies-grid th button {
    color: var(--text);
}

/* cf. ClassementGeneral.razor.css pour le detail : --pal-icon-invert-filter (app.css) pilote
   par theme la recoloration de l'icone de tri QuickGrid (image de fond, pas du texte). */
[b-zfrkseq8oh] .pal-qualifies-grid th .sort-indicator {
    filter: var(--pal-icon-invert-filter);
}

[b-zfrkseq8oh] .pal-qualifies-grid > tbody > tr {
    border-bottom: 1px solid var(--surface-border);
}

/* cf. ClassementGeneral.razor.css : tint distinct du fond de carte plutot que le meme surface-card */
[b-zfrkseq8oh] .pal-qualifies-grid tbody tr:nth-of-type(odd) {
    background-color: color-mix(in srgb, var(--text) 4%, transparent);
}

[b-zfrkseq8oh] .pal-qualifies-grid td {
    color: var(--text);
    vertical-align: middle;
}

[b-zfrkseq8oh] .pal-qualifies-grid td.pal-point {
    color: var(--pal-red);
    font-weight: 900;
    font-size: 1.05rem;
}

/* Mobile (<600px, cf. decisions.md --bp-tablet) : les 4 colonnes de stats (en-tetes a 1.15rem)
   debordent largement d'un viewport telephone. On fige la colonne Pseudo a gauche pour garder
   l'identite de la ligne visible pendant qu'on fait defiler les stats (demande utilisateur).
   Meme mecanique que ChampionnatDetail, en plus simple : Pseudo est deja la 1re colonne (left:0),
   pas de colonne Place a decaler. */
@media (max-width: 599px) {
    [b-zfrkseq8oh] .pal-qualifies-grid th.pal-qualifies-pseudo,
    [b-zfrkseq8oh] .pal-qualifies-grid td.pal-qualifies-pseudo {
        position: sticky;
        left: 0;
        /* Largeur figee : un pseudo long doit etre tronque (ellipsis ci-dessous) plutot que
           d'elargir la colonne collante et manger tout l'espace de defilement. */
        width: 9.5rem;
        min-width: 9.5rem;
        box-shadow: var(--pal-sticky-shadow);
    }

    [b-zfrkseq8oh] .pal-qualifies-grid td.pal-qualifies-pseudo {
        z-index: 2;
        background-color: var(--surface-card);
    }

    /* Fond opaque equivalent au zebrage transparent des lignes impaires (sinon le contenu qui
       defile se voit par transparence sous la cellule collante). */
    [b-zfrkseq8oh] .pal-qualifies-grid tbody tr:nth-of-type(odd) td.pal-qualifies-pseudo {
        background-color: color-mix(in srgb, var(--surface-card) 96%, var(--text) 4%);
    }

    /* Coin haut-gauche (Pseudo sticky top ET left) : au-dessus de tout. */
    [b-zfrkseq8oh] .pal-qualifies-grid th.pal-qualifies-pseudo {
        z-index: 4;
    }

    .pal-player-name[b-zfrkseq8oh] {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        min-width: 0;
    }
}

/* /Components/Pages/SearchView.razor.rz.scp.css */
.pal-search[b-zt8ci20x5g] {
    padding: 1.5rem 1rem 3rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.pal-search-bar[b-zt8ci20x5g] {
    max-width: 640px;
}

    /* etait en Bootstrap brut — harmonisation boutons, decisions.md [[boutons-forme-role]]. */
    .pal-search-bar .btn[b-zt8ci20x5g] {
        border-radius: var(--pal-btn-radius);
    }

    /* Bootstrap .form-control/.input-group-text pointent sur des variables globales
       (--bs-body-bg/--bs-body-color/--bs-border-color/--bs-tertiary-bg) jamais theme-aware
       (fixees par Bootstrap, independantes de notre [data-theme]) : on les redefinit ici,
       scope a ce conteneur uniquement — une custom property ne fuite pas hors de son
       sous-arbre DOM, donc le reste du site (autres pages utilisant .form-control) n'est pas
       affecte. */
    .pal-search-bar .input-group[b-zt8ci20x5g] {
        --bs-body-bg: var(--surface-card);
        --bs-body-color: var(--text);
        --bs-border-color: var(--surface-border);
        --bs-tertiary-bg: var(--surface-bg);
    }

    .pal-search-bar .input-group-text[b-zt8ci20x5g] {
        font-weight: 600;
    }

/* Meme logique que .pal-search-bar : --bs-accordion-* pointent par defaut sur --bs-body-bg/-color
   (jamais theme-aware), redefinis localement. L'etat deplie (.accordion-button:not(.collapsed))
   reste gere globalement (app.css, toujours rouge plein quel que soit le theme) et n'est pas
   touche ici. */
.pal-search-advanced[b-zt8ci20x5g] {
    --bs-accordion-bg: var(--surface-card);
    --bs-accordion-color: var(--text);
    --bs-accordion-btn-color: var(--text);
    --bs-accordion-border-color: var(--surface-border);
}

/* Chevron de l'accordeon replie : image de fond a couleur sombre fixe (#212529 cote Bootstrap),
   invisible sur notre entete devenu sombre en theme sombre. Cible explicitement .collapsed (pas
   juste .accordion-button) pour ne jamais entrer en conflit avec la regle globale de l'etat
   deplie (app.css, filtre fixe toujours blanc sur fond rouge plein, volontairement non theme). */
.pal-search-advanced .accordion-button.collapsed[b-zt8ci20x5g]::after {
    filter: var(--pal-icon-invert-filter);
}

.pal-search-options[b-zt8ci20x5g] {
    display: flex;
    gap: .5rem 1.25rem;
    flex-wrap: wrap;
}

.pal-search-option[b-zt8ci20x5g] {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    color: var(--text);
    cursor: pointer;
}

    .pal-search-option input[b-zt8ci20x5g] {
        accent-color: var(--pal-red);
    }

.pal-search-summary[b-zt8ci20x5g] {
    color: var(--text-muted);
    font-weight: 400;
}

.pal-search-empty[b-zt8ci20x5g] {
    color: var(--text-muted);
    padding: 2rem 0;
}

.pal-search-news-grid[b-zt8ci20x5g] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
}

/* seuil: --bp-tablet */
@media (min-width: 600px) {
    .pal-search-news-grid[b-zt8ci20x5g] {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-search-news-grid[b-zt8ci20x5g] {
        grid-template-columns: repeat(3, 1fr);
    }
}
/* /Components/Pages/TournoiDetail.razor.rz.scp.css */
/* Maquette A "Fiche stats" (approuvée 2026-08-05, implémentée le 2026-08-06) : carte unique
   contenu + encart adhésion/inscription séparé (colonne à droite dès --bp-desktop-sm, empilé en
   dessous). Périmètre volontairement limité au bloc d'infos tournoi (heure de début + TournoiVignette
   + CTA d'inscription) — le ck-content (description), les inscriptions et le classement plus bas
   dans la page ne sont pas concernés par cette refonte. */

/* Agenda/Partenaires : même traitement que /news (NewsList.razor.css) — Agenda en colonne sticky
   dès --bp-desktop-sm (PalStickySidebar, générique), Partenaires sorti en bandeau pleine largeur
   avant le footer (WidgetPartenaire Strip="true", hors de ce layout en colonnes) plutôt qu'empilé
   dans une sidebar étroite avec l'Agenda. */
.pal-tournoi-layout[b-2gmhe6zl4p] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2.25rem;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-tournoi-layout[b-2gmhe6zl4p] {
        grid-template-columns: minmax(0, 1fr) 300px;
    }
}

.pal-tournoi-card[b-2gmhe6zl4p] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1.6rem 1.7rem;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-tournoi-card[b-2gmhe6zl4p] {
        flex-direction: row;
        align-items: flex-start;
    }
}

.pal-tournoi-card-main[b-2gmhe6zl4p] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1.3rem;
}

.pal-tournoi-start[b-2gmhe6zl4p] {
    display: flex;
    align-items: center;
    gap: .85rem;
}

.pal-tournoi-start-icon[b-2gmhe6zl4p] {
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--pal-red);
    color: var(--pal-on-accent);
    font-size: 1.3rem;
    flex: none;
}

.pal-tournoi-start-label[b-2gmhe6zl4p] {
    display: block;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted);
    font-weight: 700;
}

.pal-tournoi-start-time[b-2gmhe6zl4p] {
    display: block;
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--text);
    line-height: 1.2;
}

.pal-tournoi-card-side[b-2gmhe6zl4p] {
    flex: none;
    display: flex;
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-tournoi-card-side[b-2gmhe6zl4p] {
        width: 18rem;
        border-left: 1px solid var(--surface-border);
        padding-left: 1.7rem;
    }
}

.pal-tournoi-side-box[b-2gmhe6zl4p] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .6rem;
    padding: 1rem 1.1rem;
    border-radius: 12px;
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    width: 100%;
}

.pal-tournoi-side-box.is-success[b-2gmhe6zl4p] {
    background: var(--pal-success-bg);
    border-color: transparent;
    color: var(--pal-success);
}

.pal-tournoi-side-box.is-warning[b-2gmhe6zl4p] {
    background: var(--pal-warning-bg);
    border-color: transparent;
    color: var(--pal-warning);
}

.pal-tournoi-side-box p[b-2gmhe6zl4p] {
    margin: 0;
    color: inherit;
    font-size: .88rem;
    line-height: 1.5;
}

.pal-tournoi-side-box strong[b-2gmhe6zl4p] {
    color: inherit;
}

.pal-tournoi-cta-btn[b-2gmhe6zl4p] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    gap: .5rem;
    padding: .65rem 1.2rem;
    border-radius: 8px;
    font-weight: 700;
    font-size: .88rem;
    text-decoration: none;
    border: none;
    cursor: pointer;
}

.pal-tournoi-cta-btn.is-primary[b-2gmhe6zl4p] {
    background: var(--pal-red);
    color: var(--pal-on-accent);
}

.pal-tournoi-cta-btn.is-primary:hover[b-2gmhe6zl4p] {
    background: var(--pal-red-mid);
}

.pal-tournoi-cta-btn.is-warning[b-2gmhe6zl4p] {
    background: var(--pal-warning);
    color: var(--pal-on-accent);
}

.pal-tournoi-cta-btn.is-warning:hover[b-2gmhe6zl4p] {
    background: color-mix(in srgb, var(--pal-warning) 82%, black 18%);
}

.pal-tournoi-cta-link[b-2gmhe6zl4p] {
    color: var(--pal-red-mid);
    font-weight: 700;
}

.pal-tournoi-cta-link:hover[b-2gmhe6zl4p] {
    color: var(--pal-red);
}
/* /Components/Pages/TransactionPaiement.razor.rz.scp.css */
/* Page « Régler mon don » : 3 moyens de paiement (virement, PayPal, sur place).
   Maquette validée le 2026-09-28 (canvas « Dons — virement, rappels, suppression »). */

.pal-regler[b-ol0tg1b8u4] {
    padding: 1.75rem 1rem 3rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

/* --- Don déjà réglé --- */
.pal-regler-ok[b-ol0tg1b8u4] {
    display: flex;
    gap: .9rem;
    align-items: flex-start;
    padding: 1.1rem 1.25rem;
    border-radius: var(--pal-card-radius);
    background: var(--pal-success-bg);
    border: 1px solid color-mix(in srgb, var(--pal-success) 30%, var(--surface-border));
    color: var(--text);
}

.pal-regler-ok > i[b-ol0tg1b8u4] {
    color: var(--pal-success);
    font-size: 1.4rem;
    line-height: 1;
}

.pal-regler-ok div[b-ol0tg1b8u4] {
    display: flex;
    flex-direction: column;
    gap: .4rem;
}

/* --- Résumé de la promesse --- */
.pal-regler-resume[b-ol0tg1b8u4] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1.25rem 1.5rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem 1.5rem;
}

.pal-regler-resume-txt[b-ol0tg1b8u4] {
    display: flex;
    flex-direction: column;
    gap: .25rem;
}

.pal-regler-eyebrow[b-ol0tg1b8u4] {
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--pal-red);
}

.pal-regler-montant[b-ol0tg1b8u4] {
    font-size: 2.25rem;
    font-weight: 800;
    line-height: 1.1;
    color: var(--text);
}

.pal-regler-contexte[b-ol0tg1b8u4] {
    font-size: .88rem;
    color: var(--text-muted);
}

.pal-regler-pill[b-ol0tg1b8u4] {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .35rem .9rem;
    border-radius: 999px;
    background: var(--pal-warning-bg);
    color: var(--pal-warning);
    font-weight: 700;
    font-size: .82rem;
}

.pal-regler-titre[b-ol0tg1b8u4] {
    margin: .25rem 0 0;
    font-size: 1.25rem;
    color: var(--text);
}

/* --- Cartes des moyens de paiement --- */
.pal-regler-grid[b-ol0tg1b8u4] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
}

.pal-regler-side[b-ol0tg1b8u4] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.pal-regler-card[b-ol0tg1b8u4] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1.35rem 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

.pal-regler-card-head[b-ol0tg1b8u4] {
    display: flex;
    align-items: center;
    gap: .75rem;
}

.pal-regler-card-head h3[b-ol0tg1b8u4] {
    margin: 0;
    font-size: 1.12rem;
    color: var(--text);
}

.pal-regler-card-head p[b-ol0tg1b8u4] {
    margin: 0;
    font-size: .88rem;
    color: var(--text-muted);
}

.pal-regler-ico[b-ol0tg1b8u4] {
    flex: none;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 10px;
    display: grid;
    place-items: center;
    font-size: 1.2rem;
    background: var(--pal-red-bg);
    color: var(--pal-red);
}

.pal-regler-ico.is-info[b-ol0tg1b8u4] {
    background: var(--pal-info-bg);
    color: var(--pal-info);
}

.pal-regler-ico.is-success[b-ol0tg1b8u4] {
    background: var(--pal-success-bg);
    color: var(--pal-success);
}

.pal-regler-txt[b-ol0tg1b8u4] {
    margin: 0;
    font-size: .95rem;
    line-height: 1.5;
    color: var(--text);
}

/* --- Virement : RIB --- */
.pal-regler-virement[b-ol0tg1b8u4] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.pal-regler-rib[b-ol0tg1b8u4] {
    flex-grow: 1;
    min-width: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    border-radius: 10px;
}

.pal-regler-rib-row[b-ol0tg1b8u4] {
    display: flex;
    align-items: center;
    gap: .75rem;
    min-height: 2.75rem;
    padding: .3rem .4rem .3rem 1rem;
    border-bottom: 1px solid var(--surface-border);
}

.pal-regler-rib-row:last-child[b-ol0tg1b8u4] {
    border-bottom: none;
}

.pal-regler-rib dt[b-ol0tg1b8u4] {
    flex: none;
    width: 5.5rem;
    font-size: .75rem;
    font-weight: 400;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--text-muted);
}

.pal-regler-rib dd[b-ol0tg1b8u4] {
    flex-grow: 1;
    min-width: 0;
    margin: 0;
    font-family: var(--pal-mono-font);
    font-size: .92rem;
    color: var(--text);
    overflow-wrap: anywhere;
}

.pal-regler-copy[b-ol0tg1b8u4] {
    flex: none;
    width: 2.5rem;
    height: 2.5rem;
    border: none;
    border-radius: var(--pal-btn-radius);
    background: transparent;
    color: var(--text-muted);
    display: grid;
    place-items: center;
}

.pal-regler-copy:hover[b-ol0tg1b8u4] {
    background: color-mix(in srgb, var(--text-muted) 14%, transparent);
    color: var(--text);
}

/* --- Référence du virement --- */
.pal-regler-ref[b-ol0tg1b8u4] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem 1rem;
    padding: .9rem 1rem;
    border-radius: 10px;
    background: color-mix(in srgb, var(--pal-red) 7%, var(--surface-card));
    border: 1px solid color-mix(in srgb, var(--pal-red) 30%, var(--surface-border));
}

.pal-regler-ref > div[b-ol0tg1b8u4] {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    min-width: 0;
}

.pal-regler-ref-label[b-ol0tg1b8u4] {
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--pal-red);
}

.pal-regler-ref-val[b-ol0tg1b8u4] {
    font-family: var(--pal-mono-font);
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text);
    overflow-wrap: anywhere;
}

.pal-regler-ref-copy[b-ol0tg1b8u4] {
    flex: none;
    min-height: 2.5rem;
    padding: 0 .9rem;
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-btn-radius);
    background: var(--surface-card);
    color: var(--text);
    font-weight: 700;
    font-size: .88rem;
    display: inline-flex;
    align-items: center;
    gap: .5rem;
}

.pal-regler-ref-copy:hover[b-ol0tg1b8u4] {
    border-color: var(--text-muted);
}

.pal-regler-note[b-ol0tg1b8u4] {
    margin: 0;
    font-size: .88rem;
    line-height: 1.45;
    color: var(--text-muted);
}

/* --- « J'ai fait le virement » --- */
.pal-regler-declarer[b-ol0tg1b8u4] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .75rem 1rem;
    padding-top: .25rem;
}

.pal-regler-declarer-btn[b-ol0tg1b8u4] {
    flex: none;
    min-height: 2.9rem;
    padding: 0 1.4rem;
    border: none;
    border-radius: var(--pal-btn-radius);
    background: var(--pal-red);
    color: var(--pal-on-accent);
    font-weight: 700;
    font-size: 1rem;
    display: inline-flex;
    align-items: center;
    gap: .5rem;
}

.pal-regler-declarer-btn:hover[b-ol0tg1b8u4] {
    background: var(--pal-red-mid);
}

.pal-regler-declarer .pal-regler-note[b-ol0tg1b8u4] {
    flex: 1 1 14rem;
}

/* --- Virement déclaré --- */
.pal-regler-pill.is-virement[b-ol0tg1b8u4] {
    background: var(--pal-info-bg);
    color: var(--pal-info);
}

.pal-regler-ok span[b-ol0tg1b8u4] {
    font-size: .95rem;
    line-height: 1.5;
    color: var(--text);
}

.pal-regler-memo-titre[b-ol0tg1b8u4] {
    margin: 0;
    font-size: 1rem;
    color: var(--text);
}

.pal-regler-memo[b-ol0tg1b8u4] {
    margin: 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: .75rem;
}

.pal-regler-memo > div[b-ol0tg1b8u4] {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    border-radius: 10px;
    padding: .6rem .9rem;
    min-width: 0;
}

.pal-regler-memo dt[b-ol0tg1b8u4] {
    font-size: .75rem;
    font-weight: 400;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--text-muted);
}

.pal-regler-memo dd[b-ol0tg1b8u4] {
    margin: .15rem 0 0;
    font-family: var(--pal-mono-font);
    font-size: .92rem;
    color: var(--text);
    overflow-wrap: anywhere;
}

.pal-regler-erreur[b-ol0tg1b8u4] {
    margin: 0;
    font-size: .88rem;
    text-align: center;
    color: var(--text-muted);
}

/* --- PayPal --- */
.pal-regler-paypal[b-ol0tg1b8u4] {
    align-self: flex-start;
    min-height: 2.75rem;
    padding: 0 1.1rem;
    border: 1px solid var(--text);
    border-radius: var(--pal-btn-radius);
    background: var(--surface-card);
    color: var(--text);
    font-weight: 700;
    font-size: .95rem;
    display: inline-flex;
    align-items: center;
    gap: .5rem;
}

.pal-regler-paypal:hover[b-ol0tg1b8u4] {
    background: var(--text);
    color: var(--surface-card);
}

/* --- Pied --- */
.pal-regler-footer[b-ol0tg1b8u4] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: .5rem 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--surface-border);
}

.pal-regler-footer a[b-ol0tg1b8u4] {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    min-height: 2.75rem;
    font-size: .9rem;
    color: var(--text-muted);
}

.pal-regler-abandon[b-ol0tg1b8u4] {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    min-height: 2.75rem;
    padding: 0;
    border: none;
    background: none;
    font-family: inherit;
    font-size: .9rem;
    color: var(--text-muted);
    text-decoration: underline;
    cursor: pointer;
}

.pal-regler-abandon:hover[b-ol0tg1b8u4] {
    color: var(--pal-red);
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-regler[b-ol0tg1b8u4] {
        padding: 1.75rem 1.5rem 3rem;
    }

    .pal-regler-grid[b-ol0tg1b8u4] {
        grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
    }

    .pal-regler-memo[b-ol0tg1b8u4] {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}
/* /Components/Pages/TransactionRetour.razor.rz.scp.css */
/* etait en Bootstrap brut — harmonisation boutons, decisions.md [[boutons-forme-role]]. */
.btn[b-vwbs00887q] {
    border-radius: var(--pal-btn-radius);
}
/* /Components/Pages/Trombinoscope.razor.rz.scp.css */
/* Grille de cartes (table QuickGrid transformee visuellement, meme technique que .pal-news-grid
   dans app.css : la lib QuickGrid est hors scope CSS isolation Blazor, d'ou les ::deep). */
[b-rkvl3ia2oq] table.card-grid {
    display: block;
    width: 100%;
    box-sizing: border-box;
    margin-top: 1.25rem;
}

[b-rkvl3ia2oq] table.card-grid thead {
    display: none;
}

[b-rkvl3ia2oq] table.card-grid tbody {
    display: grid;
    grid-template-columns: 1fr;
    gap: .75rem;
    width: 100%;
}

[b-rkvl3ia2oq] table.card-grid tr {
    display: block;
    background-color: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    overflow: hidden;
}

[b-rkvl3ia2oq] table.card-grid td {
    display: block;
}

/* QuickGrid (rendu non-virtualise) garde un buffer de lignes DOM dimensionne sur ItemsPerPage :
   sur une page partielle, les emplacements inutilises restent des <tr><td></td></tr> vides
   (confirme via inspection du DOM reel, cf. decisions.md) - sans classe, sans aria-rowindex,
   jamais passes par RowClass. Seule signature fiable : leur <td> est litteralement vide. */
[b-rkvl3ia2oq] table.card-grid tr:has(> td:empty) {
    display: none;
}

[b-rkvl3ia2oq] .quickgrid[theme=default] > tbody > tr > td {
    padding: 0;
}

[b-rkvl3ia2oq] table.card-grid hr {
    margin: .35rem 0;
    border-color: var(--surface-border);
    opacity: 1;
}

/* seuil: --bp-tablet */
@media (min-width: 600px) {
    [b-rkvl3ia2oq] table.card-grid tbody {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    [b-rkvl3ia2oq] table.card-grid tbody {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* seuil: --bp-desktop-lg */
@media (min-width: 1440px) {
    [b-rkvl3ia2oq] table.card-grid tbody {
        grid-template-columns: repeat(4, 1fr);
    }
}

.pal-trombi-card[b-rkvl3ia2oq] {
    padding: .6rem .85rem;
}

/* Prenom / pseudo Winamax : icone + valeur, sans label */
.pal-trombi-info[b-rkvl3ia2oq] {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: .85rem;
    color: var(--text);
}

    .pal-trombi-info i[b-rkvl3ia2oq], .pal-trombi-info img[b-rkvl3ia2oq] {
        flex: none;
        width: 1em;
        text-align: center;
        color: var(--text-muted);
        font-size: .8rem;
    }

    .pal-trombi-info img[b-rkvl3ia2oq] {
        height: .8em;
        object-fit: contain;
    }

.pal-trombi-winamax-badge[b-rkvl3ia2oq] {
    display: inline-flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 1.1em;
    height: 1.1em;
    border-radius: 3px;
    background: var(--pal-red);
    color: var(--chrome-text);
    font-size: .68rem;
    font-weight: 800;
    line-height: 1;
}

/* Barre de recherche */
.pal-trombi-search[b-rkvl3ia2oq] {
    max-width: 32rem;
    margin-bottom: 1.5rem;
    margin-left: auto;
}

    .pal-trombi-search input.form-control[b-rkvl3ia2oq] {
        background-color: var(--surface-card);
        border-color: var(--surface-border);
        color: var(--text);
    }

        .pal-trombi-search input.form-control:focus[b-rkvl3ia2oq] {
            background-color: var(--surface-card);
            color: var(--text);
            border-color: var(--pal-red);
            box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--pal-red) 25%, transparent);
        }

.pal-trombi-search-submit[b-rkvl3ia2oq],
.pal-trombi-search-clear[b-rkvl3ia2oq] {
    /* etaient en Bootstrap brut — harmonisation boutons, decisions.md [[boutons-forme-role]]. */
    border-radius: var(--pal-btn-radius);
}

.pal-trombi-search-submit[b-rkvl3ia2oq] {
    background-color: var(--pal-red);
    border-color: var(--pal-red);
    color: var(--chrome-text);
}

    .pal-trombi-search-submit:hover[b-rkvl3ia2oq] {
        background-color: var(--pal-red-mid);
        border-color: var(--pal-red-mid);
        color: var(--chrome-text);
    }

.pal-trombi-search-clear[b-rkvl3ia2oq] {
    background-color: transparent;
    border-color: var(--surface-border);
    color: var(--text-muted);
}

    .pal-trombi-search-clear:hover[b-rkvl3ia2oq] {
        border-color: var(--pal-red);
        color: var(--pal-red);
    }

/* Actions de la carte : icones seules, cible tactile ronde */
.pal-trombi-action-btn[b-rkvl3ia2oq] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
    border: 1px solid var(--surface-border);
    border-radius: 50%;
    background: transparent;
    color: var(--text-muted);
    text-decoration: none;
    font-size: 1rem;
    line-height: 1;
    transition: color .15s ease, border-color .15s ease;
}

    .pal-trombi-action-btn:hover[b-rkvl3ia2oq] {
        color: var(--pal-red);
        border-color: var(--pal-red);
    }
/* /Components/Pages/TrombinoscopeDetail.razor.rz.scp.css */
.pal-tromb[b-hu8va4wq7v] {
    padding: 1.5rem 1rem 3rem;
}

.pal-tromb-private[b-hu8va4wq7v] {
    max-width: 34rem;
    margin: 0 auto;
    padding: 3.5rem 1rem 4rem;
    text-align: center;
}

.pal-tromb-private-icon[b-hu8va4wq7v] {
    width: 4rem;
    height: 4rem;
    margin: 0 auto 1.25rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background-color: color-mix(in srgb, var(--pal-red) 12%, transparent);
    color: var(--pal-red);
    font-size: 1.6rem;
}

.pal-tromb-private h1[b-hu8va4wq7v] {
    margin: 0 0 .5rem;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    color: var(--text);
}

.pal-tromb-private p[b-hu8va4wq7v] {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-muted);
}

.pal-tromb-profile[b-hu8va4wq7v] {
    background-color: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1.5rem 1.75rem;
    margin-bottom: 1.5rem;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.pal-tromb-profile .pal-img[b-hu8va4wq7v] {
    border: 3px solid var(--surface-bg);
    box-shadow: var(--pal-avatar-shadow);
}

.pal-tromb-profile-id[b-hu8va4wq7v] {
    flex: 1 1 12rem;
}

.pal-tromb-profile-id h1[b-hu8va4wq7v] {
    font-size: 1.35rem;
    color: var(--text);
    margin: 0;
}

.pal-tromb-profile-id .sub[b-hu8va4wq7v] {
    color: var(--text-muted);
    font-size: 0.88rem;
    margin-top: 0.2rem;
}

.pal-tromb-profile-meta[b-hu8va4wq7v] {
    display: flex;
    gap: 1.75rem;
    flex-wrap: wrap;
}

.pal-tromb-profile-meta .m[b-hu8va4wq7v] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.pal-tromb-profile-meta .m .lbl[b-hu8va4wq7v] {
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted);
}

.pal-tromb-profile-meta .m .val[b-hu8va4wq7v] {
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--text);
}

.pal-tromb-msg-btn[b-hu8va4wq7v] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    border: 1px solid color-mix(in srgb, var(--pal-red) 30%, var(--surface-border));
    background-color: color-mix(in srgb, var(--pal-red) 8%, transparent);
    color: var(--pal-red);
    font-weight: 700;
    font-size: 0.85rem;
    padding: 0.6rem 1.1rem;
    border-radius: var(--pal-btn-radius);
    cursor: pointer;
    flex: none;
    margin-left: auto;
}

.pal-tromb-msg-btn:hover[b-hu8va4wq7v] {
    background-color: color-mix(in srgb, var(--pal-red) 14%, transparent);
}

.pal-tromb-card[b-hu8va4wq7v] {
    background-color: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1.5rem;
    margin-bottom: 1.25rem;
}

.pal-tromb-card-title[b-hu8va4wq7v] {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted);
    font-weight: 800;
    margin-bottom: 1.1rem;
}

.pal-tromb-ranking-row[b-hu8va4wq7v] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.85rem;
}

.pal-tromb-ranking-chip[b-hu8va4wq7v] {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    background-color: var(--surface-bg);
    border: 1px solid var(--surface-border);
    border-radius: 12px;
    padding: 0.9rem 1.1rem;
    max-width: 22rem;
    position: relative;
}

.pal-tromb-ranking-chip .rank[b-hu8va4wq7v] {
    width: 2.6rem;
    height: 2.6rem;
    border-radius: 50%;
    background-color: color-mix(in srgb, var(--pal-red) 12%, transparent);
    color: var(--pal-red);
    font-weight: 900;
    font-size: 1.15rem;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
}

.pal-tromb-ranking-chip .name[b-hu8va4wq7v] {
    font-weight: 700;
    font-size: 0.92rem;
    color: var(--text);
}

.pal-tromb-ranking-chip .pts[b-hu8va4wq7v] {
    color: var(--text-muted);
    font-size: 0.82rem;
    margin-top: 0.1rem;
}

.pal-tromb-empty[b-hu8va4wq7v] {
    color: var(--text-muted);
    font-size: 0.88rem;
}

.pal-tromb-accordion-item[b-hu8va4wq7v] {
    border-top: 1px solid var(--surface-border);
}

.pal-tromb-accordion-item:first-child[b-hu8va4wq7v] {
    border-top: none;
}

.pal-tromb-accordion-btn[b-hu8va4wq7v] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    background-color: transparent;
    border: none;
    padding: 0.9rem 0.1rem;
    cursor: pointer;
    color: var(--text);
    font-weight: 700;
    font-size: 0.95rem;
}

.pal-tromb-accordion-btn .chev[b-hu8va4wq7v] {
    transition: transform 0.15s ease;
    color: var(--text-muted);
    flex: none;
}

.pal-tromb-accordion-btn[aria-expanded="true"] .chev[b-hu8va4wq7v] {
    transform: rotate(90deg);
}

.pal-tromb-accordion-body[b-hu8va4wq7v] {
    padding-bottom: 1rem;
}

/* Tableau des championnats (5 colonnes, sans le cadre borne de l'historique des tournois
   ci-dessous) : defile dans l'accordeon plutot que d'elargir la page sur mobile. */
.pal-tromb-scroll[b-hu8va4wq7v] {
    overflow-x: auto;
}

.pal-tromb-tournoi-wrap[b-hu8va4wq7v] {
    overflow: auto;
    max-height: 20rem;
    border: 1px solid var(--surface-border);
    border-radius: 10px;
}

[b-hu8va4wq7v] .pal-tromb-grid.quickgrid {
    width: 100%;
    font-variant-numeric: tabular-nums;
}

[b-hu8va4wq7v] .pal-tromb-grid th {
    background-color: var(--surface-bg);
    color: var(--text-muted);
    text-transform: var(--pal-th-text-transform);
    font-size: 0.68rem;
    letter-spacing: 0.04em;
    border-color: var(--surface-border);
}

.pal-tromb-tournoi-wrap[b-hu8va4wq7v]  .pal-tromb-grid th {
    position: sticky;
    top: 0;
    z-index: 1;
}

[b-hu8va4wq7v] .pal-tromb-grid th button {
    color: var(--text-muted);
    text-transform: inherit;
    letter-spacing: inherit;
}

[b-hu8va4wq7v] .pal-tromb-grid th .sort-indicator {
    filter: var(--pal-icon-invert-filter);
}

[b-hu8va4wq7v] .pal-tromb-grid > tbody > tr {
    border-bottom: 1px solid var(--surface-border);
}

[b-hu8va4wq7v] .pal-tromb-grid > tbody > tr:last-child {
    border-bottom: none;
}

[b-hu8va4wq7v] .pal-tromb-grid tbody tr:nth-of-type(odd) {
    background-color: color-mix(in srgb, var(--text) 3%, transparent);
}

[b-hu8va4wq7v] .pal-tromb-grid tbody tr:hover {
    background-color: color-mix(in srgb, var(--pal-red) 6%, transparent);
}

[b-hu8va4wq7v] .pal-tromb-grid td {
    color: var(--text);
    vertical-align: middle;
}

[b-hu8va4wq7v] .pal-tromb-grid td.pal-tromb-place {
    color: var(--pal-red);
    font-weight: 900;
}

[b-hu8va4wq7v] .pal-tromb-grid .pal-tromb-link-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    color: var(--text-muted);
    transition: background-color 0.15s ease, color 0.15s ease;
}

[b-hu8va4wq7v] .pal-tromb-grid tr:hover .pal-tromb-link-btn {
    background-color: color-mix(in srgb, var(--pal-red) 12%, transparent);
    color: var(--pal-red);
}

.pal-mode-chip[b-hu8va4wq7v] {
    display: inline-flex;
    align-items: center;
    padding: 0.15rem 0.6rem;
    border-radius: 999px;
    font-size: 0.74rem;
    font-weight: 700;
}

.pal-mode-chip.is-live[b-hu8va4wq7v] {
    background-color: color-mix(in srgb, var(--agenda-live) 14%, transparent);
    color: var(--agenda-live);
}

.pal-mode-chip.is-online[b-hu8va4wq7v] {
    background-color: color-mix(in srgb, var(--agenda-online) 16%, transparent);
    color: var(--agenda-online);
}
/* /Components/Shared/AdhesionActive.razor.rz.scp.css */
/* Composant partage avec AdhesionProcess.razor (parcours d'adhesion, pas encore retouche par la
   refonte) : le reskin ci-dessous ameliore aussi son rendu la-bas (meme structure/logique, page non
   encore dans la charte) — aucun changement de @code, uniquement markup/CSS. */

.pal-adhesion-card[b-3515muewmq] {
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1.25rem 1.4rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.pal-adhesion-status[b-3515muewmq] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.pal-adhesion-txt[b-3515muewmq] {
    text-align: center;
}

.pal-adhesion-txt strong[b-3515muewmq],
.pal-adhesion-pill[b-3515muewmq] {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .3rem .75rem;
    border-radius: 999px;
    font-weight: 700;
    font-size: .78rem;
}

.pal-adhesion-pill.is-active[b-3515muewmq] {
    background: var(--pal-success-bg);
    color: var(--pal-success);
}

.pal-adhesion-pill.is-pending[b-3515muewmq] {
    background: var(--pal-warning-bg);
    color: var(--pal-warning);
}

.pal-adhesion-pill.is-expired[b-3515muewmq] {
    background: var(--pal-red-bg);
    color: var(--pal-red);
}

.pal-adhesion-pill.is-new[b-3515muewmq] {
    background: color-mix(in srgb, var(--text-muted) 16%, transparent);
    color: var(--text-muted);
}

.pal-adhesion-txt p[b-3515muewmq] {
    margin: .4rem 0 0;
    color: var(--text-muted);
    font-size: .88rem;
}

.pal-adhesion-renew[b-3515muewmq] {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: .75rem;
    padding: .7rem 1.1rem;
    border-radius: 10px;
    background: var(--pal-warning-bg);
    color: var(--pal-warning);
    font-size: .85rem;
    font-weight: 600;
}

.pal-adhesion-renew-txt[b-3515muewmq] {
    display: flex;
    align-items: center;
    gap: .6rem;
}

.pal-adhesion-renew-btn[b-3515muewmq] {
    flex: none;
    display: inline-flex;
    align-items: center;
    background: var(--pal-warning);
    color: var(--pal-on-accent);
    border: none;
    padding: .5rem 1.1rem;
    border-radius: 8px;
    font-weight: 700;
    font-size: .82rem;
    white-space: nowrap;
    text-decoration: none;
}

.pal-adhesion-renew-btn:hover[b-3515muewmq] {
    background: color-mix(in srgb, var(--pal-warning) 78%, black 22%);
    color: var(--pal-on-accent);
}

.pal-adhesion-renew.is-expired[b-3515muewmq] {
    background: var(--pal-red-bg);
    color: var(--pal-red);
}

.pal-adhesion-renew.is-new[b-3515muewmq] {
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
}

.pal-adhesion-renew-btn.is-expired[b-3515muewmq],
.pal-adhesion-renew-btn.is-new[b-3515muewmq] {
    background: var(--pal-red);
}

.pal-adhesion-renew-btn.is-expired:hover[b-3515muewmq],
.pal-adhesion-renew-btn.is-new:hover[b-3515muewmq] {
    background: var(--pal-red-mid);
    color: var(--pal-on-accent);
}

.pal-adhesion-gauge[b-3515muewmq] {
    display: flex;
    flex-direction: column;
    gap: .7rem;
}

.pal-adhesion-gauge-label[b-3515muewmq] {
    font-size: .82rem;
    color: var(--text-muted);
    text-align: center;
}

.pal-adhesion-gauge-label strong[b-3515muewmq] {
    color: var(--text);
}

.pal-adhesion-pending[b-3515muewmq] {
    display: flex;
    flex-direction: column;
    gap: .5rem;
    /* le gap uniforme de .pal-adhesion-card (1rem, partage par tous les blocs de la carte) ne
       suffisait pas a distinguer ce bloc "paiement en attente" des paliers juste au-dessus. */
    padding-top: 1rem;
    border-top: 1px solid var(--surface-border);
}

.pal-adhesion-pending label[b-3515muewmq] {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-weight: 800;
    font-size: .88rem;
    /* etait --text-muted (se fondait avec le texte environnant) — couleur "en attente" deja
       utilisee ailleurs sur le site pour ce meme statut, cf. .pal-status-chip.is-attente */
    color: var(--pal-warning);
}

.pal-adhesion-pending-row[b-3515muewmq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .6rem .85rem;
    border: 1px solid var(--surface-border);
    border-radius: 10px;
    background: var(--surface-bg);
    font-size: .85rem;
}

.pal-adhesion-pending-txt[b-3515muewmq] {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    min-width: 0;
}

.pal-adhesion-virement[b-3515muewmq] {
    display: inline-flex;
    align-items: baseline;
    gap: .4rem;
    font-size: .8rem;
    font-weight: 700;
    color: var(--pal-info);
}

.pal-adhesion-pending-actions[b-3515muewmq] {
    flex: none;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: .5rem;
}

.pal-adhesion-details[b-3515muewmq] {
    flex: none;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-family: inherit;
    cursor: pointer;
    min-height: 2.25rem;
    padding: 0 .85rem;
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-btn-radius);
    background: var(--surface-card);
    color: var(--text);
    font-weight: 700;
    font-size: .82rem;
    text-decoration: none;
}

.pal-adhesion-details:hover[b-3515muewmq] {
    border-color: var(--text-muted);
    color: var(--text);
}

/* « Régler » : même forme que « Supprimer » / « Détails », en rouge d'action. */
.pal-adhesion-details.is-primary[b-3515muewmq] {
    background: var(--pal-red);
    border-color: var(--pal-red);
    color: var(--pal-on-accent);
}

.pal-adhesion-details.is-primary:hover[b-3515muewmq] {
    background: var(--pal-red-mid);
    border-color: var(--pal-red-mid);
    color: var(--pal-on-accent);
}

.pal-adhesion-cta[b-3515muewmq] {
    display: flex;
    justify-content: center;
}

.pal-adhesion-form[b-3515muewmq] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: .75rem;
    padding-top: .25rem;
}

.pal-adhesion-form label[b-3515muewmq] {
    color: var(--text-muted);
    font-size: .88rem;
}

.pal-adhesion-input[b-3515muewmq] {
    max-width: 9rem;
}
/* /Components/Shared/AgendaComponent.razor.rz.scp.css */
/* ---- barre mois / navigation / actions ---- */
.pal-agenda-toolbar[b-uq77qhobto] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1.75rem; /* separe du bandeau JumboTop pleine largeur au-dessus (meme valeur que .pal-news-layout sur /news) */
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: var(--pal-card-radius);
    padding: 1rem 1.375rem;
}

@media (max-height: 800px) {
    .pal-agenda-toolbar[b-uq77qhobto] {
        position: -webkit-sticky;
        position: sticky;
        top: 0;
        /* juste au-dessus du contenu de la page (grille du calendrier) qui defile dessous ;
           reste sous les dropdowns/menus globaux du header (Bootstrap reserve 1000+). */
        z-index: 2;
    }
}

.pal-agenda-month-nav[b-uq77qhobto] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
}

.pal-agenda-nav-btn[b-uq77qhobto] {
    width: 2.3rem;
    height: 2.3rem;
    flex: 0 0 auto;
    border-radius: 50%;
    border: 1px solid var(--surface-border);
    background: var(--surface-bg);
    color: var(--text);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: border-color .15s ease;
}

    .pal-agenda-nav-btn:hover[b-uq77qhobto] {
        border-color: var(--pal-red);
    }

.pal-agenda-title[b-uq77qhobto] {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 700;
}

.pal-agenda-month[b-uq77qhobto] {
    text-transform: capitalize;
    /* Largeur fixe (au plus long nom de mois francais, "Septembre") pour que les fleches
       precedent/suivant ne se deplacent plus selon le mois affiche (retour utilisateur). */
    display: inline-block;
    min-width: 9ch;
    text-align: center;
}

.pal-agenda-year[b-uq77qhobto] {
    color: var(--text-muted);
    font-weight: 400;
}

.pal-agenda-toolbar-actions[b-uq77qhobto] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem;
}

.pal-agenda-btn-pill[b-uq77qhobto] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    font-weight: 700;
    padding: 0.5em 1.1em;
    border-radius: 999px;
    text-decoration: none;
}

.pal-agenda-btn-today[b-uq77qhobto] {
    background: var(--pal-red);
    color: var(--chrome-text);
}

.pal-agenda-btn-outline[b-uq77qhobto] {
    background: transparent;
    border: 1px solid var(--surface-border);
    color: var(--text);
}

    .pal-agenda-btn-outline:hover[b-uq77qhobto] {
        border-color: var(--pal-red);
    }

/* seuil: --bp-tablet — en dessous, le toolbar (nav mois + actions) et la legende passent
   chacun sur 2 lignes (flex-wrap) ; .pal-agenda-toolbar est en justify-content:space-between
   pour le desktop (nav a gauche, actions a droite sur 1 ligne), ce qui laisse chaque ligne
   empilee collee a gauche une fois wrappee — centre au lieu, sur mobile uniquement. */
@media (max-width: 599px) {
    .pal-agenda-toolbar[b-uq77qhobto],
    .pal-agenda-legend[b-uq77qhobto] {
        justify-content: center;
    }
}

/* ---- legende ---- */
.pal-agenda-legend[b-uq77qhobto] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem 1.35rem;
    margin-top: 1rem;
    padding: 0 0.25rem;
}

.pal-agenda-legend-item[b-uq77qhobto] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.8rem;
    color: var(--text-muted);
}

    .pal-agenda-legend-item .pal-agenda-dot[b-uq77qhobto] {
        width: 9px;
        height: 9px;
    }

/* ---- pastille de couleur par type d'evenement (live/online/club/external/other_tournament/other
   posent chacune --agenda-link-color, cf. app.css) ---- */
.pal-agenda-dot[b-uq77qhobto] {
    display: inline-block;
    flex: 0 0 auto;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background-color: var(--agenda-link-color);
}

/* ---- calendrier ---- */
.pal-agenda-calendar[b-uq77qhobto] {
    margin-top: 1.25rem;
    border: 1px solid var(--surface-border);
    border-radius: 16px;
    overflow: hidden;
}

.pal-agenda-head[b-uq77qhobto] {
    display: none;
    background: var(--chrome-bg);
}

    .pal-agenda-head > div[b-uq77qhobto] {
        padding: 0.7rem 0;
        text-align: center;
        font-size: 0.72rem;
        font-weight: 700;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        color: var(--chrome-text-muted);
    }

.pal-agenda-main[b-uq77qhobto] {
    display: flex;
    flex-direction: column;
}

.pal-agenda-cell[b-uq77qhobto] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.6rem 0.85rem;
    border-bottom: 1px solid var(--surface-border);
}

    .pal-agenda-cell:last-child[b-uq77qhobto] {
        border-bottom: none;
    }

.pal-agenda-other-month[b-uq77qhobto] {
    background: var(--surface-card);
    opacity: 0.55;
}

.pal-agenda-day[b-uq77qhobto] {
    flex: 0 0 auto;
    width: 1.9rem;
    height: 1.9rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--text);
    border-radius: 50%;
}

.pal-agenda-today .pal-agenda-day[b-uq77qhobto] {
    background-color: var(--pal-red);
    color: var(--chrome-text);
}

.pal-agenda-weekday[b-uq77qhobto] {
    flex: 0 0 auto;
    width: 2.4rem;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--text-muted);
}

.pal-agenda-events[b-uq77qhobto] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.pal-agenda-event[b-uq77qhobto] {
    display: flex;
    /* etait align-items:center — un titre sur plusieurs lignes centrait le point sur tout le
       bloc de texte au lieu de sa 1ere ligne (voir .pal-agenda-dot ci-dessous). */
    align-items: flex-start;
    gap: 0.4rem;
    min-width: 0;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text);
    text-decoration: none;
}

    .pal-agenda-event:hover .pal-agenda-event-title[b-uq77qhobto] {
        text-decoration: underline;
    }

    .pal-agenda-event .pal-agenda-dot[b-uq77qhobto] {
        /* aligne le point sur la 1ere ligne du titre plutot que sur la hauteur totale du bloc */
        margin-top: 0.4em;
    }

/* Repere "tu es inscrit" (ShowMesInscriptions) : meme logique d'alignement que .pal-agenda-dot
   ci-dessus, sur la 1ere ligne du titre plutot que la hauteur totale du bloc. */
.pal-agenda-inscrit-icon[b-uq77qhobto] {
    flex: 0 0 auto;
    margin-top: 0.15em;
    font-size: 0.85em;
    color: var(--pal-success);
}

.pal-agenda-event-title[b-uq77qhobto] {
    /* etait en nowrap+ellipsis : sur des titres reels plus longs que les donnees de test
       (ex. "Finale Annuelle 2025-2026 - Day 1 ?"), le texte debordait au lieu de se tronquer,
       et les cases d'une meme ligne de calendrier n'avaient plus la meme hauteur. Passe en
       retour a la ligne : la case grandit proprement et reste alignee avec ses voisines
       (une ligne de grille CSS prend deja la hauteur de son contenu le plus haut). */
    overflow-wrap: break-word;
}

/* seuil: --bp-tablet — a partir de la tablette, grille classique 7 colonnes avec en-tete des jours */
@media (min-width: 600px) {
    .pal-agenda-head[b-uq77qhobto] {
        display: grid;
        grid-template-columns: repeat(7, 1fr);
    }

    .pal-agenda-main[b-uq77qhobto] {
        display: grid;
        grid-template-columns: repeat(7, 1fr);
        background: var(--surface-border);
        gap: 1px;
    }

    .pal-agenda-cell[b-uq77qhobto] {
        flex-direction: column;
        align-items: stretch;
        gap: 0.4rem;
        min-height: 7rem;
        padding: 0.6rem;
        background: var(--surface-bg);
        border-bottom: none;
    }

    .pal-agenda-other-month[b-uq77qhobto] {
        background: var(--surface-card);
    }

    .pal-agenda-weekday[b-uq77qhobto] {
        display: none;
    }
}

/* seuil: --bp-desktop-lg */
@media (min-width: 1440px) {
    .pal-agenda-cell[b-uq77qhobto] {
        padding: 0.85rem;
    }
}
/* /Components/Shared/DoublonBanner.razor.rz.scp.css */
/* Bandeau front-office « compte doublon » — pleine largeur sous le header, contenu aligné
   sur la largeur de .pal-content. */
.pal-doublon-fo-bandeau[b-jwh8gtnqty] {
    background: var(--pal-doublon);
    color: #fff;
    border-bottom: 1px solid #000;
}

.pal-doublon-fo-inner[b-jwh8gtnqty] {
    width: 100%;
    margin: 0 auto;
    padding: .7rem 1rem;
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    font-size: .85rem;
    line-height: 1.5;
}

@media (min-width: 1024px) {
    .pal-doublon-fo-inner[b-jwh8gtnqty] {
        max-width: 1180px;
    }
}

@media (min-width: 1440px) {
    .pal-doublon-fo-inner[b-jwh8gtnqty] {
        max-width: 1320px;
    }
}

.pal-doublon-fo-inner > i[b-jwh8gtnqty] {
    font-size: 1rem;
    margin-top: .1rem;
    flex: none;
}

.pal-doublon-fo-inner p[b-jwh8gtnqty] {
    margin: 0;
}

.pal-doublon-fo-inner a[b-jwh8gtnqty] {
    color: #fff;
    text-decoration: underline;
    font-weight: 700;
}
/* /Components/Shared/FRPaginator.razor.rz.scp.css */
.paginator[b-lu8dcosb63] {
    display: flex;
    align-items: center;
    border-top: 1px solid var(--surface-border);
    margin-top: 2rem;
    padding-top: 1.25rem;
}

.summary[b-lu8dcosb63] {
    color: var(--text-muted);
    font-size: .85rem;
}

.pagination-text[b-lu8dcosb63] {
    margin: 0 0.5rem;
    color: var(--text-muted);
    font-size: .85rem;
}

nav[b-lu8dcosb63] {
    display: flex;
    margin-left: auto;
    gap: 0.5rem;
    align-items: center;
}

    nav button[b-lu8dcosb63], nav a[b-lu8dcosb63], nav span[b-lu8dcosb63] {
        position: relative;
        display: inline-flex;
        border: 1px solid var(--surface-border);
        border-radius: 50%;
        background-color: var(--surface-bg);
        width: 2.2rem;
        height: 2.2rem;
        transition: border-color .15s ease, background-color .15s ease;
    }

        nav button[disabled][b-lu8dcosb63], nav a[disabled][b-lu8dcosb63], nav span[b-lu8dcosb63] {
            opacity: 0.4;
        }

        nav button:not([disabled]):hover[b-lu8dcosb63], nav a:not([disabled]):hover[b-lu8dcosb63] {
            border-color: var(--pal-red);
        }

        nav button:not([disabled]):active[b-lu8dcosb63], nav a:not([disabled]):active[b-lu8dcosb63] {
            background-color: var(--surface-card);
        }

        /* L'icone est une pastille masquee par le SVG (au lieu d'un fond d'image fixe) :
           sa couleur suit ainsi le theme via background-color, comme tout le reste du site. */
        nav button[b-lu8dcosb63]::before, nav a[b-lu8dcosb63]::before, nav span[b-lu8dcosb63]::before {
            content: "";
            position: absolute;
            inset: 0;
            margin: auto;
            width: 1rem;
            height: 1rem;
            background-color: var(--text-muted);
            -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
            -webkit-mask-position: center;
            mask-position: center;
            -webkit-mask-size: contain;
            mask-size: contain;
        }

        nav button:not([disabled]):hover[b-lu8dcosb63]::before, nav a:not([disabled]):hover[b-lu8dcosb63]::before {
            background-color: var(--pal-red);
        }

.go-first[b-lu8dcosb63]::before, .go-last[b-lu8dcosb63]::before {
    -webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g transform="rotate(90) scale(0.8)" transform-origin="12 12"><path d="m 2,1.5 l 10,17.5 l 10,-17.5 l -10,7.75 l -10,-7.75 z"/><rect height="2" width="20" y="20.5" x="2"/></g></svg>');
    mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g transform="rotate(90) scale(0.8)" transform-origin="12 12"><path d="m 2,1.5 l 10,17.5 l 10,-17.5 l -10,7.75 l -10,-7.75 z"/><rect height="2" width="20" y="20.5" x="2"/></g></svg>');
}

.go-previous[b-lu8dcosb63]::before, .go-next[b-lu8dcosb63]::before {
    -webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g transform="rotate(90)" transform-origin="12 12"><path d="M 2 3.25 L 12 20.75 L 22 3.25 L 12 11 z" /></g></svg>');
    mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g transform="rotate(90)" transform-origin="12 12"><path d="M 2 3.25 L 12 20.75 L 22 3.25 L 12 11 z" /></g></svg>');
}

.go-next[b-lu8dcosb63]::before, .go-last[b-lu8dcosb63]::before {
    transform: scaleX(-1);
}
/* /Components/Shared/JumboTop.razor.rz.scp.css */
/* Ce composant est rendu depuis @@Body, donc imbrique dans .pal-content (app.css, largeur plafonnee
   et centree). Pour occuper toute la largeur de la fenetre comme le header/footer (qui eux sont en
   dehors de .pal-content), on "casse" ce plafond avec des marges negatives calculees sur le viewport. */
.pal-jumbo[b-fnm9r8466a] {
    width: auto;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    background-color: var(--surface-card);
    border-bottom: 1px solid var(--surface-border);
}

.pal-jumbo-inner[b-fnm9r8466a] {
    margin-inline: auto;
    padding: 1.1rem 1.5rem;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-end;
    gap: 0.5rem 1.5rem;
}

.pal-jumbo-titles[b-fnm9r8466a] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

/* seuil: --bp-desktop-sm — meme plafond que .pal-content (app.css), pour que le titre reste
   aligne avec le contenu de la page juste en dessous (grille de news, calendrier, etc.) */
@media (min-width: 1024px) {
    .pal-jumbo-inner[b-fnm9r8466a] {
        max-width: 1180px;
    }
}

/* seuil: --bp-desktop-lg */
@media (min-width: 1440px) {
    .pal-jumbo-inner[b-fnm9r8466a] {
        max-width: 1320px;
    }
}

/* etait <h3> — harmonisation titres, decisions.md [[titres-echelle-h1]] : promu en vrai <h1>,
   seule balise concernee (JumboTop est le titre de page sur 19 pages, aucune n'avait de h1
   avant ce changement). Bootstrap donne une taille par defaut DIFFERENTE a h1
   (calc(1.375rem + 1.5vw), plafond 2.5rem) et h3 (calc(1.3rem + .6vw), plafond 1.75rem) : sans
   fixer explicitement la taille ici, le changement de balise aurait agrandi le titre sur les 19
   pages. font-size reprend donc exactement la formule h3 d'avant (clamp equivalent) pour un
   rendu visuel strictement inchange. */
.pal-jumbo h1[b-fnm9r8466a] {
    margin: 0;
    font-size: clamp(1.3rem, calc(1.3rem + .6vw), 1.75rem);
    color: var(--pal-red);
}

.pal-jumbo h5[b-fnm9r8466a] {
    margin: 0;
    color: var(--text-muted);
}

/* Le fil d'ariane utilise les composants Bootstrap par defaut (couleurs figees, non theme-aware) :
   on surcharge ses variables + ses liens avec les tokens du site pour qu'il reste lisible en sombre. */
/* max-width:100% : flex 0 0 auto le figeait a sa largeur max-content — un fil d'Ariane long
   (fiche tournoi : Accueil > Agenda > Saison > Championnat > Tournoi) elargissait la page sur
   mobile au lieu de passer a la ligne (.breadcrumb est deja en flex-wrap). */
.pal-jumbo-links[b-fnm9r8466a] {
    flex: 0 0 auto;
    max-width: 100%;
    --bs-breadcrumb-item-active-color: var(--text-muted);
    --bs-breadcrumb-divider-color: var(--text-muted);
}

    .pal-jumbo-links .breadcrumb[b-fnm9r8466a] {
        margin: 0;
        font-size: 0.78rem;
    }

    .pal-jumbo-links .breadcrumb-item[b-fnm9r8466a] {
        color: var(--text-muted);
    }

    .pal-jumbo-links .breadcrumb-item + .breadcrumb-item[b-fnm9r8466a] {
        --bs-breadcrumb-item-padding-x: 6px;
    }

    .pal-jumbo-links .breadcrumb-item a[b-fnm9r8466a] {
        color: var(--pal-red-mid);
        text-decoration: underline;
    }

        .pal-jumbo-links .breadcrumb-item a:hover[b-fnm9r8466a] {
            color: var(--pal-red);
        }
/* /Components/Shared/PalGauge.razor.rz.scp.css */
/* Jauge de palier — remplace l'ancien affichage en puces (.pal-palier-chip). Reutilisee telle
   quelle partout ou un montant de don doit se comparer aux paliers de la saison : lecture seule
   ici (AdhesionActive/Dashboard), et une 2e instance pilotee par un montant tape en direct sur
   /subscription (AdhesionProcess.razor), meme composant, valeur differente en parametre.

   Mobile-first : en dessous de --bp-tablet (600px), jauge VERTICALE (une ligne par palier, texte
   pleine largeur) — l'horizontale a 5 points ne laisse que ~80px entre deux points sur un ecran
   etroit, largement insuffisant pour des libelles comme "Affiliation Online"/"Photo Hall Of Fame"
   (chevauchement constate). Au-dessus de 600px, horizontale comme avant (points relies par une
   piste, libelles en dessous). */

.pal-ladder[b-oz2d6298rs] {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

.pal-ladder-track[b-oz2d6298rs] {
    position: absolute;
    left: .8rem;
    top: 1.2rem;
    bottom: 1.2rem;
    width: 3px;
    border-radius: 999px;
    background: var(--surface-border);
}

.pal-ladder-fill[b-oz2d6298rs] {
    position: absolute;
    inset: 0;
    width: 100%;
    /* Rempli du haut vers le bas (le palier "Adhesion" est toujours en haut/acquis) : var(--fill)
       pilote la hauteur en mobile, la largeur en desktop (voir media query) — meme valeur
       serveur, une seule variable, --fill n'est jamais une couleur/taille de design a elle seule
       donc pas besoin de l'exposer dans app.css. */
    height: var(--fill, 0%);
    border-radius: 999px;
    background: var(--pal-red);
    transition: height .25s ease;
}

.pal-ladder-rung[b-oz2d6298rs] {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: .8rem;
    min-height: 2.4rem;
}

.pal-ladder-rung .dot[b-oz2d6298rs] {
    position: static;
    flex: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--surface-bg);
    border: 2px solid var(--surface-border);
    display: grid;
    place-items: center;
    color: var(--text-muted);
    font-size: .7rem;
    transition: border-color .2s, color .2s, background-color .2s;
}

.pal-ladder-rung.done .dot[b-oz2d6298rs] {
    border-color: var(--pal-success);
    color: var(--pal-success);
    background: var(--pal-success-bg);
}

.pal-ladder-rung .lbl[b-oz2d6298rs] {
    text-align: left;
    font-size: .82rem;
    font-weight: 700;
    color: var(--text);
}

.pal-ladder-rung .lbl .amt[b-oz2d6298rs] {
    display: block;
    font-weight: 400;
    color: var(--text-muted);
    font-size: .74rem;
}

/* seuil: --bp-tablet */
@media (min-width: 600px) {
    .pal-ladder[b-oz2d6298rs] {
        display: block;
        gap: 0;
        /* Marge minimale : juste assez pour le rayon du point aux deux extremites (voir .dot,
           decale de -12px = son propre rayon). Les libelles ne debordent plus grace a l'ancrage
           ci-dessous (.pal-ladder-edge-start/-end), donc pas besoin d'une grande marge pour eux. */
        padding: 0 1rem 2.6rem;
    }

    .pal-ladder-track[b-oz2d6298rs] {
        position: relative;
        left: auto;
        top: auto;
        bottom: auto;
        width: auto;
        height: 6px;
    }

    .pal-ladder-fill[b-oz2d6298rs] {
        width: var(--fill, 0%);
        height: 100%;
        transition: width .25s ease;
    }

    /* Le point et le libelle sont positionnes independamment l'un de l'autre (au lieu d'une seule
       boite centree en bloc) : le point reste toujours pile sur --pos (necessaire pour coller a
       la piste), tandis que le libelle s'ancre differemment selon sa place — centre au milieu,
       mais pousse vers l'interieur aux deux extremites — pour ne jamais deborder du conteneur,
       quelle que soit la largeur du texte ("Repas avec le CA" est plus large que la marge
       disponible). */
    .pal-ladder-rung[b-oz2d6298rs] {
        position: absolute;
        top: -9px;
        left: var(--pos);
        z-index: auto;
        min-height: 0;
        display: block;
        gap: 0;
    }

    .pal-ladder-rung .dot[b-oz2d6298rs] {
        position: absolute;
        left: -12px;
        top: 0;
    }

    .pal-ladder-rung .lbl[b-oz2d6298rs] {
        position: absolute;
        top: 2.1rem;
        left: 0;
        transform: translateX(-50%);
        text-align: center;
        font-size: .72rem;
        white-space: nowrap;
    }

    .pal-ladder-rung.pal-ladder-edge-start .lbl[b-oz2d6298rs] {
        left: 0;
        transform: translateX(0);
        text-align: left;
    }

    .pal-ladder-rung.pal-ladder-edge-end .lbl[b-oz2d6298rs] {
        left: 0;
        transform: translateX(-100%);
        text-align: right;
    }

    .pal-ladder-rung .lbl .amt[b-oz2d6298rs] {
        font-size: .68rem;
    }
}
/* /Components/Shared/PALPaginator.razor.rz.scp.css */
.paginator[b-pxjx3z8pgk] {
    display: flex;
    align-items: center;
    border-top: 1px solid var(--surface-border);
    margin-top: 2rem;
    padding-top: 1.25rem;
}

.summary[b-pxjx3z8pgk] {
    color: var(--text-muted);
    font-size: .85rem;
}

.pagination-text[b-pxjx3z8pgk] {
    margin: 0 0.5rem;
    color: var(--text-muted);
    font-size: .85rem;
}

nav[b-pxjx3z8pgk] {
    display: flex;
    margin-left: auto;
    gap: 0.5rem;
    align-items: center;
}

    nav button[b-pxjx3z8pgk], nav a[b-pxjx3z8pgk], nav span[b-pxjx3z8pgk] {
        position: relative;
        display: inline-flex;
        border: 1px solid var(--surface-border);
        border-radius: 50%;
        background-color: var(--surface-bg);
        width: 2.2rem;
        height: 2.2rem;
        transition: border-color .15s ease, background-color .15s ease;
    }

        nav button[disabled][b-pxjx3z8pgk], nav a[disabled][b-pxjx3z8pgk], nav span[b-pxjx3z8pgk] {
            opacity: 0.4;
        }

        nav button:not([disabled]):hover[b-pxjx3z8pgk], nav a:not([disabled]):hover[b-pxjx3z8pgk] {
            border-color: var(--pal-red);
        }

        nav button:not([disabled]):active[b-pxjx3z8pgk], nav a:not([disabled]):active[b-pxjx3z8pgk] {
            background-color: var(--surface-card);
        }

        /* L'icone est une pastille masquee par le SVG (au lieu d'un fond d'image fixe) :
           sa couleur suit ainsi le theme via background-color, comme tout le reste du site. */
        nav button[b-pxjx3z8pgk]::before, nav a[b-pxjx3z8pgk]::before, nav span[b-pxjx3z8pgk]::before {
            content: "";
            position: absolute;
            inset: 0;
            margin: auto;
            width: 1rem;
            height: 1rem;
            background-color: var(--text-muted);
            -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
            -webkit-mask-position: center;
            mask-position: center;
            -webkit-mask-size: contain;
            mask-size: contain;
        }

        nav button:not([disabled]):hover[b-pxjx3z8pgk]::before, nav a:not([disabled]):hover[b-pxjx3z8pgk]::before {
            background-color: var(--pal-red);
        }

.go-first[b-pxjx3z8pgk]::before, .go-last[b-pxjx3z8pgk]::before {
    -webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g transform="rotate(90) scale(0.8)" transform-origin="12 12"><path d="m 2,1.5 l 10,17.5 l 10,-17.5 l -10,7.75 l -10,-7.75 z"/><rect height="2" width="20" y="20.5" x="2"/></g></svg>');
    mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g transform="rotate(90) scale(0.8)" transform-origin="12 12"><path d="m 2,1.5 l 10,17.5 l 10,-17.5 l -10,7.75 l -10,-7.75 z"/><rect height="2" width="20" y="20.5" x="2"/></g></svg>');
}

.go-previous[b-pxjx3z8pgk]::before, .go-next[b-pxjx3z8pgk]::before {
    -webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g transform="rotate(90)" transform-origin="12 12"><path d="M 2 3.25 L 12 20.75 L 22 3.25 L 12 11 z" /></g></svg>');
    mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g transform="rotate(90)" transform-origin="12 12"><path d="M 2 3.25 L 12 20.75 L 22 3.25 L 12 11 z" /></g></svg>');
}

.go-next[b-pxjx3z8pgk]::before, .go-last[b-pxjx3z8pgk]::before {
    transform: scaleX(-1);
}
/* /Components/Shared/PalStickySidebar.razor.rz.scp.css */
/* seuil: --bp-desktop-sm — collant seulement quand la sidebar est reellement a cote du contenu
   (colonne desktop) ; sur mobile/tablette elle est empilee en dessous, pas de sticky. */
@media (min-width: 1024px) {
    .pal-sticky-sidebar-inner[b-pq8h80kxva] {
        position: sticky;
        top: 1.5rem;
    }
}
/* /Components/Shared/SearchItemView.razor.rz.scp.css */
/* Popup de recherche floue (Dialog.FuzzySearchDialog) : la barre de recherche reste toujours
   visible, seul le tableau de resultats defile a l'interieur de la popup, plutot que de laisser
   toute la popup grandir avec le nombre de resultats (piege classique flexbox : un enfant flex
   avec overflow:auto ne defile jamais tant que min-height reste a sa valeur par defaut "auto"). */
.pal-search-item-root[b-o1vqzi6pj5] {
    display: flex;
    flex-direction: column;
    height: 100%;
    max-height: 100%;
}

.pal-search-item-results[b-o1vqzi6pj5] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

/* Badges de statut d'adhesion sur la colonne identifiant (PAL-XXXX) — utilise par BOTournoiDetail
   (onglets "Joueurs inscrits" ET "Classement", meme composant SelectUser/GetClass) et tout autre
   consommateur de SearchItemView passant un parametre Classes. */
.table .first-pal-locked td:nth-child(2) div[b-o1vqzi6pj5] {
    border-radius: var(--bs-border-radius-pill) !important;
    --bs-bg-opacity: 1;
    background-color: #444 !important;
    font-size: 1rem !important;
    font-weight: var(--bs-badge-font-weight);
    --bs-badge-padding-x: 0.65em;
    --bs-badge-padding-y: 0.35em;
    --bs-badge-font-size: 0.75em;
    --bs-badge-font-weight: 700;
    --bs-badge-color: #fff;
    --bs-badge-border-radius: var(--bs-border-radius);
    display: inline-block;
    padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
    line-height: 1;
    color: white;
    text-align: center;
    white-space: nowrap;
    vertical-align: baseline;
}


.table .first-pal-active td:nth-child(2) div[b-o1vqzi6pj5] {
    border-radius: var(--bs-border-radius-pill) !important;
    --bs-bg-opacity: 1;
    background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
    font-size: 1rem !important;
    font-weight: var(--bs-badge-font-weight);
    --bs-badge-padding-x: 0.65em;
    --bs-badge-padding-y: 0.35em;
    --bs-badge-font-size: 0.75em;
    --bs-badge-font-weight: 700;
    --bs-badge-color: #fff;
    --bs-badge-border-radius: var(--bs-border-radius);
    display: inline-block;
    padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
    line-height: 1;
    color: var(--bs-badge-color);
    text-align: center;
    white-space: nowrap;
    vertical-align: baseline;
}

.table .first-pal-avalider td:nth-child(2) div[b-o1vqzi6pj5] {
    border-radius: var(--bs-border-radius-pill) !important;
    --bs-bg-opacity: 1;
    background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;
    font-size: 1rem !important;
    font-weight: var(--bs-badge-font-weight);
    --bs-badge-padding-x: 0.65em;
    --bs-badge-padding-y: 0.35em;
    --bs-badge-font-size: 0.75em;
    --bs-badge-font-weight: 700;
    --bs-badge-color: #fff;
    --bs-badge-border-radius: var(--bs-border-radius);
    display: inline-block;
    padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
    line-height: 1;
    color: var(--bs-badge-color);
    text-align: center;
    white-space: nowrap;
    vertical-align: baseline;
}

.table .first-pal-inactif td:nth-child(2) div[b-o1vqzi6pj5] {
    border-radius: var(--bs-border-radius-pill) !important;
    --bs-bg-opacity: 1;
    background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
    font-size: 1rem !important;
    font-weight: var(--bs-badge-font-weight);
    --bs-badge-padding-x: 0.65em;
    --bs-badge-padding-y: 0.35em;
    --bs-badge-font-size: 0.75em;
    --bs-badge-font-weight: 700;
    --bs-badge-color: #fff;
    --bs-badge-border-radius: var(--bs-border-radius);
    display: inline-block;
    padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
    line-height: 1;
    color: var(--bs-badge-color);
    text-align: center;
    white-space: nowrap;
    vertical-align: baseline;
}

.disable-select input[type="checkbox"][b-o1vqzi6pj5] {
    visibility: hidden;
}
/* /Components/Shared/ThemeToggle.razor.rz.scp.css */
.pal-theme-switch[b-cxjij2vnqz] {
    position: fixed;
    right: 1.25rem;
    bottom: 1.25rem;
    z-index: 1040;
    padding: 0.5rem;
    border-radius: 999px;
    background: var(--chrome-bg);
    box-shadow: var(--theme-toggle-shadow);
    --switch-bg: var(--chrome-border);
    --switch-checked-bg: var(--pal-red);
    --icon-moon-color: var(--chrome-bg);
}

    /* soleil (clair, non coche) / lune (sombre, coche) : tailles/anim reprises de .cross/.checkmark
       de switch.css (dupliquees ici pour ne pas modifier ce fichier partage avec TheSwitch.razor),
       mais couleurs propres — le fond de la pastille (--circle-bg, switch.css) est blanc, et
       --icon-cross-color/--icon-checkmark-color (quasi-blancs, penses pour la croix/coche sur fond
       sombre) y sont invisibles */
    .pal-theme-switch .sun[b-cxjij2vnqz] {
        width: var(--icon-cross-size);
        color: var(--icon-sun-color);
    }

    .pal-theme-switch .moon[b-cxjij2vnqz] {
        width: var(--icon-checkmark-size);
        color: var(--icon-moon-color);
        transform: scale(0);
    }

    .pal-theme-switch input:checked + .slider .moon[b-cxjij2vnqz] {
        transform: scale(1);
    }

    .pal-theme-switch input:checked + .slider .sun[b-cxjij2vnqz] {
        transform: scale(0);
    }
/* /Components/Shared/TournoiVignette.razor.rz.scp.css */
/* Rendu "Fiche stats" (maquette A approuvée) : tags de catégorie compacts + grille de mini-stats à
   icônes rondes + lieu/championnat en pied de carte. Actif via Detailed="true" (TournoiDetail.razor).
   Le rendu par defaut (Detailed="false", seul autre consommateur : Agenda.razor,
   /GestionUtilisateur/Agenda) a ete retouche le 2026-08-07 (maquette "Piste C" approuvee, carte
   compacte pour une liste repetee) : reutilise .pal-tv-tags/.pal-tv-tag pour mode/prix/variante/
   type/format, mais .pal-tv-chips (puces a icone plus petites, pas de libelle empile) pour les
   champs numeriques (joueurs/duree niveau/stack/late reg/inscrits) — la grille .pal-tv-stats
   (icones 2.6rem + libelle) reste reservee a Detailed, trop haute pour une carte repetee. */

.pal-tv[b-amvdgcq6ya] {
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

.pal-tv-compact[b-amvdgcq6ya] {
    gap: .6rem;
}

.pal-tv-tags[b-amvdgcq6ya] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.pal-tv-tag[b-amvdgcq6ya] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .3rem .75rem;
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 700;
    background: var(--surface-bg);
    border: 1px solid var(--surface-border);
    color: var(--text);
}

.pal-tv-tag-mode.is-live[b-amvdgcq6ya] {
    background: color-mix(in srgb, var(--agenda-live) 14%, transparent);
    border-color: transparent;
    color: var(--agenda-live);
}

.pal-tv-tag-mode.is-online[b-amvdgcq6ya] {
    background: color-mix(in srgb, var(--agenda-online) 16%, transparent);
    border-color: transparent;
    color: var(--agenda-online);
}

/* Puces compactes (Detailed="false") : meme vocabulaire d'icone que .pal-tv-stat ci-dessous,
   mais en ligne (icone+valeur, pas de libelle empile) et bien plus petites — pensees pour une
   carte repetee dans une liste, pas une fiche pleine largeur. */
.pal-tv-chips[b-amvdgcq6ya] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 1rem;
}

.pal-tv-chip[b-amvdgcq6ya] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-size: .82rem;
    color: var(--text-muted);
}

.pal-tv-chip b[b-amvdgcq6ya] {
    color: var(--text);
    font-weight: 800;
}

.pal-tv-chip-icon[b-amvdgcq6ya] {
    width: 1.5rem;
    height: 1.5rem;
    flex: none;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: color-mix(in srgb, var(--pal-red) 12%, transparent);
    color: var(--pal-red);
    font-size: .68rem;
}

.pal-tv-stats[b-amvdgcq6ya] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(5.5rem, 1fr));
    gap: 1rem;
    padding: 1rem 0;
    border-top: 1px solid var(--surface-border);
    border-bottom: 1px solid var(--surface-border);
}

.pal-tv-stat[b-amvdgcq6ya] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: .4rem;
}

.pal-tv-stat-icon[b-amvdgcq6ya] {
    width: 2.6rem;
    height: 2.6rem;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: color-mix(in srgb, var(--pal-red) 12%, transparent);
    color: var(--pal-red);
    font-size: 1.1rem;
}

.pal-tv-stat-value[b-amvdgcq6ya] {
    font-weight: 800;
    color: var(--text);
    font-size: .95rem;
}

.pal-tv-stat-label[b-amvdgcq6ya] {
    font-size: .68rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: .03em;
}

.pal-tv-championnat[b-amvdgcq6ya] {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: .85rem;
    color: var(--text-muted);
}

.pal-tv-championnat i[b-amvdgcq6ya] {
    color: var(--pal-warning);
}

.pal-tv-championnat a[b-amvdgcq6ya] {
    color: var(--pal-red-mid);
    font-weight: 700;
}

.pal-tv-championnat a:hover[b-amvdgcq6ya] {
    color: var(--pal-red);
}

.pal-tv-footer[b-amvdgcq6ya] {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: .85rem;
    color: var(--text-muted);
}
/* /Components/Shared/VignetteNews.razor.rz.scp.css */
.pal-vignette-news[b-akggokvlzy] {
    display: flex;
    gap: 0;
    background: var(--surface-card);
    border: 1px solid var(--surface-border);
    border-radius: 14px;
    overflow: hidden;
    position: relative;
}

.pal-vignette-media[b-akggokvlzy] {
    flex: 0 0 auto;
    background: var(--chrome-bg);
    overflow: hidden;
    /* position:relative seul ne cree PAS de contexte d'empilement propre (il faut aussi un
       z-index explicite) — sans ca, le pseudo-element flouté (z-index:-1 plus bas) s'echappe
       derriere tout ce qui l'englobe au lieu de rester juste derriere l'image. Le carrousel n'a
       pas ce probleme car Bootstrap applique deja une transformation a ses slides, qui cree ce
       contexte par effet de bord. */
    position: relative;
    z-index: 0;
    background-size: cover;
    background-position: center;
}

    /* Fond flouté tres appuye (memes reglages que la photo elle-meme, via l'inline
       background-image sur .pal-vignette-media, herite par ce pseudo) — le flou doit rester assez
       fort pour que le sujet de la photo devienne totalement indiscernable en fond, sinon on percoit
       la meme image "en double" (net au centre, vaguement flou autour). */
    .pal-vignette-media[b-akggokvlzy]::before {
        content: "";
        position: absolute;
        inset: -60px;
        z-index: -1;
        background-image: inherit;
        background-size: cover;
        background-position: center;
        filter: blur(60px) saturate(1.25) brightness(.75);
        transform: scale(1.25);
    }

    /* L'image est enveloppee dans un <a> (lien cliquable) : sans taille propre, cet <a> reste
       inline par defaut et le width/height:100% de l'image n'a plus rien de defini a quoi se
       rapporter. L'accueil n'a pas ce souci car son <img> est un enfant direct du conteneur
       dimensionne, sans <a> intermediaire. */
    .pal-vignette-media a[b-akggokvlzy] {
        display: block;
        width: 100%;
        height: 100%;
    }

    .pal-vignette-media img[b-akggokvlzy] {
        width: 100%;
        height: 100%;
        object-fit: contain;
        display: block;
    }

.pal-vignette-body[b-akggokvlzy] {
    display: flex;
    flex-direction: column;
    gap: .4rem;
    min-width: 0;
    padding: 1rem 1.15rem;
}

.pal-vignette-eyebrow[b-akggokvlzy] {
    display: inline-flex;
    align-items: center;
    gap: .5em;
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--pal-red);
}

    .pal-vignette-eyebrow[b-akggokvlzy]::before {
        content: "";
        width: 1.2em;
        height: 2px;
        background: var(--pal-red);
        display: inline-block;
    }

.pal-vignette-meta[b-akggokvlzy] {
    font-size: .78rem;
    color: var(--text-muted);
}

.pal-vignette-title[b-akggokvlzy] {
    margin: 0;
    color: var(--pal-red);
    font-size: 1rem;
    line-height: 1.3;
}

.pal-vignette-dek[b-akggokvlzy] {
    margin: 0;
    font-size: .88rem;
    color: var(--text-muted);
    font-style: italic;
}

.pal-vignette-news[b-akggokvlzy]  p {
    margin: 0;
    font-size: .86rem;
    color: var(--text);
    line-height: 1.5;
}

.pal-vignette-news[b-akggokvlzy]  p a {
    color: var(--pal-red-mid);
    font-weight: 700;
    white-space: nowrap;
}

/* --- Compact (grille secondaire) : image a gauche, tout en petit --- */
.pal-vignette-compact[b-akggokvlzy] {
    flex-direction: row;
}

    .pal-vignette-compact .pal-vignette-media[b-akggokvlzy] {
        width: 38%;
        aspect-ratio: 4 / 3;
        align-self: center;
    }

    .pal-vignette-compact .pal-vignette-title[b-akggokvlzy] {
        font-size: .92rem;
        line-height: 1.3;
        min-height: calc(1.3em * 2);
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .pal-vignette-compact .pal-vignette-body[b-akggokvlzy] {
        padding: .85rem 1rem;
    }

    .pal-vignette-compact[b-akggokvlzy]  p {
        font-size: .78rem;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .pal-vignette-compact[b-akggokvlzy]  p a {
        display: none;
    }

/* --- Vedette : image en haut sur mobile, a cote a partir du seuil desktop --- */
.pal-vignette-featured[b-akggokvlzy] {
    flex-direction: column;
}

    .pal-vignette-featured .pal-vignette-media[b-akggokvlzy] {
        aspect-ratio: 16 / 9;
    }

    .pal-vignette-featured .pal-vignette-title[b-akggokvlzy] {
        font-size: 1.3rem;
    }

/* seuil: --bp-desktop-sm */
@media (min-width: 1024px) {
    .pal-vignette-featured[b-akggokvlzy] {
        flex-direction: row;
    }

        .pal-vignette-featured .pal-vignette-media[b-akggokvlzy] {
            width: 46%;
            aspect-ratio: auto;
        }

        .pal-vignette-featured .pal-vignette-body[b-akggokvlzy] {
            padding: 1.75rem 2rem;
            justify-content: center;
            gap: .6rem;
        }
}
/* /Components/Shared/WidgetPartenaire.razor.rz.scp.css */
/* Mode "bandeau" (Strip="true") : logos en ligne pleine largeur, plutot qu'empiles en colonne laterale */

.pal-partners-strip[b-as6cvnmlws] {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-block: 2.5rem;
}

    .pal-partners-strip .pal-widget-title[b-as6cvnmlws] {
        align-self: flex-start;
    }

.pal-partners-strip-row[b-as6cvnmlws] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 1.1rem;
    width: 100%;
}

.pal-partners-strip-item[b-as6cvnmlws] {
    flex: 0 0 auto;
    width: 9.5rem;
    height: 4.5rem;
    padding: .5rem .85rem;
    border: 1px solid var(--surface-border);
    border-radius: 10px;
    background: var(--surface-card);
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    transition: border-color .15s ease;
}

    .pal-partners-strip-item:hover[b-as6cvnmlws] {
        border-color: var(--pal-red);
    }

    .pal-partners-strip-item img[b-as6cvnmlws] {
        max-width: 100%;
        max-height: 100%;
        object-fit: contain;
    }

    .pal-partners-strip-item span[b-as6cvnmlws] {
        font-size: .78rem;
        font-weight: 700;
        letter-spacing: .02em;
        text-transform: uppercase;
        color: var(--text-muted);
    }
