* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}
.scroller { list-style: none;font-size: 25px; padding-block: 10px; display: flex; gap: 2rem; overflow: hidden; user-select:none;  flex-shrink:0; display: flex; min-width: 100%; justify-content: space-between; gap: 2rem; align-items: left; animation: scroll 20s linear infinite; gap: var(--gap)}

@keyframes scroll { 0% {transform: translateX(100%)} 100% {transform: translateX(-100%);}}





.cell {
  --size: 24px;
  width: var(--size);
  height: var(--size);
  background-color: #fffce1;
  border-radius: 50%;
  will-change: transform;
  cursor: pointer;
}


/*police par défault du document*/
body {
    font-family: 'Libre Franklin', sans-serif;
    ;
    font-weight: 900;
    font-size: 1em;
    
}

/*enlever le souligné pour tout les liens*/
a,
a:hover,
a:visited,
a:link,
a:focus,
a:active {
    text-decoration: none;
    color: gray;
}


/*grille de base du site commence ici*/
.wrapper {
    margin-top: 30px;
    display: grid;
    grid-template-columns: repeat(9, 1fr);
    width: 100vw;
    height: 50px;
    position: relative;
  z-index: 1;
  min-height: 100vh;

}

.Question {margin-top: 30px; display: grid; 
    grid-template-columns: repeat(7, 1fr);
    width: 100vw;
    height: 100vh;}
header {
    grid-row-start: 1;
    grid-row-end: 2;
    grid-column-start: 2;
    grid-column-end: 9;
    border: none;
    /* Supprime la bordure */
    margin: 0;
    padding: 0;

}

main {
    grid-row-start: 2;
    grid-row-end: 9;
    grid-column-start: 2;
    grid-column-end: 9;
    padding: 100px;

}

footer {
    grid-row-start: 9;
    grid-row-end: 10;
    grid-column-start: 1;
    grid-column-end: 10;
    min-height: 200px;
}

/*grille de base du site fini ici*/

/*couleur du menu de la navigation principale*/
nav a {
    color: gray;
}

/*couleur ausurvol du menu de la navigation principale*/
nav a:hover {
    text-decoration: none;
    color: lightgray;
}

.close-menu {
    display: none;
    /* Initialement caché */
    position: fixed;
    /* Position fixe par rapport à la fenêtre du navigateur */
    top: 20px;
    /* Espace du haut */
    right: 20px;
    /* Espace du côté droit */
    font-size: 2em;
    /* Taille similaire au menu hamburger */
    font-weight: bold;
    /* Gras */
    color: gray;
    /* Couleur grise */
    background: color(srgb rgb(255, 255, 255) green blue);
    /* Pas de fond */
    border: none;
    /* Pas de bordure */
    cursor: pointer;
    /* Style du curseur en pointeur */
    z-index: 1010;
    /* S'assure qu'il est au-dessus du menu déployé */
}

.actif {
    font-weight: bold;
    color: black !important;
}

.entete {
    display: grid;
    grid-template-columns: auto 1fr auto;
    /* Trois colonnes: logo, espace, éléments de menu */
    align-items: center;
    /* aligné au bas des cellules */
    width: 90%;
    margin: 0 auto;
}

.entete img {
    width: 60%;
    object-fit: contain;
}

.menu1 {
    display: flex;
    justify-content: flex-end;
    /* Alignement à droite des éléments de menu */
    gap: 20px;
    /* Espace entre les éléments de menu, ajustez selon vos besoins */
    font-size: 2em;
}

.menu1 a {
    text-decoration: none;
    /* Enlève le soulignement */
    color: gray;
    /* Définit la couleur des liens */
    text-align: center;
    /* Assure que le texte est centré si la largeur est spécifiée */
}


a {
    text-decoration: none;
    color: gray;
}

a:hover {
    color: lightgray;
    /* couleur au survol */
}

.actif {
    font-weight: bold;
    color: black;
}



/*styles de l'entete*/

/*logo*/
header img {
    width: 250px;
}


h1 {
    text-align: center;
    font-size: 3em;
    margin-bottom: 10px;
    margin-top: 30px;
}
h2 {
    text-align: left;
    font-size: 2em;
    margin-bottom: 20px;
    margin-top: 20px;
}




