@font-face {
  	font-family: "DJB";
  	src: url("../fonts/DJB/DJB-Up-on-the-Scoreboard.ttf.woff") format("woff");
    font-display: swap;
}
@font-face {
  	font-family: "Minisystem";
  	src: url("../fonts/Minisystem/minisystem-webfont.woff2") format("woff2"),
      url("../fonts/Minisystem/minisystem-webfont.woff") format("woff");
    font-display: swap;
}
@font-face {
  	font-family: "JosefinSans";
  	src: url("../fonts/josefin-sans/josefinsans-regular-webfont.woff2") format("woff2"),
    url("../fonts/josefin-sans/josefinsans-regular-webfont.woff") format("woff");
    font-display: swap;
}

* {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}
body {
  margin: 0;
  background-color: #fff;
}
a {
  text-decoration: none;
}
ul {
  list-style: none;
  padding: 0;
}
.djb {
  font-family: 'DJB';
}
.minisystem {
  font-family: 'Minisystem';
  color: #ffc925;
  font-size: 2em;
}
a.ext {
  display: inline-block;
  color: #000;
  text-decoration: underline;
}
a.ext::after {
  content: url('../images/external-link-alt.svg');
  display: inline-block;
  width: 9px;
  position: relative;
  left: 3px;
}
a.ext:hover {
  transform: rotateX(180deg);
  transition: transform .5s;
}

.mentions {
  display: flex;
  position: absolute;
  bottom: 10px;
  right: 10px;
  transition: transform 1s;
}
.mentions img {
  width: 150px;
  height: auto;
}
.bouton-mentions {
  position: absolute;
  top: 44%;
  left: 25%;
  font-size: 15px;
}


/***********/
/* ACCUEIL */
/***********/
.accueil header {
  position: absolute;
  z-index: 1;
  left: 0;
  padding: 0 2rem;
  width: 550px;
  max-width: 100%;
  transition: transform 1s;
}
.accueil header nav {
  position: relative;
}
.panneau {
  height: auto;
  width: 100%;
}
.accueil header nav ul {
  position: absolute;
  top: 51%;
  left: 17%;
  font-size: 7.5px;
  line-height: 1.14;
  margin: 0;
}
.accueil header a {
  position: relative;
  z-index: 1;
}

/* HORLOGE */
.conteneur-aiguilles {
  position: absolute;
  top: 57.5%;
  left: 68%;
  height: 9.85%;
  width: 8.75%;
}
.logo {
  display: none;
  position: absolute;
  top: 60%;
  left: 81%;
  height: auto;
  width: 11%;
}
.conteneur-aiguille {
  position: absolute;
  height: 100%;
  width: 100%;
}
.aiguille {
  position: absolute;
  bottom: 50%;
  height: 50%;
  transform-origin: 50% 100%;
}
.aiguille.heures img {
  position: relative;
  top: 5px;
  height: 100%;
}
.aiguille.secondes img, .aiguille.minutes img {
  position: relative;
  height: 120%;
}
@keyframes tictac {
  to {
    transform: rotateZ(360deg);
  }
}
.aiguille.heures {
  left: calc(50% - 1.85px);
  transform-origin: calc(50% - 1.85px) 100%;
  animation: tictac 43200s infinite linear;
}
.aiguille.minutes {
  left: calc(50% - .88px);
  transform-origin: calc(50% - .88px) 100%;
  animation: tictac 3600s infinite steps(60);
}
.aiguille.secondes {
  left: calc(50% - .14px);
  transform-origin: calc(50% - .14px) 100%;
  animation: tictac 60s infinite steps(60);
}


.anim header {
  transform: translateY(-100%);
}
.anim .mentions {
  transform: translateY(calc(100% + 10px));
}

body.accueil {
  overflow: hidden;
}
.accueil main {
  --duree-debut: 10s;
  --duree-acceleration: 4s;
  overflow: hidden;
  position: relative;
  z-index: 0;
  height: 100vh;
  width: 100%;
  margin: 0;
  background-image: url('../images/FONDS/fond-accueil-montagne_o.svgz');
  background-size: 100vw auto;
  background-repeat: no-repeat;
}


/* VILLE */
.ville {
  position: absolute;
  z-index: 0;
  left: 0;
  bottom: 2rem;
  height: calc(100vh - 7vw - 2rem);
  width: 100vh;
}
@keyframes animBatiments {
  to {
    left: calc(-1000px - var(--translation) - 100vw + calc(var(--left) * 1px));
  }
}
.ville img {
  --translation: 60vw;
  position: absolute;
  left: calc(1% * var(--left));
  bottom: calc(1% * var(--bottom));
  height: calc(.6px * var(--height));
  transform: translateX(var(--translation));
}
.anim .ville img {
  animation: animBatiments ease-in forwards;
  animation-delay: var(--duree-debut);
  animation-duration: calc(10s + calc(1s * var(--duration)) + calc( calc(var(--bottom) / 7) / 10) * 1s);
}

@keyframes animBouche {
  to {
    left: calc(100vw - var(--translation) - calc(var(--width) * .7px));
  }
}
.bouche {
  --translation: 60vw;
  --bottom: 0;
  --left: 250;
  --width: 800;
  position: absolute;
  left: calc(1% * var(--left));
  transform: translateX(var(--translation));
  bottom: -1rem;
  width: calc(.7px * var(--width));
  z-index: 1000;
  height: auto;
}
.bouche.entree {
  z-index: 0
}
.bouche.masque::after {
  content: '';
  display: inline-block;
  position: absolute;
  left: calc(100% - 8px);
  bottom: 0;
  height: 140px;
  width: 40px;
  background-color: #fff;
}
.bouche.travail-classe {
  --width: 900;
}
.bouche.cite-educative {
  --width: 1100;
}
.anim .bouche {
  animation: animBouche 13s var(--duree-debut) ease-in forwards;
}
.bouche img {
  width: 100%;
}
.bouche.masque img {
  position: relative;
  left: 2.5px;
  top: 1px;
}
/*:root {
  --seuilX: 1200;
}*/

