:root{
    --bg:#0f141d;
    --panel:#161d29;
    --panel-2:#1c2531;
    --sand:#d9a552;
    --teal:#3a9782;
    --text:#ecebe4;
    --muted:#7c8699;
    --border:#26303e;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}

  body{
    margin:0;
    background:var(--bg);
    color:var(--text);
    font-family:'JetBrains Mono', monospace;
    line-height:1.6;

    
  }

  /*Tour images */ 

  :root {
  --body-color: #010c15;
  --text-color: #726f77;
  --primary-color: #20c863;
  --secondary-color: #d4ff00;

  color-scheme: dark;
}

.specialbtn{
	 
 border-color: var(--body-color);
  border: 2px solid var(--primary-color);
  padding: 0.5rem 1rem;
  border-radius: 0.25rem;
  text-decoration: none;
  font-weight: bold;
  transition: all 0.3s ease-in-out;
  text-align: center;
}
.specialbtn:hover{
	scale: 1.1;
  border-color: var(--secondary-color);
  box-shadow: 0 0 1rem var(--secondary-color);
}

.container2 {
  --size: 120px;
  --offset: 30px;
  --duration: 30s;

  position: relative;
  aspect-ratio: 1 / 1;
  pointer-events: none;
  display: inline-grid;
  border-radius: 9999px;
  width: calc(var(--size) * 3);
  border: 6px solid var(--primary-color);
  transition: box-shadow 0.3s ease-in-out;
  animation: spin-out var(--duration) linear infinite;

  & .item {
    z-index: 1;
    display: flex;
    grid-area: 1 / 1;
    width: var(--size);
    aspect-ratio: 1 / 1;
    pointer-events: auto;
    border-radius: 9999px;
    animation: spin-in var(--duration) linear infinite reverse;
    offset: circle(
        calc(var(--size) / (2 * sin(0.5turn / sibling-count())) + var(--offset))
      )
      calc(100% * sibling-index() / sibling-count()) 0deg;

    & img {
      width: inherit;
      height: inherit;
      pointer-events: auto;
      border-radius: 9999px;
      border: 3px solid var(--primary-color);

      transition-duration: 0.3s;
      transition-timing-function: ease-in-out;
      transition-property: box-shadow, scale, border;
    }

    &:hover {
      z-index: 2;

      & img {
        scale: 1.5;
        border-color: var(--secondary-color);
        box-shadow: 0 0 1rem var(--secondary-color);
      }

      & ~ * img {
        scale: 0.6;
      }
    }

    &:has(~ *:hover) img {
      scale: 0.6;
    }
  }

  &::before {
    content: "";
    z-index: -1;
    border: inherit;
    position: absolute;
    width: var(--size);
    aspect-ratio: 1 / 1;
    border-radius: 0.25rem;

    inset-block-start: 50%;
    inset-inline-start: 50%;
    transform: translate(-50%, -50%);

    transition-duration: 0.3s;
    transition-timing-function: ease-in-out;
    transition-property: transform, border-radius, border, box-shadow;
  }

  &::after {
    content: "";
    z-index: -1;
    inset: -6px;
    width: inherit;
    height: inherit;
    border: inherit;
    position: absolute;
    border-radius: inherit;
    animation: spin-in var(--duration) linear infinite reverse;

    transition-duration: 0.3s;
    transition-timing-function: ease-in-out;
    transition-property: scale, border-radius, border, box-shadow;
  }

  &:has(.item:hover) {
    animation-play-state: paused;
    box-shadow: 0 0 60px 12px var(--primary-color) inset,
      0 0 21px 15px var(--body-color);

    & .item {
      animation-play-state: paused;
    }

    &::before {
      --scale: 4;
      --translate: calc(-50% / var(--scale));

      border-width: 2px;
      border-radius: inherit;
      border-color: var(--secondary-color);
      transform: scale(var(--scale))
        translate(var(--translate), var(--translate));
      box-shadow: 0 0 15px var(--secondary-color),
        0 0 15px var(--primary-color) inset;
    }

    &::after {
      scale: 0.3;
      border-width: 18px;
      border-radius: 3rem;
      border-color: var(--secondary-color);
      box-shadow: 0 0 var(--size) var(--secondary-color) inset;
    }
  }
}

@keyframes spin-out {
  from {
    rotate: 0;
  }

  to {
    rotate: 360deg;
  }
}

@keyframes spin-in {
  from {
    transform: rotate(0);
  }

  to {
    transform: rotate(360deg);
  }
}


  /* Araignee */
.nom-container {
  position: relative;
  display: inline-block;
  font-size: clamp(22px, 5vw , 70px);
  font-weight: bold;
  padding: 10px;
}

.araignee-walk {
  position: absolute;
  top: 0;
  left: 0;
  font-size: 50px;
  opacity: 0;
  transition: opacity 0.3s;
  pointer-events: none;
  
}

.nom-container:hover .araignee-walk {
  opacity: 1;
  animation: walkOnName 2s ease-in-out forwards;
}

@keyframes walkOnName {
  0% { 
    left: 0%; 
    top: 0%;
    transform: scale(1) rotate(0deg);
  }
  25% { 
    left: 25%; 
    top: -10%;
    transform: scale(1.2) rotate(-10deg);
  }
  50% { 
    left: 50%; 
    top: 10%;
    transform: scale(1) rotate(5deg);
  }
  75% { 
    left: 75%; 
    top: -5%;
    transform: scale(1.1) rotate(-5deg);
  }
  100% { 
    left: 95%; 
    top: 0%;
    transform: scale(1) rotate(0deg);
  }
}

.araignee:hover .message {
  opacity: 1;
}
.araignee:hover{
  animation: sursaut 0.3s ease;
}
@keyframes sursaut {
  0% {transform: scale(1);}
  50% {transform: scale(1.3) rotate(-5deg);}
  100% { transform:scale(1);} 
}


  /*HEADER
  Autor : Alvaro Montoro

  
  
  */



:root {
  --bg: #0b131f;
  --c1: #457b9d;
  --c2: #fff;
  --c3: #a8dadc;

  /*   
  --bg: #112;
  --c1: blue;
  --c2: white;
  --c3: #eef; 
  */
}



header {
  height: 50vh;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  position: relative;
  background-color: var(--bg);
}

@keyframes showBars {
  0% { opacity: 0; background-position: -400% 7%, 500% 21%, -400% 35%, 500% 49%, -400% 63%, 500% 77%, -400% 91% ; }
  14% { background-position: 0% 7%, 500% 21%, -400% 35%, 500% 49%, -400% 63%, 500% 77%, -400% 91% ; }
  28% { background-position: 0% 7%, 100% 21%, -400% 35%, 500% 49%, -400% 63%, 500% 77%, -400% 91% ; }
  42% { background-position: 0% 7%, 100% 21%,    0% 35%, 500% 49%, -400% 63%, 500% 77%, -400% 91% ; }
  56% { background-position: 0% 7%, 100% 21%,    0% 35%, 100% 49%, -400% 63%, 500% 77%, -400% 91% ; }
  70% { background-position: 0% 7%, 100% 21%,    0% 35%, 100% 49%,    0% 63%, 500% 77%, -400% 91% ; }
  84% { background-position: 0% 7%, 100% 21%,    0% 35%, 100% 49%,    0% 63%, 100% 77%, -400% 91% ; }
  98%, 100% { opacity: 1; background-position: 0% 7%, 100% 21%, 0% 35%, 100% 49%, 0% 63%, 100% 77%, 0% 91%; }
}

header::after {
  content: "";
  width: 100%;
  height: 20vh;
  position: absolute;
  top: 0;
  left: 0;
  background-color: inherit;
  background-repeat: no-repeat;
  background-size: 70% 7%;
  background-image:
    linear-gradient(var(--c1),var(--c1)),
    linear-gradient(var(--c2),var(--c2)),
    linear-gradient(var(--c1),var(--c1)),
    linear-gradient(var(--c2),var(--c2)),
    linear-gradient(var(--c1),var(--c1)),
    linear-gradient(var(--c2),var(--c2)),
    linear-gradient(var(--c1),var(--c1));
  background-position: 0% 7%, 100% 21%, 0% 35%, 100% 49%, 0% 63%, 100% 77%, 0% 91%;
  animation: showBars 3.5s;
}

@keyframes showText {
  0% { opacity: 0; transform: translate(0, -100%); }
  20% { opacity: 0; }
  100% { opacity: 1; transform: translate(0, 0); }
}

header > div {
  position: relative;
  transform: translate(-100%, 0);
  opacity: 0;
  animation: showText 2s 1;
  animation-fill-mode: forwards;
  animation-delay: 3.5s;
  text-align: center;
}

h1 {
  font-weight: 400;
  font-family: Oswald, Montserrat, arial, sans-serif;
  margin: 0;
  font-size: 10vw;
  color: var(--c2);
}

p {
  color: var(--c3);
  margin: 0;
  font-size: 5vw;
  margin-bottom: 5vh;
}

@media all and (min-width: 768px) {

  @keyframes showBarsBig {
    0% { opacity: 0; background-position: 7% -400%, 21% 500%, 35% -400%, 49% 500%, 63% -400%, 77% 500%, 91% -400%; }
    14% { background-position: 7% 0%, 21% 500%, 35% -400%, 49% 500%, 63% -400%, 77% 500%, 91% -400%; }
    28% { background-position: 7% 0%, 21% 100%, 35% -400%, 49% 500%, 63% -400%, 77% 500%, 91% -400%; }
    42% { background-position: 7% 0%, 21% 100%, 35% 0%, 49% 500%, 63% -400%, 77% 500%, 91% -400%; }
    56% { background-position: 7% 0%, 21% 100%, 35% 0%, 49% 100%, 63% -400%, 77% 500%, 91% -400%; }
    70% { background-position: 7% 0%, 21% 100%, 35% 0%, 49% 100%, 63% 0%, 77% 500%, 91% -400%; }
    84% { background-position: 7% 0%, 21% 100%, 35% 0%, 49% 100%, 63% 0%, 77% 100%, 91% -400%; }
    98%, 100% { opacity: 1; background-position: 7% 0%, 21% 100%, 35% 0%, 49% 100%, 63% 0%, 77% 100%, 91% 0%; }
  }

  @keyframes showTextBig {
    0% { opacity: 0; transform: translate(-100%, 0); }
    20% { opacity: 0; }
    100% { opacity: 1; transform: translate(0vw, 0); }
  }

  header {
    height: 100vh;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
  }

  header::after {
    width: 20vw;
    height: 100%;
    background-size: 7% 70%;
    background-position: 
      7% 0%, 21% 100%, 35% 0%, 49% 100%, 63% 0%, 77% 100%, 91% 0%;
    animation-name: showBarsBig;
  }

  header > div {
    animation-name: showTextBig;
    margin-left: 22vw;
    text-align: left;
  }

  h1 {
    font-size: 8vw;
  }

  p {
    font-size: 4vw;
    margin-bottom: 0;
  }
}

@media (prefers-reduced-motion) {
  header::after {
    animation: none !important;
  }
  
  @keyframes showTextReduced {
    0% { opacity: 0; }
    100% { opacity: 1; }
  }
  
  
  header > div {
    transform: translate(0,0);
    animation-name: showTextReduced;
    animation-delay: 0.5s !important;
  }
}

  /*FIN HEADER*/

 /*peroquet*/

 /* 
 
 Code by:
coder787

License:
MIT

FreeFrontend.com 
 
 */

@import url("https://fonts.googleapis.com/css2?family=Chilanka&display=swap");

:root {
	--darkblue: #78c2e2; /* body stripe 1 */
	--mediumblue: #86c8e5; /* body stripe 2 */
	--mediumblue2: #81c6e4; /* body stripe 3 */
	--mediumblue3: #91cde7; /* body stripe 4 */
	--mediumblue4: #8acae6; /* body stripe 5 */
	--lightblue: #98d0e9; /* body stripe 6 */
	--mediumblue5: #70bee0; /* head */
	--yellow: #f7ca72; /* around eyes, body, wing shadow */
	--greybrown: #928b85; /* around eyes, wing shadow, feet */
	--darkgrey: #5f617b; /* beak */
	--darkishgrey: #7a798a; /* nostril */
	--black: #373b63; /* eyeball */
	--lightgrey: #e8eaf9; /* around eyeball */
	--white: #ffffff; /* eye white */
	--greyish: #e5e7f8; /* eye shadow */
	--blueshadow: rgba(95, 97, 123, 0.3); /* wing shadow */
	--lightyellow: #b3aeaa; /* beak end */
	--lightyellow2: #aba7a8; /* beak middle */
	--darkgreyish: #8c898e; /* mouth */
	--darkergrey: #5f617b; /* bottom beak */
	--purplegrey: #707297; /* beak top */
	--anotherblue: #89c9e5; /* wing */
	--anotherblue2: #90cde7; /* wing */
	--anotherblue3: #70bee0; /* wing */
	--lightyellow3: #f9d58e; /* body */
	--onemoregrey: #01040a; /* circle */
	--verylightgrey: #010711; /* circle */
	--darkred: #8b0000; /* eye */
}

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

.container {
	position: relative;
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: 100vh;
}

.canvas {
	position: relative;
	display: flex;
	justify-content: center;
	align-content: center;
	width: 80vmin;
	height: 80vmin;
	transform: scale(1.5); /* made him too small, oops */
}

.parrot {
	position: absolute;
	width: 0vmin;
	height: 0vmin;
	top: 20vmin;
	left: 30vmin;
	z-index: 1;
}

.head {
	position: absolute;
	background: var(--mediumblue5);
	width: 21vmin;
	left: 1vmin;
	height: 20vmin;
	top: 5vmin;
	border-radius: 0% 80% 100% 0% / 0% 90% 0% 100%;
	z-index: 1;
}

.pbody {
	position: absolute;
	width: 9vmin;
	left: 1vmin;
	height: 20vmin;
	top: 20vmin;
	background: var(--yellow);
	border-radius: 0% 100% 0% 100% / 100% 53% 47% 0%;
	z-index: 2;
}

/* trick to rotate the background only, use a pseudo element and rotate it */
.pbody:before {
	content: "";
	position: absolute;
	width: 100%;
	height: 100%;
	background-image: radial-gradient(
		ellipse farthest-corner at 10px 10px,
		var(--lightyellow3),
		var(--lightyellow3) 50%,
		var(--yellow) 50%
	);
	background-size: 20px 10px;
	transform: rotate(180deg);
	border-radius: 0% 100% 0% 100% / 57% 0% 100% 43%;
}

/* foot */
.foot {
	content: "";
	position: absolute;
	background: var(--greybrown);
	width: 2.5vmin;
	height: 2vmin;
	top: 38vmin;
	left: -1.5vmin;
	border-radius: 100% 0% 0% 100% / 100% 0% 100% 0%;
	z-index: 1;
}

.shadesection {
	position: absolute;
	width: 13.8vmin;
	height: 3vmin;
	left: 7vmin;
	top: 2vmin;
	z-index: 2;
	background: linear-gradient(var(--mediumblue5), var(--mediumblue3));
}

.shadesection:after {
	content: "";
	position: absolute;
	width: 5.9vmin;
	height: 2vmin;
	background: linear-gradient(var(--mediumblue2), var(--mediumblue2));
	left: 4vmin;
	top: 1vmin;
}

.eye {
	position: absolute;
	width: 9vmin;
	height: 9vmin;
	border-radius: 50%;
	background: var(--white);
	z-index: 3;
	top: -11vmin;
	left: 1vmin;
	box-shadow: 1vmin 0 0 1vmin var(--greybrown), 1.7vmin 0 0 1.7vmin var(--yellow);
}

.eyemiddle {
	position: absolute;
	width: 3.5vmin;
	height: 3.5vmin;
	background: var(--lightgrey);
	border-radius: 50%;
	top: 2.5vmin;
	left: 2vmin;
	overflow: hidden;
	z-index: 2;
}

.eyemiddle:before {
	position: absolute;
	content: "";
	width: 4.5vmin;
	height: 4.5vmin;
	left: -0.5vmin;
	top: -1.9vmin;
	background: black;
	border-radius: 50%;
}

.eyemiddle:after {
	position: absolute;
	content: "";
	width: 0.7vmin;
	height: 0.7vmin;
	left: 1.9vmin;
	top: 0.8vmin;
	border-radius: 50%;
	background: var(--white);
	z-index: 3;
}

.eyeshadow {
	position: absolute;
	width: 4.6vmin;
	height: 4vmin;
	top: 0.3vmin;
	background: linear-gradient(rgb(236, 231, 231), var(--greyish));
	z-index: 0;
	border-radius: 0% 100% 100% 0% / 0% 100% 0% 100%;
	left: 4.4vmin;
}

.back {
	position: absolute;
	width: 12.1vmin;
	height: 25.3vmin;
	top: 25vmin;
	left: 10vmin;
	z-index: 1;
	background-image: linear-gradient(
		90deg,
		var(--darkblue) 8.33%,
		var(--mediumblue) 8.33%,
		var(--mediumblue) 16.67%,
		var(--mediumblue2) 16.67%,
		var(--mediumblue2) 25%,
		var(--mediumblue3) 25%,
		var(--mediumblue3) 33.33%,
		var(--mediumblue4) 33.33%,
		var(--mediumblue4) 41.67%,
		var(--lightblue) 41.67%,
		var(--lightblue) 50%,
		var(--darkblue) 50%,
		var(--darkblue) 58.33%,
		var(--mediumblue) 58.33%,
		var(--mediumblue) 66.67%,
		var(--mediumblue2) 66.67%,
		var(--mediumblue2) 75%,
		var(--mediumblue3) 75%,
		var(--mediumblue3) 83.33%,
		var(--mediumblue4) 83.33%,
		var(--mediumblue4) 91.67%,
		var(--lightblue) 91.67%,
		var(--lightblue) 100%
	);
	background-size: 240px 240px;
	border-radius: 99% 1% 100% 0% / 0% 51% 49% 100%;
	overflow: hidden;
	z-index: 2;
}

/* wing shadow on tail */
.back:before {
	content: "";
	position: absolute;
	background: var(--blueshadow);
	mix-blend-mode: darken;
	width: 16vmin;
	height: 7vmin;
	top: 8.5vmin;
	left: -3vmin;
	z-index: 4;
	border-radius: 0% 100% 50% 50% / 0% 0% 100% 100%;
	z-index: 2;
	transform: rotate(25deg);
}

.beak {
	position: absolute;
	width: 8vmin;
	height: 8vmin;
	left: -7vmin;
	top: 5vmin;
	background: linear-gradient(
		235deg,
		var(--purplegrey),
		var(--lightyellow2),
		var(--lightyellow)
	);
	border-radius: 100% 0% 0% 100% / 100% 0% 100% 0%;
	transform-origin: 100% 100%;
}

/* nostril */
.beak:after {
	position: absolute;
	content: "";
	width: 3vmin;
	height: 1vmin;
	background: var(--darkishgrey);
	top: 2.6vmin;
	left: 2.6vmin;
	transform: rotate(-45deg);
	border-radius: 42% 58% 0% 100% / 100% 100% 0% 0%;
}

/* keep seperate than upper beak so can animate seperately */
.lowerbeak {
	position: absolute;
	width: 7vmin;
	height: 7vmin;
	left: -6vmin;
	top: 13vmin;
	background: linear-gradient(
		-45deg,
		var(--darkergrey) 40%,
		var(--lightyellow2),
		var(--lightyellow)
	);
	border-radius: 100% 0% 0% 100% / 0% 0% 100% 100%;
	transform-origin: 100% 0%;
}

.mouth {
	position: absolute;
	width: 10vmin;
	height: 0.5vmin;
	top: 7.5vmin;
	background: var(--darkgreyish);
}

.wing {
	position: absolute;
	width: 18vmin;
	height: 9vmin;
	background-image: radial-gradient(
			4vmin circle at 0vmin 0.5vmin,
			var(--mediumblue5) 50%,
			transparent 51%
		),
		radial-gradient(
			7vmin circle at 1vmin 2vmin,
			var(--anotherblue) 50%,
			transparent 51%
		),
		radial-gradient(
			12vmin circle at 3vmin 2vmin,
			var(--anotherblue2) 50%,
			transparent 51%
		),
		radial-gradient(
			17vmin circle at 5vmin 2vmin,
			var(--anotherblue) 50%,
			transparent 51%
		),
		radial-gradient(
			27vmin circle at 5vmin 0vmin,
			var(--darkblue) 50%,
			transparent 51%
		);
	border-radius: 49% 51% 46% 54% / 0% 0% 100% 100%;
	top: 26.7vmin;
	left: 4.5vmin;
	transform: rotate(38deg);
	box-shadow: 1vmin 0.7vmin var(--yellow), 1.8vmin 1.5vmin var(--greybrown);
	z-index: 2;
}

.wing:after {
	position: absolute;
	content: "";
	width: 3vmin;
	height: 3vmin;
	left: 0vmin;
	border-radius: 50%;
	background-image: linear-gradient(
		45deg,
		var(--mediumblue5),
		var(--anotherblue)
	);
	border-radius: 0% 100% 0% 100% / 100% 100% 0% 0%;
	transform: rotate(65deg);
}

/* found a better way to do the trim with radial gradients */
.trim {
	position: absolute;
	width: 43vmin;
	height: 10vmin;
	bottom: 15vmin;
	height: 5vmin;
	background: radial-gradient(
			5vmin circle at 4vmin 0vmin,
			var(--lightgrey) 50%,
			transparent 51%
		),
		radial-gradient(
			5vmin circle at 9vmin 0vmin,
			var(--lightgrey) 50%,
			transparent 51%
		),
		radial-gradient(
			5vmin circle at 14vmin 0vmin,
			var(--lightgrey) 50%,
			transparent 51%
		),
		radial-gradient(
			5vmin circle at 19vmin 0vmin,
			var(--lightgrey) 50%,
			transparent 51%
		),
		radial-gradient(
			5vmin circle at 24vmin 0vmin,
			var(--lightgrey) 50%,
			transparent 51%
		),
		radial-gradient(
			5vmin circle at 29vmin 0vmin,
			var(--lightgrey) 50%,
			transparent 51%
		),
		radial-gradient(
			5vmin circle at 34vmin 0vmin,
			var(--lightgrey) 50%,
			transparent 51%
		),
		radial-gradient(
			5vmin circle at 39vmin 0vmin,
			var(--lightgrey) 50%,
			transparent 51%
		);
}

.trim:after {
	position: absolute;
	content: "";
	width: 100%;
	height: 0.5vmin;
	background: var(--lightgrey);
}

.circle {
	position: absolute;
	width: 50vmin;
	height: 30vmin;
	top: 15vmin;
	background: linear-gradient(
		var(--onemoregrey),
		var(--verylightgrey),
		var(--white)
	);
	border-top-left-radius: 30vmin;
	border-top-right-radius: 30vmin;
	z-index: -1;
}

.cursewords {
	
	position: absolute;
	width: 22vmin;
	height: 20vmin;
	top: -4vmin;
	left: -24vmin;
	z-index: 5;

}

.words {
	position: absolute;
	opacity: 0;
	font-family: "Chilanka", cursive;
	font-size: 2.3vmin;
	color: var(--darkgrey);
	white-space: nowrap;
	background: var(--white);
	border: 0.3vmin solid var(--darkgrey);
	border-radius: 2vmin;
	padding: 0.8vmin 1.6vmin;
	box-shadow: 0.3vmin 0.3vmin 0 var(--blueshadow);
}


.words:after {
	content: "";
	position: absolute;
	width: 0;
	height: 0;
	right: -1.6vmin;
	bottom: 0.6vmin;
	border: 1.2vmin solid transparent;
	border-left-color: var(--darkgrey);
	border-bottom: 0;
	transform: rotate(-25deg);
}

.words:before {
	content: "";
	position: absolute;
	width: 0;
	height: 0;
	right: -1.15vmin;
	bottom: 0.85vmin;
	border: 0.95vmin solid transparent;
	border-left-color: var(--white);
	border-bottom: 0;
	transform: rotate(-25deg);
	z-index: 1;
}



.words1 {
	top: 0vmin;
	left: 6vmin;
	transform: rotate(-4deg);
}
 
.words2 {
	top: 5vmin;
	left: 1vmin;
	transform: rotate(3deg);
	animation-delay: 1s;
}
 
.words3 {
	top: 10.5vmin;
	left: 3vmin;
	transform: rotate(-3deg);
}
 
.words4 {
	top: 16vmin;
	left: -1vmin;
	transform: rotate(4deg);
}

.parrot:hover > .lowerbeak {
	animation: talklower 1s linear infinite;
}

.parrot:hover > .beak {
	animation: talk 1s linear infinite;
}

.parrot:hover {
	animation: shake 0.5s ease infinite;
}

.parrot:hover > .wing {
	animation: wingshake 0.2s ease infinite;
}

.parrot:hover .eyemiddle:before {
	animation: eyerage 1s ease infinite;
}

.parrot:hover .eye {
	animation: shake 0.5s ease infinite;
}

.parrot:hover .words1 {
	animation: flicker 1s ease alternate infinite;
}

.parrot:hover .words2 {
	animation: flicker 1s 0.5s ease alternate infinite;
}

.parrot:hover .words3 {
	animation: flicker 1s 1s ease alternate infinite;
}

.parrot:hover .words4 {
	animation: flicker 1s 1.5s ease alternate infinite;
}

.parrot:hover .words5 {
	animation: flicker 1s 1.5s ease alternate infinite;
}

@keyframes talk {
	0% {
		transform: rotate(0deg);
	}

	50% {
		transform: rotate(45deg);
	}

	100% {
		transform: rotate(25deg);
	}
}

@keyframes talklower {
	0% {
		transform: rotate(0deg);
	}

	50% {
		transform: rotate(-45deg);
	}

	100% {
		transform: rotate(-25deg);
	}
}

/* shake from here: https://www.w3schools.com/howto/howto_css_shake_image.asp */
@keyframes shake {
	0% {
		transform: translate(1px, 1px) rotate(0deg);
	}

	10% {
		transform: translate(-1px, -2px) rotate(-1deg);
	}

	20% {
		transform: translate(-3px, 0px) rotate(1deg);
	}

	30% {
		transform: translate(3px, 2px) rotate(0deg);
	}

	40% {
		transform: translate(1px, -1px) rotate(1deg);
	}

	50% {
		transform: translate(-1px, 2px) rotate(-1deg);
	}

	60% {
		transform: translate(-3px, 1px) rotate(0deg);
	}

	70% {
		transform: translate(3px, 1px) rotate(-1deg);
	}

	80% {
		transform: translate(-1px, -1px) rotate(1deg);
	}

	90% {
		transform: translate(1px, 2px) rotate(0deg);
	}

	100% {
		transform: translate(1px, -2px) rotate(-1deg);
	}
}

@keyframes wingshake {
	0% {
		transform: rotate(38deg) translate(1px, 1px) rotate(0deg);
	}

	10% {
		transform: rotate(38deg) translate(-1px, -2px) rotate(-1deg);
	}

	20% {
		transform: rotate(38deg) translate(-3px, 0px) rotate(1deg);
	}

	30% {
		transform: rotate(38deg) translate(3px, 2px) rotate(0deg);
	}

	40% {
		transform: rotate(38deg) translate(1px, -1px) rotate(1deg);
	}

	50% {
		transform: rotate(38deg) translate(-1px, 2px) rotate(-1deg);
	}

	60% {
		transform: rotate(38deg) translate(-3px, 1px) rotate(0deg);
	}

	70% {
		transform: rotate(38deg) translate(3px, 1px) rotate(-1deg);
	}

	80% {
		transform: rotate(38deg) translate(-1px, -1px) rotate(1deg);
	}

	90% {
		transform: rotate(38deg) translate(1px, 2px) rotate(0deg);
	}

	100% {
		transform: rotate(38deg) translate(1px, -2px) rotate(-1deg);
	}
}

@keyframes eyerage {
	0% {
		background: var(--black);
	}

	100% {
		background: var(--darkred);
	}
}

@keyframes flicker {
	0% {
		opacity: 0;
	}
	100% {
		opacity: 1;
	}
}


 /*fin peroquet */

   /* Conteneur des araignées */
    .spider {
        position: absolute;
        top: -100px; /* commence hors écran */
        animation: descend 4s ease-in-out infinite;
    }

    /* Fil de l'araignée */
    .thread {
        width: 2px;
        height: 100px;
        background: #ccc;
        margin: 0 auto;
    }

    /* Corps de l'araignée */
    .body {
        width: 30px;
        height: 30px;
        background: black;
        border-radius: 50%;
        position: relative;
        margin: 0 auto;
    }

    /* Yeux */
    .eye1 {
        width: 6px;
        height: 6px;
        background: rgb(245, 42, 42);
        border-radius: 50%;
        position: absolute;
        top: 8px;
    }
    .eye1.left1 { left: 6px; }
    .eye1.right1{ right: 6px; }

    /* Animation descente et remontée */
    @keyframes descend {
        0%, 100% { top: -100px; }
        50% { top: 200px; }
    }

    /* Plusieurs araignées avec délais différents */
    .spider:nth-child(1) { left: 20%; animation-delay: 0s; }
    .spider:nth-child(2) { left: 50%; animation-delay: 1s; }
    .spider:nth-child(3) { left: 80%; animation-delay: 2s; }




  a{color:inherit;}
  ::selection{background:var(--sand); color:#0f141d;}

  .wrap{max-width:920px; margin:0 auto; padding:0 24px;}

  /* ---------- TABBAR ---------- */
  #tabbar{
    position:sticky; top:0; z-index:50;
    background:rgba(15,20,29,.92);
    backdrop-filter:blur(6px);
    border-bottom:1px solid var(--border);
  }
  #tabbar .wrap{
    display:flex;
    align-items:center;
    gap:2px;
    overflow-x:auto;
    padding:0 24px;
  }
  #tabbar .brand{
    font-family:'JetBrains Mono',monospace;
    font-size:12px;
    color:var(--muted);
    padding:14px 16px 14px 0;
    flex-shrink:0;
    border-right:1px solid var(--border);
    margin-right:6px;
  }
  #tabbar a{
    flex-shrink:0;
    font-family:'JetBrains Mono',monospace;
    font-size:12.5px;
    text-decoration:none;
    color:var(--muted);
    padding:14px 14px;
    border-bottom:2px solid transparent;
    white-space:nowrap;
    transition:color .15s ease, border-color .15s ease;
  }
  #tabbar a:hover{color:var(--text);}
  #tabbar a.active{color:var(--sand); border-bottom-color:var(--sand);}

  section{padding:64px 0; border-bottom:1px solid var(--border);}
  section:last-of-type{border-bottom:none;}

  .ltag{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;
    letter-spacing:.08em;
    color:var(--teal);
    margin-bottom:14px;
    display:block;
  }
  .ltag::before{content:"// "; color:var(--muted);}

  h1,h2,h3{font-family:'Space Grotesk',sans-serif; margin:0;}

  /* ---------- HERO ---------- */
  #accueil{padding-top:56px;}
  #hero-code{
    background:var(--panel);
    border:1px solid var(--border);
    border-radius:3px;
    padding:22px 24px;
    font-family:'JetBrains Mono',monospace;
    font-size:14px;
    color:var(--muted);
    overflow-x:auto;
    white-space:pre;
    margin-bottom:30px;
  }
  #hero-code .kw{color:var(--teal);}
  #hero-code .str{color:var(--sand);}
  #hero-code .cursor{
    display:inline-block; width:8px; height:16px;
    background:var(--sand);
    animation:blink 1s step-end infinite;
    vertical-align:text-bottom;
    margin-left:1px;
  }
  @keyframes blink{50%{opacity:0;}}
  #hero-tagline{
    font-size:clamp(24px,4vw,34px);
    font-weight:500;
    line-height:1.35;
    max-width:640px;
  }
  #hero-tagline em{color:var(--sand); font-style:italic;}
  #hero-sub{
    margin-top:16px;
    color:var(--muted);
    font-size:15.5px;
    max-width:560px;
  }

  /* ---------- PROJETS ---------- */
  h2.section-title{font-size:26px; font-weight:600; margin-bottom:8px;}
  .section-lead{color:var(--muted); font-size:15px; margin-bottom:34px; max-width:600px;}

  .proj-grid{display:flex; flex-direction:column; gap:2px;}
  .proj{
    background:var(--panel);
    border:1px solid var(--border);
    padding:24px 26px;
    display:grid;
    grid-template-columns:170px 1fr;
    gap:20px;
  }
  .proj .role{
    font-family:'JetBrains Mono',monospace;
    font-size:11.5px;
    color:var(--sand);
    line-height:1.5;
  }
  .proj h3{font-size:19px; margin-bottom:6px;}
  .proj p{font-size:14.5px; color:#c7c2b6; margin:0 0 12px;}
  .tags{display:flex; flex-wrap:wrap; gap:6px;}
  .tag{
    font-family:'JetBrains Mono',monospace;
    font-size:10.5px;
    color:var(--muted);
    border:1px solid var(--border);
    padding:3px 8px;
    border-radius:2px;
  }
  @media (max-width:640px){
    .proj{grid-template-columns:1fr;}
  }

  /* ---------- CRÉATIONS ---------- */
  .demo-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
  .demo{
    background:var(--panel);
    border:1px solid var(--border);
    border-top:2px solid var(--teal);
    padding:22px 24px;
  }
  .demo h3{font-size:17px; margin-bottom:8px; color:var(--teal);}
  .demo p{font-size:14px; color:#c7c2b6; margin:0;}
  @media (max-width:640px){.demo-grid{grid-template-columns:1fr;}}

  /* ---------- ÉCRITURE ---------- */
  .write-row{display:flex; gap:36px; flex-wrap:wrap;}
  .write-col{flex:1; min-width:220px;}
  .write-col .k{
    font-family:'JetBrains Mono',monospace;
    font-size:11px; color:var(--sand); letter-spacing:.06em;
    margin-bottom:6px; display:block;
  }
  .write-col p{font-size:14.5px; color:#c7c2b6; margin:0;}

  /* ---------- STACK ---------- */
  .stack-groups{display:flex; flex-direction:column; gap:20px;}
  .stack-group .k{
    font-family:'JetBrains Mono',monospace;
    font-size:11px; color:var(--muted); letter-spacing:.08em;
    display:block; margin-bottom:10px;
  }
  .badges{display:flex; flex-wrap:wrap; gap:8px;}
  .badge{
    font-family:'JetBrains Mono',monospace;
    font-size:12.5px;
    background:var(--panel);
    border:1px solid var(--border);
    padding:7px 12px;
    border-radius:2px;
  }
  .badge:hover{background:var(--sand); color:#0f141d; border-color:var(--sand);}

  /* ---------- CONTACT ---------- */
  #contact p.lead{font-size:16px; color:#c7c2b6; max-width:520px; margin-bottom:26px;}
  .contact-list{display:flex; flex-direction:column; gap:10px;}
  .contact-list a{
    font-family:'JetBrains Mono',monospace;
    font-size:14px;
    color:var(--text);
    text-decoration:none;
    border-bottom:1px solid var(--border);
    padding-bottom:10px;
    display:flex;
    justify-content:space-between;
    max-width:520px;
  }
  .contact-list a:hover{color:var(--sand);}
  .contact-list .label{color:var(--muted);}
  #contact .edit-note{
    margin-top:22px;
    font-family:'JetBrains Mono',monospace;
    font-size:11px;
    color:var(--muted);
  }

  footer{
    padding:30px 0 50px;
    font-family:'JetBrains Mono',monospace;
    font-size:11px;
    color:var(--muted);
  }

  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    #hero-code .cursor{animation:none;}
  }