/*
Style englobant tous les éléments du corps de la page.
*/
/*
- Nous privilégions une police Arial afin de faciliter la compatibilité.
- Afin de mettre en pratique la théorie présentée sur les gradients, nous
choisissons des teintes de couleurs qui s'harmoniseront bien avec les
couleurs des boutons de sélection des couleurs.
- Nous voudrons que le contenu de la page soit centré et que celle-ci
prenne toute la hauteur disponible en fonction du média d'affichage.
*/
body 
{
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
    background: radial-gradient(circle, #C3B1E1 0%, rgba(192,170,228,0.8) 50%, #FFCBA4 100%);
    display: flex;  
    justify-content: center;
    align-items: center;
    min-height: 100vh;
}

/*
Style pour les éléments du conteneur principal.
*/
/*
- Le texte sera centré.
- La largeur du conteneur sera de 80% du corps de la page.
*/
.main_container 
{
    text-align: center;
    width: 80%;
}

/*
Section des styles des fenêtres d'interactions avec le joueur.- 
*/
/*
- Les fenêtres seront affichées par-dessus la page (z-index).
- Les fenêtres couvriront la totalité de la page.
- L'arrière-plan des fenêtres sera noir, mais transparent. Ceci
donnera un effet d'assombrissement du contenu sous la fenêtre afin
de faire ressortir cette dernière.
*/
.prompt 
{
    display: none;
    position: fixed;
    z-index: 1;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
}

/*
- La section principale de la fenêtre sera centrée.
- Elle aura une largeur maximale de 300px ou de 80% de .prompt.
- L'arrière-plan des fenêtres sera un dégradé de mauve.
*/
.prompt_content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: radial-gradient(circle, rgba(225,136,252,1) 0%, rgba(145,0,187,0.95) 50%, rgba(72,0,93,0.95) 100%);
    padding: 20px;
    border: 1px solid #888;
    width: 80%;
    max-width: 300px;
}

/*
- Le texte des fenêtres sera mauve pâle.
*/
.prompt_message {
    color: #fcf0ff;
}

/*
- Le conteneur des boutons sera disposé au bas des fenêtres visibles.
*/
.yes_no_buttons, .ok_cancel_buttons 
{
    display: flex;
    justify-content: space-around;
    margin-top: 20px;
}