/*@media only screen and (max-width: 1200px) {
  .ville {
    height: 50vw;
  }
}*/

/*.ville {
  bottom: 200px;
  height: 300px;
  width: 750px;
}
.ville img {
  left: calc(100% * calc(var(--left) / var(--seuilX)));
  bottom: calc(100% * calc(var(--bottom) / calc(var(--seuilX) / 2)));
  width: calc(100% * calc(var(--width) / var(--seuilX)));
}
.ville .bouche {
  --left: 3500;
  width: 400px;
  transform: translateX(var(--translation)) translateY(200px);
}*/



/* TRAIN */
.conteneur-train {
  position: absolute;
  z-index: 1;
  bottom: 3px;
  height: 70%;
  width: 100%;
  margin: auto;
}
@keyframes trajetDebut {
  to {
    transform: scale(1) translateX(18vh);
  }
}
@keyframes trajetFin {
  10% {
    /*transform: scale(1) translateX(18vh);*/
    height: 80%;
    left: calc(calc(100vw - 560px - 60vh) / 2.5);
  }
  25% {
    /*transform: scale(.2) translateX(18vh);*/
    height: 80px;
    left: calc(100vw - 280px - 60vh);
  }
  100% {
    /*transform: scale(.2) translateX(18vh);*/
    height: 80px;
    left: 100vw;
  }
}

@media only screen and (max-width: 1320px) {
  @keyframes animBouche {
    to {
      left: calc(100vw - var(--translation) - calc(var(--width) * .7px) + 350px);
    }
  }
  @keyframes trajetFin {
    10% {
      height: 80%;
      left: calc(calc(calc(100vw - 560px - 60vh) / 2.5) + 150px);
    }
    25% {
      height: 80px;
      left: calc(100vw - 280px - 60vh + 350px);
    }
    100% {
      height: 80px;
      left: 100vw;
    }
  }
}
/*@media only screen and (max-width: 1100px) {
  @keyframes animBouche {
    to {
      left: calc(100vw - var(--translation) - calc(var(--width) * .7px) + 350px);
    }
  }
  @keyframes trajetFin {
    10% {
      height: 80%;
      left: calc(calc(calc(100vw - 560px - 60vh) / 2.5) + 150px);
    }
    25% {
      height: 80px;
      left: calc(100vw - 280px - 60vh + 350px);
    }
    100% {
      height: 80px;
      left: 100vw;
    }
  }
}*/


#train {
  position: absolute;
  left: 0;
  bottom: 0;
  height: 80%;
  transform: scale(1) translateX(-92vh);
  transform-origin: bottom;
}
.anim #train {
  animation: trajetDebut var(--duree-debut) ease-in forwards, trajetFin 11s calc(13s + var(--duree-debut)) linear forwards;
}
.train-train {
  width: auto;
  height: 100%;
}
.train-wagon2, .train-mongolfiere, .train-wagon2-chapeau {
  position: absolute;
  width: auto;
}
@keyframes animWagonDebut {
  to {
    transform: rotate(2deg);
  }
}
@keyframes animWagonChapeauDebut {
  to {
    transform: rotate(-4deg);
  }
}
@keyframes animWagonAccel {
  to {
    transform: rotate(2deg);
  }
}
@keyframes animWagonChapeauAccel {
  to {
    transform: rotate(-4deg);
  }
}
@keyframes animWagon {
  to {
    transform: rotate(2deg);
  }
}
@keyframes animWagonChapeau {
  to {
    transform: rotate(-4deg);
  }
}
.train-wagon2 {
  height: 16.3%;
  left: 57.25%;
  bottom: 18.7%;
  transform-origin: bottom;
  transform: rotate(-2deg);
}
.train-wagon2-chapeau {
  height: 5%;
  left: 64.8%;
  bottom: 35%;
  transform-origin: bottom;
  transform: rotate(4deg);
}
.anim .train-wagon2 {
  animation: animWagonDebut calc(var(--duree-debut) / 2) 2 linear alternate, animWagonAccel calc(var(--duree-acceleration) / 2) var(--duree-debut) 2 linear alternate, animWagon 1s calc(var(--duree-debut) + var(--duree-acceleration)) infinite linear alternate;
}
.anim .train-wagon2-chapeau {
  animation: animWagonChapeauDebut calc(var(--duree-debut) / 2) 2 linear alternate, animWagonChapeauAccel calc(var(--duree-acceleration) / 2) var(--duree-debut) 2 linear alternate, animWagonChapeau 1s calc(var(--duree-debut) + var(--duree-acceleration)) infinite linear alternate;
}
@keyframes animMongolDebut {
  to {
    transform: rotate(-5deg)/* translate(5%, -2%)*/;
  }
}
@keyframes animMongolAccel {
  to {
    transform: rotate(-60deg)/* translate(5%, -2%)*/;
  }
}
@keyframes animMongol {
  from {
    transform: rotate(-60deg)/* translate(5%, -2%)*/;
  }
  to {
    transform: rotate(-63deg)/* translate(5%, -2%)*/;
  }
}
@keyframes animMongolDecel {
  from {
    transform: rotate(-63deg);
  }
  to {
    transform: rotate(-20deg);
  }
}
.train-mongolfiere {
  height: 46.5%;
  top: 0;
  left: 0;
  transform-origin: bottom;
  transform: rotate(-12deg)/* translate(0, 2%)*/;
}
.anim .train-mongolfiere {
  animation: animMongolDebut calc(var(--duree-debut) / 4) 4 linear alternate, animMongolAccel var(--duree-acceleration) var(--duree-debut) linear alternate, animMongol 1.5s calc(var(--duree-debut) + var(--duree-acceleration)) 6 linear alternate, animMongolDecel 1.5s calc(var(--duree-debut) + 13s) linear forwards;
}

