site-pro/style.css

1012 lines
17 KiB
CSS
Executable file

/**
Généralités
*/
/* polices à mettre en font-face une fois largeurs déterminées*/
@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 .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);
}
/* --- */
/* 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;
}
}