/* ── Variables thème sombre ─────────────────────────────────── */
:root {
    --bg-base      : #0f1923;   /* fond page */
    --bg-surface   : #16283a;   /* cartes, panneaux */
    --bg-raised    : #1e3448;   /* tableaux lignes, inputs */
    --bg-hover     : #243d55;   /* hover sur lignes */
    --border       : #243d55;   /* bordures */
    --border-light : #1e3448;   /* séparateurs internes */
    --text-primary : #e8edf2;   /* texte principal */
    --text-muted   : #7a9ab5;   /* texte secondaire */
    --text-faint   : #445e74;   /* texte très discret */
    --accent       : #FF6B00;   /* orange basket */
    --accent-dim   : rgba(255,107,0,.15);
}

body {
    background-color : var(--bg-base);
    color            : var(--text-primary);
    font-family      : 'Segoe UI', system-ui, sans-serif;
}
.card {
    background   : var(--bg-surface);
    border-color : var(--border) !important;
    color        : var(--text-primary);
    transition   : box-shadow .2s ease;
}
.card:hover { box-shadow: 0 4px 20px rgba(0,0,0,.35) !important; }
.card-header { background: var(--bg-raised); border-color: var(--border) !important; color: var(--text-primary) !important; }
.card-footer { background: var(--bg-raised) !important; border-color: var(--border) !important; }
.card-body   { background: var(--bg-surface); }
.list-group-item { background: var(--bg-surface); border-color: var(--border); color: var(--text-primary); }
.list-group-item-action:hover { background: var(--bg-hover); color: var(--text-primary); }
.table th { font-size:.8rem; text-transform:uppercase; letter-spacing:.05em; font-weight:600; }
.table { color: var(--text-primary); border-color: var(--border); }
.table td, .table th { border-color: var(--border); }
.table-hover > tbody > tr:hover > * { background-color: var(--bg-hover); color: var(--text-primary); }
.table-light, .table-light th, .table thead.table-light { background-color: var(--bg-raised) !important; color: var(--text-muted) !important; }
.table-dark { background-color: #0b1520 !important; }
.table-dark th { background-color: #0b1520 !important; color: var(--text-muted) !important; }
.table-success { background-color: rgba(25,135,84,.15) !important; }
.table-warning { background-color: rgba(255,107,0,.12) !important; }
.btn-check:checked+.btn-outline-info{background-color:#0dcaf0;color:#000;border-color:#0dcaf0;}
.btn-check:checked+.btn-outline-warning{background-color:#ffc107;color:#000;border-color:#ffc107;}
.btn-check:checked+.btn-outline-success{background-color:#198754;color:#fff;border-color:#198754;}
.btn-check:checked+.btn-outline-dark{background-color:#212529;color:#fff;border-color:#212529;}
label.btn{cursor:pointer;transition:all .2s;}
.access-code-display{font-size:1.5rem;letter-spacing:.35em;text-shadow:0 0 20px rgba(255,193,7,.3);user-select:all;}
.font-monospace{font-family:'Courier New',monospace!important;}

/* ═══════════════════════════════════════════════════════════════
   BRACKET — design amélioré avec connecteurs SVG
   ═══════════════════════════════════════════════════════════════ */

/* Conteneur scrollable horizontal */
.bracket-scroll {
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: .5rem;
    padding: 1rem;
}

/* Conteneur position:relative pour l'overlay SVG */
.bracket-svg-container {
    position: relative;
    display: inline-block;
    min-width: 100%;
    padding: .5rem 0;
}

/* SVG overlay — dessiné par JS, par-dessus les rounds */
#bracket-svg {
    position: absolute;
    top: 0;
    left: 0;
    pointer-events: none;
    overflow: visible;
    z-index: 0;
}

/* Colonne de round */
.bracket-round {
    display        : flex;
    flex-direction : column;
    min-width      : 190px;
    max-width      : 210px;
    padding        : 0 28px;
    position       : relative;
    z-index        : 1;
}

/* Slot : contient un match et prend 1 part égale de la hauteur du round.
   Grâce à flex:1, chaque match se centre automatiquement entre ses
   deux voisins du round précédent → alignement parfait des connecteurs. */
.bracket-slot {
    flex           : 1;
    display        : flex;
    align-items    : center;
    padding        : .35rem 0;
}

/* Dernière colonne (Finale) un peu plus large */
.bracket-round-final {
    min-width: 200px;
    max-width: 220px;
}

/* Titre du round */
.bracket-round-title {
    text-align: center;
    font-weight: 700;
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .1em;
    color: #6c757d;
    margin-bottom: .75rem;
}

/* Titre finale */
.bracket-final-title {
    color: #cc8800;
    font-size: .75rem;
}

/* Titre 3e place */
.bracket-third-title {
    color: #6c757d;
    font-size: .7rem;
    margin-top: 0;
}

/* Carte match */
.bracket-match {
    border: 2px solid #dee2e6;
    border-radius: 10px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 2px 8px rgba(0,0,0,.07);
    transition: border-color .25s, box-shadow .25s;
    cursor: default;
}
.bracket-match:hover {
    border-color: #fd7e14;
    box-shadow: 0 3px 14px rgba(253,126,20,.18);
}
.bracket-match.completed {
    border-color: #198754;
}
.bracket-match.completed:hover {
    border-color: #146c43;
    box-shadow: 0 3px 14px rgba(25,135,84,.18);
}
.bracket-tbd {
    border-color: #e9ecef;
    opacity: .6;
}

/* Ligne de séparation entre les deux équipes */
.bracket-divider {
    height: 1px;
    background: #f0f0f0;
    margin: 0;
}

/* Ligne équipe */
.bracket-team {
    padding: .45rem .7rem;
    font-size: .82rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: .35rem;
    min-height: 34px;
}
.bracket-team-name {
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 120px;
}

/* Vainqueur */
.bracket-team.winner {
    background: linear-gradient(90deg, #d1f5e0, #f0fff6);
    font-weight: 700;
    color: #0a5c2f;
}

/* Éliminé */
.bracket-team.loser {
    color: #adb5bd;
    text-decoration: line-through;
    text-decoration-color: #ced4da;
}

/* Icône trophée */
.bracket-trophy {
    color: #ffc107;
    font-size: .75rem;
    flex-shrink: 0;
}

/* Score */
.bracket-team .score {
    font-weight: 700;
    font-size: 1rem;
    min-width: 1.5rem;
    text-align: center;
    flex-shrink: 0;
    color: #495057;
}
.bracket-team .score.score-win {
    color: #198754;
    font-size: 1.1rem;
}

/* Label best-of */
.bracket-mode-label {
    font-size: .65rem;
    text-align: center;
    color: #6c757d;
    padding: .15rem .5rem .25rem;
    background: #f8f9fa;
    border-top: 1px solid #f0f0f0;
    letter-spacing: .04em;
    text-transform: uppercase;
}

/* Bloc petite finale */
.bracket-third-place-block {
    opacity: .85;
}
.bracket-third-place-block .bracket-match {
    border-color: #ced4da;
}
.bracket-third-place-block .bracket-match:hover {
    border-color: #adb5bd;
    box-shadow: 0 2px 8px rgba(0,0,0,.09);
}

.flag-btn{opacity:.45;transition:opacity .2s,transform .2s;display:inline-flex;align-items:center;}
.flag-btn:hover{opacity:1;transform:scale(1.15);}
.flag-btn.flag-active{opacity:1;}
.flag-btn .fi{font-size:1.25rem;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.3);}
.bracket-connector{width:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#adb5bd;}
.hero-banner{min-height:180px;}
.form-control:focus,.form-select:focus{border-color:#FF6B00;box-shadow:0 0 0 .2rem rgba(255,107,0,.2);}
.border-warning.border-2{border-width:2px!important;}


/* ═══════════════════════════════════════════════════════════════
   TOURNAMENT CARDS  (tcard)
   ═══════════════════════════════════════════════════════════════ */

.tcard {
    background : #fff;
    border-radius : 14px;
    box-shadow : 0 2px 12px rgba(0,0,0,.08);
    border : 1px solid #e9ecef;
    border-left : 4px solid #ced4da;
    display : flex;
    flex-direction : column;
    overflow : hidden;
    transition : transform .2s, box-shadow .2s;
}
.tcard:hover {
    transform : translateY(-3px);
    box-shadow : 0 8px 28px rgba(0,0,0,.13);
}

/* Accent couleur par statut */
.tcard--secondary { border-left-color : #6c757d; }
.tcard--primary   { border-left-color : #0d6efd; }
.tcard--warning   { border-left-color : #fd7e14; }
.tcard--success   { border-left-color : #198754; }

/* Carte appartenant à l'utilisateur */
.tcard--mine {
    box-shadow : 0 2px 12px rgba(255,193,7,.2);
}
.tcard--mine::before {
    content : '';
    position : absolute;
    inset : 0;
    border-radius : 14px;
    border : 2px solid rgba(255,193,7,.4);
    pointer-events : none;
}
.tcard { position : relative; }

/* ── En-tête ──────────────────────────────────────────────────── */
.tcard__head {
    padding : 1rem 1rem .6rem;
    border-bottom : 1px solid #f0f0f0;
}
.tcard__title-row {
    display : flex;
    justify-content : space-between;
    align-items : flex-start;
    gap : .5rem;
}
.tcard__name {
    font-weight : 700;
    font-size : 1rem;
    line-height : 1.3;
    color : #212529;
    word-break : break-word;
}
.tcard__lock {
    color : #ffc107;
    font-size : .8rem;
}
.tcard__mine-badge {
    background : #fff3cd;
    color : #856404;
    border : 1px solid #ffc107;
    font-size : .68rem;
    font-weight : 600;
    padding : .15rem .45rem;
    border-radius : 20px;
    white-space : nowrap;
}

/* Badge statut */
.tcard__status-badge {
    display : inline-flex;
    align-items : center;
    gap : .3rem;
    font-size : .7rem;
    font-weight : 600;
    padding : .22rem .55rem;
    border-radius : 20px;
    text-transform : uppercase;
    letter-spacing : .04em;
}
.tcard__status-badge--secondary { background:#e9ecef; color:#495057; }
.tcard__status-badge--primary   { background:#cfe2ff; color:#084298; }
.tcard__status-badge--warning   { background:#fff3cd; color:#7a4a00; }
.tcard__status-badge--success   { background:#d1f5e0; color:#0a5c2f; }

/* Pulse pour les tournois actifs */
.tcard__status-badge--live { position:relative; }
.tcard__pulse {
    display : inline-block;
    width  : 7px;
    height : 7px;
    border-radius : 50%;
    background : currentColor;
    animation : tcardPulse 1.4s ease-in-out infinite;
}
@keyframes tcardPulse {
    0%,100% { opacity:1; transform:scale(1); }
    50%      { opacity:.4; transform:scale(.6); }
}

/* ── Barre de progression ─────────────────────────────────────── */
.tcard__progress-track {
    position : relative;
    height : 4px;
    background : #f0f0f0;
    display : flex;
    align-items : center;
}
.tcard__progress-fill {
    position : absolute;
    left : 0;
    top : 0;
    height : 100%;
    transition : width .5s ease;
    border-radius : 0 2px 2px 0;
}
.tcard__progress-fill--secondary { background:#adb5bd; }
.tcard__progress-fill--primary   { background:#0d6efd; }
.tcard__progress-fill--warning   { background:#fd7e14; }
.tcard__progress-fill--success   { background:#198754; }

.tcard__progress-dot {
    position : absolute;
    width : 10px;
    height : 10px;
    border-radius : 50%;
    background : #dee2e6;
    border : 2px solid #fff;
    z-index : 1;
    transition : background .3s;
}
.tcard__progress-dot:nth-child(2) { left:  0%; }
.tcard__progress-dot:nth-child(3) { left: 33%; }
.tcard__progress-dot:nth-child(4) { left: 66%; }
.tcard__progress-dot:nth-child(5) { left: 100%; transform:translateX(-100%); }
.tcard__progress-dot--done { background:#198754; }

/* ── Corps ────────────────────────────────────────────────────── */
.tcard__body {
    padding : .9rem 1rem;
    flex : 1;
}

/* Badges format / visibilité */
.tcard__format-badge {
    display : inline-flex;
    align-items : center;
    gap : .25rem;
    font-size : .72rem;
    font-weight : 600;
    background : #fff8e1;
    color : #6d4c00;
    border : 1px solid #ffe082;
    padding : .2rem .55rem;
    border-radius : 20px;
}
.tcard__vis-badge {
    display : inline-flex;
    align-items : center;
    font-size : .72rem;
    font-weight : 600;
    padding : .2rem .55rem;
    border-radius : 20px;
}
.tcard__vis-badge--success { background:#d1f5e0; color:#0a5c2f; border:1px solid #a3d9b8; }
.tcard__vis-badge--dark    { background:#e2e3e5; color:#2b2d2f; border:1px solid #bdbfc2; }

/* Stats */
.tcard__stats {
    display : flex;
    align-items : center;
    background : #f8f9fa;
    border-radius : 10px;
    padding : .55rem .25rem;
    margin-bottom : .75rem;
}
.tcard__stat {
    flex : 1;
    display : flex;
    flex-direction : column;
    align-items : center;
    gap : .1rem;
}
.tcard__stat-div {
    width : 1px;
    height : 32px;
    background : #dee2e6;
}
.tcard__stat-icon {
    font-size : .85rem;
    margin-bottom : .1rem;
}
.tcard__stat-icon--primary { color:#0d6efd; }
.tcard__stat-icon--warning { color:#fd7e14; }
.tcard__stat-icon--success { color:#198754; }
.tcard__stat-val {
    font-size : 1.1rem;
    font-weight : 700;
    color : #212529;
    line-height : 1;
}
.tcard__stat-lbl {
    font-size : .65rem;
    color : #6c757d;
    text-transform : uppercase;
    letter-spacing : .04em;
}

/* Meta date/lieu */
.tcard__meta {
    font-size : .78rem;
    color : #6c757d;
}

/* ── Footer ───────────────────────────────────────────────────── */
.tcard__footer {
    padding : .65rem 1rem;
    border-top : 1px solid #f0f0f0;
    background : #fafafa;
    display : flex;
    gap : .5rem;
    align-items : center;
}
.tcard__btn-main {
    flex : 1;
    display : inline-flex;
    justify-content : center;
    align-items : center;
    gap : .3rem;
    padding : .38rem .75rem;
    font-size : .82rem;
    font-weight : 600;
    background : #0d6efd;
    color : #fff;
    border-radius : 8px;
    text-decoration : none;
    transition : background .18s;
}
.tcard__btn-main:hover { background:#0b5ed7; color:#fff; }
.tcard__btn-icon {
    display : inline-flex;
    justify-content : center;
    align-items : center;
    width : 32px;
    height : 32px;
    border-radius : 8px;
    border : 1px solid #dee2e6;
    background : #fff;
    color : #495057;
    font-size : .85rem;
    cursor : pointer;
    transition : border-color .18s, color .18s;
    text-decoration : none;
}
.tcard__btn-icon:hover { border-color:#0d6efd; color:#0d6efd; }
.tcard__btn-icon--danger { color:#dc3545; }
.tcard__btn-icon--danger:hover { border-color:#dc3545; color:#dc3545; background:#fff5f5; }



/* ═══════════════════════════════════════════════════════════════
   HERO V2
   ═══════════════════════════════════════════════════════════════ */

.hero-v2 {
    position       : relative;
    background     : linear-gradient(125deg, #0f1923 0%, #1a2a3a 55%, #0f2538 100%);
    min-height     : 420px;
    display        : flex;
    align-items    : center;
    padding        : 3rem 4.5rem;
    margin-bottom  : 1.5rem;
}

/* Ballon — positionné indépendamment du terrain */
.hero-v2__ball {
    position       : absolute;
    right          : 20%;
    top            : 50%;
    transform      : translateY(-50%);
    width          : 160px;
    height         : 160px;
    pointer-events : none;
    display        : none;
    z-index        : 1;
}
@media (min-width: 768px) {
    .hero-v2__ball { display:block; }
}
.hero-v2__ball svg { width:100%; height:100%; }

/* Terrain SVG — fond horizontal pleine largeur */
.hero-v2__court {
    position       : absolute;
    inset          : 0;
    opacity        : .45;
    pointer-events : none;
    display        : none;
}
@media (min-width: 768px) {
    .hero-v2__court { display:block; }
}
.hero-v2__court svg {
    width  : 100%;
    height : 100%;
    object-fit: cover;
}

/* Contenu texte */
.hero-v2__content {
    position   : relative;
    z-index    : 1;
    max-width  : 560px;
    animation  : heroFadeIn .7s ease both;
}
@keyframes heroFadeIn {
    from { opacity:0; transform:translateY(18px); }
    to   { opacity:1; transform:translateY(0); }
}

/* Badge app */
.hero-v2__badge {
    display        : inline-flex;
    align-items    : center;
    gap            : .3rem;
    font-size      : .72rem;
    font-weight    : 600;
    letter-spacing : .1em;
    text-transform : uppercase;
    color          : #FF6B00;
    background     : rgba(255,107,0,.12);
    border         : 1px solid rgba(255,107,0,.3);
    padding        : .25rem .65rem;
    border-radius  : 20px;
    margin-bottom  : .85rem;
}

/* Titre */
.hero-v2__title {
    font-size   : 2.6rem;
    font-weight : 800;
    color       : #fff;
    line-height : 1.1;
    margin-bottom : .6rem;
    letter-spacing : -.02em;
}
.hero-v2__title-accent { color:#FF6B00; }
@media (max-width: 576px) {
    .hero-v2__title { font-size:1.9rem; }
}

/* Lead */
.hero-v2__lead {
    color       : rgba(255,255,255,.7);
    font-size   : 1.05rem;
    margin-bottom : 1.5rem;
    max-width   : 460px;
}

/* Boutons CTA */
.hero-v2__actions {
    display   : flex;
    flex-wrap : wrap;
    gap       : .6rem;
}
.hero-v2__btn {
    display         : inline-flex;
    align-items     : center;
    padding         : .55rem 1.25rem;
    border-radius   : 10px;
    font-weight     : 600;
    font-size       : .9rem;
    text-decoration : none;
    transition      : transform .18s, box-shadow .18s, background .18s;
    white-space     : nowrap;
}
.hero-v2__btn:hover { transform:translateY(-2px); }

.hero-v2__btn--primary {
    background  : #FF6B00 !important;
    color       : #fff !important;
    box-shadow  : 0 4px 18px rgba(255,107,0,.35);
}
.hero-v2__btn--primary:hover {
    background : #e55e00 !important;
    color      : #fff !important;
    box-shadow : 0 6px 24px rgba(255,107,0,.45);
}
.hero-v2__btn--ghost {
    background : rgba(255,255,255,.12) !important;
    color      : #fff !important;
    border     : 1px solid rgba(255,255,255,.25) !important;
}
.hero-v2__btn--ghost:hover {
    background : rgba(255,255,255,.2) !important;
    color      : #fff !important;
}

/* ═══════════════════════════════════════════════════════════════
   STAT CARDS — compteurs animés
   ═══════════════════════════════════════════════════════════════ */

.stat-card {
    background    : #fff;
    border-radius : 14px;
    border        : 1px solid #e9ecef;
    box-shadow    : 0 2px 10px rgba(0,0,0,.06);
    padding       : 1.25rem 1rem;
    text-align    : center;
    transition    : transform .2s, box-shadow .2s;
    animation     : statCardIn .5s ease both;
    animation-delay : var(--stat-delay, 0ms);
    opacity       : 0;   /* démarre invisible, rempli par l'animation */
}
@keyframes statCardIn {
    from { opacity:0; transform:translateY(20px); }
    to   { opacity:1; transform:translateY(0); }
}
.stat-card:hover {
    transform  : translateY(-3px);
    box-shadow : 0 6px 22px rgba(0,0,0,.1);
}

/* Cercle icône */
.stat-card__icon-wrap {
    width         : 52px;
    height        : 52px;
    border-radius : 50%;
    background    : color-mix(in srgb, var(--stat-accent) 12%, transparent);
    display       : flex;
    align-items   : center;
    justify-content : center;
    margin        : 0 auto .75rem;
    transition    : transform .2s;
}
.stat-card:hover .stat-card__icon-wrap {
    transform : scale(1.1);
}
.stat-card__icon {
    font-size : 1.3rem;
    color     : var(--stat-accent);
}

/* Valeur */
.stat-card__val {
    font-size   : 2rem;
    font-weight : 800;
    color       : #212529;
    line-height : 1;
    margin-bottom : .2rem;
    font-variant-numeric : tabular-nums;
    letter-spacing : -.02em;
}

/* Label */
.stat-card__lbl {
    font-size      : .72rem;
    font-weight    : 600;
    text-transform : uppercase;
    letter-spacing : .07em;
    color          : #6c757d;
}



/* ═══════════════════════════════════════════════════════════════
   GROUP CARDS  (sgroup-*)
   ═══════════════════════════════════════════════════════════════ */

.sgroup-card {
    background    : #fff;
    border-radius : 14px;
    border        : 1px solid #e9ecef;
    box-shadow    : 0 2px 12px rgba(0,0,0,.07);
    overflow      : hidden;
}

/* En-tête avec accent couleur */
.sgroup-card__head {
    display     : flex;
    align-items : center;
    gap         : .9rem;
    padding     : .85rem 1rem;
    background  : color-mix(in srgb, var(--group-accent) 8%, #fff);
    border-bottom : 2px solid color-mix(in srgb, var(--group-accent) 20%, transparent);
}
.sgroup-card__letter {
    width           : 44px;
    height          : 44px;
    border-radius   : 50%;
    background      : var(--group-accent);
    color           : #fff;
    font-size       : 1.2rem;
    font-weight     : 800;
    display         : flex;
    align-items     : center;
    justify-content : center;
    flex-shrink     : 0;
    box-shadow      : 0 3px 10px color-mix(in srgb, var(--group-accent) 35%, transparent);
}
.sgroup-card__title {
    font-weight : 700;
    font-size   : .95rem;
    color       : #212529;
}
.sgroup-card__subtitle {
    font-size : .72rem;
    color     : #6c757d;
    margin-top: .1rem;
}

/* Table classement groupe */
.sgroup-table {
    width      : 100%;
    border-collapse : collapse;
    font-size  : .82rem;
}
.sgroup-table thead th {
    padding        : .5rem .6rem;
    font-size      : .68rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .06em;
    color          : #6c757d;
    background     : #f8f9fa;
    border-bottom  : 1px solid #e9ecef;
    white-space    : nowrap;
}
.sgroup-table__pos { width:38px; text-align:center; }
.sgroup-table__num { width:38px; text-align:center; }
.sgroup-table__pts { width:46px; text-align:center; }

/* Lignes */
.sgroup-row td {
    padding       : .55rem .6rem;
    border-bottom : 1px solid #f5f5f5;
    vertical-align: middle;
}
.sgroup-row:last-child td { border-bottom:none; }

/* Ligne qualifiée */
.sgroup-row--qualified td:first-child {
    border-left : 3px solid var(--row-accent, #198754);
}
.sgroup-row--qualified { background: color-mix(in srgb, var(--row-accent, #198754) 4%, #fff); }

/* Ligne éliminée */
.sgroup-row--out { opacity:.75; }

/* Médailles de rang */
.sgroup-rank {
    display         : inline-flex;
    align-items     : center;
    justify-content : center;
    width           : 22px;
    height          : 22px;
    border-radius   : 50%;
    font-size       : .72rem;
    font-weight     : 700;
}
.sgroup-rank--gold   { background:#fff3cd; color:#856404; border:1px solid #ffc107; }
.sgroup-rank--silver { background:#e9ecef; color:#495057; border:1px solid #adb5bd; }
.sgroup-rank--bronze { background:#f8d7a8; color:#7a4a00; border:1px solid #cd7f32; }
.sgroup-rank--plain  { background:transparent; color:#adb5bd; border:1px solid #dee2e6; }

/* Point couleur équipe */
.sgroup-dot {
    display       : inline-block;
    width         : 10px;
    height        : 10px;
    border-radius : 50%;
    flex-shrink   : 0;
    border        : 1px solid rgba(0,0,0,.1);
}

/* Nom équipe */
.sgroup-team-name {
    font-weight     : 600;
    color           : #212529;
    text-decoration : none;
}
.sgroup-team-name:hover { color:#0d6efd; }

/* Badge qualifié */
.sgroup-q-badge {
    font-size      : .6rem;
    font-weight    : 700;
    background     : #198754;
    color          : #fff;
    padding        : .1rem .3rem;
    border-radius  : 3px;
    letter-spacing : .04em;
}

/* Badge points */
.sgroup-pts-badge {
    display         : inline-flex;
    align-items     : center;
    justify-content : center;
    min-width       : 26px;
    padding         : .15rem .4rem;
    border-radius   : 6px;
    font-weight     : 800;
    font-size       : .85rem;
    background      : color-mix(in srgb, var(--pts-bg, #6c757d) 12%, #fff);
    color           : color-mix(in srgb, var(--pts-bg, #6c757d) 80%, #000);
    border          : 1px solid color-mix(in srgb, var(--pts-bg, #6c757d) 20%, transparent);
}

/* Matchs du groupe */
.sgroup-card__matches {
    border-top  : 1px solid #f0f0f0;
    background  : #fafafa;
}
.sgroup-card__matches-title {
    font-size      : .65rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .08em;
    color          : #6c757d;
    padding        : .5rem .85rem .25rem;
}
.sgroup-match {
    display         : flex;
    justify-content : space-between;
    align-items     : center;
    padding         : .4rem .85rem;
    border-top      : 1px solid #f0f0f0;
    font-size       : .78rem;
    gap             : .5rem;
}
.sgroup-match__team {
    flex          : 1;
    color         : #6c757d;
    white-space   : nowrap;
    overflow      : hidden;
    text-overflow : ellipsis;
    max-width     : 90px;
}
.sgroup-match__team--home { text-align:right; }
.sgroup-match__team--away { text-align:left; }
.sgroup-match__team--win  { font-weight:700; color:#198754; }
.sgroup-match__score {
    display     : flex;
    align-items : center;
    gap         : .25rem;
    font-weight : 700;
    font-size   : .8rem;
    color       : #212529;
    white-space : nowrap;
    min-width   : 70px;
    justify-content : center;
}
.sgroup-match__sep  { color:#adb5bd; font-weight:400; }
.sgroup-match__date { font-size:.72rem; color:#6c757d; font-weight:400; }

/* ═══════════════════════════════════════════════════════════════
   STANDINGS PAGE
   ═══════════════════════════════════════════════════════════════ */

.standings-section-title {
    font-weight    : 700;
    font-size      : 1rem;
    color          : #212529;
    margin-bottom  : 1rem;
    padding-bottom : .5rem;
    border-bottom  : 2px solid #f0f0f0;
}

/* Onglets pill */
.stats-tabs {
    display   : flex;
    flex-wrap : wrap;
    gap       : .5rem;
}
.stats-tab {
    padding        : .45rem 1.1rem;
    border-radius  : 20px;
    border         : 1px solid #dee2e6;
    background     : #fff;
    font-size      : .82rem;
    font-weight    : 600;
    color          : #495057;
    cursor         : pointer;
    transition     : background .18s, color .18s, border-color .18s;
}
.stats-tab:hover,
.stats-tab--active {
    background    : #0f1923;
    color         : #fff;
    border-color  : #0f1923;
}

/* ─── Podium ────────────────────────────────────────────────── */
.podium { align-items:flex-end; }

.podium__card {
    background    : linear-gradient(160deg, #1a2a3a, #0f1923);
    border-radius : 14px;
    padding       : 1.25rem .75rem 1rem;
    text-align    : center;
    position      : relative;
    border        : 1px solid rgba(255,255,255,.08);
    box-shadow    : 0 4px 20px rgba(0,0,0,.15);
    transition    : transform .2s;
}
.podium__card:hover { transform:translateY(-3px); }
.podium__card--first  { min-height:180px; }
.podium__card--second { min-height:155px; opacity:.92; }
.podium__card--third  { min-height:140px; opacity:.85; }

/* Barre colorée en bas du podium */
.podium__card::after {
    content       : '';
    position      : absolute;
    bottom        : 0;
    left          : 0;
    right         : 0;
    height        : 4px;
    background    : var(--podium-color, #ffc107);
    border-radius : 0 0 14px 14px;
}

.podium__medal {
    font-size     : 1.8rem;
    margin-bottom : .3rem;
    line-height   : 1;
}
.podium__rank {
    font-size   : .65rem;
    font-weight : 700;
    letter-spacing : .08em;
    color       : color-mix(in srgb, var(--podium-color, #ffc107) 80%, #fff);
    text-transform : uppercase;
    margin-bottom : .25rem;
}
.podium__name {
    font-size     : .88rem;
    margin-bottom : .15rem;
    line-height   : 1.2;
}
.podium__team {
    font-size  : .7rem;
    color      : rgba(255,255,255,.45);
    margin-bottom : .6rem;
}
.podium__val {
    font-size   : 2rem;
    font-weight : 800;
    color       : var(--podium-color, #ffc107);
    line-height : 1;
    margin-bottom : .15rem;
}
.podium__stat-lbl {
    font-size      : .62rem;
    text-transform : uppercase;
    letter-spacing : .08em;
    color          : rgba(255,255,255,.4);
}

/* ─── Leaderboard lignes 4+ ─────────────────────────────────── */
.leaderboard {
    background    : #fff;
    border-radius : 12px;
    border        : 1px solid #e9ecef;
    overflow      : hidden;
    box-shadow    : 0 2px 10px rgba(0,0,0,.05);
}
.leaderboard__row {
    display     : flex;
    align-items : center;
    gap         : .75rem;
    padding     : .65rem 1rem;
    border-bottom : 1px solid #f5f5f5;
    transition  : background .15s;
}
.leaderboard__row:last-child { border-bottom:none; }
.leaderboard__row:hover      { background:#f8f9fa; }

.leaderboard__rank {
    min-width   : 24px;
    text-align  : center;
    font-size   : .78rem;
    font-weight : 700;
    color       : #adb5bd;
}
.leaderboard__info {
    display       : flex;
    flex-direction: column;
    min-width     : 130px;
    flex-shrink   : 0;
}
.leaderboard__name {
    font-weight : 600;
    font-size   : .85rem;
    color       : #212529;
}
.leaderboard__name:hover { color:#0d6efd; }
.leaderboard__team {
    font-size : .7rem;
    color     : #6c757d;
}
.leaderboard__games {
    font-size  : .72rem;
    color      : #adb5bd;
    white-space: nowrap;
    min-width  : 52px;
    text-align : right;
}
.leaderboard__val {
    min-width   : 36px;
    text-align  : right;
    font-weight : 800;
    font-size   : .9rem;
    color       : #212529;
}



/* ═══════════════════════════════════════════════════════════════
   TOURNAMENT DETAIL PAGE  (td-*)
   ═══════════════════════════════════════════════════════════════ */

/* ── Hero header ──────────────────────────────────────────────── */
.td-hero {
    background    : linear-gradient(125deg, #0f1923 0%, #1a2a3a 60%, #0f2538 100%);
    border-radius : 16px;
    position      : relative;
    overflow      : hidden;
    color         : #fff;
}
.td-hero__bg {
    position       : absolute;
    right          : 0;
    top            : 0;
    bottom         : 0;
    width          : 360px;
    pointer-events : none;
    opacity        : .9;
}
.td-hero__bg svg { height:100%; width:100%; }

.td-hero__body {
    position : relative;
    z-index  : 1;
    display  : flex;
    align-items : flex-start;
    gap      : 1.5rem;
    padding  : 1.75rem 1.75rem 1.5rem;
    flex-wrap: wrap;
}
.td-hero__left { flex:1; min-width:280px; }

/* Badges */
.td-hero__badges { display:flex; flex-wrap:wrap; gap:.4rem; margin-bottom:.75rem; }

.td-status-badge {
    display:inline-flex; align-items:center; gap:.3rem;
    font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em;
    padding:.2rem .55rem; border-radius:20px;
}
.td-status-badge--secondary { background:rgba(108,117,125,.3); color:#ced4da; }
.td-status-badge--primary   { background:rgba(13,110,253,.3);  color:#9ec5fe; }
.td-status-badge--warning   { background:rgba(255,107,0,.3);   color:#ffb347; }
.td-status-badge--success   { background:rgba(25,135,84,.3);   color:#75d4a2; }

.td-pulse {
    display:inline-block; width:6px; height:6px; border-radius:50%;
    background:currentColor; animation:tcardPulse 1.4s ease-in-out infinite;
}
.td-format-badge {
    font-size:.68rem; font-weight:600; padding:.2rem .55rem; border-radius:20px;
    background:rgba(255,193,7,.15); color:#ffc107; border:1px solid rgba(255,193,7,.25);
}
.td-private-badge {
    font-size:.68rem; font-weight:600; padding:.2rem .55rem; border-radius:20px;
    background:rgba(255,255,255,.1); color:rgba(255,255,255,.7);
}
.td-mine-badge {
    font-size:.68rem; font-weight:600; padding:.2rem .55rem; border-radius:20px;
    background:rgba(255,193,7,.2); color:#ffd966;
}

/* Titre */
.td-hero__title {
    font-size:1.9rem; font-weight:800; line-height:1.1;
    margin-bottom:.6rem; letter-spacing:-.02em;
}
@media (max-width:576px) { .td-hero__title { font-size:1.45rem; } }

/* Meta */
.td-hero__meta {
    display:flex; flex-wrap:wrap; gap:.75rem;
    font-size:.78rem; color:rgba(255,255,255,.55); margin-bottom:1.1rem;
}

/* Timeline */
.td-hero__timeline {
    display:flex; align-items:center; gap:0; flex-wrap:nowrap; overflow:hidden;
}
.td-timeline-step { display:flex; flex-direction:column; align-items:center; gap:.25rem; }
.td-timeline-dot {
    width:10px; height:10px; border-radius:50%;
    background:rgba(255,255,255,.2); border:2px solid rgba(255,255,255,.2);
    transition:background .3s;
}
.td-timeline-step--done .td-timeline-dot  { background:#198754; border-color:#198754; }
.td-timeline-step--current .td-timeline-dot {
    background:#FF6B00; border-color:#FF6B00;
    box-shadow:0 0 8px rgba(255,107,0,.6);
}
.td-timeline-lbl {
    font-size:.58rem; color:rgba(255,255,255,.4); text-transform:uppercase;
    letter-spacing:.05em; white-space:nowrap;
}
.td-timeline-step--done .td-timeline-lbl,
.td-timeline-step--current .td-timeline-lbl { color:rgba(255,255,255,.75); }

.td-timeline-line {
    flex:1; height:2px; background:rgba(255,255,255,.12);
    min-width:20px; max-width:60px; margin-bottom:14px;
    transition:background .3s;
}
.td-timeline-line--done { background:#198754; }

/* Stats */
.td-hero__stats {
    display:flex; gap:1.25rem; align-items:center; flex-shrink:0;
    background:rgba(255,255,255,.06); border-radius:12px;
    padding:.85rem 1.1rem; border:1px solid rgba(255,255,255,.08);
    align-self:flex-start;
}
.td-stat { display:flex; flex-direction:column; align-items:center; gap:.1rem; }
.td-stat__val { font-size:1.5rem; font-weight:800; line-height:1; }
.td-stat__lbl {
    font-size:.62rem; text-transform:uppercase; letter-spacing:.06em;
    color:rgba(255,255,255,.45); white-space:nowrap;
}

/* Bouton éditer */
.td-hero__edit-btn {
    display:inline-flex; align-items:center; justify-content:center;
    width:36px; height:36px; border-radius:10px;
    background:rgba(255,255,255,.1); color:rgba(255,255,255,.8);
    text-decoration:none; border:1px solid rgba(255,255,255,.15);
    transition:background .18s; flex-shrink:0; align-self:flex-start;
}
.td-hero__edit-btn:hover { background:rgba(255,255,255,.2); color:#fff; }

/* ── Code d'accès ─────────────────────────────────────────────── */
.td-code-card {
    border-radius:12px; overflow:hidden;
    border:1px solid rgba(255,193,7,.4);
    box-shadow:0 2px 12px rgba(255,193,7,.12);
}
.td-code-card__head {
    display:flex; justify-content:space-between; align-items:center;
    padding:.65rem 1rem; background:#1a1f2e; color:#ffc107;
    font-size:.82rem; font-weight:600;
}
.td-code-card__regen {
    background:transparent; border:1px solid rgba(255,193,7,.4);
    color:#ffc107; padding:.25rem .65rem; border-radius:8px; font-size:.75rem;
    cursor:pointer; transition:background .18s;
}
.td-code-card__regen:hover { background:rgba(255,193,7,.15); }
.td-code-card__body {
    display:flex; align-items:center; gap:1rem; padding:.85rem 1rem;
    background:#fff; flex-wrap:wrap;
}
.td-code-card__code {
    font-family:'Courier New',monospace; font-size:1.8rem; font-weight:800;
    letter-spacing:.4em; color:#FF6B00; user-select:all;
}
.td-code-card__copy {
    display:inline-flex; align-items:center; padding:.3rem .75rem;
    border-radius:8px; border:1px solid #dee2e6; background:#f8f9fa;
    font-size:.78rem; font-weight:600; cursor:pointer; transition:all .18s;
    color:#495057;
}
.td-code-card__copy:hover { border-color:#FF6B00; color:#FF6B00; }
.td-code-card__hint { font-size:.72rem; color:#6c757d; }

/* ── Barre d'actions ──────────────────────────────────────────── */
.td-actions {
    display:flex; flex-wrap:wrap; align-items:center; gap:.75rem;
    background:#fff; border-radius:14px; padding:1rem 1.1rem;
    border:1px solid #e9ecef; box-shadow:0 2px 10px rgba(0,0,0,.05);
}

/* Action principale */
.td-action-primary {
    display:inline-flex; align-items:center;
    padding:.55rem 1.25rem; border-radius:10px; border:none;
    background:#198754; color:#fff; font-weight:700; font-size:.88rem;
    cursor:pointer; transition:background .18s, transform .15s;
    box-shadow:0 3px 12px rgba(25,135,84,.3);
}
.td-action-primary:hover { background:#146c43; transform:translateY(-1px); }
.td-action-primary--orange { background:#FF6B00; box-shadow:0 3px 12px rgba(255,107,0,.3); }
.td-action-primary--orange:hover { background:#e55e00; }

/* Navigation */
.td-actions__nav { display:flex; flex-wrap:wrap; gap:.5rem; }

.td-nav-btn {
    display:inline-flex; align-items:center; gap:.4rem;
    padding:.42rem .85rem; border-radius:9px;
    border:1px solid #dee2e6; background:#fff;
    color:#495057; text-decoration:none; font-size:.82rem; font-weight:600;
    transition:border-color .18s, color .18s, background .18s;
}
.td-nav-btn:hover { border-color:#0d6efd; color:#0d6efd; background:#f0f5ff; }
.td-nav-btn--highlight {
    border-color:#ffc107; color:#856404; background:#fff8e1;
}
.td-nav-btn--highlight:hover { border-color:#fd7e14; color:#7a4000; background:#fff3cd; }

/* Bouton supprimer */
.td-delete-btn {
    display:inline-flex; align-items:center; justify-content:center;
    width:36px; height:36px; border-radius:9px;
    border:1px solid #f8d7da; background:#fff5f5; color:#dc3545;
    cursor:pointer; font-size:.9rem; transition:all .18s;
}
.td-delete-btn:hover { background:#dc3545; color:#fff; border-color:#dc3545; }

/* ── Panneaux équipes / matchs ────────────────────────────────── */
.td-panel {
    background:white; border-radius:14px;
    border:1px solid #e9ecef; box-shadow:0 2px 10px rgba(0,0,0,.05);
    overflow:hidden; display:flex; flex-direction:column;
}
.td-panel__head {
    display:flex; justify-content:space-between; align-items:center;
    padding:.75rem 1rem; background:#fafafa;
    border-bottom:1px solid #f0f0f0;
}
.td-panel__title {
    font-weight:700; font-size:.88rem; color:#212529;
    display:flex; align-items:center; gap:.4rem;
}
.td-panel__count {
    display:inline-flex; align-items:center; justify-content:center;
    background:#0d6efd; color:#fff; border-radius:20px;
    font-size:.7rem; font-weight:700; padding:.1rem .45rem;
}
.td-panel__add-btn {
    display:inline-flex; align-items:center; justify-content:center;
    width:28px; height:28px; border-radius:8px;
    background:#FF6B00; color:#fff; text-decoration:none; font-size:.85rem;
    transition:background .18s;
}
.td-panel__add-btn:hover { background:#e55e00; color:#fff; }

.td-empty {
    display:flex; flex-direction:column; align-items:center;
    justify-content:center; padding:2rem; color:#adb5bd; text-align:center;
    flex:1;
}

/* Équipes */
.td-team-list { overflow-y:auto; max-height:600px; }
.td-team-row {
    display:flex; align-items:center; gap:.6rem;
    padding:.55rem 1rem; border-bottom:1px solid #f5f5f5;
    text-decoration:none; color:#212529;
    transition:background .15s;
}
.td-team-row:last-child { border-bottom:none; }
.td-team-row:hover { background:#f8f9fa; }
.td-team-row__dot {
    width:11px; height:11px; border-radius:50%; flex-shrink:0;
    border:1px solid rgba(0,0,0,.1);
}
.td-team-row__name { font-weight:600; font-size:.85rem; flex:1; }
.td-team-row__city { font-size:.72rem; color:#adb5bd; }
.td-team-row__count {
    font-size:.72rem; color:#6c757d; flex-shrink:0;
    display:flex; align-items:center; gap:.2rem;
}

/* Matchs à venir */
.td-match { padding:.7rem 1rem; border-bottom:1px solid #f5f5f5; }
.td-match:last-of-type { border-bottom:none; }
.td-match__meta {
    display:flex; align-items:center; gap:.5rem; margin-bottom:.3rem;
}
.td-match__date { font-size:.72rem; color:#6c757d; font-weight:600; }
.td-match__phase { font-size:.68rem; color:#adb5bd; }
.td-match__status {
    font-size:.65rem; font-weight:700; text-transform:uppercase;
    padding:.1rem .35rem; border-radius:4px;
    letter-spacing:.04em; margin-left:auto;
}
.td-match__status--secondary { background:#e9ecef; color:#6c757d; }
.td-match__status--warning   { background:#fff3cd; color:#7a4a00; }
.td-match__status--primary   { background:#cfe2ff; color:#084298; }

.td-match__row {
    display:flex; align-items:center; gap:.5rem;
}
.td-match__team {
    flex:1; font-weight:600; font-size:.85rem; color:#212529;
}
.td-match__team--right { text-align:right; }
.td-match__vs { font-size:.72rem; color:#adb5bd; flex-shrink:0; }
.td-match__score-btn {
    display:inline-flex; align-items:center; padding:.25rem .6rem;
    border-radius:7px; border:1px solid #198754; color:#198754;
    font-size:.72rem; font-weight:600; text-decoration:none;
    transition:all .18s; flex-shrink:0;
}
.td-match__score-btn:hover { background:#198754; color:#fff; }

/* Label section résultats */
.td-match-section-label {
    padding:.4rem 1rem .25rem; font-size:.65rem; font-weight:700;
    text-transform:uppercase; letter-spacing:.08em; color:#6c757d;
    background:#f8f9fa; border-top:1px solid #f0f0f0;
    border-bottom:1px solid #f0f0f0;
}

/* Résultats terminés */
.td-result {
    display       : grid;
    grid-template-columns : 1fr auto 1fr auto;
    align-items   : center;
    gap           : .5rem;
    padding       : .55rem 1rem;
    border-bottom : 1px solid #f5f5f5;
    font-size     : .83rem;
}
.td-result:last-child { border-bottom:none; }
.td-result__team {
    font-weight   : 600;
    color         : #adb5bd;
    overflow      : hidden;
    text-overflow : ellipsis;
    white-space   : nowrap;
}
.td-result__team--right { text-align:right; }
.td-result__team--win   { color:#212529; }
.td-result__team--loss  { color:#ced4da; }
.td-result__score {
    display         : flex;
    align-items     : center;
    gap             : .3rem;
    font-weight     : 800;
    font-size       : .9rem;
    color           : #212529;
    background      : #f8f9fa;
    padding         : .15rem .6rem;
    border-radius   : 8px;
    width           : 76px;          /* largeur fixe → score toujours centré */
    justify-content : center;
    flex-shrink     : 0;
}
.td-result__sep { color:#ced4da; font-weight:400; }
.td-result__num--win { color:#198754; }
.td-result__phase {
    font-size   : .65rem;
    color       : #adb5bd;
    flex-shrink : 0;
    width       : 58px;              /* largeur fixe → colonne stable */
    text-align  : right;
    white-space : nowrap;
    overflow    : hidden;
    text-overflow: ellipsis;
}



/* ═══════════════════════════════════════════════════════════════
   FORM DESIGN SYSTEM  (fcard, fstep, fradio)
   ═══════════════════════════════════════════════════════════════ */

/* ── Conteneur formulaire ─────────────────────────────────────── */
.fcard {
    background    : #fff;
    border-radius : 16px;
    box-shadow    : 0 4px 24px rgba(0,0,0,.08);
    border        : 1px solid #e9ecef;
    overflow      : hidden;
}

/* En-tête */
.fcard__header {
    padding     : 1.25rem 1.5rem;
    border-bottom : 2px solid var(--fcard-accent, #FF6B00);
    display     : flex;
    align-items : center;
    gap         : .75rem;
    background  : color-mix(in srgb, var(--fcard-accent, #FF6B00) 4%, #fff);
}
.fcard__header-icon {
    width           : 40px;
    height          : 40px;
    border-radius   : 10px;
    background      : color-mix(in srgb, var(--fcard-accent, #FF6B00) 15%, #fff);
    color           : var(--fcard-accent, #FF6B00);
    display         : flex;
    align-items     : center;
    justify-content : center;
    font-size       : 1.1rem;
    flex-shrink     : 0;
}
.fcard__header-title {
    font-size   : 1.05rem;
    font-weight : 800;
    color       : #212529;
    margin      : 0;
}
.fcard__header-sub {
    font-size : .75rem;
    color     : #6c757d;
    margin-top: .1rem;
}

/* Corps */
.fcard__body { padding:1.5rem; }

/* ── Sections numérotées ──────────────────────────────────────── */
.fstep {
    margin-bottom : 1.75rem;
    padding-bottom: 1.75rem;
    border-bottom : 1px solid #f0f0f0;
}
.fstep:last-of-type { margin-bottom:0; padding-bottom:0; border-bottom:none; }

.fstep__head {
    display     : flex;
    align-items : center;
    gap         : .65rem;
    margin-bottom : .9rem;
}
.fstep__num {
    width           : 26px;
    height          : 26px;
    border-radius   : 50%;
    background      : var(--fcard-accent, #FF6B00);
    color           : #fff;
    font-size       : .72rem;
    font-weight     : 800;
    display         : flex;
    align-items     : center;
    justify-content : center;
    flex-shrink     : 0;
}
.fstep__title {
    font-size   : .85rem;
    font-weight : 700;
    color       : #212529;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.fstep__subtitle {
    font-size : .72rem;
    color     : #6c757d;
    margin-top: .1rem;
}

/* ── Radio cards ──────────────────────────────────────────────── */
.fradio-group { display:flex; flex-wrap:wrap; gap:.75rem; }

.fradio-card {
    flex        : 1;
    min-width   : 140px;
    position    : relative;
}
.fradio-card input[type="radio"] {
    position : absolute;
    opacity  : 0;
    width    : 0;
    height   : 0;
}
.fradio-card__label {
    display       : flex;
    flex-direction: column;
    gap           : .4rem;
    padding       : .85rem 1rem;
    border-radius : 12px;
    border        : 2px solid #e9ecef;
    background    : #fff;
    cursor        : pointer;
    transition    : border-color .18s, background .18s, box-shadow .18s;
    height        : 100%;
}
.fradio-card__label:hover {
    border-color : color-mix(in srgb, var(--fcard-accent, #FF6B00) 40%, #dee2e6);
    background   : color-mix(in srgb, var(--fcard-accent, #FF6B00) 3%, #fff);
}
.fradio-card input:checked + .fradio-card__label {
    border-color : var(--fcard-accent, #FF6B00);
    background   : color-mix(in srgb, var(--fcard-accent, #FF6B00) 6%, #fff);
    box-shadow   : 0 0 0 3px color-mix(in srgb, var(--fcard-accent, #FF6B00) 15%, transparent);
}
.fradio-card__icon {
    font-size : 1.4rem;
    line-height: 1;
}
.fradio-card__title {
    font-size  : .85rem;
    font-weight: 700;
    color      : #212529;
}
.fradio-card__desc {
    font-size : .72rem;
    color     : #6c757d;
    line-height: 1.4;
}
/* Check indicator */
.fradio-card__label::after {
    content       : '';
    position      : absolute;
    top           : .6rem;
    right         : .6rem;
    width         : 16px;
    height        : 16px;
    border-radius : 50%;
    border        : 2px solid #dee2e6;
    background    : #fff;
    transition    : all .18s;
}
.fradio-card { position:relative; }
.fradio-card input:checked ~ .fradio-card__label::after {
    background   : var(--fcard-accent, #FF6B00);
    border-color : var(--fcard-accent, #FF6B00);
    box-shadow   : inset 0 0 0 3px #fff;
}

/* ── Champs de formulaire ─────────────────────────────────────── */
.fcard .form-control,
.fcard .form-select {
    border-radius : 9px;
    border        : 1.5px solid #dee2e6;
    padding       : .5rem .75rem;
    font-size     : .88rem;
    transition    : border-color .18s, box-shadow .18s;
}
.fcard .form-control:focus,
.fcard .form-select:focus {
    border-color : var(--fcard-accent, #FF6B00);
    box-shadow   : 0 0 0 3px color-mix(in srgb, var(--fcard-accent, #FF6B00) 15%, transparent);
    outline      : none;
}
.fcard .form-label {
    font-size  : .78rem;
    font-weight: 700;
    color      : #495057;
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: .35rem;
}

/* Number stepper */
.fnum-wrap {
    display     : flex;
    align-items : stretch;
    border      : 1.5px solid #dee2e6;
    border-radius: 9px;
    overflow    : hidden;
}
.fnum-wrap input[type="number"] {
    border  : none !important;
    box-shadow: none !important;
    text-align: center;
    font-weight: 700;
    font-size: 1rem;
    width   : 100%;
    color   : var(--text-primary, #e8edf2) !important;
    background: var(--bg-raised, #1e3448) !important;
    -moz-appearance: textfield;
}
.fnum-wrap input[type="number"]::-webkit-outer-spin-button,
.fnum-wrap input[type="number"]::-webkit-inner-spin-button { -webkit-appearance:none; }
.fnum-btn {
    width       : 36px;
    background  : #f8f9fa;
    border      : none;
    color       : #495057;
    font-size   : 1rem;
    font-weight : 700;
    cursor      : pointer;
    flex-shrink : 0;
    transition  : background .15s;
}
.fnum-btn:hover { background:#e9ecef; color:var(--fcard-accent, #FF6B00); }

/* Switch toggle */
.fcard .form-check-input {
    width  : 2.4em;
    height : 1.25em;
}
.fcard .form-check-input:checked { background-color:var(--fcard-accent, #FF6B00); border-color:var(--fcard-accent, #FF6B00); }

/* ── Boutons submit ────────────────────────────────────────────── */
.fcard__footer {
    display     : flex;
    gap         : .75rem;
    align-items : center;
    padding-top : 1.25rem;
    margin-top  : .25rem;
    border-top  : 1px solid #f0f0f0;
}
.fcard__submit {
    display      : inline-flex;
    align-items  : center;
    gap          : .4rem;
    padding      : .6rem 1.75rem;
    border-radius: 10px;
    border       : none;
    background   : var(--fcard-accent, #FF6B00);
    color        : #fff;
    font-weight  : 700;
    font-size    : .9rem;
    cursor       : pointer;
    transition   : background .18s, transform .15s;
    box-shadow   : 0 3px 12px color-mix(in srgb, var(--fcard-accent, #FF6B00) 30%, transparent);
}
.fcard__submit:hover { filter:brightness(.92); transform:translateY(-1px); }
.fcard__cancel {
    display      : inline-flex;
    align-items  : center;
    gap          : .4rem;
    padding      : .6rem 1.25rem;
    border-radius: 10px;
    border       : 1.5px solid #dee2e6;
    background   : #fff;
    color        : #6c757d;
    font-weight  : 600;
    font-size    : .88rem;
    text-decoration: none;
    transition   : border-color .18s, color .18s;
}
.fcard__cancel:hover { border-color:#adb5bd; color:#495057; }

/* Info box */
.finfo-box {
    display     : flex;
    gap         : .6rem;
    align-items : flex-start;
    padding     : .7rem .9rem;
    border-radius: 10px;
    background  : color-mix(in srgb, var(--fcard-accent, #FF6B00) 8%, #fff);
    border      : 1px solid color-mix(in srgb, var(--fcard-accent, #FF6B00) 20%, transparent);
    font-size   : .78rem;
    color       : #495057;
    margin-top  : .5rem;
}
.finfo-box i { color:var(--fcard-accent, #FF6B00); flex-shrink:0; margin-top:.1rem; }

/* Color preview */
.fcolor-wrap {
    display     : flex;
    align-items : center;
    gap         : .6rem;
}
.fcolor-preview {
    width        : 36px;
    height       : 36px;
    border-radius: 50%;
    border       : 2px solid #dee2e6;
    flex-shrink  : 0;
    transition   : background .1s;
}
.fcolor-wrap input[type="color"] {
    width  : 48px;
    height : 38px;
    padding: 2px;
    border-radius: 9px;
    cursor : pointer;
}



/* ═══════════════════════════════════════════════════════════════
   PLAYER PROFILE  (pcard, pstats, pgamelog)
   ═══════════════════════════════════════════════════════════════ */

/* ── Carte joueur ─────────────────────────────────────────────── */
.pcard {
    background    : #fff;
    border-radius : 16px;
    box-shadow    : 0 4px 20px rgba(0,0,0,.1);
    border        : 1px solid #e9ecef;
    overflow      : hidden;
}

/* Hero avec couleur équipe */
.pcard__hero {
    position   : relative;
    padding    : 2rem 1.25rem 1.5rem;
    background : linear-gradient(
        145deg,
        var(--pcard-color, #1a2a3a),
        color-mix(in srgb, var(--pcard-color, #1a2a3a) 70%, #000)
    );
    overflow   : hidden;
}

/* Numéro en watermark */
.pcard__number-bg {
    position    : absolute;
    right       : -10px;
    bottom      : -15px;
    font-size   : 9rem;
    font-weight : 900;
    color       : rgba(255,255,255,.08);
    line-height : 1;
    user-select : none;
    letter-spacing: -.05em;
}

.pcard__hero-content { position:relative; z-index:1; }

.pcard__jersey {
    display        : inline-block;
    font-size      : .72rem;
    font-weight    : 700;
    letter-spacing : .1em;
    text-transform : uppercase;
    color          : rgba(255,255,255,.6);
    margin-bottom  : .3rem;
}
.pcard__name {
    font-size   : 1.5rem;
    font-weight : 800;
    color       : #fff;
    margin      : 0 0 .5rem;
    line-height : 1.15;
}
.pcard__position {
    display        : inline-block;
    background     : rgba(255,255,255,.15);
    color          : rgba(255,255,255,.9);
    font-size      : .72rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .08em;
    padding        : .25rem .7rem;
    border-radius  : 20px;
    border         : 1px solid rgba(255,255,255,.2);
}

/* Boutons d'action */
.pcard__actions {
    position : absolute;
    top      : .75rem;
    right    : .75rem;
    display  : flex;
    gap      : .35rem;
    z-index  : 2;
}
.pcard__action-btn {
    display         : inline-flex;
    align-items     : center;
    justify-content : center;
    width           : 30px;
    height          : 30px;
    border-radius   : 8px;
    background      : rgba(255,255,255,.15);
    color           : rgba(255,255,255,.9);
    border          : 1px solid rgba(255,255,255,.2);
    font-size       : .8rem;
    cursor          : pointer;
    text-decoration : none;
    transition      : background .18s;
}
.pcard__action-btn:hover { background:rgba(255,255,255,.3); color:#fff; }
.pcard__action-btn--danger:hover { background:rgba(220,53,69,.7); }

/* Infos physiques */
.pcard__physical {
    display         : flex;
    align-items     : center;
    padding         : .9rem 1.25rem;
    border-bottom   : 1px solid #f0f0f0;
    background      : #fafafa;
}
.pcard__phys-item {
    flex            : 1;
    display         : flex;
    flex-direction  : column;
    align-items     : center;
    gap             : .1rem;
}
.pcard__phys-val {
    font-size   : 1.1rem;
    font-weight : 800;
    color       : #212529;
    line-height : 1;
}
.pcard__phys-lbl {
    font-size      : .62rem;
    text-transform : uppercase;
    letter-spacing : .06em;
    color          : #adb5bd;
}
.pcard__phys-div {
    width      : 1px;
    height     : 32px;
    background : #e9ecef;
    flex-shrink: 0;
}

/* Équipe */
.pcard__team {
    display     : flex;
    align-items : center;
    gap         : .75rem;
    padding     : .9rem 1.25rem;
}
.pcard__team-dot {
    width        : 14px;
    height       : 14px;
    border-radius: 50%;
    flex-shrink  : 0;
    border       : 2px solid rgba(0,0,0,.1);
}
.pcard__team-name {
    font-weight     : 700;
    font-size       : .9rem;
    color           : #212529;
    text-decoration : none;
}
.pcard__team-name:hover { color:#0d6efd; }
.pcard__tournament {
    font-size : .72rem;
    color     : #adb5bd;
    margin-top: .1rem;
}

/* ── Grille de stats ──────────────────────────────────────────── */
.pstats {
    display               : grid;
    grid-template-columns : repeat(3, 1fr);
    gap                   : .75rem;
}
@media (max-width:576px) {
    .pstats { grid-template-columns: repeat(2, 1fr); }
}

.pstat {
    background    : #fff;
    border-radius : 12px;
    border        : 1px solid #e9ecef;
    padding       : .9rem .75rem;
    display       : flex;
    flex-direction: column;
    align-items   : center;
    gap           : .2rem;
    box-shadow    : 0 1px 6px rgba(0,0,0,.05);
    transition    : transform .2s, box-shadow .2s;
}
.pstat:hover { transform:translateY(-2px); box-shadow:0 4px 14px rgba(0,0,0,.09); }

.pstat__icon {
    font-size     : 1rem;
    margin-bottom : .15rem;
}
.pstat__val {
    font-size   : 1.6rem;
    font-weight : 800;
    color       : #212529;
    line-height : 1;
}
.pstat__lbl {
    font-size      : .62rem;
    text-transform : uppercase;
    letter-spacing : .06em;
    color          : #adb5bd;
    text-align     : center;
}

/* ── Game log ─────────────────────────────────────────────────── */
.pgamelog {
    background    : #fff;
    border-radius : 14px;
    border        : 1px solid #e9ecef;
    box-shadow    : 0 2px 10px rgba(0,0,0,.05);
    overflow      : hidden;
}
.pgamelog__head {
    padding        : .75rem 1rem;
    font-size      : .82rem;
    font-weight    : 700;
    color          : #212529;
    background     : #fafafa;
    border-bottom  : 1px solid #f0f0f0;
}

.pgamelog__table {
    width            : 100%;
    border-collapse  : collapse;
    font-size        : .82rem;
}
.pgamelog__table thead th {
    padding        : .5rem .75rem;
    font-size      : .65rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .06em;
    color          : #6c757d;
    background     : #f8f9fa;
    border-bottom  : 1px solid #e9ecef;
    white-space    : nowrap;
}
.pgamelog__table tbody tr td {
    padding       : .55rem .75rem;
    border-bottom : 1px solid #f5f5f5;
    vertical-align: middle;
}
.pgamelog__table tbody tr:last-child td { border-bottom:none; }
.pgamelog__table tbody tr:hover { background:#f8f9fa; }

/* Meilleure perf mise en valeur */
.pgamelog__row--best { background:linear-gradient(90deg, #fff8e1, #fff) !important; }
.pgamelog__row--best:hover { background:linear-gradient(90deg, #fff3cd, #fff8f0) !important; }

/* Nom du match */
.pgamelog__match-names {
    display     : flex;
    align-items : center;
    gap         : .3rem;
    font-weight : 600;
    color       : #212529;
    flex-wrap   : wrap;
}
.pgamelog__vs {
    font-size   : .68rem;
    color       : #adb5bd;
    font-weight : 400;
}
.pgamelog__match-date {
    font-size : .68rem;
    color     : #adb5bd;
    margin-top: .1rem;
}

/* Points */
.pgamelog__pts {
    font-weight : 800;
    font-size   : .95rem;
    color       : #212529;
}
.pgamelog__pts--best {
    color            : #856404;
    background       : #fff3cd;
    padding          : .1rem .4rem;
    border-radius    : 6px;
}

/* Autres chiffres */
.pgamelog__num { color:#495057; }



/* ═══════════════════════════════════════════════════════════════
   RESPONSIVE MOBILE  (≤ 576px)
   ═══════════════════════════════════════════════════════════════ */

@media (max-width: 576px) {

    /* ── Compteurs home — masqués sur mobile ──────────────────── */
    .stats-row { display: none !important; }

    /* ── Hero home ────────────────────────────────────────────── */
    .hero-v2 { padding: 1.75rem 1.25rem; min-height: auto; }
    .hero-v2__title { font-size: 1.7rem; }
    .hero-v2__lead  { font-size: .9rem; margin-bottom: 1rem; }
    .hero-v2__actions { gap: .4rem; }
    .hero-v2__btn { padding: .45rem .9rem; font-size: .82rem; }

    /* ── Hero détail tournoi ──────────────────────────────────── */
    .td-hero__body {
        flex-direction : column;
        padding        : 1.25rem;
        gap            : 1rem;
    }
    .td-hero__stats {
        width          : 100%;
        justify-content: space-around;
    }
    .td-hero__left { min-width: 0; }
    .td-hero__title { font-size: 1.4rem; }
    .td-hero__timeline { overflow-x: auto; padding-bottom: .25rem; }
    .td-timeline-lbl { display: none; } /* trop petit sur mobile */

    /* ── Barre d'actions tournoi ──────────────────────────────── */
    .td-actions { gap: .5rem; flex-wrap: wrap; }
    .td-actions__nav { width: 100%; }
    .td-nav-btn span { display: none; }    /* icône seule sur mobile */
    .td-nav-btn { padding: .42rem .6rem; }
    .td-action-primary { width: 100%; justify-content: center; }

    /* ── Cartes tournois ──────────────────────────────────────── */
    .tcard__stats { padding: .4rem 0; }
    .tcard__stat-val { font-size: .95rem; }

    /* ── Bracket ──────────────────────────────────────────────── */
    .bracket-scroll { padding: .5rem; }
    .bracket-round { min-width: 155px; padding: 0 18px; }
    .bracket-team { padding: .35rem .5rem; font-size: .75rem; }
    .bracket-team-name { max-width: 85px; }

    /* ── Tableaux de groupe ───────────────────────────────────── */
    .sgroup-table { font-size: .75rem; }
    .sgroup-table thead th { padding: .35rem .4rem; }
    .sgroup-row td { padding: .4rem .4rem; }
    /* Masquer PF/PC sur mobile, garder l'essentiel */
    .sgroup-table th:nth-child(6),
    .sgroup-table td:nth-child(6),
    .sgroup-table th:nth-child(7),
    .sgroup-table td:nth-child(7) { display: none; }

    /* ── Podium standings ─────────────────────────────────────── */
    .podium__card--first  { min-height: 145px; }
    .podium__card--second { min-height: 120px; }
    .podium__card--third  { min-height: 110px; }
    .podium__val { font-size: 1.4rem; }
    .podium__name { font-size: .78rem; }
    .podium__team { display: none; }

    /* ── Grille stats joueur ──────────────────────────────────── */
    .pstats { grid-template-columns: repeat(3, 1fr); gap: .5rem; }
    .pstat { padding: .65rem .4rem; }
    .pstat__val { font-size: 1.2rem; }

    /* ── Formulaires ──────────────────────────────────────────── */
    .fcard__body { padding: 1rem; }
    .fradio-group { flex-direction: column; }
    .fcard__header { padding: 1rem; }
    .fcard__footer { flex-wrap: wrap; }
    .fcard__submit { width: 100%; justify-content: center; }
    .fcard__cancel { width: 100%; justify-content: center; }
    .fnum-wrap input[type="number"] { font-size: .9rem; }

    /* ── Game log joueur ──────────────────────────────────────── */
    .pgamelog__table th:nth-child(4),
    .pgamelog__table td:nth-child(4),
    .pgamelog__table th:nth-child(5),
    .pgamelog__table td:nth-child(5) { display: none; }

    /* ── Navigation navbar ────────────────────────────────────── */
    .navbar-brand { font-size: .95rem; }

    /* ── Panneaux détail tournoi ──────────────────────────────── */
    .td-team-list { max-height: 400px; }
    .td-result__phase { display: none; }
}

/* ── Tablette (577–768px) ─────────────────────────────────────── */
@media (min-width: 577px) and (max-width: 768px) {

    .hero-v2 { padding: 2rem 1.5rem; }
    .td-hero__body { flex-wrap: wrap; }
    .td-hero__stats { width: 100%; justify-content: space-around; }
    .td-actions__nav .td-nav-btn span { display: none; }
    .td-nav-btn { padding: .42rem .6rem; }
    .pstats { grid-template-columns: repeat(3, 1fr); }
}



/* ═══════════════════════════════════════════════════════════════
   DARK THEME — overrides composants custom
   ═══════════════════════════════════════════════════════════════ */

/* ── Global utility overrides ─────────────────────────────────── */
.bg-light    { background-color: var(--bg-raised)   !important; }
.bg-white    { background-color: var(--bg-surface)  !important; }
.text-muted  { color: var(--text-muted) !important; }
.text-dark   { color: var(--text-primary) !important; }
.border      { border-color: var(--border) !important; }
.border-top, .border-bottom { border-color: var(--border) !important; }

/* Inputs et selects */
.form-control, .form-select {
    background-color : var(--bg-raised);
    border-color     : var(--border);
    color            : var(--text-primary);
}
.form-control:focus, .form-select:focus {
    background-color : var(--bg-hover);
    border-color     : var(--accent);
    color            : var(--text-primary);
    box-shadow       : 0 0 0 3px rgba(255,107,0,.2);
}
.form-control::placeholder { color: var(--text-faint); }
.form-control-color { min-width: 48px; }
.form-text { color: var(--text-muted); }
.input-group-text {
    background-color : var(--bg-raised);
    border-color     : var(--border);
    color            : var(--text-muted);
}

/* Alerts */
.alert-info    { background:#0d2a3a; border-color:#0d4a6a; color:#7dd3f8; }
.alert-danger  { background:#2a1118; border-color:#6a1225; color:#f87d96; }
.alert-success { background:#0d2a1a; border-color:#0d5a2a; color:#7df8a8; }
.alert-warning { background:#2a1a00; border-color:#5a3a00; color:#f8c97d; }
.alert-dark    { background:#1a2a3a; border-color:#2a3a4a; color:#b0c8df; }

/* Dropdowns */
.dropdown-menu {
    background-color : var(--bg-surface);
    border-color     : var(--border);
}
.dropdown-item { color: var(--text-primary); }
.dropdown-item:hover { background-color: var(--bg-hover); color: var(--text-primary); }
.dropdown-header { color: var(--text-muted); }
.dropdown-divider { border-color: var(--border); }

/* Modal */
.modal-content  { background-color: var(--bg-surface); border-color: var(--border); }
.modal-header   { border-color: var(--border); }
.modal-footer   { border-color: var(--border); }
.btn-close-white { filter: invert(1); }

/* Nav tabs */
.nav-tabs { border-color: var(--border); }
.nav-tabs .nav-link { color: var(--text-muted); }
.nav-tabs .nav-link:hover { border-color: var(--border); color: var(--text-primary); }
.nav-tabs .nav-link.active { background:var(--bg-surface); border-color:var(--border); color:var(--text-primary); }

/* ── Bracket ──────────────────────────────────────────────────── */
.bracket-scroll { background: var(--bg-surface); border-color: var(--border); }
.bracket-match  { background: var(--bg-raised); border-color: var(--border); }
.bracket-match:hover { border-color: var(--accent); }
.bracket-match.completed { border-color: #198754; }
.bracket-team   { color: var(--text-primary); border-bottom-color: var(--border-light); }
.bracket-team.loser { color: var(--text-faint); }
.bracket-team.winner { background: linear-gradient(90deg, rgba(25,135,84,.2), rgba(25,135,84,.05)); color: #75d4a2; }
.bracket-mode-label { background: var(--bg-base); border-color: var(--border-light); color: var(--text-muted); }
.bracket-round-title { color: var(--text-muted); }
.bracket-tbd { border-color: var(--border-light); }

/* ── Tournament cards (tcard) ─────────────────────────────────── */
.tcard {
    background   : var(--bg-surface);
    border-color : var(--border);
    box-shadow   : 0 2px 12px rgba(0,0,0,.3);
}
.tcard:hover { box-shadow: 0 8px 28px rgba(0,0,0,.45); }
.tcard__head { border-color: var(--border-light); }
.tcard__name { color: var(--text-primary); }
.tcard__body { background: var(--bg-surface); }
.tcard__stats { background: var(--bg-raised); }
.tcard__stat-div { background: var(--border); }
.tcard__stat-val { color: var(--text-primary); }
.tcard__stat-lbl { color: var(--text-muted); }
.tcard__meta { color: var(--text-muted); }
.tcard__footer { background: var(--bg-raised); border-color: var(--border-light); }
.tcard__progress-track { background: var(--border); }
.tcard__btn-icon { background: var(--bg-surface); border-color: var(--border); color: var(--text-muted); }
.tcard__btn-icon:hover { border-color: #0d6efd; color: #0d6efd; }
.tcard--mine { box-shadow: 0 2px 12px rgba(255,107,0,.2); }

/* ── Stat cards (homepage) ────────────────────────────────────── */
.stat-card {
    background   : var(--bg-surface);
    border-color : var(--border);
    box-shadow   : 0 2px 10px rgba(0,0,0,.3);
}
.stat-card:hover { box-shadow: 0 6px 22px rgba(0,0,0,.4); }
.stat-card__val { color: var(--text-primary); }
.stat-card__lbl { color: var(--text-muted); }

/* ── Group cards (sgroup) ─────────────────────────────────────── */
.sgroup-card { background: var(--bg-surface); border-color: var(--border); }
.sgroup-table thead th { background: var(--bg-base); color: var(--text-muted); border-color: var(--border); }
.sgroup-row td { border-color: var(--border-light); color: var(--text-primary); }
.sgroup-row--qualified { background: rgba(25,135,84,.08) !important; }
.sgroup-row--out { opacity: .65; }
.sgroup-team-name { color: var(--text-primary); }
.sgroup-match { border-color: var(--border-light); }
.sgroup-match__team { color: var(--text-muted); }
.sgroup-match__team--win { color: #75d4a2; font-weight: 700; }
.sgroup-match__score { color: var(--text-primary); }
.sgroup-match__date { color: var(--text-faint); }
.sgroup-card__matches { background: var(--bg-base); border-color: var(--border); }
.sgroup-card__matches-title { color: var(--text-muted); }

/* ── Standings ────────────────────────────────────────────────── */
.standings-section-title { color: var(--text-primary); border-color: var(--border); }
.stats-tab { background: var(--bg-surface); border-color: var(--border); color: var(--text-muted); }
.stats-tab:hover, .stats-tab--active { background: var(--accent); border-color: var(--accent); color: #fff; }

.podium__card { border-color: rgba(255,255,255,.06); }
.leaderboard { background: var(--bg-surface); border-color: var(--border); }
.leaderboard__row { border-color: var(--border-light); }
.leaderboard__row:hover { background: var(--bg-hover); }
.leaderboard__rank { color: var(--text-faint); }
.leaderboard__name { color: var(--text-primary); }
.leaderboard__team { color: var(--text-muted); }
.leaderboard__val { color: var(--text-primary); }
.leaderboard__bar-wrap { background: var(--border); }

/* ── Tournament detail panels (td-panel) ──────────────────────── */
.td-panel { background: var(--bg-surface); border-color: var(--border); }
.td-panel__head { background: var(--bg-raised); border-color: var(--border-light); }
.td-panel__title { color: var(--text-primary); }
.td-team-row { color: var(--text-primary); border-color: var(--border-light); }
.td-team-row:hover { background: var(--bg-hover); }
.td-team-row__name { font-weight: 600; color: var(--text-primary); }
.td-team-row__city { color: var(--text-faint); }
.td-team-row__count { color: var(--text-muted); }
.td-match { border-color: var(--border-light); }
.td-match__meta { color: var(--text-muted); }
.td-match__date { color: var(--text-muted); }
.td-match__phase { color: var(--text-faint); }
.td-match__team { color: var(--text-primary); }
.td-match__vs { color: var(--text-faint); }
.td-match-section-label { background: var(--bg-raised); border-color: var(--border); color: var(--text-muted); }
.td-result { border-color: var(--border-light); }
.td-result__team { color: var(--text-faint); }
.td-result__team--win { color: var(--text-primary); }
.td-result__score { background: var(--bg-raised); color: var(--text-primary); }
.td-result__sep { color: var(--text-faint); }

/* Barre d'actions */
.td-actions { background: var(--bg-surface); border-color: var(--border); }
.td-nav-btn { background: var(--bg-raised); border-color: var(--border); color: var(--text-muted); }
.td-nav-btn:hover { border-color: #0d6efd; color: #7eb8ff; background: rgba(13,110,253,.1); }
.td-nav-btn--highlight { background: rgba(255,107,0,.12); border-color: rgba(255,107,0,.35); color: #ffb347; }
.td-nav-btn--highlight:hover { background: rgba(255,107,0,.2); color: var(--accent); }
.td-delete-btn { background: rgba(220,53,69,.08); border-color: rgba(220,53,69,.2); color: #f87d96; }
.td-delete-btn:hover { background: #dc3545; color: #fff; border-color: #dc3545; }

/* Code d'accès */
.td-code-card__body { background: var(--bg-raised); }
.td-code-card__copy { background: var(--bg-surface); border-color: var(--border); color: var(--text-muted); }
.td-code-card__copy:hover { border-color: var(--accent); color: var(--accent); }
.td-code-card__hint { color: var(--text-muted); }

/* ── Player profile ───────────────────────────────────────────── */
.pcard { background: var(--bg-surface); border-color: var(--border); }
.pcard__physical { background: var(--bg-raised); border-color: var(--border-light); }
.pcard__phys-val { color: var(--text-primary); }
.pcard__phys-lbl { color: var(--text-muted); }
.pcard__phys-div { background: var(--border); }
.pcard__team { background: var(--bg-surface); }
.pcard__team-name { color: var(--text-primary); }
.pcard__tournament { color: var(--text-muted); }
.pstat { background: var(--bg-surface); border-color: var(--border); box-shadow: 0 1px 6px rgba(0,0,0,.25); }
.pstat__val { color: var(--text-primary); }
.pstat__lbl { color: var(--text-muted); }
.pgamelog { background: var(--bg-surface); border-color: var(--border); }
.pgamelog__head { background: var(--bg-raised); border-color: var(--border-light); color: var(--text-primary); }
.pgamelog__table thead th { background: var(--bg-base); color: var(--text-muted); border-color: var(--border); }
.pgamelog__table tbody tr td { border-color: var(--border-light); }
.pgamelog__table tbody tr:hover { background: var(--bg-hover); }
.pgamelog__row--best { background: rgba(255,193,7,.08) !important; }
.pgamelog__row--best:hover { background: rgba(255,193,7,.14) !important; }
.pgamelog__match-names { color: var(--text-primary); }
.pgamelog__vs { color: var(--text-faint); }
.pgamelog__match-date { color: var(--text-faint); }
.pgamelog__pts { color: var(--text-primary); }
.pgamelog__pts--best { color: #ffd966; background: rgba(255,193,7,.15); }
.pgamelog__num { color: var(--text-muted); }

/* ── Formulaires (fcard) ──────────────────────────────────────── */
.fcard { background: var(--bg-surface); border-color: var(--border); }
.fcard__body { background: var(--bg-surface); }
.fcard__header { background: color-mix(in srgb, var(--fcard-accent, #FF6B00) 6%, var(--bg-raised)); border-color: var(--fcard-accent, #FF6B00); }
.fcard__header-title { color: var(--text-primary); }
.fcard__header-sub { color: var(--text-muted); }
.fcard__header-icon { background: color-mix(in srgb, var(--fcard-accent, #FF6B00) 18%, var(--bg-base)); }
.fstep { border-color: var(--border-light); }
.fstep__title { color: var(--text-primary); }
.fstep__subtitle { color: var(--text-muted); }
.fcard .form-label { color: var(--text-muted); }
.fcard .form-control, .fcard .form-select { background: var(--bg-raised); border-color: var(--border); color: var(--text-primary); }
.fcard .form-control:focus, .fcard .form-select:focus { background: var(--bg-hover); }
.fcard .form-check-label { color: var(--text-primary); }
.fcard .form-text { color: var(--text-muted); }
.fradio-card__label { background: var(--bg-raised); border-color: var(--border); }
.fradio-card__label:hover { background: var(--bg-hover); border-color: color-mix(in srgb, var(--fcard-accent, #FF6B00) 50%, var(--border)); }
.fradio-card input:checked + .fradio-card__label { background: color-mix(in srgb, var(--fcard-accent, #FF6B00) 10%, var(--bg-raised)); border-color: var(--fcard-accent, #FF6B00); }
.fradio-card__label::after { background: var(--bg-raised); border-color: var(--border); }
.fradio-card__title { color: var(--text-primary); }
.fradio-card__desc { color: var(--text-muted); }
.fnum-wrap { border-color: var(--border); background: var(--bg-raised); }
.fnum-wrap input[type="number"] { background: var(--bg-raised) !important; color: var(--text-primary) !important; }
.fnum-btn { background: var(--bg-base); color: var(--text-muted); }
.fnum-btn:hover { background: var(--bg-hover); color: var(--accent); }
.finfo-box { background: color-mix(in srgb, var(--fcard-accent, #FF6B00) 8%, var(--bg-raised)); border-color: color-mix(in srgb, var(--fcard-accent, #FF6B00) 20%, var(--border)); color: var(--text-muted); }
.fcard__footer { border-color: var(--border-light); }
.fcard__cancel { background: var(--bg-raised); border-color: var(--border); color: var(--text-muted); }
.fcard__cancel:hover { border-color: var(--text-muted); color: var(--text-primary); }
.fcolor-preview { border-color: var(--border); }

/* main container */
main { background: var(--bg-base); }

/* Empty states */
.td-empty { color: var(--text-faint); }

/* Validation */
.text-danger { color: #f87d96 !important; }
.alert-link { color: inherit; opacity: .85; }

/* Sections titres */
.sgroup-card__head { border-bottom-color: var(--border-light); }

/* Access code modal */
.modal-body .text-muted { color: var(--text-muted) !important; }
.font-monospace { color: var(--text-primary); }

/* Hero bannière home — déjà sombre, juste ajuster le lead */
.hero-v2__lead { color: rgba(232,237,242,.65); }



/* ═══════════════════════════════════════════════════════════════
   TEAM DETAIL PAGE  (team-hero, roster, match-history)
   ═══════════════════════════════════════════════════════════════ */

.team-hero {
    position      : relative;
    border-radius : 16px;
    overflow      : hidden;
    color         : #fff;
}
.team-hero__bg {
    position   : absolute;
    inset      : 0;
    background : linear-gradient(125deg,
        color-mix(in srgb, var(--team-color) 70%, #000) 0%,
        color-mix(in srgb, var(--team-color) 40%, #0f1923) 100%);
}
.team-hero__body {
    position    : relative;
    z-index     : 1;
    display     : flex;
    align-items : center;
    flex-wrap   : wrap;
    gap         : 1rem;
    padding     : 1.5rem 1.75rem;
}
.team-hero__left {
    display     : flex;
    align-items : center;
    gap         : 1rem;
    flex        : 1;
    min-width   : 200px;
}
.team-hero__circle {
    width           : 56px;
    height          : 56px;
    border-radius   : 50%;
    background      : rgba(255,255,255,.2);
    border          : 2px solid rgba(255,255,255,.35);
    display         : flex;
    align-items     : center;
    justify-content : center;
    font-size       : 1.5rem;
    font-weight     : 800;
    flex-shrink     : 0;
}
.team-hero__name {
    font-size     : 1.7rem;
    font-weight   : 800;
    margin        : 0 0 .3rem;
    letter-spacing: -.02em;
}
.team-hero__meta {
    display   : flex;
    flex-wrap : wrap;
    gap       : .75rem;
    font-size : .78rem;
    color     : rgba(255,255,255,.6);
}
.team-hero__stats {
    display         : flex;
    gap             : 1rem;
    align-items     : center;
    background      : rgba(255,255,255,.1);
    border          : 1px solid rgba(255,255,255,.15);
    border-radius   : 12px;
    padding         : .75rem 1.25rem;
    flex-shrink     : 0;
}
.team-hero__stat { display:flex; flex-direction:column; align-items:center; }
.team-hero__stat-val { font-size:1.4rem; font-weight:800; line-height:1; }
.team-hero__stat-lbl { font-size:.62rem; color:rgba(255,255,255,.5); text-transform:uppercase; letter-spacing:.06em; }
.team-hero__stat-div { width:1px; height:32px; background:rgba(255,255,255,.2); }
.team-hero__actions { display:flex; align-items:center; gap:.5rem; flex-shrink:0; }
.team-hero__btn-icon {
    display:inline-flex; align-items:center; justify-content:center;
    width:34px; height:34px; border-radius:9px;
    background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.2);
    color:rgba(255,255,255,.85); text-decoration:none; cursor:pointer;
    transition:background .18s;
}
.team-hero__btn-icon:hover { background:rgba(255,255,255,.25); color:#fff; }
.team-hero__btn-icon--danger:hover { background:rgba(220,53,69,.6); }
.team-hero__btn-add {
    display:inline-flex; align-items:center; padding:.38rem .9rem;
    border-radius:9px; background:#FF6B00; color:#fff; text-decoration:none;
    font-size:.82rem; font-weight:700; border:none;
    transition:background .18s;
}
.team-hero__btn-add:hover { background:#e55e00; color:#fff; }
.team-hero__btn-back {
    display:inline-flex; align-items:center; padding:.38rem .9rem;
    border-radius:9px; background:rgba(255,255,255,.1); color:rgba(255,255,255,.8);
    border:1px solid rgba(255,255,255,.2); text-decoration:none;
    font-size:.82rem; font-weight:600; transition:background .18s;
}
.team-hero__btn-back:hover { background:rgba(255,255,255,.2); color:#fff; }

/* Roster */
.roster-list { overflow-y:auto; max-height:380px; }
.roster-row {
    display       : flex;
    align-items   : center;
    gap           : .75rem;
    padding       : .55rem 1rem;
    border-bottom : 1px solid var(--border-light, #1e3448);
    text-decoration: none;
    color         : var(--text-primary, #e8edf2);
    transition    : background .15s;
}
.roster-row:last-child { border-bottom:none; }
.roster-row:hover { background:var(--bg-hover, #243d55); }
.roster-row__num {
    width           : 34px;
    height          : 34px;
    border-radius   : 8px;
    background      : color-mix(in srgb, var(--team-color) 15%, transparent);
    border          : 1px solid color-mix(in srgb, var(--team-color) 30%, transparent);
    color           : var(--team-color);
    font-size       : .8rem;
    font-weight     : 800;
    display         : flex;
    align-items     : center;
    justify-content : center;
    flex-shrink     : 0;
}
.roster-row__info { flex:1; display:flex; flex-direction:column; gap:.05rem; }
.roster-row__name { font-weight:600; font-size:.85rem; }
.roster-row__pos  { font-size:.68rem; color:var(--text-muted, #7a9ab5); }
.roster-row__height { font-size:.72rem; }
.roster-row__edit {
    display:inline-flex; align-items:center; justify-content:center;
    width:26px; height:26px; border-radius:7px;
    border:1px solid var(--border, #243d55); color:var(--text-muted, #7a9ab5);
    text-decoration:none; font-size:.78rem; flex-shrink:0;
    transition:border-color .15s, color .15s;
}
.roster-row__edit:hover { border-color:#0d6efd; color:#0d6efd; }

/* Match history */
.match-history-row {
    display       : flex;
    align-items   : center;
    gap           : .75rem;
    padding       : .6rem 1rem;
    border-bottom : 1px solid var(--border-light, #1e3448);
}
.match-history-row:last-child { border-bottom:none; }
.match-history-row__meta {
    display       : flex;
    flex-direction: column;
    min-width     : 44px;
    flex-shrink   : 0;
}
.match-history-row__date { font-size:.75rem; font-weight:700; color:var(--text-primary, #e8edf2); }
.match-history-row__type { font-size:.62rem; color:var(--text-muted, #7a9ab5); }
.match-history-row__body {
    flex       : 1;
    display    : flex;
    align-items: center;
    justify-content: space-between;
    font-size  : .83rem;
}
.match-history-row__opp { color:var(--text-primary, #e8edf2); }
.match-history-row__result {
    font-size  : .82rem;
    font-weight: 700;
    padding    : .15rem .55rem;
    border-radius: 20px;
}
.match-history-row__result--win  { background:rgba(25,135,84,.15); color:#198754; }
.match-history-row__result--loss { background:rgba(220,53,69,.12); color:#dc3545; }

/* ═══════════════════════════════════════════════════════════════
   MATCHES INDEX  (match-day, match-row)
   ═══════════════════════════════════════════════════════════════ */

.match-day-header {
    display        : flex;
    align-items    : center;
    justify-content: space-between;
    padding        : .45rem .25rem .3rem;
    margin-top     : .5rem;
}
.match-day-label {
    font-size      : .72rem;
    font-weight    : 700;
    text-transform : capitalize;
    color          : var(--text-muted, #7a9ab5);
    letter-spacing : .04em;
}
.match-day-count {
    font-size : .68rem;
    color     : var(--text-faint, #445e74);
}

.match-list {
    background    : var(--bg-surface, #16283a);
    border        : 1px solid var(--border, #243d55);
    border-radius : 13px;
    overflow      : hidden;
    box-shadow    : 0 2px 10px rgba(0,0,0,.06);
}

.match-row {
    display         : grid;
    grid-template-columns : 64px 1fr auto 1fr auto 16px;
    align-items     : center;
    gap             : .5rem;
    padding         : .65rem 1rem;
    border-bottom   : 1px solid var(--border-light, #1e3448);
    text-decoration : none;
    color           : var(--text-primary, #e8edf2);
    transition      : background .15s;
}
.match-row:last-child { border-bottom:none; }
.match-row:hover { background:var(--bg-hover, #243d55); }

.match-row__time { display:flex; flex-direction:column; }
.match-row__hour { font-size:.78rem; font-weight:700; color:var(--text-primary, #e8edf2); }
.match-row__phase { font-size:.62rem; color:var(--text-muted, #7a9ab5); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.match-row__team { font-size:.83rem; font-weight:600; color:var(--text-muted, #7a9ab5); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.match-row__team--home { text-align:right; }
.match-row__team--away { text-align:left; }
.match-row__team--win  { color:var(--text-primary, #e8edf2); font-weight:700; }
.match-row__team--loss { color:var(--text-faint, #445e74); }

.match-row__score-wrap { display:flex; justify-content:center; flex-shrink:0; }
.match-row__score {
    display         : flex;
    align-items     : center;
    gap             : .25rem;
    font-weight     : 800;
    font-size       : .9rem;
    background      : var(--bg-raised, #1e3448);
    padding         : .15rem .6rem;
    border-radius   : 8px;
    min-width       : 72px;
    justify-content : center;
}
.match-row__sep { color:var(--text-faint, #445e74); font-weight:400; }
.match-row__num--win { color:#198754; }
.match-row__vs { color:var(--text-muted, #7a9ab5); font-size:.8rem; font-weight:600; }

.match-row__status { display:flex; justify-content:center; }
.match-row__badge {
    font-size:.62rem; font-weight:700; text-transform:uppercase;
    letter-spacing:.04em; padding:.15rem .45rem; border-radius:4px; white-space:nowrap;
}
.match-row__badge--secondary { background:rgba(108,117,125,.15); color:var(--text-muted, #7a9ab5); }
.match-row__badge--primary   { background:rgba(13,110,253,.15);  color:#7eb8ff; }
.match-row__badge--warning   { background:rgba(255,107,0,.15);   color:#ffb347; }
.match-row__badge--success   { background:rgba(25,135,84,.15);   color:#75d4a2; }
.match-row__badge--danger    { background:rgba(220,53,69,.15);   color:#f87d96; }

.match-row__arrow { color:var(--text-faint, #445e74); font-size:.75rem; }

/* ═══════════════════════════════════════════════════════════════
   MATCH DETAIL — SCORECARD
   ═══════════════════════════════════════════════════════════════ */

.scorecard {
    position      : relative;
    border-radius : 16px;
    overflow      : hidden;
    color         : #fff;
}
.scorecard__bg { position:absolute; inset:0; }
.scorecard__body { position:relative; z-index:1; padding:1.5rem 1.75rem; }

.scorecard__meta {
    display      : flex;
    flex-wrap    : wrap;
    gap          : .75rem;
    font-size    : .75rem;
    color        : rgba(255,255,255,.5);
    margin-bottom: 1.25rem;
    justify-content: center;
}
.scorecard__phase { color:rgba(255,255,255,.7); font-weight:600; }

.scorecard__teams {
    display        : grid;
    grid-template-columns: 1fr auto 1fr;
    align-items    : center;
    gap            : 1rem;
    margin-bottom  : 1.25rem;
}
.scorecard__team { display:flex; flex-direction:column; align-items:center; gap:.4rem; }
.scorecard__team--right { align-items:flex-end; }
.scorecard__team-dot { width:12px; height:12px; border-radius:50%; border:2px solid rgba(255,255,255,.3); }
.scorecard__team-name { font-size:1.2rem; font-weight:800; text-align:center; line-height:1.2; }
.scorecard__team--win  .scorecard__team-name { color:#fff; }
.scorecard__team--loss .scorecard__team-name { color:rgba(255,255,255,.45); }
.scorecard__result-label { font-size:1.1rem; }

.scorecard__center { display:flex; flex-direction:column; align-items:center; gap:.5rem; }
.scorecard__score {
    display        : flex;
    align-items    : center;
    gap            : .5rem;
    font-size      : 2.8rem;
    font-weight    : 900;
    line-height    : 1;
    letter-spacing : -.03em;
}
.scorecard__dash { color:rgba(255,255,255,.3); font-weight:300; }
.scorecard__num--win { color:#fff; }
.scorecard__vs { font-size:1.6rem; font-weight:800; color:rgba(255,255,255,.4); }
.scorecard__status-badge {
    font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em;
    padding:.2rem .6rem; border-radius:20px;
}
.scorecard__status-badge--secondary { background:rgba(255,255,255,.12); color:rgba(255,255,255,.6); }
.scorecard__status-badge--success   { background:rgba(25,135,84,.4);   color:#75d4a2; }
.scorecard__status-badge--primary   { background:rgba(13,110,253,.3);  color:#9ec5fe; }
.scorecard__status-badge--warning   { background:rgba(255,107,0,.3);   color:#ffb347; }

.scorecard__actions {
    display        : flex;
    justify-content: center;
    flex-wrap      : wrap;
    gap            : .6rem;
}
.scorecard__btn {
    display:inline-flex; align-items:center; padding:.45rem 1.1rem;
    border-radius:9px; font-size:.83rem; font-weight:600;
    text-decoration:none; border:none; cursor:pointer;
    transition:background .18s;
}
.scorecard__btn--primary { background:#FF6B00; color:#fff; }
.scorecard__btn--primary:hover { background:#e55e00; color:#fff; }
.scorecard__btn--ghost { background:rgba(255,255,255,.12); color:rgba(255,255,255,.85); border:1px solid rgba(255,255,255,.2); }
.scorecard__btn--ghost:hover { background:rgba(255,255,255,.22); color:#fff; }

/* ═══════════════════════════════════════════════════════════════
   EDIT SCORE  (escore-*)
   ═══════════════════════════════════════════════════════════════ */

.escore-card {
    position      : relative;
    border-radius : 16px;
    overflow      : hidden;
    color         : #fff;
}
.escore-card__bg { position:absolute; inset:0; }
.escore-card__body { position:relative; z-index:1; padding:1.5rem 1.75rem; }
.escore-card__label {
    text-align  : center;
    font-size   : .8rem;
    font-weight : 700;
    color       : rgba(255,255,255,.6);
    text-transform: uppercase;
    letter-spacing: .06em;
    margin-bottom: 1.25rem;
}
.escore-card__teams {
    display        : flex;
    align-items    : center;
    justify-content: center;
    gap            : 2rem;
}
.escore-card__dash { font-size:2rem; font-weight:300; color:rgba(255,255,255,.3); }
.escore-team { display:flex; flex-direction:column; align-items:center; gap:.6rem; }
.escore-team__dot { width:10px; height:10px; border-radius:50%; }
.escore-team__name { font-size:1rem; font-weight:700; }
.escore-stepper {
    display       : flex;
    align-items   : stretch;
    border        : 1.5px solid rgba(255,255,255,.25);
    border-radius : 10px;
    overflow      : hidden;
    background    : rgba(0,0,0,.2);
}
.escore-stepper__btn {
    width      : 34px;
    background : rgba(255,255,255,.08);
    border     : none;
    color      : rgba(255,255,255,.8);
    font-size  : 1.15rem;
    font-weight: 700;
    cursor     : pointer;
    transition : background .15s;
}
.escore-stepper__btn:hover { background:rgba(255,255,255,.2); }
.escore-stepper__input {
    width       : 60px;
    text-align  : center;
    font-size   : 1.8rem;
    font-weight : 900;
    background  : transparent;
    border      : none;
    color       : #fff;
    -moz-appearance: textfield;
}
.escore-stepper__input::-webkit-outer-spin-button,
.escore-stepper__input::-webkit-inner-spin-button { -webkit-appearance:none; }
.escore-stepper__input:focus { outline:none; }

/* Inputs stats dans EditScore */
.stat-input {
    width          : 100%;
    text-align     : center;
    font-weight    : 700;
    background     : var(--bg-raised, #1e3448);
    border         : none;
    color          : var(--text-primary, #e8edf2) !important;
    -moz-appearance: textfield;
    padding        : .25rem 0;
}
.stat-input::-webkit-outer-spin-button,
.stat-input::-webkit-inner-spin-button { -webkit-appearance:none; }



/* ═══════════════════════════════════════════════════════════════
   PLAYERS LIST — card grid  (plist-card)
   ═══════════════════════════════════════════════════════════════ */

.plist-card {
    display         : flex;
    flex-direction  : column;
    background      : var(--bg-surface);
    border          : 1px solid var(--border);
    border-radius   : 14px;
    overflow        : hidden;
    text-decoration : none;
    color           : var(--text-primary);
    box-shadow      : 0 2px 10px rgba(0,0,0,.15);
    transition      : transform .2s, box-shadow .2s;
    height          : 100%;
}
.plist-card:hover {
    transform  : translateY(-3px);
    box-shadow : 0 6px 22px rgba(0,0,0,.3);
    color      : var(--text-primary);
}

/* Bandeau haut couleur équipe */
.plist-card__header {
    position   : relative;
    height     : 70px;
    overflow   : hidden;
    background : linear-gradient(135deg,
        color-mix(in srgb, var(--pcard-color) 70%, #000),
        color-mix(in srgb, var(--pcard-color) 40%, #0f1923));
    display    : flex;
    align-items: flex-end;
    justify-content: space-between;
    padding    : .4rem .75rem;
}
.plist-card__number-bg {
    position    : absolute;
    right       : -5px;
    bottom      : -12px;
    font-size   : 5rem;
    font-weight : 900;
    color       : rgba(255,255,255,.08);
    line-height : 1;
    user-select : none;
    letter-spacing: -.05em;
}
.plist-card__num-badge {
    position    : relative;
    z-index     : 1;
    font-size   : .78rem;
    font-weight : 800;
    color       : rgba(255,255,255,.85);
    letter-spacing: .04em;
}
.plist-card__pos-badge {
    position       : relative;
    z-index        : 1;
    font-size      : .62rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .06em;
    background     : rgba(255,255,255,.15);
    color          : rgba(255,255,255,.9);
    padding        : .15rem .45rem;
    border-radius  : 20px;
    border         : 1px solid rgba(255,255,255,.2);
}

/* Corps de la carte */
.plist-card__body {
    padding : .75rem .9rem;
    flex    : 1;
}
.plist-card__name {
    font-size   : .9rem;
    font-weight : 700;
    color       : var(--text-primary);
    margin-bottom: .3rem;
    white-space : nowrap;
    overflow    : hidden;
    text-overflow: ellipsis;
}
.plist-card__team {
    display     : flex;
    align-items : center;
    gap         : .4rem;
    font-size   : .75rem;
    color       : var(--text-muted);
    margin-bottom: .5rem;
    white-space : nowrap;
    overflow    : hidden;
    text-overflow: ellipsis;
}
.plist-card__team-dot {
    width        : 8px;
    height       : 8px;
    border-radius: 50%;
    flex-shrink  : 0;
    border       : 1px solid rgba(255,255,255,.15);
}
.plist-card__stats {
    display     : flex;
    align-items : center;
    gap         : .5rem;
    font-size   : .7rem;
    color       : var(--text-muted);
}
.plist-card__stat { display:flex; align-items:center; gap:.25rem; }
.plist-card__stat-div { width:1px; height:10px; background:var(--border); }

/* ═══════════════════════════════════════════════════════════════
   FLASH TOASTS  (flash-toast)
   ═══════════════════════════════════════════════════════════════ */

.flash-toast {
    display       : flex;
    align-items   : center;
    gap           : .75rem;
    padding       : .75rem 1rem;
    border-radius : 12px;
    margin-bottom : 1rem;
    border        : 1px solid;
    box-shadow    : 0 4px 16px rgba(0,0,0,.25);
    animation     : flashIn .3s ease;
}
@keyframes flashIn {
    from { opacity:0; transform:translateY(-8px); }
    to   { opacity:1; transform:translateY(0); }
}
.flash-toast--success {
    background   : #0d2a1a;
    border-color : rgba(25,135,84,.4);
    color        : #75d4a2;
}
.flash-toast--error {
    background   : #2a1118;
    border-color : rgba(220,53,69,.4);
    color        : #f87d96;
}
.flash-toast__icon {
    font-size  : 1.1rem;
    flex-shrink: 0;
}
.flash-toast__msg {
    flex       : 1;
    font-size  : .88rem;
    font-weight: 500;
}
.flash-toast__close {
    display         : inline-flex;
    align-items     : center;
    justify-content : center;
    width           : 26px;
    height          : 26px;
    border-radius   : 8px;
    background      : transparent;
    border          : none;
    color           : currentColor;
    font-size       : 1rem;
    opacity         : .6;
    cursor          : pointer;
    flex-shrink     : 0;
    transition      : opacity .15s, background .15s;
}
.flash-toast__close:hover { opacity:1; background:rgba(255,255,255,.1); }

/* ═══════════════════════════════════════════════════════════════
   ERROR PAGE  (error-page)
   ═══════════════════════════════════════════════════════════════ */

.error-page {
    display        : flex;
    flex-direction : column;
    align-items    : center;
    justify-content: center;
    text-align     : center;
    padding        : 4rem 1rem;
    min-height     : 60vh;
}
.error-page__icon {
    width        : 120px;
    height       : 120px;
    margin-bottom: 1.5rem;
}
.error-page__icon svg { width:100%; height:100%; }
.error-page__code {
    font-size   : 1rem;
    font-weight : 700;
    color       : var(--accent);
    text-transform: uppercase;
    letter-spacing: .12em;
    margin-bottom : .5rem;
}
.error-page__title {
    font-size   : 1.8rem;
    font-weight : 800;
    color       : var(--text-primary);
    margin-bottom: .75rem;
}
.error-page__desc {
    font-size   : .95rem;
    color       : var(--text-muted);
    max-width   : 400px;
    margin-bottom: 2rem;
    line-height : 1.6;
}
.error-page__actions { display:flex; flex-wrap:wrap; gap:.75rem; justify-content:center; }
.error-page__btn {
    display      : inline-flex;
    align-items  : center;
    padding      : .55rem 1.25rem;
    border-radius: 10px;
    font-size    : .88rem;
    font-weight  : 600;
    text-decoration: none;
    transition   : transform .18s, background .18s;
    border       : none;
    cursor       : pointer;
}
.error-page__btn:hover { transform:translateY(-2px); }
.error-page__btn--primary {
    background : var(--accent);
    color      : #fff !important;
    box-shadow : 0 3px 12px rgba(255,107,0,.3);
}
.error-page__btn--primary:hover { background:#e55e00; }
.error-page__btn--ghost {
    background : rgba(255,255,255,.08);
    color      : var(--text-primary) !important;
    border     : 1px solid var(--border);
}
.error-page__btn--ghost:hover { background:var(--bg-hover); }



/* ═══════════════════════════════════════════════════════════════
   PAGE TRANSITIONS — fade-in au chargement
   ═══════════════════════════════════════════════════════════════ */

/* État initial : invisible */
body { opacity: 0; }

/* Classe ajoutée par JS une fois le DOM prêt */
body.page-ready {
    animation : pageIn .18s ease both;
}
@keyframes pageIn {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Liens de navigation : légère transition de sortie */
body.page-leaving {
    animation : pageOut .1s ease both;
    pointer-events: none;
}
@keyframes pageOut {
    from { opacity: 1; transform: translateY(0); }
    to   { opacity: 0; transform: translateY(-4px); }
}



/* ═══════════════════════════════════════════════════════════════
   ENTER CODE PAGE  (ecode-*)
   ═══════════════════════════════════════════════════════════════ */

.ecode-card {
    background    : var(--bg-surface);
    border        : 1px solid var(--border);
    border-radius : 18px;
    overflow      : hidden;
    box-shadow    : 0 8px 40px rgba(0,0,0,.35);
}

/* Hero */
.ecode-card__hero {
    padding     : 2rem 1.5rem 1.5rem;
    text-align  : center;
    background  : linear-gradient(135deg, #0b1520 0%, var(--bg-raised) 100%);
    border-bottom: 1px solid var(--border);
}
.ecode-card__lock-icon {
    width           : 60px;
    height          : 60px;
    border-radius   : 50%;
    background      : rgba(255,107,0,.1);
    border          : 2px solid rgba(255,107,0,.3);
    display         : flex;
    align-items     : center;
    justify-content : center;
    margin          : 0 auto 1rem;
}
.ecode-card__lock-icon svg { width:28px; height:28px; }
.ecode-card__title {
    font-size    : 1.1rem;
    font-weight  : 800;
    color        : var(--text-primary);
    margin-bottom: .35rem;
}
.ecode-card__sub {
    font-size  : .78rem;
    color      : var(--text-muted);
    line-height: 1.5;
}

/* Corps */
.ecode-card__body { padding: 1.5rem; }

/* Label */
.ecode-label {
    font-size      : .68rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .08em;
    color          : var(--text-muted);
    text-align     : center;
    margin-bottom  : .75rem;
}

/* Cases individuelles */
.ecode-boxes {
    display         : flex;
    justify-content : center;
    gap             : .5rem;
    margin-bottom   : .75rem;
    cursor          : text;
}
.ecode-box {
    width           : 46px;
    height          : 54px;
    background      : var(--bg-raised);
    border          : 2px solid var(--border);
    border-radius   : 10px;
    display         : flex;
    align-items     : center;
    justify-content : center;
    font-size       : 1.4rem;
    font-weight     : 900;
    font-family     : 'Courier New', monospace;
    color           : var(--text-faint);
    transition      : border-color .15s, background .15s, box-shadow .15s;
    user-select     : none;
}
.ecode-box--filled {
    color      : #FF6B00;
    border-color: rgba(255,107,0,.4);
    background : rgba(255,107,0,.06);
}
.ecode-box--active {
    border-color: #FF6B00;
    box-shadow  : 0 0 0 3px rgba(255,107,0,.2);
    color       : var(--text-faint);
}

/* Hint */
.ecode-hint {
    font-size  : .72rem;
    color      : var(--text-faint);
    text-align : center;
    margin-bottom: 1.25rem;
}

/* Bouton submit */
.ecode-submit {
    width           : 100%;
    padding         : .65rem;
    background      : #FF6B00;
    color           : #fff;
    border          : none;
    border-radius   : 10px;
    font-size       : .9rem;
    font-weight     : 700;
    cursor          : pointer;
    display         : flex;
    align-items     : center;
    justify-content : center;
    gap             : .5rem;
    transition      : background .18s, opacity .18s;
}
.ecode-submit:disabled {
    opacity: .45;
    cursor : not-allowed;
}
.ecode-submit:not(:disabled):hover { background: #e55e00; }

/* Pied */
.ecode-card__foot {
    padding     : .9rem 1.5rem;
    text-align  : center;
    border-top  : 1px solid var(--border-light);
}
.ecode-back {
    font-size      : .78rem;
    color          : var(--text-faint);
    text-decoration: none;
    transition     : color .15s;
}
.ecode-back:hover { color: var(--text-muted); }



/* ═══════════════════════════════════════════════════════════════
   CONFIRM MODAL  (cmodal)
   ═══════════════════════════════════════════════════════════════ */

.cmodal-overlay {
    position   : fixed;
    inset      : 0;
    background : rgba(0,0,0,.65);
    z-index    : 9999;
    display    : flex;
    align-items: center;
    justify-content: center;
    padding    : 1rem;
    animation  : cmodalIn .15s ease;
}
@keyframes cmodalIn {
    from { opacity:0; }
    to   { opacity:1; }
}
.cmodal-box {
    background    : var(--bg-surface);
    border        : 1px solid var(--border);
    border-radius : 16px;
    padding       : 1.75rem 1.5rem 1.25rem;
    max-width     : 380px;
    width         : 100%;
    text-align    : center;
    box-shadow    : 0 20px 60px rgba(0,0,0,.5);
    animation     : cmodalBoxIn .2s ease;
}
@keyframes cmodalBoxIn {
    from { opacity:0; transform:scale(.94) translateY(10px); }
    to   { opacity:1; transform:scale(1) translateY(0); }
}
.cmodal-icon {
    width           : 52px;
    height          : 52px;
    border-radius   : 50%;
    background      : rgba(220,53,69,.12);
    border          : 1px solid rgba(220,53,69,.25);
    display         : flex;
    align-items     : center;
    justify-content : center;
    margin          : 0 auto 1rem;
    font-size       : 1.3rem;
    color           : #f87d96;
}
.cmodal-title {
    font-size    : 1rem;
    font-weight  : 700;
    color        : var(--text-primary);
    margin-bottom: .5rem;
}
.cmodal-msg {
    font-size    : .82rem;
    color        : var(--text-muted);
    margin-bottom: 1.5rem;
    line-height  : 1.5;
}
.cmodal-actions { display:flex; gap:.6rem; justify-content:center; }
.cmodal-btn-cancel {
    flex:1; padding:.5rem .75rem; border-radius:9px;
    background:var(--bg-raised); border:1px solid var(--border);
    color:var(--text-muted); font-size:.85rem; font-weight:600;
    cursor:pointer; transition:background .15s;
}
.cmodal-btn-cancel:hover { background:var(--bg-hover); color:var(--text-primary); }
.cmodal-btn-confirm {
    flex:1; padding:.5rem .75rem; border-radius:9px;
    background:#dc3545; border:none;
    color:#fff; font-size:.85rem; font-weight:700;
    cursor:pointer; transition:background .15s;
}
.cmodal-btn-confirm:hover { background:#b02a37; }

/* ═══════════════════════════════════════════════════════════════
   NAVBAR ACTIVE STATE
   ═══════════════════════════════════════════════════════════════ */

.nav-link--active {
    color           : #fff !important;
    position        : relative;
}
.nav-link--active::after {
    content      : '';
    position     : absolute;
    bottom       : -2px;
    left         : .5rem;
    right        : .5rem;
    height       : 2px;
    background   : #FF6B00;
    border-radius: 2px;
}

/* ═══════════════════════════════════════════════════════════════
   BACK TO TOP BUTTON
   ═══════════════════════════════════════════════════════════════ */

.back-to-top {
    position        : fixed;
    bottom          : 1.5rem;
    right           : 1.5rem;
    width           : 42px;
    height          : 42px;
    border-radius   : 12px;
    background      : var(--bg-raised);
    border          : 1px solid var(--border);
    color           : var(--text-muted);
    display         : flex;
    align-items     : center;
    justify-content : center;
    font-size       : 1.1rem;
    cursor          : pointer;
    z-index         : 500;
    opacity         : 0;
    transform       : translateY(10px);
    transition      : opacity .25s, transform .25s, background .18s;
    box-shadow      : 0 4px 16px rgba(0,0,0,.3);
}
.back-to-top.visible { opacity:1; transform:translateY(0); }
.back-to-top:hover { background:var(--accent); color:#fff; border-color:var(--accent); }

/* ═══════════════════════════════════════════════════════════════
   TEAM LIST CARDS  (team-list-card)
   ═══════════════════════════════════════════════════════════════ */

.team-list-card {
    display         : flex;
    flex-direction  : column;
    background      : var(--bg-surface);
    border          : 1px solid var(--border);
    border-radius   : 14px;
    overflow        : hidden;
    text-decoration : none;
    color           : var(--text-primary);
    box-shadow      : 0 2px 10px rgba(0,0,0,.15);
    transition      : transform .2s, box-shadow .2s;
    height          : 100%;
}
.team-list-card:hover {
    transform  : translateY(-3px);
    box-shadow : 0 6px 22px rgba(0,0,0,.3);
    color      : var(--text-primary);
}
.team-list-card__header {
    height          : 72px;
    display         : flex;
    align-items     : center;
    justify-content : space-between;
    padding         : .6rem .9rem;
    position        : relative;
    overflow        : hidden;
}
.team-list-card__name-header {
    font-size    : 1rem;
    font-weight  : 800;
    color        : #fff;
    line-height  : 1.2;
    text-shadow  : 0 1px 4px rgba(0,0,0,.4);
    white-space  : nowrap;
    overflow     : hidden;
    text-overflow: ellipsis;
    max-width    : 70%;
}
.team-list-card__count {
    font-size   : .75rem;
    font-weight : 700;
    color       : rgba(255,255,255,.7);
    background  : rgba(0,0,0,.2);
    padding     : .2rem .5rem;
    border-radius: 20px;
}
.team-list-card__body { padding:.75rem .9rem; flex:1; }
.team-list-card__name {
    font-size    : .92rem;
    font-weight  : 700;
    color        : var(--text-primary);
    margin-bottom: .35rem;
    white-space  : nowrap;
    overflow     : hidden;
    text-overflow: ellipsis;
}
.team-list-card__meta {
    font-size    : .72rem;
    color        : var(--text-muted);
    margin-bottom: .15rem;
    display      : flex;
    align-items  : center;
    gap          : .3rem;
}
.team-list-card__tournament {
    font-size  : .7rem;
    color      : var(--text-faint);
    margin-top : .35rem;
    display    : flex;
    align-items: center;
    gap        : .3rem;
    white-space: nowrap;
    overflow   : hidden;
    text-overflow: ellipsis;
}



/* ═══════════════════════════════════════════════════════════════
   EDIT SCORE — cartes joueur mobile  (stat-player-card)
   ═══════════════════════════════════════════════════════════════ */

.stat-player-card {
    border-bottom : 1px solid var(--border-light);
    padding       : .75rem 1rem;
}
.stat-player-card:last-child { border-bottom: none; }

.stat-player-card__head {
    display     : flex;
    align-items : center;
    gap         : .6rem;
    padding-left: .5rem;
    margin-bottom: .65rem;
}
.stat-player-card__name {
    font-size  : .88rem;
    font-weight: 700;
    color      : var(--text-primary);
}

/* Grille 2 colonnes pour les stats */
.stat-player-card__grid {
    display               : grid;
    grid-template-columns : repeat(2, 1fr);
    gap                   : .6rem;
}

.stat-player-card__item {
    display       : flex;
    flex-direction: column;
    gap           : .3rem;
}
.stat-player-card__lbl {
    font-size      : .62rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .06em;
    color          : var(--text-muted);
}

/* Sur mobile, fnum-wrap prend toute la largeur */
.stat-player-card .fnum-wrap {
    width : 100%;
}
.stat-player-card .stat-input {
    min-width : 0;
    width     : 100%;
}



/* Sous-totaux public/privé dans les stat cards */
.stat-card__breakdown {
    display        : flex;
    align-items    : center;
    justify-content: center;
    gap            : .35rem;
    margin-top     : .4rem;
    font-size      : .68rem;
    color          : var(--text-faint);
}
.stat-card__breakdown-item {
    display    : flex;
    align-items: center;
    gap        : .2rem;
}
.stat-card__breakdown-item i { font-size:.6rem; }
.stat-card__breakdown-sep { color:var(--text-faint); opacity:.5; }


/* ═══════════════════════════════════════════════════════════════
   CHAMPS FIGÉS DANS LES FORMULAIRES D'ÉDITION  (flocked-*)
   ═══════════════════════════════════════════════════════════════ */

.flocked-badge {
    display        : inline-flex;
    align-items    : center;
    font-size      : .62rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .06em;
    color          : var(--text-faint);
    background     : var(--bg-raised);
    border         : 1px solid var(--border);
    padding        : .15rem .45rem;
    border-radius  : 20px;
    margin-left    : auto;
    flex-shrink    : 0;
}

/* Valeur affichée en lecture seule (format radio-like) */
.flocked-value {
    display     : flex;
    align-items : center;
    gap         : .85rem;
    background  : rgba(251,191,36,.07);
    border      : 1px solid rgba(251,191,36,.2);
    border-radius: 12px;
    padding     : .85rem 1rem;
}
.flocked-value__icon {
    font-size  : 1.3rem;
    flex-shrink: 0;
    width      : 36px;
    text-align : center;
}
.flocked-value__main {
    font-size  : .88rem;
    font-weight: 700;
    color      : var(--text-primary);
}
.flocked-value__sub {
    font-size  : .75rem;
    color      : var(--text-muted);
    margin-top : .1rem;
}

/* Grille de valeurs figées (config groupes, best-of) */
.flocked-grid {
    display               : grid;
    grid-template-columns : repeat(auto-fill, minmax(140px, 1fr));
    gap                   : .6rem;
}
.flocked-grid__item {
    background   : rgba(251,191,36,.07);
    border       : 1px solid rgba(251,191,36,.2);
    border-radius: 10px;
    padding      : .6rem .85rem;
    display      : flex;
    flex-direction: column;
    gap          : .2rem;
}
.flocked-grid__lbl {
    font-size  : .65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color      : var(--text-faint);
}
.flocked-grid__val {
    font-size  : .9rem;
    font-weight: 700;
    color      : var(--text-primary);
}

/* Aligner le badge "Verrouillé" dans le fstep__head */
.fstep__head {
    display    : flex;
    align-items: center;
    gap        : .5rem;
}



/* Score verrouillé dans EditScore */
.escore-score-readonly {
    font-size  : 2rem;
    font-weight: 900;
    color      : rgba(255,255,255,.6);
    min-width  : 60px;
    text-align : center;
    opacity    : .7;
}
.escore-locked-reason {
    text-align : center;
    font-size  : .72rem;
    color      : rgba(251,191,36,.6);
    margin-top : .75rem;
    font-style : italic;
}


/* ═══════════════════════════════════════════════════════════════
   REVIEW GROUPS
   ═══════════════════════════════════════════════════════════════ */

.review-team-row {
    display     : flex;
    align-items : center;
    gap         : .6rem;
    padding     : .45rem 1rem;
    border-bottom: 1px solid var(--border-light);
    font-size   : .85rem;
    color       : var(--text-primary);
}
.review-team-row:last-child { border-bottom:none; }
.review-team-dot {
    width        : 10px;
    height       : 10px;
    border-radius: 50%;
    flex-shrink  : 0;
}

/* ═══════════════════════════════════════════════════════════════
   ARRANGE GROUPS — drag & drop
   ═══════════════════════════════════════════════════════════════ */

.arrange-hint {
    font-size  : .83rem;
    color      : var(--text-muted);
    background : var(--bg-surface);
    border     : 1px solid var(--border);
    border-radius: 10px;
    padding    : .65rem 1rem;
}

.arrange-col {
    background   : var(--bg-surface);
    border       : 2px solid var(--border);
    border-radius: 14px;
    overflow     : hidden;
    min-height   : 200px;
    transition   : border-color .2s;
}
.arrange-col--ok    { border-color: #198754; }
.arrange-col--over  { border-color: #dc3545; }
.arrange-col--under { border-color: var(--border); }
.arrange-col--unassigned { border-style: dashed; }

.arrange-col__head {
    display        : flex;
    align-items    : center;
    justify-content: space-between;
    padding        : .65rem 1rem;
    background     : var(--bg-raised);
    border-bottom  : 1px solid var(--border);
    font-size      : .82rem;
    font-weight    : 700;
    color          : var(--text-primary);
}
.arrange-col__count {
    font-size  : .72rem;
    font-weight: 700;
    background : var(--bg-hover);
    color      : var(--text-muted);
    padding    : .1rem .45rem;
    border-radius: 20px;
}
.arrange-col--ok    .arrange-col__count { background:rgba(25,135,84,.2); color:#75d4a2; }
.arrange-col--over  .arrange-col__count { background:rgba(220,53,69,.2); color:#f87d96; }

.arrange-list {
    padding    : .5rem;
    min-height : 150px;
    display    : flex;
    flex-direction: column;
    gap        : .4rem;
}

.arrange-team {
    display        : flex;
    align-items    : center;
    gap            : .6rem;
    background     : var(--bg-raised);
    border         : 1px solid var(--border);
    border-radius  : 9px;
    padding        : .5rem .75rem;
    cursor         : grab;
    user-select    : none;
    transition     : box-shadow .15s, transform .15s;
}
.arrange-team:active { cursor:grabbing; }
.arrange-team:hover  { box-shadow: 0 3px 12px rgba(0,0,0,.3); }

.arrange-team__dot {
    width        : 10px;
    height       : 10px;
    border-radius: 50%;
    flex-shrink  : 0;
}
.arrange-team__name {
    flex      : 1;
    font-size : .83rem;
    font-weight: 600;
    color     : var(--text-primary);
}
.arrange-team__grip {
    color    : var(--text-faint);
    font-size: .85rem;
}

/* États Sortable */
.arrange-team--ghost   { opacity:.4; }
.arrange-team--chosen  { box-shadow: 0 4px 16px rgba(0,0,0,.4); }
.arrange-team--drag    { box-shadow: 0 8px 24px rgba(0,0,0,.5); transform:scale(1.03); }



/* ═══════════════════════════════════════════════════════════════
   IMPORT VIEWS  (import-*)
   ═══════════════════════════════════════════════════════════════ */

.import-section-label {
    font-size      : .68rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .08em;
    color          : var(--text-faint);
    padding        : .6rem 0 .3rem;
    margin-top     : .75rem;
    border-bottom  : 1px solid var(--border);
}
.import-section-label:first-child { margin-top:0; }

.import-team-row {
    display        : flex;
    align-items    : center;
    justify-content: space-between;
    gap            : 1rem;
    padding        : .65rem .25rem;
    border-bottom  : 1px solid var(--border-light);
}
.import-team-row:last-of-type { border-bottom:none; }

.import-team-row__info {
    display    : flex;
    align-items: center;
    gap        : .65rem;
    flex       : 1;
    min-width  : 0;
}
.import-team-row__dot {
    width        : 10px;
    height       : 10px;
    border-radius: 50%;
    flex-shrink  : 0;
}
.import-team-row__name {
    font-size  : .88rem;
    font-weight: 700;
    color      : var(--text-primary);
}
.import-team-row__sub {
    font-size: .72rem;
    color    : var(--text-muted);
}
.import-team-row__players {
    font-size  : .72rem;
    color      : var(--text-faint);
    white-space: nowrap;
}
.import-team-row__actions {
    display    : flex;
    gap        : .5rem;
    flex-shrink: 0;
}

.import-btn {
    display        : inline-flex;
    align-items    : center;
    padding        : .35rem .8rem;
    border-radius  : 8px;
    font-size      : .78rem;
    font-weight    : 600;
    cursor         : pointer;
    border         : none;
    white-space    : nowrap;
    transition     : background .15s;
}
.import-btn--primary {
    background: #FF6B00;
    color     : #fff;
}
.import-btn--primary:hover { background:#e55e00; }
.import-btn--ghost {
    background: var(--bg-raised);
    border    : 1px solid var(--border);
    color     : var(--text-muted);
}
.import-btn--ghost:hover { background:var(--bg-hover); color:var(--text-primary); }

/* Bouton import dans td-panel__head */
.td-panel__add-btn--import {
    background  : rgba(255,107,0,.15);
    border-color: rgba(255,107,0,.35);
    color       : #FF6B00;
}
.td-panel__add-btn--import:hover {
    background: rgba(255,107,0,.25);
    color     : #FF6B00;
}



/* ═══════════════════════════════════════════════════════════════
   TEAM ROW ACTIONS dans Tournament/Details
   ═══════════════════════════════════════════════════════════════ */

.td-team-row-wrap {
    display    : flex;
    align-items: center;
    flex-wrap  : nowrap;
    border-bottom: 1px solid var(--border-light);
}
.td-team-row-wrap:last-child { border-bottom: none; }

.td-team-row-wrap .td-team-row {
    flex         : 1;
    border-bottom: none;  /* supprime la bordure du lien — gérée par wrap */
}

.td-team-row__actions {
    display    : flex;
    align-items: center;
    gap        : .25rem;
    padding    : 0 .5rem;
    flex-shrink: 0;
}

.td-team-row__btn {
    display         : inline-flex;
    align-items     : center;
    justify-content : center;
    width           : 28px;
    height          : 28px;
    border-radius   : 7px;
    background      : transparent;
    border          : 1px solid var(--border);
    color           : var(--text-muted);
    font-size       : .78rem;
    text-decoration : none;
    cursor          : pointer;
    transition      : background .15s, color .15s, border-color .15s;
    flex-shrink     : 0;
}
.td-team-row__btn:hover {
    background  : var(--bg-hover);
    color       : var(--text-primary);
    border-color: var(--text-muted);
}
.td-team-row__btn--danger:hover {
    background  : rgba(220,53,69,.15);
    color       : #f87d96;
    border-color: rgba(220,53,69,.3);
}
.td-team-row__btn form { margin:0; }



/* Variante danger du bouton roster-row__edit */
.roster-row__edit--danger:hover {
    border-color : rgba(220,53,69,.4) !important;
    color        : #f87d96 !important;
    background   : rgba(220,53,69,.12) !important;
}



/* Wrapper pour roster-row + boutons d'action */
.roster-row-wrap {
    display    : flex;
    align-items: center;
    border-bottom: 1px solid var(--border-light);
}
.roster-row-wrap:last-child { border-bottom: none; }
.roster-row-wrap .roster-row {
    flex         : 1;
    border-bottom: none;
}
.roster-row__btns {
    display    : flex;
    align-items: center;
    gap        : .25rem;
    padding    : 0 .5rem;
    flex-shrink: 0;
}
.roster-row__btns form { margin: 0; }



/* ═══════════════════════════════════════════════════════════════
   PAGE CONTACT
   ═══════════════════════════════════════════════════════════════ */

.contact-hero {
    text-align : center;
    padding    : 2rem 1rem 1rem;
}
.contact-hero__icon {
    font-size    : 3rem;
    color        : #FF6B00;
    margin-bottom: 1rem;
    display      : block;
}
.contact-hero__title {
    font-size    : 2rem;
    font-weight  : 800;
    color        : var(--text-primary);
    margin-bottom: .75rem;
}
.contact-hero__lead {
    font-size  : 1rem;
    color      : var(--text-muted);
    max-width  : 540px;
    margin     : 0 auto;
    line-height: 1.6;
}

/* Motifs de contact */
.contact-reason {
    display    : flex;
    align-items: flex-start;
    gap        : .85rem;
    background : var(--bg-surface);
    border     : 1px solid var(--border);
    border-radius: 14px;
    padding    : 1rem 1.1rem;
    height     : 100%;
}
.contact-reason__icon {
    width           : 40px;
    height          : 40px;
    border-radius   : 10px;
    display         : flex;
    align-items     : center;
    justify-content : center;
    font-size       : 1.1rem;
    flex-shrink     : 0;
}
.contact-reason__title {
    font-size  : .88rem;
    font-weight: 700;
    color      : var(--text-primary);
    margin-bottom: .2rem;
}
.contact-reason__desc {
    font-size  : .78rem;
    color      : var(--text-muted);
    line-height: 1.5;
}

/* Carte coordonnées */
.contact-card {
    background   : var(--bg-surface);
    border       : 1px solid var(--border);
    border-radius: 16px;
    padding      : 1.75rem;
}
.contact-card__title {
    font-size    : 1rem;
    font-weight  : 800;
    color        : var(--text-primary);
    margin-bottom: 1.25rem;
}
.contact-card__items {
    display       : flex;
    flex-direction: column;
    gap           : .75rem;
    margin-bottom : 1.25rem;
}
.contact-card__item {
    display        : flex;
    align-items    : center;
    gap            : 1rem;
    padding        : .85rem 1rem;
    background     : var(--bg-raised);
    border         : 1px solid var(--border);
    border-radius  : 12px;
    text-decoration: none;
    transition     : border-color .18s, background .18s;
}
.contact-card__item:hover {
    border-color: var(--accent);
    background  : var(--bg-hover);
}
.contact-card__item-icon {
    width           : 44px;
    height          : 44px;
    border-radius   : 12px;
    display         : flex;
    align-items     : center;
    justify-content : center;
    font-size       : 1.2rem;
    flex-shrink     : 0;
}
.contact-card__item-label {
    font-size  : .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color      : var(--text-faint);
    margin-bottom: .1rem;
}
.contact-card__item-value {
    font-size  : .88rem;
    font-weight: 600;
    color      : var(--text-primary);
}
.contact-card__note {
    font-size  : .75rem;
    color      : var(--text-faint);
    text-align : center;
    margin     : 0;
    font-style : italic;
}



/* ═══════════════════════════════════════════════════════════════
   PAGE GUIDE
   ═══════════════════════════════════════════════════════════════ */

.guide-layout {
    display : grid;
    grid-template-columns: 240px 1fr;
    gap     : 2rem;
    align-items: start;
}
@media (max-width: 991px) {
    .guide-layout { grid-template-columns: 1fr; }
    .guide-toc    { display: none; }
}

/* Table des matières */
.guide-toc {
    position  : sticky;
    top       : 80px;
    background: var(--bg-surface);
    border    : 1px solid var(--border);
    border-radius: 14px;
    padding   : 1.25rem;
    max-height: calc(100vh - 100px);
    overflow-y: auto;
}
.guide-toc__title {
    font-size      : .7rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .08em;
    color          : var(--text-faint);
    margin-bottom  : .75rem;
}
.guide-toc__section {
    font-size      : .68rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .06em;
    color          : var(--text-muted);
    margin-bottom  : .35rem;
    margin-top     : .5rem;
    padding-bottom : .3rem;
    border-bottom  : 1px solid var(--border);
}
.guide-toc__link {
    display       : block;
    font-size     : .78rem;
    color         : var(--text-muted);
    text-decoration: none;
    padding       : .3rem .5rem;
    border-radius : 7px;
    margin-bottom : .1rem;
    transition    : background .15s, color .15s;
    line-height   : 1.4;
}
.guide-toc__link:hover { background: var(--bg-hover); color: var(--text-primary); }
.guide-toc__link--active { background: rgba(255,107,0,.1); color: #FF6B00 !important; font-weight: 600; }

/* Hero guide */
.guide-hero {
    text-align   : center;
    padding      : 1.5rem 1rem 2rem;
    margin-bottom: 1rem;
}
.guide-hero__icon {
    font-size    : 2.5rem;
    color        : #FF6B00;
    margin-bottom: .75rem;
    display      : block;
}
.guide-hero__title {
    font-size    : 1.8rem;
    font-weight  : 800;
    color        : var(--text-primary);
    margin-bottom: .6rem;
}
.guide-hero__lead {
    font-size  : .92rem;
    color      : var(--text-muted);
    max-width  : 520px;
    margin     : 0 auto;
    line-height: 1.6;
}

/* Partie */
.guide-part { margin-bottom: 3rem; }
.guide-part__header {
    display      : flex;
    align-items  : center;
    gap          : 1rem;
    padding      : 1rem 1.25rem;
    border-radius: 14px;
    margin-bottom: 1.5rem;
}
.guide-part__header--organizer {
    background: rgba(255,107,0,.08);
    border    : 1px solid rgba(255,107,0,.2);
}
.guide-part__header--viewer {
    background: rgba(13,110,253,.08);
    border    : 1px solid rgba(13,110,253,.2);
}
.guide-part__header-icon {
    font-size       : 1.4rem;
    width           : 48px;
    height          : 48px;
    border-radius   : 12px;
    display         : flex;
    align-items     : center;
    justify-content : center;
    flex-shrink     : 0;
}
.guide-part__header--organizer .guide-part__header-icon { background:rgba(255,107,0,.15); color:#FF6B00; }
.guide-part__header--viewer    .guide-part__header-icon { background:rgba(13,110,253,.15); color:#7eb8ff; }
.guide-part__header-label {
    font-size      : .68rem;
    font-weight    : 700;
    text-transform : uppercase;
    letter-spacing : .08em;
    color          : var(--text-faint);
    margin-bottom  : .15rem;
}
.guide-part__header-title {
    font-size  : 1.05rem;
    font-weight: 800;
    color      : var(--text-primary);
}

/* Étape */
.guide-step {
    background   : var(--bg-surface);
    border       : 1px solid var(--border);
    border-radius: 14px;
    margin-bottom: 1.25rem;
    overflow     : hidden;
}
.guide-step__head {
    display    : flex;
    align-items: flex-start;
    gap        : 1rem;
    padding    : 1.1rem 1.25rem;
    background : var(--bg-raised);
    border-bottom: 1px solid var(--border);
}
.guide-step__num {
    width           : 32px;
    height          : 32px;
    border-radius   : 50%;
    background      : rgba(255,107,0,.15);
    color           : #FF6B00;
    font-size       : .85rem;
    font-weight     : 800;
    display         : flex;
    align-items     : center;
    justify-content : center;
    flex-shrink     : 0;
}
.guide-step__num--viewer {
    background: rgba(13,110,253,.15);
    color     : #7eb8ff;
}
.guide-step__title {
    font-size  : .95rem;
    font-weight: 700;
    color      : var(--text-primary);
    margin-bottom: .15rem;
}
.guide-step__sub {
    font-size: .75rem;
    color    : var(--text-muted);
}
.guide-step__body {
    padding   : 1.25rem;
    font-size : .85rem;
    color     : var(--text-muted);
    line-height: 1.7;
}
.guide-step__body p { margin-bottom: .85rem; }
.guide-step__body p:last-child { margin-bottom: 0; }

/* Placeholder image */
.guide-img-placeholder {
    display         : flex;
    flex-direction  : column;
    align-items     : center;
    justify-content : center;
    gap             : .6rem;
    background      : var(--bg-raised);
    border          : 2px dashed var(--border);
    border-radius   : 12px;
    padding         : 2.5rem 1rem;
    margin          : 1rem 0;
    color           : var(--text-faint);
    font-size       : .78rem;
    text-align      : center;
}
.guide-img-placeholder i { font-size: 2rem; }

/* Liste guide */
.guide-list {
    margin    : .75rem 0;
    padding-left: 1.25rem;
    color     : var(--text-muted);
    font-size : .85rem;
}
.guide-list li { margin-bottom: .35rem; }

/* Tip et warning */
.guide-tip, .guide-warning {
    padding      : .75rem 1rem;
    border-radius: 10px;
    font-size    : .82rem;
    margin-top   : .85rem;
    line-height  : 1.5;
}
.guide-tip {
    background: rgba(255,193,7,.08);
    border    : 1px solid rgba(255,193,7,.25);
    color     : #ffd95e;
}
.guide-warning {
    background: rgba(220,53,69,.08);
    border    : 1px solid rgba(220,53,69,.25);
    color     : #f87d96;
}



/* ═══════════════════════════════════════════════════════════════
   GUIDE — images bilingues
   ═══════════════════════════════════════════════════════════════ */

.guide-img-wrap {
    position     : relative;
    margin       : 1rem 0;
}

/* Affichage selon la langue — basé sur l'attribut lang du <html> */
.guide-img { display:none; width:100%; border-radius:10px; border:1px solid var(--border); }
[lang="fr"] .guide-img--fr { display:block; }
[lang="en"] .guide-img--en { display:block; }

/* Fallback si l'image n'existe pas encore */
.guide-img-fallback { display:none; }
.guide-img-missing  .guide-img     { display:none !important; }
.guide-img-missing  .guide-img-fallback { display:flex; }



/* ═══════════════════════════════════════════════════════════════
   RECHERCHE GLOBALE
   ═══════════════════════════════════════════════════════════════ */

/* Barre dans la navbar */
.navbar-search {
    display    : flex;
    align-items: center;
    position   : relative;
}
.navbar-search__icon {
    position   : absolute;
    left       : .6rem;
    color      : var(--text-faint);
    font-size  : .8rem;
    pointer-events: none;
}
.navbar-search__input {
    background   : rgba(255,255,255,.08);
    border       : 1px solid rgba(255,255,255,.15);
    border-radius: 20px;
    color        : var(--text-primary);
    font-size    : .78rem;
    padding      : .3rem .85rem .3rem 1.9rem;
    width        : 180px;
    transition   : width .25s, background .2s, border-color .2s;
    outline      : none;
}
.navbar-search__input::placeholder { color: var(--text-faint); }
.navbar-search__input:focus {
    width       : 240px;
    background  : rgba(255,255,255,.12);
    border-color: rgba(255,107,0,.5);
}

/* En-tête page résultats */
.search-header {
    display    : flex;
    align-items: baseline;
    flex-wrap  : wrap;
    gap        : .75rem;
}
.search-header__title {
    font-size  : 1.4rem;
    font-weight: 800;
    color      : var(--text-primary);
    margin     : 0;
}
.search-header__query {
    color      : #FF6B00;
    font-style : italic;
}
.search-header__count {
    font-size  : .82rem;
    color      : var(--text-muted);
}

/* Barre de recherche sur la page résultats */
.search-bar-wrap {
    display    : flex;
    align-items: center;
    position   : relative;
    max-width  : 560px;
}
.search-bar-wrap__icon {
    position   : absolute;
    left       : 1rem;
    color      : var(--text-faint);
    font-size  : .9rem;
    pointer-events: none;
}
.search-bar-wrap__input {
    flex         : 1;
    background   : var(--bg-surface);
    border       : 1px solid var(--border);
    border-radius: 12px 0 0 12px;
    color        : var(--text-primary);
    font-size    : .9rem;
    padding      : .6rem 1rem .6rem 2.5rem;
    outline      : none;
    transition   : border-color .2s;
}
.search-bar-wrap__input:focus { border-color: #FF6B00; }
.search-bar-wrap__btn {
    padding      : .6rem 1.25rem;
    background   : #FF6B00;
    border       : none;
    border-radius: 0 12px 12px 0;
    color        : #fff;
    font-size    : .85rem;
    font-weight  : 700;
    cursor       : pointer;
    white-space  : nowrap;
    transition   : background .15s;
}
.search-bar-wrap__btn:hover { background: #e55e00; }

/* Liste de résultats */
.search-results-list { overflow: hidden; }

.search-result-row {
    display        : flex;
    align-items    : center;
    gap            : .85rem;
    padding        : .7rem 1rem;
    border-bottom  : 1px solid var(--border-light);
    text-decoration: none;
    color          : var(--text-primary);
    transition     : background .15s;
}
.search-result-row:last-child { border-bottom: none; }
.search-result-row:hover { background: var(--bg-hover); }

.search-result-row__icon {
    width           : 34px;
    height          : 34px;
    border-radius   : 9px;
    display         : flex;
    align-items     : center;
    justify-content : center;
    font-size       : .9rem;
    flex-shrink     : 0;
}
.search-result-row__dot {
    width        : 12px;
    height       : 12px;
    border-radius: 50%;
    flex-shrink  : 0;
}
.search-result-row__info { flex:1; min-width:0; }
.search-result-row__name {
    font-size  : .88rem;
    font-weight: 700;
    color      : var(--text-primary);
    white-space: nowrap;
    overflow   : hidden;
    text-overflow: ellipsis;
}
.search-result-row__meta {
    font-size: .72rem;
    color    : var(--text-muted);
    margin-top: .1rem;
}
.search-result-row__arrow {
    color    : var(--text-faint);
    font-size: .75rem;
    flex-shrink: 0;
}



/* ═══════════════════════════════════════════════════════════════
   FOOTER enrichi
   ═══════════════════════════════════════════════════════════════ */

.footer-inner {
    display        : flex;
    align-items    : center;
    justify-content: space-between;
    gap            : .75rem;
}
.footer-links {
    display    : flex;
    align-items: center;
    gap        : 1.25rem;
}
.footer-link {
    font-size      : .78rem;
    color          : rgba(255,255,255,.45);
    text-decoration: none;
    transition     : color .15s;
}
.footer-link:hover { color: rgba(255,255,255,.85); }
.footer-lang {
    display    : flex;
    align-items: center;
    gap        : .35rem;
}



/* ═══════════════════════════════════════════════════════════════
   COMPTEURS COMPACTS
   ═══════════════════════════════════════════════════════════════ */

.stats-compact {
    display        : flex;
    align-items    : center;
    gap            : .25rem;
    background     : var(--bg-surface);
    border         : 1px solid var(--border);
    border-radius  : 12px;
    padding        : .5rem 1rem;
    flex-wrap      : wrap;
}
.stats-compact__item {
    display        : flex;
    align-items    : center;
    gap            : .4rem;
    padding        : .25rem .75rem;
    flex           : 1;
    min-width      : 130px;
    border-right   : 1px solid var(--border);
}
.stats-compact__item:last-child { border-right: none; }
.stats-compact__icon { font-size:.85rem; }
.stats-compact__val  { font-size:1rem; font-weight:800; color:var(--text-primary); }
.stats-compact__lbl  { font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); }
.stats-compact__breakdown {
    margin-left: auto;
    font-size  : .65rem;
    color      : var(--text-faint);
    display    : flex;
    align-items: center;
    gap        : .2rem;
}
.stats-compact__sep { opacity:.4; }

/* ═══════════════════════════════════════════════════════════════
   TABLEAU DE BORD ORGANISATEUR
   ═══════════════════════════════════════════════════════════════ */

/* Carte tournoi actif */
.dash-tournament-card {
    display        : flex;
    flex-direction : column;
    background     : var(--bg-raised);
    border         : 1px solid var(--border);
    border-radius  : 12px;
    padding        : .85rem 1rem;
    text-decoration: none;
    transition     : border-color .18s, background .18s;
    color          : var(--text-primary);
}
.dash-tournament-card:hover {
    border-color: var(--accent);
    background  : var(--bg-hover);
    color       : var(--text-primary);
}
.dash-tournament-card__head {
    display        : flex;
    align-items    : center;
    justify-content: space-between;
    gap            : .5rem;
    margin-bottom  : .4rem;
}
.dash-tournament-card__name {
    font-size  : .88rem;
    font-weight: 700;
    white-space: nowrap;
    overflow   : hidden;
    text-overflow: ellipsis;
}
.dash-tournament-card__stats {
    display  : flex;
    gap      : 1rem;
    font-size: .72rem;
    color    : var(--text-muted);
}

/* Ligne match dashboard */
.dash-match-row {
    display        : flex;
    align-items    : center;
    gap            : .75rem;
    padding        : .6rem 1rem;
    border-bottom  : 1px solid var(--border-light);
    flex-wrap      : wrap;
}
.dash-match-row:last-child { border-bottom: none; }
.dash-match-row__meta {
    display       : flex;
    flex-direction: column;
    min-width     : 80px;
    flex-shrink   : 0;
}
.dash-match-row__date {
    font-size  : .75rem;
    font-weight: 700;
    color      : var(--text-primary);
}
.dash-match-row__tournament {
    font-size: .62rem;
    color    : var(--text-faint);
    white-space: nowrap;
    overflow : hidden;
    text-overflow: ellipsis;
    max-width: 80px;
}
.dash-match-row__teams {
    flex     : 1;
    font-size: .82rem;
    color    : var(--text-primary);
    font-weight: 600;
}
.dash-match-row__btn {
    display      : inline-flex;
    align-items  : center;
    padding      : .25rem .65rem;
    background   : rgba(220,53,69,.12);
    border       : 1px solid rgba(220,53,69,.25);
    border-radius: 7px;
    color        : #f87d96;
    font-size    : .72rem;
    font-weight  : 600;
    text-decoration: none;
    white-space  : nowrap;
    transition   : background .15s;
    flex-shrink  : 0;
}
.dash-match-row__btn:hover { background: rgba(220,53,69,.22); color:#f87d96; }



/* ═══════════════════════════════════════════════════════════════
   PLANNING (Schedule)
   ═══════════════════════════════════════════════════════════════ */

.sched-time-input {
    background  : var(--bg-surface);
    border      : 1px solid var(--border);
    border-radius: 8px;
    color       : var(--text-primary);
    padding     : .3rem .6rem;
    font-size   : .85rem;
    width       : 110px;
}
.sched-time-input:focus { outline:none; border-color:var(--accent); }

/* Layout principal */
.sched-layout {
    display : flex;
    gap     : 1rem;
    align-items: flex-start;
}

/* Réserve */
.sched-reserve {
    width        : 200px;
    flex-shrink  : 0;
    background   : var(--bg-surface);
    border       : 1px solid var(--border);
    border-radius: 12px;
    overflow     : hidden;
    position     : sticky;
    top          : 80px;
}
.sched-reserve__head {
    display        : flex;
    align-items    : center;
    justify-content: space-between;
    padding        : .65rem 1rem;
    background     : var(--bg-raised);
    border-bottom  : 1px solid var(--border);
    font-size      : .8rem;
    font-weight    : 700;
    color          : var(--text-primary);
}
.sched-reserve .sched-list {
    padding    : .5rem;
    min-height : 200px;
    max-height : calc(100vh - 260px);
    overflow-y : auto;
    display    : flex;
    flex-direction: column;
    gap        : .35rem;
}

/* Compteur */
.sched-count {
    background   : var(--bg-hover);
    color        : var(--text-muted);
    font-size    : .68rem;
    font-weight  : 700;
    padding      : .1rem .45rem;
    border-radius: 20px;
}

/* Grille */
.sched-grid-wrap {
    flex      : 1;
    overflow-x: auto;
}
.sched-grid {
    display              : grid;
    grid-template-columns: 70px repeat(var(--day-count), minmax(140px, 1fr));
    gap                  : 2px;
    min-width            : calc(70px + var(--day-count) * 140px);
}

/* En-tête jours */
.sched-grid__corner {
    background   : var(--bg-raised);
    border-radius: 8px 0 0 0;
}
.sched-grid__day-head {
    background   : var(--bg-raised);
    border       : 1px solid var(--border);
    border-radius: 8px 8px 0 0;
    padding      : .5rem;
    text-align   : center;
}
.sched-grid__day-head--today {
    background  : rgba(255,107,0,.12);
    border-color: rgba(255,107,0,.35);
}
.sched-grid__day-name {
    font-size  : .68rem;
    font-weight: 700;
    text-transform: uppercase;
    color      : var(--text-muted);
}
.sched-grid__day-num {
    font-size  : .82rem;
    font-weight: 700;
    color      : var(--text-primary);
}

/* En-tête créneaux */
.sched-grid__slot-head {
    background   : var(--bg-raised);
    border       : 1px solid var(--border);
    padding      : .5rem .4rem;
    text-align   : center;
    font-size    : .78rem;
    font-weight  : 700;
    color        : var(--accent);
    display      : flex;
    flex-direction: column;
    align-items  : center;
    gap          : .25rem;
    justify-content: center;
}
.sched-slot-del {
    background  : none;
    border      : none;
    color       : var(--text-faint);
    cursor      : pointer;
    font-size   : .9rem;
    line-height : 1;
    padding     : 0 2px;
    transition  : color .15s;
}
.sched-slot-del:hover { color: #f87d96; }

/* Cellules */
.sched-cell {
    background   : var(--bg-surface);
    border       : 1px solid var(--border);
    min-height   : 80px;
}
.sched-cell .sched-list {
    padding    : .35rem;
    min-height : 80px;
    display    : flex;
    flex-direction: column;
    gap        : .3rem;
}

/* Carte match */
.sched-match {
    background   : var(--bg-raised);
    border       : 1px solid var(--border);
    border-radius: 8px;
    padding      : .4rem .55rem;
    cursor       : grab;
    user-select  : none;
    transition   : box-shadow .15s, transform .12s;
}
.sched-match:active { cursor: grabbing; }
.sched-match:hover  { box-shadow: 0 2px 10px rgba(0,0,0,.3); }
.sched-match__type {
    font-size  : .6rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color      : var(--text-faint);
    margin-bottom: .15rem;
}
.sched-match__teams {
    font-size  : .72rem;
    color      : var(--text-primary);
    font-weight: 600;
    display    : flex;
    flex-wrap  : wrap;
    align-items: center;
    gap        : .2rem;
}
.sched-match__vs    { color: var(--text-faint); font-size:.65rem; }
.sched-match__team  { white-space: nowrap; }

/* États Sortable */
.sched-match--ghost  { opacity: .35; }
.sched-match--chosen { box-shadow: 0 4px 16px rgba(0,0,0,.4); }

/* Responsive : masquer la grille sur mobile, afficher un message */
@media (max-width: 768px) {
    .sched-layout { flex-direction: column; }
    .sched-reserve { width: 100%; position: static; }
    .sched-grid-wrap { width: 100%; }
}



/* Variante danger du bouton hero éditer */
.td-hero__edit-btn--danger {
    background : transparent;
    border     : none;
    cursor     : pointer;
    color      : var(--text-faint);
    transition : color .18s, background .18s;
    display    : flex;
    align-items: center;
    justify-content: center;
}
.td-hero__edit-btn--danger:hover { color: #f87d96; }

