/**
Généralités
 */
@font-face {
    font-family: 'Montserrat';
    src: local("Monserrat Regular"),
    url('../fonts/Montserrat/montserrat-regular-webfont.woff2') format('woff2'),
    url('../fonts/Montserrat/montserrat-regular-webfont.woff') format('woff');
    font-weight: 400;
    font-style: normal;
}

@font-face {
    font-family: 'Montserrat';
    src: local("Monserrat SemiBold"),
    url('../fonts/Montserrat/montserrat-semibold-webfont.woff2') format('woff2'),
    url('../fonts/Montserrat/montserrat-semibold-webfont.woff') format('woff');
    font-weight: 600;
    font-style: normal;
}

  :root {
      --blue: #008dc6;
      --citrus: #90ca28;
      --dark-grey: #5b5b5b;
}

body {
    margin: 0;
    font-size: 16px;
    font-family: "Montserrat", sans-serif;
    position: relative;
    line-height: 1.3;
    font-weight: 400;
}

main {
    width: 100vw;
    height: 100vh;
    overflow: hidden;
}

h1, h2, h3, h4, h5, h6 {
    font-variant: small-caps;
    font-weight: 600;
}

strong {
    font-weight: 600;
}

.featured {
    color: var(--citrus);
}

a {
    color: inherit;
}

a:visited {
    color: var(--citrus);
}

.button {
    display: inline-block;
    background-color: var(--citrus);
    color: white;
    font-weight: 600;
    text-decoration: none;
    padding: .8em 1em;
    border-radius: 8px;
}

.button:visited {
    color: white;
}

/**
Accueil /  Fond
 */

header .half {
    position: relative;
    margin: 0;
    width: 100vw;
    height: 50vh;
}

header .half p {
    position: absolute;
    margin: 0;
}

header  p.slogan {
    bottom: 5em;
    width: 100vw;
    height: 1em;
    margin: auto;
    display: block;
    text-align: center;
    font-weight: 400;
}
header .name {
    width: 5.5em;
    /*! padding-left: 5px; */
    text-transform: uppercase;
    font-size: 3.2em;
    font-weight: 600;
    line-height: 0.7em;
    left: calc(50vw - 2.75em);
}

header .name span.mar {
    letter-spacing: -2px;
}

header .name span.cha {
    letter-spacing: -0.09em;
}

header .name span.ha {
    letter-spacing: 0.01em;
}

header .white .name {
    bottom: -0.06em;
}

header .blue .name {
    top: .055em;
}

header .name span.light {
    opacity: 0.3;
}

header .white {
    margin: 0;
    color: var(--blue);
    background-color: white;
}

header .blue {
    color: white;
    background-color: var(--blue);
}

header .buttons {
    position: absolute;
    top: 7.5em;
    width: 100vw;
    text-align: center;
}

header .buttons a {
    color: white;
    font-size: 2em;
    font-weight: 400;
    margin: 0 8px;
}

/**
Boutons de section / Navigation
 */


.toggle {
    z-index: 13;
    position: fixed;
    opacity: 0;
}

.toggle,
.toggle-buttons {
    margin: 10px;
    width: 50px;
    height: 50px;
    background-color: transparent;
}

section nav {
    position: fixed;
    border-radius: 0 2em 0 0;
}

section nav:after {
    display: block;
    width: 100%;
    height: auto;
    position: absolute;
    bottom: 0.4em;
    text-align: center;
    font-size: .7em;
    font-variant: small-caps;
    font-weight: 600;
    opacity: 0;
    animation-name: onoff;
    animation-duration: 12s;
    animation-delay: 2s;
    animation-iteration-count: infinite;
    animation-timing-function: ease-in;
}

section#a-propos nav:after {
    content: "À propos";
    color: var(--blue);
}

section#prestations nav:after {
    content: "Services";
    color: var(--blue);
}

section#projets nav:after {
    content: "Projets";
    color: white;
}

section#contact nav:after {
    content: "Contact";
    color: white;
}

.toggle-buttons svg {
    position: absolute;
    width: 50px;
    height: 45px;
    z-index: 35;
    transition: bottom .2s;
}