/*
- L'arrière-plan des boutons sera d'un dégradé de bleu.
- La couleur du texte des boutons sera mauve.
- La largeur des boutons sera déterminée par les proportions du conteneur parent.
*/
.yes_no_buttons button, .ok_cancel_buttons button
{
    background: radial-gradient(circle, #C3B1E1,  #569fff);
    color: rgba(72,0,93,0.95);
    width: 6em;
}

/*
Style définissant les attributs du champ d'entrée du nom du joueur.
*/
/*
- Il y aura un espace entre le texte de la fenêtre et le champ.
*/
#player_name
{
    display: inline-block;
    margin-top: 10px;
}

/*
Fin de la section des fenêtres d'interaction.
*/

/*
- Le texte en entête sera d'un gradient qui passera par les couleurs à deviner.
- Puisqu'il n'est pas possible d'appliquer un gradient à la propriété color, nous
appliquons cette propriété à l'arrière-plan, nous définissons la couleur des lettres
comme transparente, puis nous restreignons l'arrière-plan aux lettres.
*/
#title
{
    background: linear-gradient(90deg, rgba(0,0,255,1) 0%,  rgba(255,255,0,1) 50%, rgba(255,0,0,1) 100%);
    -webkit-background-clip: text;
    background-clip: text; /*Nous définissons également cette propriété afin d'assurer la compatibilité pour les versions et navigateurs*/
    -webkit-text-fill-color: transparent;
    font-weight: bolder;
}

/*
Style général des pastilles de couleurs.
*/
.token_obfuscated, .token_guess 
{
    width: 50px;
    height: 50px;
    border-radius: 50%;
    margin: 10px;
    display: inline-block;
}

/*
Styles des pastilles des couleurs à deviner qui sont masquées.
*/
.token_obfuscated 
{
    background-color: black;
    position: relative;
}

/*
Style des conteneurs du point d'interrogation.
*/
.token_obfuscated span
{
    color: white;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 2em;
}

/*
Section des styles généraux des boutons.
*/
/*
- La couleur du texte sera mauve pâle.
- Le texte sera centré et 100% de la grosseur du texte du conteneur.
- Afin de donner un effet 3D, il y a une ombre sous le côté inférieur.
- Nous utilisons un effet de transition vite-lent pour améliorer l'animation.
*/
button 
{
    color: #fcf0ff;
    border: none;
    text-align: center;
    display: inline-block;
    font-size: 1em;
    margin: 10px 2px;
    cursor: pointer;
    padding: 10px 24px;
    border-radius: 5px;
    box-shadow: 0 5px 0 rgba(0, 0, 0, 0.2);
    position: relative;
    transition: all 0.2s ease;
}

/*
- Lorsque le curseur passe sur le bouton, nous réduisons l'ombre sous ce dernier
pour donner l'impression qu'il est pressé.
*/
button:hover 
{
    box-shadow: 0 3px 0 rgba(0, 0, 0, 0.2);
    top: 2px;
}

/*
- Lorsque du clic de la sourie, nous retirons l'ombre pour donner l'effet qu'il est enfoncé.
*/ 
button:active 
{
    box-shadow: none;
    top: 5px;
}
/*Fin de la section des styles généraux des boutons*/

/*
Section des styles des boutons "Valider" et "Nouvelle Partie".
*/
/*
- L'arrière-plan sera d'un dégradé de mauve.
- Les dégradés de mauve sont redéfinis en fonction de la position et des actions du pointeur de la souris.
*/
#validate,#new_game /*Style par défaut*/
{
    background: rgb(225,136,252);
    background: radial-gradient(circle, rgba(225,136,252,1) 0%,
    rgba(145,0,187,0.95) 50%, rgba(72,0,93,0.95) 100%);
}

#validate:hover,#new_game:hover /*Style à appliquer quand le pointeur passe au-dessus des boutons*/
{
    background: rgb(212,71,255);
    background: radial-gradient(circle, rgba(212,71,255,1) 0%, rgba(190,64,227,0.95) 25%,
        rgba(145,0,187,0.95) 50%, rgba(72,0,93,0.95) 75%, rgba(72,0,93,0.95) 100%);
}

#validate:active,#new_game:active /*Style à appliquer lors d'un clic*/
{
    background: rgb(225,136,252);
    background: radial-gradient(circle, rgba(225,136,252,1) 0%, rgba(212,71,255,0.95) 25%,
        rgba(190,64,227,0.95) 50%, rgba(145,0,187,0.95) 75%, rgba(72,0,93,0.95) 100%);
}
/*Fin de la section des styles des boutons "Nouvelle Partie" et "Valider".*/

/*
Sections des styles du tableau contenant les informations sur la partie en cours.
*/
/*
- Nous utilisons des marges horizontales automatiques pour centrer le tableau.
- La disposition du tableau demeurera toujours la même.
*/
.informations
{
    margin: 0 auto;
    table-layout: fixed;
}

/*
Style général des colones.
*/
/*
- Le texte sera centré verticalement et les colones auront la même largeur.
*/
td
{   
    vertical-align: middle;
    box-sizing: border-box;
    width: 50%;
}

/*
Styles à appliquer au éléments de la première colonne.
*/
/*
- Le texte sera enligé à droite et il y aura un espace entre le contenu de la première et la deuxième colonne.
*/
td:first-child  
{
    text-align: right;
    padding-right: 2px;
}

/*
Style à appliquer aux éléments de la deuxième colonne.
*/
/*
- Le texte sera enligé à gauche.
- Nous avons ajouté la propriété "!important" afin d'indiquer la priorité de cette instruction puisque
le texte du nom du joueur s'enlignait à droite malgré la présente instruction.
*/
td:last-child
{
    text-align: left !important;
}

/*
Style du texte du tableau et des messages à l'utilisateur.
*/
p, td
{
color: #2C3E50;
}
/*Fin de la section des styles du tableau des informations sur la partie en cours*/

/*
Style pour l'élément affichant les messages à l'utilisateur
*/
/*
- Le texte sera affiché en gras.
*/
#message 
{
    font-weight: bold;
}

/*
Modification des propriétés de la page afin de s'adapter à l'affichage sur un petit écran, par exemple un cellulaire.
*/

/*
- Nous adaptons le titre afin qu'il soit toujours affiché sur une seule ligne.
*/
@media screen and (max-width: 640px){
    #title /*- Nous adaptons le titre afin qu'il soit toujours affiché sur une seule ligne.*/
    {
        font-size: 0.8em;
        font-weight: bold;
    }
}

@media screen and (max-width: 480px) 
{
    .main_container 
    {
        width: 95%;
    }

    .token_obfuscated, .token_guess 
    {
        width: 40px;
        height: 40px;
        margin: 5px;
    }

    .token_obfuscated span 
    {
        font-size: 1.5em;
    }

    button
    {
        font-size: 0.8em;
        padding: 8px 16px;
    }

    td 
    {
        font-size: 0.8em;
    }

    td:last-child 
    {
        vertical-align: bottom !important; /*Nous modifions cette propriété et la rendons prioritaire afin d'assurer
                                            que le texte soit à la hauteur des ":" de la première colonne*/
    }

    .prompt_content
    {
        width: 90%;
    }
}