@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes blurIn {
    from {
        opacity: 0;
        filter: blur(10px);
    }
    to {
        opacity: 1;
        filter: blur(0);
    }
}

/* Harmonisation layout : desktop + mobile */
#sidebar ~ #contenu > [id] {
    margin-right: 10px;
}

@media (max-width: 1000px) {
    #sidebar ~ #contenu {
        float: left !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        width: 100% !important;
        padding-top: 10px !important;
    }

    #sidebar ~ #contenu > [id] {
        width: calc(100% - 80px) !important;
        margin-left: 70px !important;
        margin-right: 10px !important;
    }
}

/* Le rightbar ne doit jamais s'afficher sur mobile */
@media (max-width: 1000px), (hover: none) and (pointer: coarse) {
    #rightbar {
        display: none !important;
    }
}

/* Taille de titre harmonisee sur toutes les pages principales */
#accueil .home-header-team-name,
#equipe .team-header-team-name,
#skieur .skieur-title,
#calendrier_saison .calendar-header-left,
#academie .academie-header-right span,
#infrastructures .infra-header-title span,
#materiel .materiel-title,
#recrutement .titre-recrutement,
#discussions .discussions-title,
#marche_transferts .marche-transferts-title,
#finances .finances-title,
#classement_saison .classement-header-select,
#resultat_course .resultat-header-select,
#archives .archives-header-left,
#profil .profil-title {
    font-size: 23px !important;
    font-weight: 700 !important;
    line-height: 1.1 !important;
}

/* Titres mobiles simplifiÃ©s et homogÃ¨nes */
@media (max-width: 1000px) {
    /* 1) On garde uniquement le titre utile demandÃ© */
    #accueil .home-header-right,
    #equipe .team-header-right,
    #skieur .skieur-header-right,
    #calendrier_saison .calendar-header-right,
    #materiel .materiel-header-right,
    #recrutement .recrutement-header-meta,
    #discussions .discussions-header-right,
    #marche_transferts .marche-transferts-header-right,
    #classement_saison .classement-header-right,
    #resultat_course .resultat-header-right,
    #archives .archives-header-right {
        display: none !important;
    }

    /* Academie: titre simple "Academie" (on masque le nom d'Ã©quipe) */
    #academie .academie-header-left {
        display: none !important;
    }

    #academie .academie-header-right {
        display: flex !important;
        width: 100% !important;
        justify-content: flex-start !important;
        text-align: left !important;
    }

    /* Accueil: juste nom d'Ã©quipe (sans drapeau) */
    #accueil .home-header-flag {
        display: none !important;
    }

    /* Skieur: juste drapeau + nom (sans flÃ¨ches) */
    #skieur .skieur-header-left .team-nav-btn {
        display: none !important;
    }

    /* 2) MÃªme taille de police pour tous les titres mobiles */
    #accueil .home-header-team-name,
    #equipe .team-header-team-name,
    #skieur .skieur-title,
    #calendrier_saison .calendar-header-left,
    #academie .academie-header-right span,
    #infrastructures .infra-header-title span,
    #materiel .materiel-title,
    #recrutement .titre-recrutement,
    #discussions .discussions-title,
    #marche_transferts .marche-transferts-title,
    #finances .finances-title,
    #classement_saison .classement-header-select,
    #resultat_course .resultat-header-select,
    #archives .archives-header-left,
    #profil .profil-title {
        font-size: 22px !important;
        font-weight: 700 !important;
        line-height: 1.1 !important;
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
    }

    /* 3) Alignement: titre sur une seule ligne, Ã  gauche */
    #accueil .home-header-left,
    #equipe .team-header-left,
    #skieur .skieur-header-left,
    #calendrier_saison .calendar-header-left,
    #infrastructures .infra-header-left,
    #materiel .materiel-header-left,
    #recrutement .recrutement-header,
    #discussions .discussions-header-left,
    #marche_transferts .marche-transferts-header-left,
    #finances .finances-header-left,
    #classement_saison .classement-header-left,
    #resultat_course .resultat-header-left,
    #archives .archives-header-left {
        width: 100% !important;
        justify-content: flex-start !important;
        text-align: left !important;
        white-space: nowrap !important;
        overflow: hidden !important;
    }

    /* Masquer les 4 tuiles de synthese sous le titre sur mobile */
    #accueil .home-summary-grid,
    #equipe .team-summary-grid,
    #skieur .skieur-summary-grid,
    #calendrier_saison .calendar-summary-grid,
    #academie .academie-summary-grid,
    #infrastructures .infra-summary-grid,
    #materiel .materiel-summary-grid,
    #recrutement .recrutement-summary-grid,
    #discussions .discussions-stats-grid,
    #marche_transferts .market-stats-grid,
    #finances .finance-stats-grid,
    #classement_saison .classement-summary-grid,
    #resultat_course .resultat-summary-grid {
        display: none !important;
    }
}

/* Harmonisation typographique des tableaux (reference: classement detaille) */
#contenu table:not(.message-kv-table) thead th,
#contenu table:not(.message-kv-table) > thead > tr > th {
    font-size: var(--table-head-font-size) !important;
    font-weight: 700 !important;
    line-height: 1.25 !important;
}

#contenu table:not(.message-kv-table) tbody td,
#contenu table:not(.message-kv-table) > tbody > tr > td,
#contenu table:not(.message-kv-table) td {
    font-size: var(--table-row-font-size) !important;
    font-weight: 500 !important;
    line-height: 1.35 !important;
}

#contenu table:not(.message-kv-table) tbody td[class*="pos"],
#contenu table:not(.message-kv-table) tbody td[class*="rank"],
#contenu table:not(.message-kv-table) tbody td[class*="position"],
#contenu table:not(.message-kv-table) .home-ranking-pos,
#contenu .cell-position {
    font-size: 17px !important;
    font-weight: 800 !important;
}