.toggle-buttons .close {
    opacity: 0;
}

.toggle:checked {
    z-index: 23;
}

.toggle:checked + section nav:after {
    content: "" !important;
}

.toggle:checked + section .toggle-buttons {
    z-index: 22;
}

.toggle:checked + section .toggle-buttons .open {
    opacity: 0;
} 
.toggle:checked + section .toggle-buttons .close {
    opacity: 1;
    z-index: 27;
}


/* about*/
.a-propos.toggle,
section#a-propos nav {
    top: 0;
    left: 0;
}

/* presta */
.prestations.toggle,
section#prestations nav {
    top: 0;
    right: 0;
}

section#a-propos .toggle-buttons svg,
section#prestations .toggle-buttons svg {
    color: var(--blue);
}

/* projets */

.projets.toggle,
section#projets nav {
    bottom: 0;
    left: 0;
    background-color: var(--blue);
    border-radius: 0 2em 0 0;
}

/* contact */

.contact.toggle,
section#contact nav {
    bottom: 0;
    right: 0;
}

section#projets .toggle-buttons svg,
section#contact .toggle-buttons svg {
    color: white;
    bottom: 15px;
}


/**
Contenu
 */

/**activation**/

section {
    z-index: 11;
    position: fixed;
}

section .content {
    position: fixed;
    width: 100vw;
    height: 100vh;
    top: 0;
    left: 0; 
    transition: margin 0.2s, border-radius .5s;
}

section#a-propos .content {
    margin-top: -100vh;
    margin-left: -100vw; 
    border-radius: 0 0 5em 0;
    background-color: white;
}

section#prestations .content {
    margin-top: -100vh;
    margin-left: 100vw; 
    border-radius: 0 0 0 5em;
    background-color: white;
}

section#projets .content {
    margin-top: 100vh;
    margin-left: -100vw; 
    border-radius: 0 5em 0 0;
    background-color: var(--blue);
    color: white;
}

section#contact .content {
    margin-top: 100vh;
    margin-left: 100vw; 
    border-radius: 5em 0 0 0;
    background-color: var(--blue);
    color: white;
}

.toggle:checked + section {
    z-index: 21;
}

.toggle:checked + section nav {
    z-index: 22;
}

.toggle:checked + section .content {
    margin: 0 !important;
}

/*** règle media pour pas pénaliser les grandes largeurs**/
@media only screen and (max-width : 768px) {
    .toggle:checked + section .content {
        border-radius: 0 !important;
    }
}

/************** intérieur **************/

section .content > *:last-child {
    margin-bottom: 3em;
}


/* ACCORDÉONS */
.accordion {
    position: relative;
    overflow: hidden;
}

.accordion input.toggle-accordion-content {
    position: absolute;
    z-index: 10;
    top: 0;
    left:0;
    width: 100%;
    height: 100%;
    opacity: 0;
}

.accordion .accordion-content {
    margin: 0 .5em;
    transition: font-size .1s,
                margin .1s,
                padding .1s,
                opacity .2s .1s;
}

.accordion input.toggle-accordion-content:checked {
    z-index: -1;
}

.accordion input.toggle-accordion-content:not(:checked) ~ .accordion-content {
    opacity: 0;
    font-size: 0;
    margin: 0;
    padding: 0;
}

.accordion input.toggle-accordion-content:not(:checked) ~ .accordion-content img {
    height: 0;
}

.accordion .accordion-close {
    z-index: 0;
}

.accordion .accordion-close input.clear {
    position: absolute;
    top: 0;
    left:0;
    width: 100%;
    height: 4em;
    opacity: 0;
}

.accordion input.toggle-accordion-content:checked ~ .accordion-close input.clear {
    z-index: 15;
}

.accordion .accordion-title:before {
    content: ">";
    display: inline-block;
    position: absolute;
    left: 0;
    top: -.185em;;
    margin-right: 10px;
    font-size: 1.5em;
    max-height: 1rem;
    transform: rotate(0turn) scaleX(.5);
    transform-origin: bottom center;
    transition: transform .2s;
}