.roue, .barre-courte, .barre-longue {
  position: absolute;
}

@keyframes animRouesDebut {
  to {
    transform: rotate(360deg);
  }
}
@keyframes animRouesAccel {
  from {
    transform: rotate(0);
  }
  to {
    transform: rotate(720deg);
  }
}
@keyframes animRoues {
  from {
    transform: rotate(0);
  }
  to {
    transform: rotate(9000deg);
  }
}
@keyframes animRouesDecel {
  from {
    transform: rotate(0);
  }
  to {
    transform: rotate(720deg);
  }
}
.anim .roue {
  animation: animRouesDebut calc(var(--duree-debut) / 2) 2 ease-in, animRouesAccel var(--duree-acceleration) var(--duree-debut) ease-in, animRoues 10s calc(var(--duree-debut) + var(--duree-acceleration)) linear, animRouesDecel var(--duree-acceleration) calc(var(--duree-debut) + var(--duree-acceleration) + 10s) infinite linear;
}
.roue {
  bottom: -.2%;
  height: 2.7%;
  /*transition: transform 30s linear;*/
}
.roue:nth-of-type(1) {
  left: 29%;
}
.roue:nth-of-type(2) {
  left: 34%;
}
.roue:nth-of-type(3) {
  left: 35.8%;
}
.roue:nth-of-type(4) {
  left: 40.8%;
}
.roue:nth-of-type(5) {
  left: 44.2%;
}
.roue:nth-of-type(6) {
  left: 49.2%;
}
.roue:nth-of-type(7) {
  left: 51%;
}
.roue:nth-of-type(8) {
  left: 56%;
}
.roue:nth-of-type(9) {
  left: 59.4%;
}
.roue:nth-of-type(10) {
  left: 64.4%;
}
.roue:nth-of-type(11) {
  left: 66.2%;
}
.roue:nth-of-type(12) {
  left: 71.2%;
}
.roue:nth-of-type(13) {
  left: 74.6%;
}
.roue:nth-of-type(14) {
  left: 79.6%;
}
.roue:nth-of-type(15) {
  left: 81.4%;
}
.roue:nth-of-type(16) {
  left: 86.4%;
}
.roue:nth-of-type(17) {
  left: 90.6%;
}
.roue:nth-of-type(18) {
  left: 92.65%;
}
.roue:nth-of-type(19) {
  left: 94.7%;
}
.roue:nth-of-type(20) {
  left: 96.75%;
}


