/* Styles généraux du corps de la page */
body {
    font-family: Arial, sans-serif;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh; /* Hauteur minimale de la fenêtre de visualisation */
    margin: 0;
    background-color: #e0f2f7; /* Couleur de fond bleu clair */
    color: #333; /* Couleur de texte par défaut */
    padding: 20px; /* Ajoute un peu de padding au body pour les écrans très petits */
    box-sizing: border-box; /* S'assure que le padding n'ajoute pas à la largeur totale */
}

/* Conteneur principal du jeu (le cadre blanc) */
.game-container {
    background-color: #ffffff; /* Fond blanc pour le cadre */
    padding: 40px 60px; /* Plus de padding pour le cadre blanc (haut/bas 40px, droite/gauche 60px) */
    border-radius: 15px; /* Coins arrondis */
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Ombre légère */
    text-align: center; /* Centre le texte à l'intérieur */
    display: flex;
    flex-direction: column; /* Les éléments s'empilent verticalement */
    align-items: center; /* Centre les éléments enfants horizontalement */
    max-width: 90%; /* Le conteneur ne dépassera pas 90% de la largeur de l'écran */
    width: fit-content; /* S'adapte à la largeur de son contenu */
    margin: auto; /* Centre le conteneur horizontalement */
    position: relative; /* Définit le contexte de positionnement pour les éléments enfants absolus */
}

/* Style du titre principal du jeu */
h1 {
    color: #007bff; /* Bleu pour le titre */
    margin-bottom: 20px;
    font-size: 2em; /* Taille du titre ajustée */
}

/* Conteneur des informations du jeu (Niveau, Coups) */
.game-info {
    display: flex;
    justify-content: space-around; /* Espace les éléments uniformément */
    width: 100%;
    margin-bottom: 20px;
    font-size: 1.2em;
    font-weight: bold; /* Texte "Niveau actuel" et "Coups" en gras */
    color: #555; /* Couleur gris foncé pour le texte des infos */
    flex-wrap: wrap; /* Permet aux éléments de passer à la ligne sur petits écrans */
}

.game-info p {
    margin: 5px 10px; /* Réduit un peu les marges pour mieux s'adapter */
}

/* Conteneur pour les vues de jeu (utilisé pour la transition ou le masquage) */
.game-view-container {
    position: relative; 
    width: 100%; 
    min-height: 200px; /* Hauteur minimale pour éviter le "saut" quand les cartes disparaissent */
    display: flex; 
    flex-direction: column; 
    align-items: center; 
    margin-top: 20px; 
    box-sizing: border-box;
}

/* Style du plateau de jeu (la grille de cartes) */
#game-board {
    display: grid; 
    gap: 10px; /* Espace entre les cartes */
    justify-content: center; /* Centre la grille horizontalement */
    align-content: center; 
    max-width: 100%; 
    transition: opacity 0.5s ease; /* Transition douce pour l'opacité */
    width: fit-content; /* S'adapte à la largeur de son contenu */
    margin-bottom: 20px; 
}

/* Style pour cacher le plateau de jeu */
#game-board.hidden {
    display: none !important; /* Cache l'élément complètement */
}

/* Style d'une carte individuelle */
.card {
    width: 120px; /* Taille de base d'une carte */
    height: 120px;
    perspective: 1000px; /* Définit la perspective pour l'effet 3D de retournement */
    cursor: pointer; /* Indique que l'élément est cliquable */
    border: 2px solid #0056b3; /* Bordure bleue */
    border-radius: 8px; /* Coins arrondis */
    position: relative; 
    overflow: hidden; /* Cache le contenu qui dépasse */
    background-color: #f0f0f0; /* Couleur de fond de la carte */
}

/* Conteneur interne pour le recto et le verso de la carte (pour l'effet de retournement) */
.card-inner {
    width: 100%;
    height: 100%;
    position: relative;
    transform-style: preserve-3d; /* Permet aux éléments enfants d'être positionnés en 3D */
    transition: transform 0.6s; /* Transition douce pour l la rotation */
}

/* Style du recto (face) et du verso (back) de la carte */
.card-face,
.card-back {
    position: absolute;
    width: 100%;
    height: 100%;
    backface-visibility: hidden; /* Cache la face arrière de l'élément lors de la rotation */
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: hidden; 
}

/* Styles pour les images à l'intérieur des faces de carte */
.card-face img,
.card-back img {
    max-width: 100%; /* L'image ne dépasse pas la largeur de son conteneur */
    max-height: 100%; /* L'image ne dépasse pas la hauteur de son conteneur */
    display: block; 
    object-fit: contain; /* L'image est redimensionnée pour tenir dans le conteneur sans être coupée */
}

/* Position initiale du verso de la carte */
.card-back {
    transform: rotateY(0deg); 
}

