
:root {
  --header-height: 6dvh;
  --footer-height: 6dvh;
  --page-height: calc(100dvh - var(--header-height) - var(--footer-height));

 --fond-principal: #ebe4db;       
  --fond-secondaire: #D6CEC5;       
  --texte-principal: #2B2B2B;      
  --texte-secondaire: #555555;     
  --accent: #475158;     
  --accent-hover: #384349;
  --bordure: #C2B8AE;                
  --scrollbar-bg: hsl(34, 28%, 89%);           
  --scrollbar-thumb: #475158;        

  --fond-overlay: rgba(0, 0, 0, 0.6);
  --fond-hover: rgba(65, 65, 65, 0.5);
  --ombre-forte: rgba(0, 0, 0, 0.6);
  --ombre-legere: rgba(0, 0, 0, 0.15);

  --fs-h1: clamp(1.8rem, calc(2.2vh + 1.2rem), 3.2rem);
  --fs-h2: clamp(1.5rem, calc(1.8vh + 1rem), 2.5rem);
  --fs-h3: clamp(1.3rem, calc(1.5vh + 0.8rem), 2rem);
  --fs-h4: clamp(1.1rem, calc(1.3vh + 0.6rem), 1.5rem);
  --fs-p: clamp(1rem, calc(1vh + 0.5rem), 1.3rem);
  --fs-small: clamp(0.85rem, calc(0.8vh + 0.3rem), 1rem);
  --fs-strong: clamp(1rem, calc(1.1vh + 0.3rem), 1.4rem);

  @media (max-width: 768px) {
    --fs-h1: calc(5vh);
    --fs-h2: calc(4.5vh);
    --fs-h3: calc(4vh);
    --fs-h4: calc(3.5vh);
    --fs-p:  calc(2vh);
    --fs-small: calc(1.8vh);
    --fs-strong: calc(3vh);
}

}


/* STYLE GENERAL */

html {
    scroll-behavior: smooth;
    scrollbar-width: none;
  }

body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
    overflow-y: overlay;
}

h1, h2, h3, h4 {
    margin: 0; 
    padding: 0;
    }

h1 {
  font-size: var(--fs-h1);
  font-weight: bold;
  padding-top: 8vh;
  padding-bottom: 2vh;
  color: var(--texte-principal);
}

h2 {
  font-size: var(--fs-h2);
  font-weight: bold;
  color: var(--accent);
  padding: 1vh 0;
  max-width: 100%;
}

h3 {
  font-size: var(--fs-h3);
  font-weight: bold;
  color: var(--accent);
  white-space: nowrap;
  max-width: 100%;
}

h4 {
  font-size: var(--fs-h4);
  font-weight: bold;
  color: var(--accent);
  display: flex;
  align-items: flex-end;
}

p,
li,
a {
  font-size: var(--fs-p);
  line-height: 1.6;
}

strong {
  font-size: var(--fs-strong);
  font-weight: bold;
}

small {
  font-size: var(--fs-small);
  text-decoration: underline;
  cursor: pointer;
}


.hidden {
        display: none;
    }

    button {
        background-color: transparent;
        border: none;
        height: 4vh;
        width: 4vh;
        color:var(--texte-secondaire);
    }
/* STYLE HEADER */

header {
    position: fixed;
    top: 0;
    left: 6vh;
    width: calc(60% - 12vh);
    height: var(--header-height);
    background-color: var(--fond-principal);
    border-bottom: 1px solid var(--accent);
    z-index: 500;
}

.menu {
    display: flex;
    justify-content: center;
    max-height: var(--header-height);
    align-items: center;
    }

.menu ul {
    display: flex;
    list-style: none;
    max-height: var(--header-height);
    }

.menu a {
    color: var(--texte-principal);
    text-decoration: none;
    font-weight: bold;
    transition: color 0.3s;
    padding: 1vh 3vh;
    }

.menu a.active {
    color: var(--accent);
    border-right: 0.1vh solid var(--accent);
    border-left: 0.1vh solid var(--accent);
    }
      
      .menu .indicator {
        position: absolute;
        bottom: -0.5px;
        left: 0;
        height: 0.5vh;
        width: 0;
        background-color: var(--accent);
        transition: left 0.3s ease, width 0.3s ease;
        will-change: left, width;
        pointer-events: none;
      }
      
  
 
/* STYLE FOND */