.accordion .accordion-title {
    position: relative;
    padding-left: 25px;
    margin-top: .5em;
    margin-bottom: .5em;
}

.accordion input.toggle-accordion-content:checked ~ .accordion-title::before {
    transform: rotate(.25turn) scaleX(.5);
}

/* --- */


/* CONTENU */

section .content {
    overflow-y: scroll;
}

section .content::-webkit-scrollbar {
  display: none; /* Chrome, Safari and Opera */
}

section .content {
  -ms-overflow-style: none;  /* IE and Edge */
  scrollbar-width: none;  /* Firefox */
} 

section .content h2 {
    text-align: center;
    margin: 10px 55px;
}

section .content h3 {
    margin: 1em 0 .2em;
}

section#a-propos .content,
section#prestations .content {
    color: var(--blue);
}


section .content .resume {
    margin: 1em .2em;
    font-size: 2em;
    font-weight: 200;
    text-align: center;
}

section .content h3,
section .content h4,
section .content p,
section .content ul {
    margin-left: .5em;
    margin-right: .5em;
}

section#a-propos .content p,
section#a-propos .content ul,
section#prestations .content p,
section#prestations .content ul{
    color: var(--dark-grey);
}

.badges-legend {
    font-size: .7em;
    margin: -1em 0;
}

.badge-ccc {
    text-align: center;
}

.badge-ccc img {
    max-width: 250px;
     margin: -40px 0;
}

.badge-ccc figcaption {
    text-align: center;
}

section#a-propos .badges {
    display: flex;
    flex-direction: raw;
    flex-wrap: wrap;
    justify-content: space-around
}

section#a-propos .badges a {
    flex-shrink: 1;
    flex-basis: 33%;
    flex-grow: 1;
    min-width: 150px;
    max-width: 250px;
}

section#a-propos .badges img {
    width: 100%;
}


/** Compétences **/

section#a-propos .content .competences {
    border: 1px var(--citrus) solid;
    border-radius: 20px;
    margin-bottom: 1em;
}

section#a-propos .content .competences.star2 {
    opacity: 0.7;
}

section#a-propos .content .competences.star1 {
    opacity: 0.4;
}

section#a-propos .content .competences .bulls {
    font-size: 4.5em;
    margin: 0;
    text-align: center;
    color: var(--citrus);
}

section#a-propos .content .competences .techs {
    text-align: center;
}

section#a-propos .content .competences .logo-tech {
    max-width: 160px;
    max-height: 60px;
    margin: 10px;
}

/* --- */

/* Labels */

section#prestations .labels {
    display: flex;
    flex-direction: row;
    justify-content: space-evenly;
}

section#prestations .labels .label {
    flex: 0 0 auto;
}

/* --- */



/* LISTES FUNKY */

section .content .historique,
section .content .picto-list {
    list-style: none;
    position: relative;
    padding: 0;
}

section .content .historique li {
    position: relative;
    padding-left: 2.5em;
    margin-bottom: 0.6em;
}

section .content .historique span.date {
    position: absolute;
    width: 2.3em;
    height: 1em;
    font-size: 0.8em;
    left: 0;
    top: 3px;
    color: var(--blue);
}

section .content .picto-list li {
    position: relative;
    padding-left: 2.3em;
    margin-bottom: 0.8em;
}

section .content .picto-list svg {
    position: absolute;
    width: 2.3em;
    height: 2em;
    font-size: 0.7em;
    left: 0;
    top: 3px;
    color: var(--citrus);
}

section .content .historique span.detail {
    font-style: italic;
    font-size: 0.9em;
}

/* --- */

/* ACCORDEONS PROJETS */

.projet .project-header {
    position: relative;
    margin: 1em .5em;
    background-color: rgba(0,0,0, .7);
    border-radius: 8px;
    overflow: hidden;
    transition: background-color .2s,
        border-radius .2s;
}

.projet .project-header .accordion-title::before {
   display: none;
}

.accordion .accordion-close input.clear {
    height: 6em;
}

