/** 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; } }