.fond {
    position: fixed;
    right: 0;
    width: 40%;
    height: 100vh;
    z-index: -1000;
}

.fond img {
    width: 100%;
}

.fond .extrait {
    position: absolute;
    top: 0; 
    left: 50%; 
    transform: translate(-50%); 
    color: var(--texte-secondaire);
    width: 100%;
    padding: 1vh;
    background-color: var(--fond-overlay);
    border: 0.1vh solid var(--accent); 
    box-sizing: border-box;
}

/* STYLE ACCUEIL */

.apropos, .prestations, .portfolio, .contact {
    height: var(--page-height);
    padding-top: var(--header-height);
    padding-bottom: var(--footer-height);
}

.accueil {
    display: flex;
    flex-wrap: wrap;
    flex-direction: column; 
    width: 60%;
    height: 100%;
    padding: 6vh;
    padding-top: 8vh;
    box-sizing: border-box;
    background-color: var(--fond-principal);
    color: var(--texte-secondaire);
    box-shadow: 2vh 0 2vh 1vh var(--fond-overlay);
}

@media (orientation: portrait) {
    .fond {
        display: none;
    }

    .accueil {
        width: 100%;
    }
}

.separation {
    background-color: var(--accent);
    height: 0.1vh;
    width: 100%;
}

    /* SECTION A PROPOS */

    .apropos {
        display: flex;
        flex-direction: column;
        align-items: start;
    }

    .apropos p {
        max-width: 100vw;
        margin-bottom: 2vh;
        line-height: 1.6;
    }
    .apropos .alexandre {
        display: flex;
        width: 100%;
        align-items: center ;
        justify-content: space-between;
    }

    .apropos .alexandre img {
        height: 20vh;
        width: auto;
        max-width: 20vh;
        display: block;
        margin: 1vh auto;
}


    /* SECTION PRESTATIONS */

.prestations-panels .panel {
    margin-top: 2vh;
}

.prestations h4 {
    margin: 4vh 0;
}

.logiciels {
    position: relative;
    display: flex;
    justify-content: space-around;
    list-style: none;
    align-items: center;
    padding: 0;
    flex-wrap: wrap;
    gap:3vh;
}

.logiciels li {
    display: flex;
    align-items: center;
    flex-direction: column;
    text-align: center;
}

.logiciels img {
    height: 6vh;
    width: auto;
}

.no-license {
    position: relative;
}

.no-license::after {
    content: "*";
    position: absolute;
    top: 0;
    right: -0.5em;
    color: red;
}

.logiciels-note {
    font-style: italic;
    font-size: 0.8em;
    color: #666;
    margin-top: 1vh;
    text-align: right;
    padding-right: 4vh;
}