@keyframes animBarreCourteDebut {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(15deg) translate(-10%, -100%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
@keyframes animBarreCourteAccel1 {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(15deg) translate(-10%, -100%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
@keyframes animBarreCourteAccel2 {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(15deg) translate(-10%, -100%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
@keyframes animBarreCourteAccel3 {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(15deg) translate(-10%, -100%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
@keyframes animBarreCourte {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(15deg) translate(-10%, -100%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
@keyframes animBarreCourteDecel {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(15deg) translate(-10%, -100%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
.barre-courte {
  width: 2.2%;
  bottom: .4%;
}
.anim .barre-courte {
  --etape-accel: calc(var(--duree-acceleration) / 3);
  animation: animBarreCourteDebut calc(var(--duree-debut) / 2) 2 ease-in, animBarreCourteAccel1 var(--etape-accel) var(--duree-debut) ease-in, animBarreCourteAccel2 calc(var(--etape-accel) / 2) calc(var(--duree-debut) + var(--etape-accel)) 2 linear, animBarreCourteAccel3 calc(var(--etape-accel) / 4) calc(var(--duree-debut) + calc(2 * var(--etape-accel))) 4 linear, animBarreCourte .375s calc(var(--duree-debut) + var(--duree-acceleration)) 26 linear, animBarreCourteDecel calc(var(--etape-accel) / 2) calc(var(--duree-debut) + var(--duree-acceleration) + 9.75s) infinite linear;
}
.barre-courte:nth-of-type(21) {
  left: 34.5%;
}
.barre-courte:nth-of-type(22) {
  left: 49.7%;
}
.barre-courte:nth-of-type(23) {
  left: 64.9%;
}
.barre-courte:nth-of-type(24) {
  left: 80.1%;
}
.barre-courte:nth-of-type(25) {
  left: 91.1%;
  transform: rotate(8deg) translateY(-80%);
}
.barre-courte:nth-of-type(26) {
  left: 93.15%;
  transform: rotate(12deg) translateY(-50%);
}
.barre-courte:nth-of-type(27) {
  left: 95.2%;
  transform: rotate(-2deg) translateY(-120%);
}


@keyframes animBarreLongueDebut {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(-9deg) translate(10%, 30%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
@keyframes animBarreLongueAccel1 {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(-9deg) translate(10%, 30%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
@keyframes animBarreLongueAccel2 {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(-9deg) translate(10%, 30%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
@keyframes animBarreLongueAccel3 {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(-9deg) translate(10%, 30%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
@keyframes animBarreLongue {
  0% {
    transform: rotate(0) translate(0)
  }
  50% {
    transform: rotate(-9deg) translate(10%, 30%);
  }
  100% {
    transform: rotate(0) translate(0);
  }
}
@keyframes animBarreLongue2Debut {
  0% {
    transform: rotate(-9deg) translate(0)
  }
  50% {
    transform: rotate(0) translate(10%, 30%);
  }
  100% {
    transform: rotate(-9deg) translate(0);
  }
}
@keyframes animBarreLongue2Accel1 {
  0% {
    transform: rotate(-9deg) translate(0)
  }
  50% {
    transform: rotate(0) translate(10%, 30%);
  }
  100% {
    transform: rotate(-9deg) translate(0);
  }
}
@keyframes animBarreLongue2Accel2 {
  0% {
    transform: rotate(-9deg) translate(0)
  }
  50% {
    transform: rotate(0) translate(10%, 30%);
  }
  100% {
    transform: rotate(-9deg) translate(0);
  }
}
@keyframes animBarreLongue2Accel3 {
  0% {
    transform: rotate(-9deg) translate(0)
  }
  50% {
    transform: rotate(0) translate(10%, 30%);
  }
  100% {
    transform: rotate(-9deg) translate(0);
  }
}
@keyframes animBarreLongue2 {
  0% {
    transform: rotate(-9deg) translate(0)
  }
  50% {
    transform: rotate(0) translate(10%, 30%);
  }
  100% {
    transform: rotate(-9deg) translate(0);
  }
}
@keyframes animBarreLongueDecel {
  0% {
    transform: rotate(-9deg) translate(0)
  }
  50% {
    transform: rotate(0) translate(10%, 30%);
  }
  100% {
    transform: rotate(-9deg) translate(0);
  }
}
@keyframes animBarreLongue2Decel {
  0% {
    transform: rotate(-9deg) translate(0)
  }
  50% {
    transform: rotate(0) translate(10%, 30%);
  }
  100% {
    transform: rotate(-9deg) translate(0);
  }
}
.barre-longue {
  --etape-accel: calc(var(--duree-acceleration) / 3);
  width: 5%;
  bottom: .8%;
  transform: rotate(0);
}
.barre-longue:nth-of-type(2n) {
  transform: rotate(-9deg);
}
.anim .barre-longue {
  animation: animBarreLongueDebut calc(var(--duree-debut) / 2) 2 ease-in, animBarreLongueAccel1 var(--etape-accel) var(--duree-debut) ease-in, animBarreLongueAccel2 calc(var(--etape-accel) / 2) calc(var(--duree-debut) + var(--etape-accel)) 2 linear, animBarreLongueAccel3 calc(var(--etape-accel) / 4) calc(var(--duree-debut) + calc(2 * var(--etape-accel))) 4 linear, animBarreLongue .375s calc(var(--duree-debut) + var(--duree-acceleration)) 26 linear, animBarreLongueDecel calc(var(--etape-accel) / 2) calc(var(--duree-debut) + var(--duree-acceleration) + 9.75s) infinite linear;
}
.anim .barre-longue:nth-of-type(2n) {
  animation: animBarreLongue2Debut calc(var(--duree-debut) / 2) 2 ease-in, animBarreLongue2Accel1 var(--etape-accel) var(--duree-debut) ease-in, animBarreLongue2Accel2 calc(var(--etape-accel) / 2) calc(var(--duree-debut) + var(--etape-accel)) 2 linear, animBarreLongue2Accel3 calc(var(--etape-accel) / 4) calc(var(--duree-debut) + calc(2 * var(--etape-accel))) 4 linear, animBarreLongue2 .375s calc(var(--duree-debut) + var(--duree-acceleration)) 26 linear, animBarreLongue2Decel calc(var(--etape-accel) / 2) calc(var(--duree-debut) + var(--duree-acceleration) + 9.75s) infinite linear;
}
.barre-longue:nth-of-type(28) {
  left: 29.5%;
}
.barre-longue:nth-of-type(29) {
  left: 36.3%;
}
.barre-longue:nth-of-type(30) {
  left: 44.7%;
}
.barre-longue:nth-of-type(31) {
  left: 51.5%;
}
.barre-longue:nth-of-type(32) {
  left: 59.9%;
}
.barre-longue:nth-of-type(33) {
  left: 66.7%;
}
.barre-longue:nth-of-type(34) {
  left: 75.1%;
}
.barre-longue:nth-of-type(35) {
  left: 81.9%;
}


@keyframes fumeeStart {
  0% {
    opacity: 1;
    transform: skew(0) translate(0);
  }
  90% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    width: 65px;
    transform: skew(0) translate(var(--decalage), -7.5vh);
  }
}
@keyframes fumeeDebut {
  0% {
    opacity: 1;
    transform: skew(0) translate(0);
  }
  90% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    width: 65px;
    transform: skew(5deg) translate(var(--decalage), -12.5vh);
  }
}
@keyframes fumeeAccel {
  0% {
    opacity: 1;
    transform: skew(0) translate(0);
  }
  90% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    width: 65px;
    transform: skew(25deg) translate(var(--decalage), -20vh);
  }
}
@keyframes fumeeRapide {
  0% {
    opacity: 1;
    transform: skew(0) translate(0);
  }
  90% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    width: 65px;
    transform: skew(45deg) translate(var(--decalage), -30vh);
  }
}
@keyframes fumeeFin {
  0% {
    opacity: 1;
    transform: skew(0) translate(0);
  }
  90% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    width: 65px;
    transform: skew(5deg) translate(var(--decalage), -7.5vh);
  }
}
.fumee {
  position: absolute;
  width: 5px;
  bottom: 10%;
  opacity: 0;
  transform: skew(0) translate(0);
}
.fumee-r, .fumee-r-2, .fumee-r-3 {
  --decalage: -35px;
  --delay-debut: 0s;
  --delay-accel: 2s;
  --delay-fin: 3s;
  right: 5%;
  bottom: 11%;
}
.fumee-m, .fumee-m-2, .fumee-m-3 {
  --decalage: 0;
  --delay-debut: 1s;
  --delay-accel: 2.5s;
  --delay-fin: 3.2s;
  right: 3.3%;
}
.fumee-g, .fumee-g-2, .fumee-g-3 {
  --decalage: 35px;
  --delay-debut: 2s;
  --delay-accel: 3s;
  --delay-fin: 3.4s;
  right: 2%;
}
.fumee.start {
  animation: fumeeStart calc(var(--duree-debut) / 2) infinite linear;
}
.fumee.start.anim {
  animation: fumeeDebut calc(var(--duree-debut) / 4) 4 linear, fumeeAccel calc(var(--duree-acceleration) / 3) var(--duree-debut) 3 linear, fumeeRapide calc(var(--duree-acceleration) / 4) calc(var(--duree-debut) + var(--duree-acceleration)) 8 linear, fumeeFin calc(var(--duree-debut) / 4) calc(12s + var(--duree-debut)) 10 linear;
}
.fumee-rapide.anim {
  animation: fumeeRapide calc(var(--duree-acceleration) / 4) calc(var(--duree-debut) + var(--duree-acceleration) + .1s) 8 linear;
}

/*@keyframes tremble1 {
  25% {
    transform: translateY(.5%);
  }
  75% {
    transform: translateY(-.5%);
  }
}
@keyframes tremble2 {
  25% {
    transform: translateY(-.4%);
  }
  75% {
    transform: translateY(.4%);
  }
}
.anim .tremble {
  animation: tremble1 .1s 300;
}
.anim .tremble.pair {
  animation: tremble2 .15s 200;
}*/



/* GALERIE HEADER */
body.default {
  background-image: url('../images/FONDS/fond-galerie-canyon_o.svgz');
  background-size: cover;
  background-attachment: fixed;
  max-width: 850px;
  margin: auto;
  position: relative;
  padding-bottom: 5rem;
}
body.default.desert {
  background-image: url('../images/FONDS/fond-gallerie-desert_o.svgz');
}
body.default.ile {
  background-image: url('../images/FONDS/fond-ile_o.svgz');
}
main {
  margin: 1rem 0;
}
#menu {
  display: flex;
  justify-content: space-between;
  margin: 3rem 0;
}
#menu.pas-galerie {
  flex-wrap: wrap;
  height: 100vh;
  margin: 0;
  position: relative;
}
.partie {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  position: relative;
}
.partie-droite {
  align-items: center;
}
@keyframes arriveeZeppelin {
  to {
    left: 0;
  }
}
.partie-gauche {
  z-index: 1;
  pointer-events: none;
  left: -300px;
  animation: arriveeZeppelin 4s linear forwards;
}
.pas-galerie .partie-droite {
  position: absolute;
  bottom: 0;
  width: 100%;
  height: 100%;
  align-items: flex-start;
}
.pas-galerie .texte-expo {
  width: 100%;
  /*max-height: 100%;*/
  margin: auto;
}
.pas-galerie .texte-expo .cadre-expo {
  /*height: 100%;*/
  width: auto;
  max-width: 100%;
}

@keyframes animZeppelin {
  to {
    transform: translate(20px, 20px)/*translate(5%, 5%)*/;
  }
}
.liste-expo {
  /*background-color: rgba(255, 255, 255, 0.75);
  padding: .5rem;*/
  position: relative;
  left: -200px;
  transform: translate(0);
  max-width: 400px;
  display: flex;
  flex-direction: column;
  pointer-events: auto;
  transition: left 1s;
}

@media only screen and (max-width: 1150px) and (min-width: 850px) {
  .liste-expo {
    left: -50px;
  }
}

body:not(.phone) .liste-expo {
  animation: animZeppelin 7s 4s linear infinite alternate;
}
body.phone .liste-expo {
  left: 0;
}
.retour {
  position: relative;
}
.retour a {
  display: flex;
}
.retour .titre-liste a {
  display: inline-block;
  text-align: center;
}
.img-zeppelin {
  width: 100%;
}

.liste-expo .titre-liste {
  position: absolute;
  width: 100%;
  text-align: center;
}
body:not(.phone) .liste-expo .titre-liste {
  top: 208px;
}
body.phone .liste-expo .titre-liste {
  top: 86%;
}

@keyframes deroule {
  to {
    height: calc(var(--taille) * 1px + 2rem);
    padding: .5rem;
  }
}

.liste-expo ul {
  height: 0;
  overflow: hidden;
  margin: 0;
  padding: 0 .5rem;
  background-color: #000;
  animation: deroule 2s 3s forwards;
}
body.phone .liste-expo ul {
  height: auto;
  animation: none;
}

.liste-expo ul li {
  margin: 3px 0;
  padding: 2px;
  font-size: 15px;
  background-color: #fff;
}
.liste-expo ul li.actif {
  background-color: #ffff00;
  border: solid 2px #ffff00;
}
.liste-expo ul li:not(.actif):hover a {
  color: #ffff00;
  text-shadow: #000 1px 1px;
}
.liste-expo ul, .zeppelin-2 {
  position: relative;
  left: 10.2%;
  width: 86.5%;
}

@keyframes animTexte {
  to {
    transform: translate(-20px, 20px)/*translate(-5%, 5%)*/;
  }
}
.texte-expo, .titre-expo {
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  width: 400px;
  max-width: 100%;
}
.texte-expo {
  margin-top: 4rem;
}
body:not(.phone) header:not(.pas-galerie) .texte-expo {
  animation: animTexte 8s linear infinite alternate;
}
body:not(.phone) header:not(.pas-galerie) .texte-expo:hover {
  animation-play-state: paused;
}
.texte-expo .cadre-expo, .titre-expo img {
  transform: translateY(0);
  width: 100%;
}
.fleche-scroll {
  position: absolute;
  width: 50px;
  cursor: pointer;
}
.fleche-scroll.haut {
  top: 28.5%;
}
.fleche-scroll.bas {
  bottom: 19.5%;
  transform: rotate(180deg);
}
.pas-galerie .fleche-scroll {
  right: 12.5%;
  width: 5.9%;
}
.pas-galerie .fleche-scroll.haut {
  top: 30%;
}
.pas-galerie .fleche-scroll.bas {
  bottom: 17.5%;
}
.texte-expo .contenu-expo, .titre-expo h1 {
  position: absolute;
  margin: 0;
  max-width: 75%;
}
.texte-expo .contenu-expo, .titre-liste {
  overflow: auto;
  scrollbar-width: thin;
  /*transform: translateY(21px);*/
  top: 37%;
  height: 35%;
  width: 60%;
  padding: 0 .5rem;
  font-family: sans-serif;
  font-size: 1rem;
  letter-spacing: normal;
  word-spacing: normal;
  text-rendering: auto;
  line-height: 1.7;
}
.texte-expo .contenu-expo {
  overflow-x: hidden;
  font-size: 13px;
  line-height: 20px;
}
.liste-expo .titre-liste, .liste-expo ul {
  line-height: 1.3;
  font-family: sans-serif;
  font-size: 1rem;
}
.contenu-expo h1, .contenu-expo h2, .contenu-expo h3, .contenu-expo h4, .contenu-expo h5, .contenu-expo h6 {
  font-family: 'JosefinSans', sans-serif;
}
.texte-expo .contenu-expo::-webkit-scrollbar {
  width: 3px;
}
.pas-galerie .texte-expo .contenu-expo {
  width: 70%;
  height: 45%;
  top: 36%;
  padding-right: 5%;
}
/*.contenu-expo p {
  margin: 0;
}*/
.texte-expo .contenu-expo p::first-letter {
  font-size: 200%;
  line-height: 1;
}
.titre-expo h1 {
  width: 60%;
  text-align: center;
  font-size: 1.7rem;
  transform: translateY(22px);
}
.titre-expo h1 svg {
  width: 100%;
}
.titre-expo h1.double {
  transform: translateY(-52px);
}
h1.double span {
  position: absolute;
  top: 90px;
  left: 0;
  width: 100%;
}
/*.galerie-3 .titre-expo h1, .galerie-1 .titre-expo h1 {
  transform: translateY(38px);
}*/

@keyframes mongolfiereGalerie {
  to {
    transform: translate(calc(var(--signe-x) * 1px * var(--translate-x)), calc(var(--signe-y) * 1px * var(--translate-y)));
  }
}
@keyframes mongolfiereGalerie2 {
  to {
    transform: translate(20px, -25px);
  }
}
.partie-mongolfiere {
  position: fixed;
  top: calc(1% * var(--pos-y));
  left: calc(1% * var(--pos-x));
  --signe-x: 1;
  --signe-y: 1;
}
.partie-mongolfiere:nth-of-type(2n) {
  transform: rotateY(180deg);
}
.partie-mongolfiere:nth-of-type(4n) {
  --signe-x: -1;
  --signe-y: -1;
}
.partie-mongolfiere:nth-of-type(4n-1) {
  --signe-x: 1;
  --signe-y: -1;
}
.partie-mongolfiere:nth-of-type(4n-2) {
  --signe-x: -1;
  --signe-y: 1;
}
.partie-mongolfiere img {
  width: calc(1px * var(--width-img));
  transform: translate(0);
  animation: mongolfiereGalerie calc(1s * var(--vitesse-trans)) linear infinite alternate;
}
/*.galerie-2 .partie-mongolfiere {
  top: 20%;
  left: 25%;
}
.galerie-2 .partie-mongolfiere img {
  width: 60px;
  animation-name: mongolfiereGalerie2;
}*/

/* GALERIES */
.galerie-conteneur {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0 4rem;
}

.galerie-conteneur .fleches {
  position: absolute;
  width: 100%;
  display: flex;
  justify-content: space-between;
  pointer-events: none;
}
.galerie-conteneur .fleche {
  position: relative;
  /*opacity: .5;
  transition: opacity .5s;*/
  display: flex;
  justify-content: center;
  align-items: center;
  pointer-events: auto;
}
.fleche img {
  width: 80px;
}
.fleche.gauche, .left .fleche {
  transform: rotate(180deg);
}
.phone .galerie-conteneur .fleche {
  opacity: .5;
}

.galerie-conteneur .fleche .bars {
  display: block;
  width: 15px;
  height: 15px;
  border-top: solid 2px #000;
  border-right: solid 2px #000;
}
.galerie-conteneur .gauche .bars {
  transform: translateX(2.5px) rotate(-135deg);
}
.galerie-conteneur .droite .bars {
  transform: translateX(-2.5px) rotate(45deg);
}
/*.galerie-conteneur:hover .fleche {
  opacity: .5;
}
.galerie-conteneur:hover .fleche:hover {
  opacity: .8;
}*/

.serie {
  display: flex;
  flex-flow: row wrap;
}
.galerie .image {
  position: relative;
  /*width: calc(50% - 10px);*/
  margin: 5px;
  cursor: pointer;
  max-height: 149px;
  overflow: hidden;
}
figure {
  margin: 0;
  height: 150px;
}
/*.galerie img {
  width: 100%;
}*/
.galerie .couvre {
  background-image: url(../images/GALLERIE/loupe1.png);
  background-color: #d4d0ea;
  background-size: 40px;
  background-repeat: no-repeat;
  background-position: center;
  position: absolute;
  top: 0;
  opacity: 0;
}
.page-impaire .galerie .couvre {
  background-image: url(../images/GALLERIE/loupe2.png);
}
.galerie .image:hover .couvre {
  opacity: 0.8;
  z-index: 1;
}


/* NOUVEAU LIGHTBOX PERSO */
#plein-ecran {
  z-index: -1;
  opacity: 0;
  top: 100%;
  position: fixed;
  left: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  background: rgba(0, 0, 0, 0.9);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}
#plein-ecran.show {
  z-index: 9999;
  opacity: 1;
  top: 0;
}
#croix-photo {
  background-image: url(../images/GALLERIE/croix1.png);
  background-size: 100%;
  z-index: 2;
  width: 25px;
  height: 25px;
  cursor: pointer;
  position: absolute;
  top: 10px;
  right: 10px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
}
.page-impaire #croix-photo {
  background-image: url(../images/GALLERIE/croix2.png);
}
#croix-photo .bar {
  display: inline-block;
  position: absolute;
  width: 100%;
  height: 3.5px;
  background: rgb(120,120,120);
  border-radius: 1.5px;
}
#croix-photo .bar:nth-of-type(1) {
  -webkit-transform: rotate(45deg);
      -ms-transform: rotate(45deg);
          transform: rotate(45deg);
}
#croix-photo .bar:nth-of-type(2) {
  -webkit-transform: rotate(-45deg);
      -ms-transform: rotate(-45deg);
          transform: rotate(-45deg);
}
#croix-photo:hover .bar {
  background: rgb(200,200,200);
}

.swipable {
  width: 80%;
  height: 80%;
  z-index: 1;
}
.clicable {
  position: absolute;
  width: 100%;
  height: 100%;
}
.chevron {
  z-index: 1;
  position: absolute;
  height: 100px;
  width: 80px;
  cursor: pointer;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
}
.grand .chevron {
  display: none;
}
.chevron .fleche {
  position: absolute;
  /*transform-origin: top;*/
}
.chevron.left {
  left: 5px;
}
.chevron.right {
  right: 5px;
}

#plein-ecran .wrapper {
  position: absolute;
  pointer-events: auto;
  color: #fff;
  width: 100%;
  height: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-transition: opacity 0.5s;
  -o-transition: opacity 0.5s;
  transition: opacity 0.5s;
}
#plein-ecran .wrapper.hide {
  opacity: 0;
}
#plein-ecran .wrapper.show {
  opacity: 1;
}
#plein-ecran .wrapper .gauche {
  width: 66.66%;
  padding: 1rem 0 1rem 3rem;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  justify-content: center;
}
#plein-ecran .wrapper.portrait .gauche {
  width: 50%;
}
#plein-ecran .wrapper .gauche picture {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: right;
      -ms-flex-pack: right;
          justify-content: right;
  align-items: center;
}
#plein-ecran picture.hide {
  opacity: 1;
}
#plein-ecran .wrapper .droite {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-flow: column;
          flex-flow: column;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  position: relative;
  width: 33.33%;
  padding: 5% 3rem 5% 2rem;
}
#plein-ecran .wrapper .droite h3, #plein-ecran .wrapper .droite .legende {
  max-width: 530px;
}
#plein-ecran .wrapper .droite .legende {
  overflow: auto;
  scrollbar-width: thin;
  z-index: 2;
  padding: 2px 0;
  padding-right: 1rem;
}
#plein-ecran .wrapper .droite .legende::-webkit-scrollbar {
  width: 5px;
}
#plein-ecran .wrapper .droite .legende p {
  margin: 0;
}
#plein-ecran .wrapper.portrait .droite {
  width: 50%;
}
/*#plein-ecran.grand .wrapper .droite {
  display: none;
}*/
#plein-ecran img {
  max-width: 100%;
  height: 90%;
  max-height: 800px;
  pointer-events: none;
  -o-object-fit: contain;
     object-fit: contain;
}