.projet .project-header .accordion-title {
    margin: 2em 1em .2em;
    padding: 0;
    transition: margin-top .2s;
}

.projet .project-header .subtitle {
    margin: 0 2.5em 2em;
    padding: 0;
    color: #bdbdbd;
    font-style: italic;
    transition: margin-bottom .2s;
}

.projet .project-header .img-fluid {
    position: absolute;
    z-index: -1;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
    transition: top .2s, objecf-fit.2s;
}

.projet input.toggle-accordion-content:checked ~ .project-header {
    background-color: white;
    margin: .2em .5em 0;
    border: 3px solid var(--dark-grey);
    border-bottom: none;
    border-radius: 8px 8px 0 0;
    color: var(--dark-grey);
;}

.projet input.toggle-accordion-content:checked ~ .project-header .accordion-title {
    margin-top: .5em;
}

.projet input.toggle-accordion-content:checked ~ .project-header .subtitle {
    margin-bottom: calc(300px + 1em);
}

.projet input.toggle-accordion-content:checked ~ .project-header .img-fluid {
    top: 4.5em;
    object-fit: contain;
    z-index: 0;
}

.projet input.toggle-accordion-content:checked ~ .accordion-content {
    padding-top: .2em;
    border: 3px solid var(--dark-grey);
    border-top: none;
    border-radius: 0 0 8px 8px;
    background-color: white;
    color: var(--dark-grey);
}

.projet .accordion-content .project-buttons {
    text-align: center;
}

.projet .accordion-content .button {
    width: 6em;
    border: 2px solid var(--citrus);
    font-size: .8em;
}

.projet .accordion-content .project-close {
    position: relative;
    display: inline-block;
    text-align: center;
    background-color: white;
    font-size: .8em;
    font-weight: 600;
    width: 6em;
    margin: .5em auto;
    padding: .8em 1em;
    border: 2px solid var(--dark-grey);
    border-radius: 8px;
}

.projet .accordion-content .project-close .clear {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    opacity: 0;
}

/* --- */

/* CONTACT */

.contact {
    text-align: center;
}

.contact .button {
    display: block;
    position: relative;
    margin: .5em auto 2.5em;
    padding: .2em .2em;
    width: 3em;
    height: 3em;
    text-align: center;
    background-color: white;
    color: white;
}

.contact .button svg {
    position: absolute;
    top:0;
    bottom: 0;
    left: 0;
    right: 0;
    margin: auto;
    width: 1.5em;
    height: 1.5em;
    color: var(--blue);
}

section#contact footer {
    position: absolute;
    width: 100%;
    bottom: 0;
    margin: 0;
    text-align: center;
}

section#contact footer .mentions {
    position: relative;
}

section#contact footer .mentions a {
    text-align: center;
    font-size: .9em;
   
    font-weight: 600;
    color: white;
}

section#contact footer .copyright {
    font-size: .7em;
    
    font-weight: 600;
}

/* --- */

/* ---- MENTIONS LÉGALES ------*/

main.mentions {
    margin-top: 3em;
    padding: 0 1em;
    height: auto;
    width: auto;
    overflow: initial;
   
}

.mentions nav {
    position: fixed;
    width: 100vw;
    background-color: var(--blue);
    padding: .5em;
    top: 0;
    left: 0;
    z-index: 1;
}

.mentions nav a {
    padding-left: 1em; 
    font-size: .9em;
    text-decoration: none;
    font-weight: 600;
   color: white;
}

.mentions section {
    position: relative;
    z-index: 0;
    padding-bottom: 5em;
}

.mentions footer {
    background-color: var(--blue);
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
}

.mentions footer .copyright {
    font-size: .8em;
    color: white;
    text-align: center;
}
/* --- */

/* ---- 404 ------*/

header.err404 .half {
    overflow: hidden;
}

header.err404 .err404 {
    width: 5.5em;
    /*! padding-left: 5px; */
    text-transform: uppercase;
    font-size: 9em;
    font-weight: 600;
    line-height: 0.7em;
    width: 100%;
    text-align: center;
    line-height: 0;
}