.separator {
  position: absolute;
  width: 0.1vh;
  height: 6vh;
  background-color: var(--accent);
  border-radius: 2px;
  left: 70%;
}

    /* SECTION PORTFOLIO */

   
    .projets {
        display: flex;
        height: 90%;
        gap: 4vh;
        flex-direction: column;
        align-items: start;
        overflow-y: auto;
        scrollbar-width: thin;
        scrollbar-color: var(--accent) var(--fond-principal);
        border: 1px solid var(--bordure);
        padding: 2vh 0;
        box-sizing: border-box;
    }

    .projet {
        position: relative;
        display: flex; 
        width: 100%;
        transition: box-shadow 0.3s ease;
    }

    .projet:hover {
        cursor: pointer;
    }


    .click {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%; 
        height: 100%; 
        background: var(--fond-hover); 
        display: flex; 
        align-items: flex-end; 
        justify-content: flex-end;
        opacity: 0;
        transition: opacity 0.3s ease;
        cursor: pointer;
        border-top: 0.1vh solid var(--accent);
        border-bottom: 0.1vh solid var(--accent);
        box-shadow: 0 2vh 1vh -1vh var(--ombre-legere), 0 -2vh 1vh -1vh var(--ombre-legere);
        box-sizing: border-box;
        padding: 2vh;
        text-decoration: underline;
    }

    @media (hover: hover) {
        .projet:hover .click {
            opacity: 1;   
            }

        .projet .click {
            opacity: 0;  
            }
            }

    @media (hover: none) {
        .projet .click {
            opacity: 1; 
            }
            }

    .projet .image {
        min-width: 40%;
        max-width: 40%;
        height: auto;
        max-height: 35vh;
        object-fit: cover;
    }

    .projet .extrait {
        position: relative;
        padding-left: 2vh;
    }

    .extrait p {
        display: -webkit-box;
        display: box; 
        -webkit-box-orient: vertical;
        box-orient: vertical; 
        -webkit-line-clamp: 3;
        line-clamp: 3; 
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .extrait .logo {
        position: absolute;
        bottom: 0;
        left: 2vh;
        height: 8vh;
        width: auto;
    }

/* SECTION CONTACT */
  
  .contact form {
    display: flex;
    flex-direction: column;
    gap: 1.5vh;
    padding: 2vh 0;
    align-content: right;
  }
  
  .contact input,
  .contact textarea {
    background-color: var(--fond-secondaire);
    border: 1px solid var(--bordure);
    color: var(--texte-principal);
    padding: 1vh;
    width: 100%;
    box-sizing: border-box;
    font-size: clamp(1.3vh, 2.5vh, 1.67vh);
    transition: border-color 0.3s ease;
  }
  
  .contact textarea {
    resize: vertical;
    min-height: 10vh;
    max-height: 50vh;
    scrollbar-width: thin;
    scrollbar-color: var(--accent) var(--fond-principal);
  }

  .contact input::placeholder,
  .contact textarea::placeholder {
    color: var(--texte-secondaire);
  }
  
  .contact input:focus,
  .contact textarea:focus {
    outline: none;
    border-color: var(--accent);
  }
  
  .contact button {
    background-color: var(--fond-principal);
    width: 100%;
    color: var(--texte-principal);
    border: 1px solid var(--bordure);
    cursor: pointer;
    transition: background-color 0.3s ease;
  }
  
  .contact button:hover {
    background-color: var(--fond-secondaire);
  }
  
  .contact small {
    text-decoration: none;
  }

  .contact a {
    color: var(--texte-secondaire);
  }

  .contact h4 {
    padding-top: 3vh;
  }
  /* STYLE FOOTER */

  footer {
    position: fixed;
    flex-direction: column;
    justify-content: space-between; 
    bottom: 0;
    left: 6vh;
    width: calc(60% - 12vh);
    height: var(--footer-height);
    background-color: var(--fond-principal);   
    color: var(--texte-principal);
    border-top: 0.1vh solid var(--accent);
    transition: height 0.5s ease-in-out;
    z-index: 500;
  }
  
  .foot {
    position: fixed;
    bottom: 0;
    display: flex;
    height: 5.9vh;
    width: calc(60% - 12vh);
    justify-content: space-between;
    align-items: center;
    background-color: var(--fond-principal);
  }

  footer img {
    height: 4vh;
    width: auto;
  }

  footer a {
    color: var(--texte-secondaire);
    max-width: 30%;
  }

  footer a:hover {
    color: var(--accent);
    transition: color 0.3s ease;
  }

  footer.height {
    height: calc(100dvh - var(--header-height));
  }

footer {
    overflow-y: scroll;
            scrollbar-width: thin;
        scrollbar-color: var(--accent) var(--fond-principal);
}

/* Planches */
.planche {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    height: 100vh;
    width: 100%;
    z-index: 1000;
    box-sizing: border-box;
}
@media (orientation: portrait) {
    .planche {
        flex-direction: column-reverse;
    }
}
.desc {
    z-index: 50;
}

.slider {
    z-index: 51;
}

.overlay {
    z-index: 100;
}

body.no-scroll {
    overflow: hidden;
}

    /* Slider */
    .slider {
        height: 100vh;
        width: 60%;
        
        overflow-y: auto;
        scrollbar-width: none;
        background-color: var(--fond-principal);
        box-shadow: 2vh 0 2vh 1vh var(--fond-overlay);
        box-sizing: border-box;
    }

    .slider-track {
        display: flex;
        flex-direction: column;
        gap: 2vh; 
    }
    
        .slider-track img {
            width: 100%;
            height: auto;
            object-fit: cover; 
            display: block;
            border-bottom: var(--fond-principal) 5vh;
        }

        @media (orientation: portrait) {
            .slider {
                width: 100%;
                height: 60vh; 
                overflow-x: auto;
                overflow-y: hidden; 
                white-space: nowrap;
            }
        
            .slider-track {
                display: flex;
                flex-direction: row; 
                height: 100%; 
            }
        
            .slider-track img {
                width: auto;
                height: 100%; 
            }
        }
        
    /* Description */ 
    .desc {
        position: relative;
        width: 40%;
        color: var(--texte-principal);   
        display: flex;
        flex-direction: column;
        box-sizing: border-box;
        padding: 4vh;
        background-color: var(--fond-principal);
    }
    @media (orientation: portrait) {
        .desc {
            width: 100%;
            height: 40%;
            overflow-y: auto;
        }
    }

        .text {
            margin-top: 6vh;
        }

        /* Info */
        .info { 
            display: flex;
            align-items: center;
            flex-grow: 1;
            margin-bottom: 6vh;
        }

            .center {
                display: flex;
                width: 100%;
            }
            /* Bloc Missions */
            .missions {
                width: 48%;
                border-right: 2px solid var(--accent);
                margin-right: 2vh;
                transition: width 0.5s ease-in-out;
                max-height: 30vh;
                overflow-y: scroll;
                scrollbar-width: none;
            }

                .missions ul {
                    padding-left: 20px;
                }

                .detail {
                    display: none;
                    background-color: var(--fond-principal);
                    
                }

                .missions.full-width {
                    width: 100%;
                    scrollbar-width: thin;
                    scrollbar-color: var(--accent) var(--fond-principal);
                }

            /* Bloc MOE */
            .MOE {
                width: 48%;
                margin-left: 2vh;
            }
                    
                .MOE img {
                    height: 8vh;
                    width: auto;
                    object-fit: contain;
                }
                
/* Overlay */
    /* Titre */
    .desc h2 {
        position: absolute;
        top: 4vh;
    }

    /* Bloc Lieu */
    .lieu {
        height: 6vh;
        position: absolute;
        bottom: 4vh;
        left: 4vh;
        display: flex;
    
    }

        .lieu svg {
            height: 6vh;
            width: 6vh;
            fill: var(--accent);
            display: block;
        }
        
        .lieu h3 {
            display: flex;
            align-items: flex-end;
        }

    /* Symboles */
    .symbol {
        align-items: center;
        justify-content: center;
        width: 4vh;
        height: 4vh;
    }
    
    .symbol svg {
        cursor: pointer;
        stroke: var(--texte-principal);
        stroke-width: 2;
        height: 4vh;
        width: 4vh;
        transition: transform 0.2s ease;
    }

    .symbol svg:hover {
        transform: scale(1.2);
        stroke: var(--accent);
    }

    .symbolTR {
        position: absolute;
        top: 4vh;
        right: 4vh;
    }

    .symbolBL {
        position: absolute;
        bottom: 4vh;
        right: 7vh;
    }

    .symbolBR {
        position: absolute;
        bottom: 4vh;
        right: 4vh;
    }

    .scroll {
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        align-items: center;
        width: 60%;
        pointer-events: none; 
    }

    .flechetop, .flechebot {
        opacity: 1;
        transition: opacity 1s;
        background: linear-gradient(to bottom, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.1)); 
        padding: 2vh;
        padding-left: 48%;
        padding-right: 49%;
    }
    
    .flechebot {
        background: linear-gradient(to top, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.1)); 
    }

    .scroll svg {
    stroke-width: 2;
    stroke: var(--accent);
    height: 4vh;
    width: 4vh;
    }

    .flechebot {
        position: absolute;
        bottom: 0;
    }

    .flechetop.hidden, .flechebot.hidden {
        opacity: 0;
    }
    @media (orientation: portrait) {
        .scroll {
            position: absolute;
            width: 100%; 
            height: 60vh; 
            flex-direction: row;
            top: auto;
            bottom: 0;
        }
    
        .flechetop, .flechebot {
            padding: 2vh;
            padding-top: 48%;
            padding-bottom: 49%;
            background: linear-gradient(to right, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.1)); 
        }
    
        .flechebot {
            background: linear-gradient(to left, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.1)); 
        }

        .flechebot {
            position: absolute;
            right: 0;
        }
    }
    
/* Animations */
.desc, .slider-track {
    transition: transform 0.4s ease-out, opacity 0.4s ease-out;
}

.inactiveR { transform: translateX(100%); opacity: 0; }
.inactiveL { transform: translateX(-100%); opacity: 0; }
.inactiveB { transform: translateY(100%); opacity: 0; }
.inactiveT { transform: translateY(-100%); opacity: 0; }

.active { transform: translateX(0) translateY(0); opacity: 1; }

    

    
   