* {
  margin: 0;
  padding: 0;
  font-size: 20px;
  line-height: 1.5rem;
  font-family: 'Montserrat', sans-serif;
  list-style-type: none;
}

html {
  scroll-behavior: smooth;
}

#backToTopButton {
  position: fixed;
  bottom: 20px;
  right: 20px;
  font-size: 15px;
  width: 50px;
  height: 50px;
  background-color: transparent;
  color: #555555;
  cursor: pointer;
  outline: none;
  border: none;
  border-radius: 50%;
  -webkit-transition-duration: 0.2s;
          transition-duration: 0.2s;
  -webkit-transition-timing-function: ease-in-out;
          transition-timing-function: ease-in-out;
  -webkit-transition-property: background-color, color;
  transition-property: background-color, color;
}

#backToTopButton:hover, #backToTopButton:focus {
  background-color: #555555;
  color: #fffafa;
}

/* Animations */
.btnEntrance {
  -webkit-animation-duration: 0.5s;
          animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
          animation-fill-mode: both;
  -webkit-animation-name: btnEntrance;
          animation-name: btnEntrance;
}

@-webkit-keyframes btnEntrance {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}

@keyframes btnEntrance {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}

.btnExit {
  -webkit-animation-duration: 0.25s;
          animation-duration: 0.25s;
  -webkit-animation-fill-mode: both;
          animation-fill-mode: both;
  -webkit-animation-name: btnExit;
          animation-name: btnExit;
}

@-webkit-keyframes btnExit {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }
}

@keyframes btnExit {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }
}

header {
  width: 100vw;
}

header img {
  width: 100vw;
}

body {
  background-color: #fffafa;
  color: #555555;
}

nav {
  display: -ms-grid;
  display: grid;
  grid-gap: 3vw;
  -ms-grid-columns: 1fr 1fr 2fr;
      grid-template-columns: 1fr 1fr 2fr;
  margin: 3vh 10vw;
}

nav input {
  text-indent: 10px;
  margin: 3vh 0;
}

@media (max-width: 750px) {
  header {
    width: 100vw;
    overflow: hidden;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    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;
  }
  header img {
    width: 150vw;
  }
}

@media (max-width: 580px) {
  nav {
    -ms-grid-columns: 1fr 1fr;
        grid-template-columns: 1fr 1fr;
  }
  nav input {
    grid-column: span 2;
  }
}

@media (max-width: 350px) {
  header {
    width: 100vw;
    overflow: hidden;
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    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;
  }
  header img {
    width: 167vw;
  }
  nav {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 1fr 1fr;
        grid-template-columns: 1fr 1fr;
  }
  nav button {
    grid-column: span 2;
  }
}

.categoriesAreasDiv {
  margin-right: 10vw;
  margin-left: 10vw;
  margin-bottom: 10vh;
}

.categoriesAreasDiv h1 {
  margin: 5vh 0;
}

.categoriesAreasDiv button {
  margin: 8px;
  font-weight: 400;
}

.resultsDiv {
  display: -ms-grid;
  display: grid;
  grid-gap: 15px;
  margin: 0 20vw 10vw 20vw;
}

.resultsDiv .result {
  display: -ms-grid;
  display: grid;
  overflow: hidden;
  -ms-grid-columns: 1fr 2fr;
      grid-template-columns: 1fr 2fr;
  grid-gap: 15px;
}

.resultsDiv .result img {
  width: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  -ms-grid-column: 1;
  -ms-grid-column-span: 1;
  grid-column: 1/2;
}

.resultsDiv .result .resultButton {
  -ms-grid-column: 2;
  -ms-grid-column-span: 1;
  grid-column: 2/3;
}

.mealBody {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr 1fr 1fr;
      grid-template-columns: 1fr 1fr 1fr;
  -ms-grid-column-align: center;
      justify-self: center;
  margin: 3vh 8vw;
  grid-gap: 3vw;
}

.mealBody .title {
  font-weight: 700;
  -ms-grid-column-align: center;
      justify-self: center;
}

.mealBody .area {
  margin: 10px;
  font-size: 0.8rem;
  -ms-grid-column-align: end;
      justify-self: end;
}

.mealBody .category {
  margin: 10px;
  font-size: 0.8rem;
  -ms-grid-column-align: start;
      justify-self: start;
}

.mealBody img {
  -ms-grid-column: 2;
  -ms-grid-column-span: 2;
  grid-column: 2/span 2;
  width: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

.mealBody .ingredients {
  -ms-grid-column: 1;
  -ms-grid-column-span: 1;
  grid-column: 1/2;
  -ms-grid-row: 2;
  -ms-grid-row-span: 1;
  grid-row: 2/3;
}

.mealBody .instructions {
  grid-column: span 3;
}

@media (max-width: 750px) {
  .mealBody img {
    -ms-grid-column: 1;
    -ms-grid-column-span: 3;
    grid-column: 1/span 3;
  }
  .mealBody .ingredients {
    -ms-grid-row: 4;
    -ms-grid-row-span: 2;
    grid-row: 4/6;
  }
  .mealBody .instructions {
    grid-column: span 2;
  }
}

@media (max-width: 580px) {
  .mealBody .title {
    grid-column: span 3;
  }
  .mealBody .area {
    grid-column: span 2;
    -ms-grid-column-align: start;
        justify-self: start;
  }
  .mealBody .category {
    -ms-grid-column-align: end;
        justify-self: end;
  }
  .mealBody .ingredients {
    grid-column: span 3;
    text-align: center;
  }
  .mealBody .instructions {
    grid-column: span 3;
  }
}

button {
  background-color: #fffafa;
  border: none;
  outline: none;
  color: #555555;
  border: none;
  cursor: pointer;
  font-weight: 700;
  margin: 1vh 0;
}

.is-hidden {
  display: none;
}

body {
  overflow-x: hidden;
}