.entete {
    display: flex;
    /* Active Flexbox */
    justify-content: space-between;
    /* Sépare le contenu entre les deux extrémités */
    align-items: flex-end;
    /* Alignement vertical au bas */
}






/*style de la grille d'images*/
/* Configuration du conteneur de la grille */
.grille_images {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    /* Définit une grille de 12 colonnes */
    gap: 10px;
    /* Espacement uniforme entre les éléments de la grille */
    padding: 10px;
    /* Espace uniforme autour des bords de la grille */
    overflow: hidden;
    grid-row: span;object-fit: cover;
  
}
.grille_projets {
     align-items: start; 
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    /* Définit une grille de 12 colonnes */
    gap: 10px;
    /* Espacement uniforme entre les éléments de la grille */
    padding: 10px;
    /* Espace uniforme autour des bords de la grille */
    overflow: hidden;
    grid-auto-rows: 200px;
    grid-row: auto;
min-height: 0;object-fit: cover;
}




.grille_projets p {
    margin-bottom: 20px;
    font-weight: 100;
    text-align: left;
}

.grille_projets h2 {
    margin-bottom: 20px;
    text-align: left;

}

.grille_projets h3 {
    margin-bottom: 20px;

}

.grille_projets small {
    display: block;
    text-align: right;
    margin-top: 30px;
    color: lightgray;

}

.hero {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  background: #000;
}
.conteneur {
  width: 100%;
  margin: 0;
}

.conteneur video {
  width: 100%;      /* s'adapte à la largeur de la cellule */
    height: 100%;
    object-fit: cover; /* remplit sans déformation */
    display: block;
 
}
.conteneur01 {grid-column: 1 /6;grid-row: 1 / 3;

}
.conteneur02 {grid-column: 1 /6;grid-row: 3 / 5; 
overflow: hidden; width: 100%;      /* s'adapte à la largeur de la cellule */
    height: 100%;
    object-fit: cover; /* remplit sans déformation */
    display: block;
}
.conteneur03 {grid-column: 1 /6;grid-row: 5/ 8;

}
figure video {
    max-width: 100%;
    width: 100%;
    height: auto;
    display: block;
}

.img{width: 100%;
    height: auto;
  
    /* Maintient un ratio carré pour toutes les images  aspect-ratio: 1 / 1; */
    object-fit: cover;
     object-position: top left;
    /* Assure que les images couvrent l'espace sans déformation */
    box-sizing: border-box;
    /* Pour inclure les marges et les paddings dans la largeur/hauteur */
    display: block;
    
   
    }

.texte {align-items: start; grid-column: 7/12;
    grid-row: auto;
text-align: left; object-fit: cover;display: grid;
  
    overflow: hidden;}
.texte h2 { align-items: start;
    text-align: left; /* écrase le text-align: right de .grille_projets h2 */
    margin-bottom: 15px;
}
.texte01 {align-items: start; grid-column: 7/12;
    grid-row: auto;
text-align: left; object-fit: cover;display: grid;}
.texte02 {align-items: start; grid-column: 7/12;
    grid-row: auto;
text-align: left; object-fit: cover;display: grid;}
.texte03 {align-items: start; grid-column: 7/12;
    grid-row: auto;
text-align: left; object-fit: cover;display: grid;}
.texte04 {align-items: start; grid-column: 7/12;
    grid-row: auto;
text-align: left; object-fit: cover;display: grid;}
.texte05 {align-items: start; grid-column: 7/12;
    grid-row: auto;
text-align: left; object-fit: cover;display: grid;}
.img1{
    grid-column: 1 /5;grid-row: 1 / 3;}
.img2{
    grid-column: 5 / 9;grid-row: 1/ 3;}
.img3{
    grid-column: 9/ 13;grid-row: 1/ 3;}
.img4{
    grid-column: 1 / 6;  grid-row: 3/ 6;}
.img5{
    grid-column: 6 / 13; grid-row: 3/ 6;}

.img6{
    grid-column: 1/ 5;grid-row: 1/ 3;}