@media only screen and (max-width: 64em) and (min-height: 450px) {
  #plein-ecran .wrapper.paysage {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-flow: column;
            flex-flow: column;
  }
  #plein-ecran .wrapper.paysage .gauche {
    width: 100%;
    max-height: 66.66%;
    padding: 5px 3rem 0;
    justify-content: center;
  }
  #plein-ecran .wrapper.paysage .gauche.seule {
    max-height: 80%;
  }
  #plein-ecran .wrapper.paysage .gauche picture {
    width: 620px;
  }
  /*#plein-ecran .wrapper.paysage .gauche.seule picture {
    width: 100%;
  }*/
  #plein-ecran .wrapper.paysage .droite {
    width: 100%;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
    padding: 0 3rem 10px;
  }
  #plein-ecran .wrapper.paysage .droite h3, #plein-ecran .wrapper.paysage .droite .legende {
    width: 620px;
    max-width: 100%;
  }
  #plein-ecran .wrapper.paysage .droite h3 {
    margin: 10px 0 0;
  }
}
@media only screen and (max-width: 64em) and (max-height: 449px) {
  #plein-ecran .wrapper.paysage .droite h3 {
    margin: 0;
  }
}

@media only screen and (max-width: 48em) and (min-height: 450px) {
  #plein-ecran .wrapper.portrait {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-flow: column;
            flex-flow: column;
  }
  #plein-ecran .wrapper.portrait .gauche {
    width: 100%;
    max-height: 66.66%;
    padding: 5px 3rem 0;
    justify-content: center;
  }
  #plein-ecran .wrapper.portrait .gauche.seule {
    max-height: 80%;
  }
  #plein-ecran .wrapper.portrait .gauche picture {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
  }
  #plein-ecran .wrapper.portrait .droite {
    width: 100%;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding: 0 3rem 10px;
  }
  #plein-ecran .wrapper.portrait .droite h3 {
    margin: 10px 0 0;
    width: 530px;
    max-width: 100%;
  }
}
@media only screen and (max-width: 48em) and (max-height: 449px) {
  #plein-ecran .wrapper.portrait .droite h3 {
    margin: 0;
  }
}
.phone #plein-ecran .wrapper.paysage .gauche, .phone #plein-ecran .wrapper.portrait .gauche {
  padding: 2.5rem 2rem 0;
}
.phone .chevron {
  width: 60px;
}
.phone .chevron .fleche {
  height: 100px;
  width: 100px;
}