/* Position initiale de la face de la carte (cachée) */
.card-face {
    transform: rotateY(180deg); 
}

/* Quand la carte est retournée ou matchée, on inverse la rotation */
.card.is-flipped .card-inner,
.card.is-matched .card-inner {
    transform: rotateY(180deg); /* Fait pivoter la carte de 180 degrés */
}

/* Classe utilitaire pour cacher les éléments */
.hidden {
    display: none !important; 
}

/* Style pour le conteneur des actions de fin de jeu/niveau */
#end-game-actions {
    display: flex; 
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%; 
    box-sizing: border-box; 
}

/* Style des boutons généraux */
button {
    background-color: #28a745; /* Couleur de fond verte */
    color: white; /* Texte blanc */
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    font-size: 1.1em;
    margin-top: 20px; 
    transition: background-color 0.3s ease; /* Transition douce au survol */
}

button:hover {
    background-color: #218838; /* Couleur de fond plus foncée au survol */
}

/* Styles pour le message de victoire */
#win-message {
    display: flex; 
    flex-direction: column; 
    align-items: center; 
    justify-content: center; 
    padding: 20px;
    background-color: #f8f9fa; /* Fond très clair */
    border-radius: 10px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
    width: 100%; 
    box-sizing: border-box; 
}

.win-text {
    font-size: 1.8em;
    font-weight: bold;
    color: #28a745; /* Texte vert */
    margin-bottom: 20px;
}

.trophy-image {
    max-width: 150px; 
    height: auto; 
    margin-bottom: 25px; 
    display: block; 
}

/* Le bouton replay utilise le style de base des boutons */
#replay-btn {
    /* Utilise le style de base des boutons défini plus haut */
}

/* --- Styles pour les boutons de sélection de langue --- */
#language-switcher {
    position: absolute; /* Positionne le switcher par rapport au .game-container */
    top: -5px; /* Remonté à -5px du haut du conteneur */
    right: 15px; /* 15px de la droite du conteneur */
    display: flex;
    justify-content: center;
    gap: 8px; /* Espace entre les boutons */
    z-index: 10; /* Assure qu'il est au-dessus des autres éléments */
}

.lang-button {
    background-color: transparent; /* Fond transparent */
    border: 2px solid #007bff; /* Bordure bleue */
    padding: 3px; /* Réduit le padding pour réduire la taille du cadre */
    border-radius: 5px; /* Coins arrondis */
    cursor: pointer;
    transition: all 0.3s ease; /* Transition douce pour tous les changements */
    display: flex;
    justify-content: center;
    align-items: center;
    width: 38px; /* Réduit la largeur du bouton */
    height: 28px; /* Réduit la hauteur du bouton */
}

.lang-button:hover {
    background-color: #e0f2f7; /* Léger fond au survol */
    border-color: #0056b3; /* Bordure plus foncée au survol */
}

.lang-button img {
    width: 100%; /* L'image prend toute la largeur du bouton */
    height: 100%; /* L'image prend toute la hauteur du bouton */
    object-fit: contain; /* S'assure que l'image est contenue sans être déformée */
    display: block;
}

/* Style spécifique pour le bouton de langue actif */
.lang-button.active {
    background-color: #007bff; /* Fond bleu pour le bouton actif */
    border-color: #007bff; /* Bordure bleue pour le bouton actif */
}
.lang-button.active img {
    /* Vous pouvez ajouter un filtre ici si vos images sont monochromes et que vous voulez changer leur couleur */
    /* filter: brightness(0) invert(1); par exemple pour des icônes blanches sur fond bleu */
}

/* Styles pour le footer */
.footer {
    margin-top: 20px;
    font-size: 0.9em;
    color: #777;
}


/* Media Queries pour la responsivité : ajustement de la taille des cartes et éléments sur différents écrans */
@media (max-width: 768px) {
    .game-container {
        padding: 25px 35px; 
    }

    h1 {
        font-size: 1.8em;
    }

    .game-info {
        font-size: 1em;
    }

    .card {
        width: 100px; 
        height: 100px;
    }
    
    #language-switcher {
        top: 0px; 
        right: 8px;
        gap: 5px;
    }
    .lang-button {
        width: 35px; 
        height: 25px; 
        padding: 2px; 
    }
}

@media (max-width: 480px) {
    .game-container {
        padding: 15px 20px; 
    }

    h1 {
        font-size: 1.5em;
    }

    .game-info {
        font-size: 0.9em;
    }

    #game-board {
        gap: 8px; 
    }

    .card {
        width: 80px; 
        height: 80px;
    }

    .win-text {
        font-size: 1.4em; 
    }
    .trophy-image {
        max-width: 100px; 
    }

    #language-switcher {
        top: 0px; 
        right: 5px;
        gap: 3px;
    }
    .lang-button {
        width: 30px; 
        height: 20px; 
        padding: 1px; 
    }
}
