/**
* Table Of Contents
* 1. Variables
* 2. General
* 3. Keyboard
* 4. Grid columns
* 5. GIF
*   5.1. Animations
*/
/* 1. Variables */
/* 2. General */
*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  -webkit-box-align: center;
          align-items: center;
  background-color: #54d9d1;
  display: -webkit-box;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
          flex-direction: column;
  height: 100vh;
  -webkit-box-pack: center;
          justify-content: center;
  padding: 5vw;
  overflow: hidden;
  width: 100vw;
}

h1 {
  font-family: "Montserrat", sans-serif;
  font-size: 4rem;
  text-align: center;
}

/* 3. Keyboard */
.keyboard {
  background-color: #fcf0e4;
  border-radius: 5px;
  box-shadow: 5px 5px 10px 3px rgba(0, 0, 0, 0.5);
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(34, 1.5rem);
  grid-template-rows: repeat(5, 3rem);
  padding: 12px;
  width: -webkit-fit-content;
  width: -moz-fit-content;
  width: fit-content;
}
.keyboard__key {
  border: none;
  border-radius: 5px;
  cursor: pointer;
  display: -webkit-box;
  display: flex;
  font-family: "Source Code Pro", monospace;
  outline: none;
  padding: 12px;
}
.keyboard__key:hover, .keyboard__key:focus {
  font-weight: 700;
}
.keyboard__key:active, .keyboard__key.active {
  box-shadow: none;
  font-weight: 400;
  -webkit-transform: translate(2px, 2px);
          transform: translate(2px, 2px);
}
.keyboard__key--general {
  background-color: #f27a9b;
  box-shadow: 2px 2px 0 0 #a9113a;
}
.keyboard__key--special {
  background-color: #eb7131;
  box-shadow: 2px 2px 0 0 #602709;
}

/* 4. Grid columns */
.col-span-1 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 1;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-2 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 2;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-3 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 3;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-4 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 4;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-5 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 5;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-6 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 6;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-7 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 7;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-8 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 8;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-9 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 9;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-10 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 10;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-11 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 11;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-12 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 12;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-13 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 13;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-14 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 14;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-15 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 15;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-16 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 16;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-17 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 17;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-18 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 18;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-19 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 19;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-20 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 20;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-21 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 21;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-22 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 22;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-23 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 23;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-24 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 24;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-25 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 25;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-26 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 26;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-27 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 27;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-28 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 28;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-29 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 29;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-30 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 30;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-31 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 31;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-32 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 32;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-33 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 33;
  -webkit-box-pack: center;
          justify-content: center;
}

.col-span-34 {
  -webkit-box-align: center;
          align-items: center;
  grid-column: span 34;
  -webkit-box-pack: center;
          justify-content: center;
}

/* 5. GIF */
.gif {
  z-index: 1;
}
.gif--hidden {
  opacity: 1;
  visibility: hidden;
}
.gif__wrapper {
  -webkit-animation: gif__animation--x 5s linear infinite alternate;
          animation: gif__animation--x 5s linear infinite alternate;
  left: 0;
  position: absolute;
  top: 0;
  -webkit-transition: opacity 0.5s;
  transition: opacity 0.5s;
}
.gif__img {
  -webkit-animation: gif__animation--y 3s linear infinite alternate;
          animation: gif__animation--y 3s linear infinite alternate;
  border-radius: 100%;
  height: 500px;
  width: 500px;
}

/* 5.1. Animations */
@-webkit-keyframes gif__animation--x {
  100% {
    -webkit-transform: translateX(calc(100vw - 500px));
            transform: translateX(calc(100vw - 500px));
  }
}
@keyframes gif__animation--x {
  100% {
    -webkit-transform: translateX(calc(100vw - 500px));
            transform: translateX(calc(100vw - 500px));
  }
}
@-webkit-keyframes gif__animation--y {
  100% {
    -webkit-transform: translateY(calc(100vh - 500px));
            transform: translateY(calc(100vh - 500px));
  }
}
@keyframes gif__animation--y {
  100% {
    -webkit-transform: translateY(calc(100vh - 500px));
            transform: translateY(calc(100vh - 500px));
  }
}