/***************/
/* MODE MOBILE */
/***************/
/* ACCUEIL */
.phone.accueil header {
  padding: 0;
  padding-top: 1.5cm;
  background-size: cover;
}
.phone.accueil header nav ul {
  font-size: 1.35vw;
  line-height: 3.15vw;
}
.batiment-mobile {
  position: absolute;
  max-width: 120px;
  bottom: 15%;
  right: 10%;
}
.batiment-mobile:nth-of-type(2) {
  bottom: 10%;
  right: 3%;
}
.batiment-mobile:nth-of-type(3) {
  bottom: 5%;
  right: 15%;
}
.phone .batiment-mobile img {
  max-width: 100%;
  height: auto;
}
@keyframes apparait {
  to {
    opacity: 1;
  }
}
@keyframes disparait {
  to {
    opacity: 0;
  }
}
.phone .cookie-conteneur {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100vw;
  padding: .5rem;
  background-color: #f4ba9e;
  opacity: 0;
  animation: apparait 1s 1s linear forwards;
}
.phone .cookie-conteneur.disparait {
  animation: disparait 1s linear forwards;
}

/* GALERIES */
body.phone.default {
  background-size: cover;
  background-attachment: inherit;
  padding: 1.5rem 0 5rem;
}
.phone .galerie-conteneur {
  /*padding: 15px;*/
}
.phone figure {
  height: auto;
}
.phone .galerie img {
  max-width: calc(50vw - 10px - 1rem);
}
.phone #plein-ecran .wrapper.paysage .gauche picture {
  width: unset;
}