.img7{grid-column: 5/9
; grid-row: 1/3;}
.img8{grid-column: 1/5
; grid-row: 3/6;}
.img9{grid-column: 5/9
; grid-row: 3/6;}
.img10{grid-column: 1/5
; grid-row: 6/9;}
.img11{grid-column: 5/9
; grid-row: 6/9;}
.img12{grid-column: 9/13
; grid-row: 6/9;}
.img13{grid-column: 9/13
; grid-row: 1/3;}
.img14{grid-column: 6/12
; grid-row: 9/12;}

.img15{grid-column: 8/13
; grid-row: 1/2;}
.img16{grid-column: 1/8
; grid-row: 1/3;}
.img17{grid-column: 8/13
; grid-row: 2/4;}
.img18{grid-column: 7/13
; grid-row: 3/5;}
.img19{grid-column: 1/6
; grid-row: 3/5;}
.img20{grid-column: 1/8
; grid-row: 9/11;}
.img21{grid-column: 1/4
; grid-row: 5/8;}
.img22{grid-column: 4/8
; grid-row: 5/8;}
.img23{grid-column: 8/13
; grid-row: 5/8;}
.img24{grid-column: 1/7
; grid-row: 8/9;}
.img25{grid-column: 7/13
; grid-row: 8/9;}
.img26 {grid-column: 1/7
; grid-row: 3/5;}
.img27 {grid-column: 1/7
; grid-row: 5/7;}
.img29 {grid-column: 1/7
; grid-row: 7/9;}
.img28 {
    grid-column: 1 /7;grid-row: 1 / 5;}


   

/* Styles communs pour les images */
.im {
    width: 100%;
    height: auto;
  
    /* Maintient un ratio carré pour toutes les images  aspect-ratio: 1 / 1; */
    object-fit: cover;
     object-position: top left;
    /* Assure que les images couvrent l'espace sans déformation */
    box-sizing: border-box;
    /* Pour inclure les marges et les paddings dans la largeur/hauteur */
    display: block;
   
    /* Élimine l'espace supplémentaire sous l'image */
}

/* Positionnement individuel des images */
/* Première ligne : deux carrés et un rectangle */
.im1 {
    grid-column: 7 / 10;
    grid-row: 1 / 2;}

.im2 {
    grid-column: 10/ 13;
    grid-row: 1 / 2;}

.im3 {
    grid-column: 1 / 7;
    grid-row: 1 / 3;}
.im4 {
    grid-column: 7 / 13;
    grid-row: 2/ 3;}

.im5 {
    grid-column: 1 / 5;
    grid-row: 4/ 4;}

.im6 {
    grid-column: 5/ 13;
    grid-row: 4 / 4;}

.im7 {
    grid-column: 1 / 5;
    grid-row: 1 / 3;}

.im8 {
    grid-column: 5/ 9;
    grid-row: 1 / 3;}
.im9 {
    grid-column: 9/ 13;
    grid-row: 1/ 3;}

.im10 {
    grid-column:  1/ 5;
    grid-row: 4/ 6;}

.im11 {grid-column: 5/ 13;
    grid-row: 4/ 6;}
.im13 {
    grid-column: 6 / 10;
    grid-row: 9 / 11;}

.im12 { grid-column: 1 / 6;
    grid-row: 9 / 11;}
.im14 {
    grid-column: 10/ 13;
    grid-row: 9 / 11;
}
.im14 {
    grid-column: 10 / 13;
}
.im15 img {
    width: 100%;
    height: 100%;
    object-fit: contain; /* garde les proportions, avec bandes si nécessaire */
    display: block;
}
.im15 { grid-column: 1 / 12;
    grid-row: 1 / 5; }
.im16 { grid-column: 1 / 5;
    grid-row: 1 / 5; }
 .im17 { grid-column: 5/ 9;
    grid-row: 1 / 5; }
.im18 { grid-column: 9 / 13;
    grid-row: 1 / 5; }
 .im19 { grid-column: 1 / 6;
    grid-row: 5/ 7; }
 .im20 { grid-column: 6/ 12;
    grid-row: 5/ 7; }
 .im21 { grid-column: 1 / 5;
 grid-row: 1 / 5; }
.im22 { grid-column: 7/ 12;
    grid-row: 1 / 5; }
 .im23 { grid-column: 4/ 8;
    grid-row: 5 / 8; }