header.err404 .white .err404 {
    bottom: 0;
}

section.err404 {
    position: absolute;
    top: calc((50vh + 5em));
    color: white;
    padding: 0 1em;
    font-weight: 400;
    text-align: center;
    width: calc(100% - 2em);
    
}

footer.err404 {
    position: absolute;
    width: 100%;
    bottom: 0;
    margin: 0;
    text-align: center;
}

footer.err404 .copyright {
    font-size: .5em;
    color: white;
    text-align: center;
}

/* --- */

/* ------- ANIMATION ----------*/

.float {
    animation-name: float;
    animation-duration: 4s;
    animation-iteration-count: infinite;
    animation-timing-function: ease-in-out;
}

.pulse {
    animation-name: pulse;
    animation-duration: 6s;
    animation-delay: 2s;
    animation-iteration-count: infinite;
    animation-timing-function: ease-out;
}

@keyframes pulse {
    0% { filter: drop-shadow( 0px 0px 0px); }
    18% { filter: drop-shadow( 0px 0px 80px ) ;}
    19% { filter: drop-shadow( 0px 0px 80px rgba(255, 255, 255, 0));}
    20% { filter: unset}
}

@keyframes onoff {
    0% { opacity: 0; }
    8% { opacity: 1; }
    50% { opacity: 1; }
    58% { opacity: 0; }
    100% { opacity: 0; }
}

@keyframes float {
    0% { filter: drop-shadow( 0px 0px 0px); }
    50% { filter: drop-shadow( 0px 0px 5px); }
    100% { filter: drop-shadow( 0px 0px 0px ) ;}
}


/* --- */

/* ------- RESPONSIVE DESIGN ----------*/

@media only screen and (min-width : 321px ) {
    
    section nav::after {
        bottom: calc(5vh - .6em);
     }
    

   .toggle,
   .toggle-buttons {
        margin: 5vh 5vw;
       transition: margin .2s;
    }
    
    section#projets nav::after, 
    section#contact nav::after
    {
        bottom: calc(5vh - 1.4em);
    }
    
    section#projets .toggle-buttons svg, 
    section#contact .toggle-buttons svg
    {
        bottom: calc(5vh - 5px);
    }
       
    .toggle:checked,
    .toggle:checked + section .toggle-buttons {
        margin: 15px;
    }
    
    .toggle:checked + section#projets .toggle-buttons svg, 
    .toggle:checked + section#contact .toggle-buttons svg
    {
    bottom: 15px;
    }
    
    section .content h2 {
    margin-top: calc((15px + 1em) / 2)
    }
    
   
}

@media only screen and (min-width : 481px) {
    body {
        font-size: 20px;
    }
    
    section .content .resume,
    section .content h3, 
    section .content h4, 
    section .content p, 
    section .content ul {
        margin-left: 1em;
        margin-right: 1em;
    }
    
    .toggle {
        margin: 3vh 3vw;
        width: calc(3vw + 50px);
        height: calc(3vh + 50px);
    }
}

@media only screen and (min-width : 769px) {
    
    body {
        font-size: 22px;
    }
    
    header .name {
        line-height: .69em;
    }
    
    section .content {
        max-width: 768px;
        max-height: 1280px;
        top: unset;
        left: unset;
        border: 5px solid var(--dark-grey);
    }

    section#a-propos .content {
        margin-top: -768px;
        margin-left: -1280px; 
        top: 0;
        left: 0;
        border-top: 0;
        border-left: 0;
    }

    section#prestations .content {
        margin-top: -768px;
        margin-right: -1280px; 
        top: 0;
        right: 0;
        border-top: 0;
        border-right: 0;
    }

    section#projets .content {
        margin-bottom: -768px;
        margin-left: -1280px; 
        bottom: 0;
        left: 0;
        border-bottom: 0;
        border-left: 0;
    }

    section#contact .content {
        margin-bottom: -768px;
        margin-right: -1280px; 
        bottom: 0;
        right: 0;
        border-bottom: 0;
        border-right: 0;
    }
   
    
}