/****************************/
/* MODE DESKTOP PETIT ECRAN */
/****************************/
@media only screen and (max-width: 1100px) {
  /* ACCUEIL */
  .conteneur-train, .bouche {
    display: none;
  }
}
@media only screen and (max-width: 849px) {
  /* GALERIES */
  #menu {
    flex-wrap: wrap;
    justify-content: center;
  }
  .partie {
    align-items: center;
    width: 100%;
  }
  .pas-galerie .partie-droite {
    position: relative;
    }
  body:not(.phone) .liste-expo {
    animation: none;
  }
  body:not(.phone) header:not(.pas-galerie) .texte-expo {
    animation: none;
  }
  .galerie-conteneur .fleche {
    opacity: .5;
  }
  body:not(.phone) .liste-expo ul {
    height: auto;
    animation: none;
  }
  body:not(.phone) .liste-expo .titre-liste {
    top: 86%;
  }
  body:not(.phone) .liste-expo {
    left: 0;
  }
  .pas-galerie .texte-expo {
    margin: 0;
  }
  body.default {
    background-size: cover;
    background-attachment: inherit;
    padding: 1.5rem 0 5rem;
  }
  .galerie-conteneur {
    padding: auto;
  }
  /*.serie {
    justify-content: center;
  }*/
  figure {
    height: auto;
  }
  .galerie img {
    max-width: calc(50vw - 10px - 1rem);
  }
  #plein-ecran .wrapper.paysage .gauche picture {
    width: unset;
  }
}
@media only screen and (max-width: 550px) {
  /* ACCUEIL */
  .accueil header {
    padding: 0;
    padding-top: 1.5cm;
    background-size: cover;
  }
  .accueil header nav ul {
    font-size: 1.35vw;
    line-height: 3.15vw;
  }
}