.pages>div {
    background-color: #e7c597;
    border: none;
    color: white;
    padding: 20px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 1em;
    margin-left: 20px;
    cursor: pointer;
    border-radius: 50%;
    width: 20px;
}

.pages>div:hover {
    background-color: #3783A3;
}

.pied {
    padding-left: 5%;
    padding-right: 5%;


}

.sociaux a {
    color: gray;
    font-size: 30px;
}

.sociaux a:hover {
    color: lightgray;
    font-size: 30px;
}

.sociaux p {
    margin-top: 10px;
    margin-bottom: 30px;
    color: gray;
    text-align: center;
    color: gray;
    font-size: 0.8em;
}

.sociaux {
    display: flex;
    flex-direction: column;
    /* Organise les éléments verticalement */
    align-items: center;
    /* Centre les éléments verticalement */
    text-align: center;
    /* Centre le texte pour les sous-éléments */
    padding: 20px 0;
}

.icons-wrapper {
    display: flex;
    justify-content: center;
    /* Centre les icônes horizontalement */
    flex-wrap: wrap;
    /* Permet aux icônes de passer à la ligne si nécessaire */
    gap: 10px;
    /* Espacement entre les icônes */
    width: 100%;
    /* Assure que le wrapper prend toute la largeur */
}

.fa {
    font-size: 2em;
    /* Ajuste la taille des icônes */
    padding: 8px;
    /* Ajuste l'espacement autour des icônes */
    color: gray;
    /* Couleur des icônes */
}

.fa:hover {
    color: lightgray;
    /* Couleur des icônes au survol */
}

/* Styles spécifiques pour les crédits */
.credits {
    margin-top: 10px;
    /* Ajoute un espace entre les icônes et les crédits */
    font-size: 1em;
    /* Ajuste la taille de la police pour les crédits */
    width: 100%;
    /* Assure que les crédits prennent toute la largeur et restent centrés */
}

/* Styles pour le bouton menu hamburger */
.hamburger-menu {
    display: none;
    /* Caché par défaut, sera affiché sur mobile */
    align-items: center;
    justify-content: center;
}

.hamburger-menu button {
    background: none;
    border: none;
    font-size: 2em;
    /* Taille de l'icône du menu hamburger */
    color: gray;
}

.hamburger-menu button .fa-bars {
    cursor: pointer;
}

/* Micro-interaction au survol des images: flou léger, changement d'opacité et légère mise à l'échelle */
.im:hover {
    filter: blur(2px);
    /* Ajoute un flou léger */
    opacity: 0.9;
    /* Légère réduction de l'opacité */
    transform: scale(1.05);
    /* Légère mise à l'échelle pour donner un effet de zoom discret */
    transition: all 0.3s ease-in-out;
    /* Transition douce pour l'effet */
}

