/* Reset CSS
 * --------------------------------------- */
 
* {
    box-sizing: border-box;
}

body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,
form,fieldset,input,textarea,p,blockquote,th,td {
    padding: 0;
    margin: 0;

}
a{
  text-decoration:none;
  color: inherit;
}
table {
    border-spacing: 0;
}
fieldset,img {
    border: 0;
}
address,caption,cite,code,dfn,em,strong,th,var {
    font-weight: normal;
    font-style: normal;
}
strong{
  font-weight: bold;
}
nav ol, nav ul {
    list-style: none;
    margin:0;
    padding:0;
}
caption,th {
    text-align: left;

}
h1,h2,h3,h4,h5,h6 {
    font-weight: normal;
    font-size: 100%;
    margin:0;
    padding:0;
}
q:before,q:after {
    content:'';
}
abbr,acronym { border: 0;
}

html {
  scroll-behavior: smooth;
}

body {
    font-size: 18px;
    font-family: "Nunito", sans-serif; 
    line-height: 26px;
    color: #4b4c4c;
}

header {
    padding: 0px 50px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

a.logo-container {
    background: #4b4c4c;
    padding: 15px;
    display: flex;
    flex-direction: column;
    width: 90px;
    height: 180px;
    justify-content: flex-end;
    border-bottom-left-radius: 10px;
    border-bottom-right-radius: 10px;

}

    a.logo-container img {
        width: 100%;
        height: auto;
    }

header nav ul {
    display: flex;
    justify-content: flex-end;
    font-family: "Alfa Slab One";
    gap: 30px;
    color: #82df9f;
}

    header nav ul a {
        transition: 0.2s;
    }

    header nav ul .on, header nav ul a:hover {
        color: #4b4c4c;
    }

section.welcome {
    padding: 50px;
    text-align: center;
}

@media screen and (max-width: 640px) {

    header {
        padding: 0px 30px;
    }

    a.logo-container {
        width: 70px;
        height: 140px;
        justify-content: flex-end;
        border-bottom-left-radius: 10px;
        border-bottom-right-radius: 10px;

    }

    header nav ul {
        flex-direction: column;
        gap: 5px;
        align-items: flex-end;
    }

    section.welcome {
        padding: 30px;
    }

}

    section.welcome img {
        width: 100%;
        max-width: 300px;
        margin-bottom: 50px;
    }

    section.welcome h1, section#gallery h3, section#contact h3 {
        font-family: "Alfa Slab One";
        font-size: 50px;
        line-height: 60px;
        margin-bottom: 30px;
        text-align: center;
    }

@media screen and (max-width: 640px) {

    section.welcome img {
        width: 100%;
        max-width: 200px;
        margin-bottom: 50px;
    }

    section.welcome h1, section#gallery h3, section#contact h3 {
        font-size: 36px;
        line-height: 46px;
    }

}

    section.welcome h2 {
        font-size: 24px;
        line-height: 34px;
        font-weight: 300;
        width: 100%;
        max-width: 560px;
        margin: auto;
    }

    section h3 {
        font-family: "Alfa Slab One";
        font-size: 24px;
        line-height: 32px;
        margin-bottom: 30px;
    }

    section h4 {
        font-weight: 700;
        text-decoration: underline;
        text-decoration-style: dotted;
        text-align: center;
    }

section#gallery {
    background: #82df9f; 
    padding: 100px 50px 70px;
}

section#contact {
    padding: 100px 50px 30px;
    text-align: center;
}

@media screen and (max-width: 640px) {

section#gallery {
        padding: 50px 30px;
    }

    section#contact {
        padding: 50px 30px;
    }

}

    section#contact p {
        width: 100%;
        max-width: 760px;
        margin: auto;
    }

    section#contact p:not(:last-child) {
        margin-bottom: 30px;
    }

.gallery {
    display: flex;
    justify-content: center;
    gap: 30px;
    flex-wrap: wrap;
    max-width: 1200px; 
    padding: 20px; 
    margin: auto;
}

.gallery > div {
    /*flex-basis: calc(50% - 35px);*/
    width: calc(20% - 40px);
    aspect-ratio: 1/1;
    overflow: hidden;
    display: block;
    border-radius: 10px;

}

@media screen and (max-width: 1200px) {

    .gallery > div {
        width: calc(25% - 30px);

    }

}