/**************/
/* CHARGEMENT */
/**************/
body:not(.loaded) header, body:not(.loaded) main, body:not(.loaded) .mentions {
  display: none;
}
.loaded .chargement {
  display: none;
}
.chargement {
  position: fixed;
  top: 0;
  left: 0;
  height: 100vh;
  width: 100vw;
  display: flex;
  justify-content: center;
  align-items: center;
}
.lds-spinner {
  color: official;
  display: inline-block;
  position: relative;
  width: 80px;
  height: 80px;
}
.lds-spinner div {
  transform-origin: 40px 40px;
  animation: lds-spinner 1.2s linear infinite;
}
.lds-spinner div:after {
  content: " ";
  display: block;
  position: absolute;
  top: 3px;
  left: 37px;
  width: 6px;
  height: 18px;
  border-radius: 20%;
  background: #000;
}
.lds-spinner div:nth-child(1) {
  transform: rotate(0deg);
  animation-delay: -1.1s;
}
.lds-spinner div:nth-child(2) {
  transform: rotate(30deg);
  animation-delay: -1s;
}
.lds-spinner div:nth-child(3) {
  transform: rotate(60deg);
  animation-delay: -0.9s;
}
.lds-spinner div:nth-child(4) {
  transform: rotate(90deg);
  animation-delay: -0.8s;
}
.lds-spinner div:nth-child(5) {
  transform: rotate(120deg);
  animation-delay: -0.7s;
}
.lds-spinner div:nth-child(6) {
  transform: rotate(150deg);
  animation-delay: -0.6s;
}
.lds-spinner div:nth-child(7) {
  transform: rotate(180deg);
  animation-delay: -0.5s;
}
.lds-spinner div:nth-child(8) {
  transform: rotate(210deg);
  animation-delay: -0.4s;
}
.lds-spinner div:nth-child(9) {
  transform: rotate(240deg);
  animation-delay: -0.3s;
}
.lds-spinner div:nth-child(10) {
  transform: rotate(270deg);
  animation-delay: -0.2s;
}
.lds-spinner div:nth-child(11) {
  transform: rotate(300deg);
  animation-delay: -0.1s;
}
.lds-spinner div:nth-child(12) {
  transform: rotate(330deg);
  animation-delay: 0s;
}
@keyframes lds-spinner {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