/* Media Query pour les écrans mobiles */

    
@media (max-width: 1200px) {
.image-texte {
        flex-direction: column; /* empile verticalement sur mobile */
    }

    .image-texte img,
    .texte {
        width: 100%;
    }



.scroller-item {
    font-size: 1.5rem; 
}
.scroller-item img {height: 30px;}
    body {
        padding: 0px;
        /* Marge autour du contenu */
    }

    header {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
        background-color: #fff;
        display: flex;
        justify-content: space-between;
        align-items: flex-end;
        /* Alignement des éléments à la base */

    }

    .entete img {
        width: auto;
        height: 50px;
        /* Hauteur fixe pour le logo pour contrôler sa taille */
    }

    .hamburger-menu {
        display: flex;
        /* Assure que le menu hamburger est visible et aligné */
        align-items: center;
        /* Centre verticalement le bouton dans l'en-tête */
    }

    main {
        padding-top: 100px;
        /* Espace supérieur pour s'assurer que le contenu principal ne soit pas caché par l'en-tête */
        padding-bottom: 50px;
        /* Augmente l'espace en bas avant le pied de page */
    }

    h1 {
        margin-top: 80px;
        /* Augmente l'espace au-dessus du h1 pour plus de clarté */
        text-align: center;
        margin-bottom: 40px;
        font-size: 1.8em;
    }
h2{text-align: left;}

    main {
        grid-row-start: 2;
        grid-row-end: 9;
        grid-column-start: 2;
        grid-column-end: 9;
        padding: 10px;

    }

    .menu1 a,
    .menu1 a:hover {
        text-decoration: none;
        /* Enlève le soulignement pour l'état normal et au survol */
        color: gray;
        /* Couleur des liens inchangée */
        background-color: transparent;
        /* Aucun changement de fond au survol */
    }

    .menu1 {
        display: none;
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: white;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        z-index: 1000;
        /* S'assure que le menu est au-dessus des autres éléments */
    }

    .menu1 a {
        padding: 20px;
        /* Augmente le padding pour espacer les éléments */
    }

    .close-menu {
        display: block;
        /* S'assure que le bouton est visible */
        position: absolute;
        /* Position absolue pour placer précisément le bouton */
        top: 20px;
        /* Espace du haut */
        right: 20px;
        /* Espace du côté droit */
        font-size: 2em;
        /* Taille de l'icône */
        color: gray;
        /* Couleur de l'icône */
    }

    .hamburger-menu {
        display: block;
    }

    /* Affiche le menu en plein écran en mobile */
    .menu-deployed {
        display: flex;
        /* Utilise flexbox pour le layout */
        flex-direction: column;
        /* Empile les éléments verticalement */
        justify-content: center;
        /* Centre les éléments verticalement */
        align-items: center;
        /* Centre les éléments horizontalement */
        width: 100%;
        /* Prend toute la largeur */
        height: 100vh;
        /* Prend toute la hauteur de la vue */
        position: fixed;
        /* Position fixe pour couvrir tout l'écran */
        top: 0;
        /* À partir du haut de la page */
        left: 0;
        /* À partir du côté gauche de la page */
        background-color: white;
        /* Fond blanc pour le menu */
        z-index: 1000;
        /* S'assure que le menu est au-dessus de tout le contenu */
        padding-top: 50px;
        /* Ajoute un peu d'espace en haut */
    }

    .menu1 .actif {
        color: black;
        /* Si vous voulez que .actif reste noir aussi en mobile */
    }


    /* Rend le conteneur de l'en-tête responsive */
    header .entete {
        grid-template-columns: 1fr 1fr;
        justify-content: space-between;
        padding: 10px;
    }

    /* Affiche le logo et le bouton menu hamburger */
    .entete .item1,
    .entete .hamburger-menu {
        grid-column: auto;
    }

    .grille_images {
        margin: 0 auto;
        /* Centre la grille dans le viewport */
        padding: 0 20px;
        /* Assure une marge intérieure pour ne pas toucher les bords */
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        /* Deux colonnes */
        gap: 10px;
        /* Espacement entre les images */
    }
.grille_projets p {
    margin-bottom: 20px;
    font-weight: 100;
    text-align: left;
}

.grille_projets h2 {
    margin-bottom: 20px;
    text-align: left;

}

.grille_projets h3 {
    margin-bottom: 20px;

}

.grille_projets small {
    display: block;
    text-align: right;
    margin-top: 30px;
    color: lightgray;}
    .grille_projets {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        /* Deux colonnes */
        gap: 10px; 
    /* Espacement uniforme entre les éléments de la grille */
    padding: 10px;
    /* Espace uniforme autour des bords de la grille */
    overflow: hidden;

    grid-row: auto;
min-height: 0;object-fit: cover;
        /* Espacement entre les images */
    }


    .grille_images img {
        width: 100%;
        height: 100%;
        object-fit: contain;
    }

    .sociaux {
        margin-top: 60px;
    }

    /* Assignation des images aux cellules de la grille */
    /* Configuration initiale pour toutes les images */
  
.grille_images_video {
        grid-template-columns: 1fr; /* ← 1 seule colonne */
        width: 100%;
        overflow: hidden; /* ← coupe ce qui dépasse */}
    /* ✅ RESET — efface toutes les positions du CSS de base */
    .grille_images figure {
        grid-column: auto;
        grid-row: auto; width: 100%;
        overflow: hidden;
    }
.figure video {
        width: 100%;
        max-width: 100%;
        height: auto;   /* ← suit les proportions naturelles de la vidéo */
        display: block;
        object-fit: contain;
    }
    video {
    max-width: 100%;
    display: block;
}
    .conteneur01 {grid-column: auto;
        grid-row: auto;
        width: 100%;
        height: auto;}
    .conteneur02 {grid-column: auto;
        grid-row: auto;
        width: 100%;
        height: auto; }
    .conteneur03 {grid-column: auto;
        grid-row: auto;
        width: 100%;
        height: auto; }


    .im1 { grid-column: 1; grid-row: 1 / 3; }
    .im2 { grid-column: 2; grid-row: 1 / 4; }
    .im3 { grid-column: 1; grid-row: 3 / 6; }
    .im4 { grid-column: 2; grid-row: 4 / 6; }
    .im5 { grid-column: 1; grid-row: 6 / 8; }
    .im6 { grid-column: 2; grid-row: 6 / 8; }
    .im7 { grid-column: 2; grid-row: 8 / 11; }
    .im8 { grid-column: 1; grid-row: 8 / 11; }
    .im9 { grid-column: 2; grid-row: 11 / 13; }
    .im10 { grid-column: 1; grid-row: 10 / 13; }
    .im11 { grid-column: 1; grid-row: 1 / 13; }
    .im12 { grid-column: 2; grid-row: 13 / 13; }
    .im13, .im14 { display: none; }

    .im {
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: top left;
    }
    .img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: top left;
    }
    .texte {grid-template-columns: 1fr; /* ← écrase les 2 colonnes */
        /* ← laisse la grille calculer automatiquement */
      
        grid-row: 9/12;grid-column: 1 / -1; overflow: visible; 
        object-fit: cover; object-position: top left;}
        .texte01 {grid-template-columns: 1fr; /* ← écrase les 2 colonnes */
        /* ← laisse la grille calculer automatiquement */
      
        grid-row: 5/8;grid-column: 1 / -1; overflow: visible; 
        object-fit: cover; object-position: top left;}
        .texte02 {grid-template-columns: 1fr; /* ← écrase les 2 colonnes */
        /* ← laisse la grille calculer automatiquement */
      
        grid-row: 3/8;grid-column: 1 / -1; overflow: visible; 
        object-fit: cover; object-position: top left;}
       .texte03 {grid-template-columns: 1fr; /* ← écrase les 2 colonnes */
        /* ← laisse la grille calculer automatiquement */
      
        grid-row: 2/8;grid-column: 1 / -1; overflow: visible; 
        object-fit: cover; object-position: top left;}

  .texte04 {grid-template-columns: 1fr; /* ← écrase les 2 colonnes */
        /* ← laisse la grille calculer automatiquement */
      
        grid-row: 7/10;grid-column: 1 / -1; overflow: visible; 
        object-fit: cover; object-position: top left;}  
    .texte05 {grid-template-columns: 1fr; /* ← écrase les 2 colonnes */
        /* ← laisse la grille calculer automatiquement */
      
        grid-row: 14/17;grid-column: 1 / -1; overflow: visible; 
        object-fit: cover; object-position: top left;}  
    .conteneur {
  width: 100%;
  margin: 0;
}