@media screen and (max-width: 800px) {

    .gallery {
        padding: 20px 0px; 
    }

    .gallery > div {
        width: calc(100%/3 - 30px);

    }

}

@media screen and (max-width: 640px) {

    .gallery > div {
        width: calc(100%/2 - 20px);

    }

}

.gallery > div img {
    width: 100%;
    height: 100%;
    object-fit: cover; /* Recadre l'image pour remplir le carré sans la déformer */
    object-position: top left; /* Centre le recadrage */
    cursor: zoom-in;
    border-radius: 10px;
}

#top-layer {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%; /* Ensure it takes the full screen */
            display: none; /* Controlled by JS fadeIn */
            flex-direction: column;
            align-items: center;    /* Horizontal centering */
            justify-content: center; /* Vertical centering */
            background: rgba(10, 10, 10, 0.85);
            z-index: 10000;
            cursor: zoom-out;
        }

        #top-layer[style*="display: block"], 
        #top-layer.visible {
            display: flex !important;
        }

        /* The Wrapper ensures the player and image stay the same width */
        .content-container {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            margin: 0; /* Remove any accidental auto margins */
        }

        #top-layer img {
    /* Dimensions de base */
    width: 90%;
    
    /* Contraintes de taille maximale */
    max-width: 1024px;
    max-height: 100vh; /* 90% de la hauteur de la fenêtre (Viewport Height) */
    
    /* Conservation des proportions */
    object-fit: contain; 
    
    /* Esthétique */
    display: block;
    margin: auto; /* Centre l'image si le parent est en flex ou bloc */
    border-radius: 20px;
}

        .close-overlay {
            position: absolute;
            top: 30px;
            right: 30px;
            font-family: 'Courier New', monospace;
            color: #fff;
            cursor: pointer;
            pointer-events: auto;
        }

.lazy-fade {
  opacity: 0;
  transform: translateY(10px); /* Petit effet de remontée optionnel */
  transition: opacity 1s ease-out, transform 1s ease-out;
  display: block;
  width: 100%;
  height: auto;
  /* Optionnel : définit une zone grise pour éviter que le texte saute */
  background-color: #eee; 
  aspect-ratio: 16 / 9; 
}

.lazy-fade.visible {
  opacity: 1;
  transform: translateY(0);
}

#to-top {
    padding: 50px;
    text-align: center;
    font-family: "Alfa Slab One";
    font-size: 20px;
     line-height: 28px;
}

#to-top a {
    transition: 0.2s;
}

    #to-top a:hover {
        color: #82df9f;
    }

@media screen and (max-width: 640px) {

    #to-top {
        padding: 30px;
    }

}

section em {
    font-style: italic;
}

section p a {
    text-decoration: underline;
    text-decoration-style: dotted;
    font-weight: 700;
}

.partial-row {
    max-width: 1440px;
    padding: 50px;
    display: flex;
    margin: auto;
    gap: 60px;
}

    .partial-row.row-even {
        flex-direction: row-reverse;
    }

    .partial-row > div:nth-child(1) {
        flex: 1; 
        text-align: right;
    }

    .partial-row.row-even > div:nth-child(1) {
        text-align: left;
    }

    .partial-row > div:nth-child(2) {
        flex: 1;
        display: flex;
        justify-content: center;
        align-content: center; 
        border-radius: 20px;
    }

    .green {
        background: #82df9f;
    }

@media screen and (max-width: 1200px) {

    .partial-row {
        flex-direction: column;
    }

    .partial-row.row-even {
        flex-direction: column;
    }

    .partial-row > div:nth-child(1) {
        text-align: left;
    }

    .partial-row > div:nth-child(2) {
       padding: 50px;
    }

}

@media screen and (max-width: 640px) {

    .partial-row {
        padding: 30px;
        gap: 30px;
    }

    .partial-row > div:nth-child(2) {
       padding: 30px;
    }

}

p.cta {
    text-align: center;
}

    p.cta a {
        display: inline-block;
        border-radius: 30px;
        padding: 10px 20px;
        background: #4b4c4c;
        color: #fff;
        text-decoration: none;
        font-family: "Alfa Slab One";
        font-weight: 400;
    }

    p.cta a:hover {
        background: #fff;
    }

    #gallery p.cta a {
        color: #82df9f;  
    }

.step {
    width: 140px;
    height: auto;
    filter: brightness(0) invert(1);
}

@media screen and (max-width: 640px) {

    .step {
        width: 80px;
    }

}