.conteneur video {
  width: 100%;      /* s'adapte à la largeur de la cellule */
    height: 100%;
    object-fit: cover; /* remplit sans déformation */
    display: block;
 
}
.conteneur01 {grid-column: 1 /3;grid-row: 1 / 3;

}
.conteneur02 {grid-column: 1 /3;grid-row: 1/ 3; 
overflow: hidden; width: 100%;      /* s'adapte à la largeur de la cellule */
    height: 100%;
    object-fit: cover; /* remplit sans déformation */
    display: block;
}
.conteneur03 {grid-column: 1 /3;grid-row: 1/ 3;

}
figure video {
    max-width: 100%;
    width: 100%;
    height: auto;
    display: block;
}  }

/*
iiiiiii  sss   rrrr    aaa  eee l
   ii   s    r   r  a   a e     l    
   ii    sss  rrrr  aaaaa eeee  l    
   ii       s r  r  a   a e     l    
iiiiiii  sss   r   r a   a  e   lll  

ddddd  u  u pppp  u   u iii sss  
d   d  u  u p   p u   u  i  s     
d   d  u  u pppp  u   u  i   sss  
d   d  u  u p     u   u  i      s 
ddddd   uuu p      uuu  iii sss   

Codé par Israël Dupuis en 2024 pour le plus grand bien de tous.
*/